添加备注及图片宽高

This commit is contained in:
haozq 2025-11-25 18:13:52 +08:00
parent 755ad9f8d3
commit 1015b6b5bd
14 changed files with 131 additions and 37 deletions

View File

@ -1,5 +1,6 @@
package com.bonus; package com.bonus;
import com.bonus.common.utils.SecurityUtils;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@ -16,6 +17,9 @@ public class BonusApplication
{ {
public static void main(String[] args) public static void main(String[] args)
{ {
String pwd = SecurityUtils.encryptPassword("Bonus@admin123!");
System.err.println(pwd);
// System.setProperty("spring.devtools.restart.enabled", "false"); // System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(BonusApplication.class, args); SpringApplication.run(BonusApplication.class, args);
System.err.println("(♥◠‿◠)ノ゙ 江苏图片自动标注后台服务启动成功 ლ(´ڡ`ლ)゙ \n" + System.err.println("(♥◠‿◠)ノ゙ 江苏图片自动标注后台服务启动成功 ლ(´ڡ`ლ)゙ \n" +

View File

@ -138,16 +138,16 @@ Sm4:
KEY: 78d1295afa99449b99d6f83820e6965c KEY: 78d1295afa99449b99d6f83820e6965c
IV: f555adf6c01d0ab0761e626a2dae34a2 IV: f555adf6c01d0ab0761e626a2dae34a2
#minio:
# url: http://47.92.234.255:9090
# endpoint: http://47.92.234.255:9090
# accessKey: minio
# secretKey: Bonus@admin123!
# bucketName: image
minio: minio:
url: http://192.168.0.14:9090 url: http://47.92.234.255:9090
endpoint: http://192.168.0.14:9090 endpoint: http://47.92.234.255:9090
accessKey: minio accessKey: minio
secretKey: bonus@admin123 secretKey: Bonus@admin123!
bucketName: image bucketName: image
#minio:
# url: http://192.168.0.14:9090
# endpoint: http://192.168.0.14:9090
# accessKey: minio
# secretKey: bonus@admin123
# bucketName: image

View File

@ -43,6 +43,10 @@
<artifactId>commons-compress</artifactId> <artifactId>commons-compress</artifactId>
<version>1.20</version> <!-- 使用最新的版本 --> <version>1.20</version> <!-- 使用最新的版本 -->
</dependency> </dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</dependency>
</dependencies> </dependencies>

View File

@ -2,11 +2,17 @@ package com.bonus.business.domain;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 算法信息类 * 算法信息类
*/ */
@Data @Data
public class AlgorithmVo { public class AlgorithmVo {
private String remark;
/** /**
* 主键 * 主键
*/ */
@ -66,6 +72,8 @@ public class AlgorithmVo {
private int fileNum; private int fileNum;
private List<String> hwData;
public static void addSource(AlgorithmVo vo, int length, String operaId, String createTime, String operaType, String userId, String operaName) { public static void addSource(AlgorithmVo vo, int length, String operaId, String createTime, String operaType, String userId, String operaName) {
vo.setBzNum(0); vo.setBzNum(0);
vo.setWbzNum(0); vo.setWbzNum(0);

View File

@ -4,6 +4,12 @@ import lombok.Data;
@Data @Data
public class ImageRecognize { public class ImageRecognize {
private String remark;
private String dataType;
private String jsonData;
/** /**
* 主键 * 主键
*/ */

View File

@ -7,6 +7,8 @@ import java.util.List;
@Data @Data
public class UserOperaVo { public class UserOperaVo {
private String remark;
/** /**
* 主键 * 主键
*/ */

View File

@ -28,9 +28,9 @@ public interface ImageCaptionMapper {
* @param fileList * @param fileList
* @param id * @param id
*/ */
void addUpLoadImage(@Param("list") List<SysFile> fileList, @Param("id") String id, @Param("createTime")String createTime, @Param("operaType")String operaType); void addUpLoadImage(@Param("list") List<SysFile> fileList, @Param("id") String id, @Param("createTime")String createTime, @Param("operaType")String operaType, @Param("remark")String remark);
void addSureLoadImage(@Param("list") List<SysFile> fileList, @Param("id") String id, @Param("createTime")String createTime, @Param("operaType")String operaType); void addSureLoadImage(@Param("list") List<SysFile> fileList, @Param("id") String id, @Param("createTime")String createTime, @Param("operaType")String operaType, @Param("remark")String remark);
/** /**
* 更新 数据 * 更新 数据

View File

@ -58,10 +58,14 @@ public class AlgorithmService {
JSONArray array=jsonObject.getJSONArray("data"); JSONArray array=jsonObject.getJSONArray("data");
for (int i=0;i<array.size();i++){ for (int i=0;i<array.size();i++){
ImageRecognize vo = new ImageRecognize(); ImageRecognize vo = new ImageRecognize();
JSONArray detections=array.getJSONObject(i).getJSONArray("detections");
String jsondata=JSON.toJSONString(detections);
//获取路径及采集数据 //获取路径及采集数据
String path=array.getJSONObject(i).getString("image"); String path=array.getJSONObject(i).getString("image");
String type=array.getJSONObject(i).getString("type"); String type=array.getJSONObject(i).getString("type");
String imagePath=array.getJSONObject(i).getString("annotated_image_path"); String imagePath=array.getJSONObject(i).getString("annotated_image_path");
vo.setJsonData(jsondata);
vo.setDataType("0");
if(type==null || type.isEmpty()){ if(type==null || type.isEmpty()){
//获取到图片地址 //获取到图片地址
SysFile sysFile=entityMaps.get(path); SysFile sysFile=entityMaps.get(path);

View File

@ -16,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.ArrayList; import java.util.ArrayList;
@ -188,8 +190,21 @@ public class CompressUploaderService {
long sizeInBytes = file.length(); long sizeInBytes = file.length();
// 转换为可读格式如KB/MB // 转换为可读格式如KB/MB
String humanReadableSize = convertToHumanReadable(sizeInBytes); String humanReadableSize = convertToHumanReadable(sizeInBytes);
//上传到minio //上传到minio
SysFile sysFile=minioUtil.uploadFile(file,folderPath); SysFile sysFile=minioUtil.uploadFile(file,folderPath);
BufferedImage image = ImageIO.read(file);
if (image != null) {
// 获取图片的宽度和高度
int width = image.getWidth();
int height = image.getHeight();
sysFile.setWidth(width+"");
sysFile.setHeight(height+"");
System.out.println("Width: " + width + ", Height: " + height);
} else {
System.out.println("Image not loaded successfully.");
}
sysFile.setName(uuid+"."+suffix); sysFile.setName(uuid+"."+suffix);
sysFile.setOriginName(originFileName); sysFile.setOriginName(originFileName);
sysFile.setFileSize(humanReadableSize); sysFile.setFileSize(humanReadableSize);

View File

@ -19,10 +19,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.PushBuilder; import javax.servlet.http.PushBuilder;
import java.util.ArrayList; import java.util.ArrayList;
@ -259,7 +261,7 @@ public class ImageCaptionServiceImpl implements ImageCaptionService {
if(addedAlgorithmNum==null || addedAlgorithmNum==0){ if(addedAlgorithmNum==null || addedAlgorithmNum==0){
return AjaxResult.error("操作记录添加失败!"); return AjaxResult.error("操作记录添加失败!");
}else{ }else{
AjaxResult result=ImageMultipartFile(multipartFile,path,createTime,userId,fileList,vo.getId(),operaType,isZip); AjaxResult result=ImageMultipartFile(multipartFile,path,createTime,userId,fileList,vo.getId(),operaType,isZip,vo.getRemark());
if(result.isError()){ if(result.isError()){
return result; return result;
} }
@ -288,6 +290,7 @@ public class ImageCaptionServiceImpl implements ImageCaptionService {
} else { } else {
typedCount++; typedCount++;
} }
//跟新图片地址 //跟新图片地址
mapper.updateImageAddress(imageRecognize); mapper.updateImageAddress(imageRecognize);
//添加记录 //添加记录
@ -312,6 +315,8 @@ public class ImageCaptionServiceImpl implements ImageCaptionService {
for (UploadFileVo obj : fileVoList) { for (UploadFileVo obj : fileVoList) {
String url; String url;
if(BJ_TYPE.equals(obj.getType())){ if(BJ_TYPE.equals(obj.getType())){
String imageUrl=minioUtil.getFileUrl(obj.getBucketName(),obj.getFilePath(),60*60*7);
obj.setImageUrl(imageUrl);
url=minioUtil.getFileUrl(obj.getBucketName(),obj.getBjFilePath(),60*60*7); url=minioUtil.getFileUrl(obj.getBucketName(),obj.getBjFilePath(),60*60*7);
} else { } else {
url=minioUtil.getFileUrl(obj.getBucketName(),obj.getFilePath(),60*60*7); url=minioUtil.getFileUrl(obj.getBucketName(),obj.getFilePath(),60*60*7);
@ -340,7 +345,7 @@ public class ImageCaptionServiceImpl implements ImageCaptionService {
* @param operaType * @param operaType
* @return * @return
*/ */
public AjaxResult ImageMultipartFile(MultipartFile[] multipartFile ,String path,String createTime,String userId,List<SysFile> fileList ,String id,String operaType,boolean isZip){ public AjaxResult ImageMultipartFile(MultipartFile[] multipartFile ,String path,String createTime,String userId,List<SysFile> fileList ,String id,String operaType,boolean isZip,String remark){
try{ try{
if(isZip){ if(isZip){
List<SysFile> list=compressUploaderService.uploadAndExtract(multipartFile[0],path); List<SysFile> list=compressUploaderService.uploadAndExtract(multipartFile[0],path);
@ -359,6 +364,16 @@ public class ImageCaptionServiceImpl implements ImageCaptionService {
// 转换为可读格式如KB/MB // 转换为可读格式如KB/MB
String humanReadableSize = convertToHumanReadable(sizeInBytes); String humanReadableSize = convertToHumanReadable(sizeInBytes);
SysFile sysFile=minioUtil.uploadFile(file,folderPath); SysFile sysFile=minioUtil.uploadFile(file,folderPath);
BufferedImage img = ImageIO.read(file.getInputStream());
if (img != null) {
int width = img.getWidth();
int height = img.getHeight();
sysFile.setWidth(width+"");
sysFile.setHeight(height+"");
System.out.println("Width: " + width + ", Height: " + height);
} else {
System.out.println("Image not loaded successfully.");
}
sysFile.setName(uuid+"."+suffix); sysFile.setName(uuid+"."+suffix);
SysFile.addSource(sysFile,userId,originFileName,humanReadableSize); SysFile.addSource(sysFile,userId,originFileName,humanReadableSize);
fileList.add(sysFile); fileList.add(sysFile);
@ -371,9 +386,9 @@ public class ImageCaptionServiceImpl implements ImageCaptionService {
} }
if(PG_TYPE.equals(operaType)){ if(PG_TYPE.equals(operaType)){
mapper.addSureLoadImage(fileList,id,createTime,operaType); mapper.addSureLoadImage(fileList,id,createTime,operaType,remark);
} }
mapper.addUpLoadImage(fileList,id,createTime,operaType); mapper.addUpLoadImage(fileList,id,createTime,operaType,remark);
return AjaxResult.success("上传成功!"); return AjaxResult.success("上传成功!");
}catch (Exception e){ }catch (Exception e){
log.error(e.getMessage(),e); log.error(e.getMessage(),e);

View File

@ -16,27 +16,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</insert> </insert>
<insert id="addAlgorithm" useGeneratedKeys="true" keyProperty="id"> <insert id="addAlgorithm" useGeneratedKeys="true" keyProperty="id">
insert into tb_algorithm( insert into tb_algorithm(
oper_id, name, create_time, bz_num, wbz_num, user_id,image_num, is_sure,oper_type oper_id, name, create_time, bz_num, wbz_num, user_id,image_num, is_sure,oper_type,remark
)values (#{operaId},#{name},#{createTime},#{bzNum},#{wbzNum},#{userId},#{imageNum},#{isSure},#{operaType}) )values (#{operaId},#{name},#{createTime},#{bzNum},#{wbzNum},#{userId},#{imageNum},#{isSure},#{operaType},#{remark})
</insert> </insert>
<insert id="addUpLoadImage"> <insert id="addUpLoadImage">
insert into tb_upload_file( insert into tb_upload_file(
id, algorithm_id,original_name,file_path,bucket_name, id, algorithm_id,original_name,file_path,bucket_name,
file_name,is_active,create_time,file_type,bj_file_path,file_size,create_user file_name,is_active,create_time,file_type,bj_file_path,file_size,create_user,remark,height,width
) values ) values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.id}, #{id},#{item.originName},#{item.url},#{item.bucketName}, (#{item.id}, #{id},#{item.originName},#{item.url},#{item.bucketName},
#{item.name},0,#{createTime},#{operaType},#{item.bjFilePath},#{item.fileSize},#{item.createUser} ) #{item.name},0,#{createTime},#{operaType},#{item.bjFilePath},#{item.fileSize},#{item.createUser},#{remark},#{item.height},#{item.width} )
</foreach> </foreach>
</insert> </insert>
<insert id="addSureLoadImage"> <insert id="addSureLoadImage">
insert into tb_sure_file( insert into tb_sure_file(
id, algorithm_id,original_name,file_path,bucket_name, id, algorithm_id,original_name,file_path,bucket_name,
file_name,is_active,create_time,file_type,bj_file_path,file_size,create_user file_name,is_active,create_time,file_type,bj_file_path,file_size,create_user,remark,data_type,json_data,height,width
) values ) values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.id}, #{id},#{item.originName},#{item.url},#{item.bucketName}, (#{item.id}, #{id},#{item.originName},#{item.url},#{item.bucketName},
#{item.name},0,#{createTime},#{operaType},#{item.bjFilePath},#{item.fileSize},#{item.createUser} ) #{item.name},0,#{createTime},#{operaType},#{item.bjFilePath},#{item.fileSize},#{item.createUser},#{remark},#{item.dataType},#{item.jsonData},#{item.height},#{item.width} )
</foreach> </foreach>
</insert> </insert>
<insert id="addImageRecognize"> <insert id="addImageRecognize">
@ -50,8 +50,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
impression, impression,
balance, balance,
detail, detail,
type type,json_data,data_type
)values (#{imageId},#{contentImage},#{overallScore},#{clarity},#{cleanliness},#{compressMarks},#{impression},#{balance},#{detail},#{type}) )values (#{imageId},#{contentImage},#{overallScore},#{clarity},#{cleanliness},#{compressMarks},#{impression},#{balance},#{detail},#{type},#{jsonData},#{dataType})
</insert> </insert>
<update id="updateAlgorithm"> <update id="updateAlgorithm">
@ -59,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<update id="updateImageAddress"> <update id="updateImageAddress">
update tb_upload_file set bj_file_path=#{imagePath} where id=#{imageId} update tb_upload_file set bj_file_path=#{imagePath},json_data=#{jsonData},data_type=#{dataType} where id=#{imageId}
</update> </update>
<update id="updateAlgorithmSure"> <update id="updateAlgorithmSure">
update tb_algorithm set is_sure=#{isSure}, sure_user=#{userId} where id=#{id} update tb_algorithm set is_sure=#{isSure}, sure_user=#{userId} where id=#{id}
@ -95,7 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getImageListHistory" resultType="com.bonus.business.domain.UserOperaVo"> <select id="getImageListHistory" resultType="com.bonus.business.domain.UserOperaVo">
select tam.id, tam.oper_type, tam.name operaName,tam.oper_id operaId, select tam.id, tam.oper_type, tam.name operaName,tam.oper_id operaId,
tam.create_time operaTime, tam.user_id , tam.oper_type, tam.create_time operaTime, tam.user_id , tam.oper_type,
tam.image_num imageNum ,tam.bz_num bzNum,tam.wbz_num wbzNum,tam.is_sure isSure tam.image_num imageNum ,tam.bz_num bzNum,tam.wbz_num wbzNum,tam.is_sure isSure,tam.remark
from tb_algorithm tam from tb_algorithm tam
where tam.oper_id=#{id} where tam.oper_id=#{id}
</select> </select>
@ -133,7 +133,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
file.bj_file_path bjFilePath, file.file_size fileSize, file.bj_file_path bjFilePath, file.file_size fileSize,
tir.content_image contentImage,ROUND(tir.overall_score, 2) overallScore,tir.clarity, tir.content_image contentImage,ROUND(tir.overall_score, 2) overallScore,tir.clarity,
tir.cleanliness,tir.compress_marks compressMarks,tir.impression, tir.cleanliness,tir.compress_marks compressMarks,tir.impression,
tir.balance,tir.detail,tir.type tir.balance,tir.detail,tir.type, file.remark,file.height,file.width,
file.json_data jsonData ,file.data_type dataType
from tb_upload_file file from tb_upload_file file
left join tb_image_recognize tir on tir.image_id=file.id left join tb_image_recognize tir on tir.image_id=file.id
left join da_ky_sys_dict_data sdd on sdd.dict_type='bz_data' left join da_ky_sys_dict_data sdd on sdd.dict_type='bz_data'
@ -184,7 +185,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
file.bj_file_path bjFilePath, file.file_size fileSize, file.bj_file_path bjFilePath, file.file_size fileSize,
tir.content_image contentImage,ROUND(tir.overall_score, 2) overallScore,tir.clarity, tir.content_image contentImage,ROUND(tir.overall_score, 2) overallScore,tir.clarity,
tir.cleanliness,tir.compress_marks compressMarks,tir.impression, tir.cleanliness,tir.compress_marks compressMarks,tir.impression,
tir.balance,tir.detail,tir.type,su.user_name userName,file.create_time createTime tir.balance,tir.detail,tir.type,su.user_name userName,file.create_time createTime,
file.remark,file.height,file.width,
file.json_data jsonData ,file.data_type dataType
from tb_algorithm tam from tb_algorithm tam
left join tb_user_oper tuo on tuo.id=tam.oper_id left join tb_user_oper tuo on tuo.id=tam.oper_id
left join tb_sure_file file on file.algorithm_id=tam.id left join tb_sure_file file on file.algorithm_id=tam.id
@ -219,7 +222,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
file.file_type fileType, file.file_type fileType,
file.bj_file_path bjFilePath, file.bj_file_path bjFilePath,
file. file_size fileSize, file. file_size fileSize,
file.create_user createUser file.create_user createUser,
file.json_data jsonData,
file.data_type dataType,
file.remark remark,
file.height, file.width
from tb_upload_file file from tb_upload_file file
left join tb_algorithm ta on ta.id=file.algorithm_id left join tb_algorithm ta on ta.id=file.algorithm_id
WHERE file.is_active=0 WHERE file.is_active=0
@ -229,11 +236,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="addSureFile"> <insert id="addSureFile">
replace into tb_sure_file( replace into tb_sure_file(
id, algorithm_id,original_name,file_path,bucket_name, id, algorithm_id,original_name,file_path,bucket_name,
file_name,is_active,create_time,file_type,bj_file_path,file_size,create_user file_name,is_active,create_time,file_type,bj_file_path,file_size,create_user,json_data,data_type,remark,height,width
) values ) values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.imageId}, #{item.algorithmId},#{item.originalName},#{item.filePath},#{item.bucketName}, (#{item.imageId}, #{item.algorithmId},#{item.originalName},#{item.filePath},#{item.bucketName},
#{item.fileName},#{item.isActive},now(),#{item.fileType},#{item.bjFilePath},#{item.fileSize},#{item.createUser} ) #{item.fileName},#{item.isActive},now(),#{item.fileType},#{item.bjFilePath},#{item.fileSize},#{item.createUser},#{item.jsonData} ,#{item.dataType} ,#{item.remark} ,#{item.height} ,#{item.width} )
</foreach> </foreach>
</insert> </insert>
</mapper> </mapper>

View File

@ -15,6 +15,17 @@ import org.apache.commons.lang3.builder.ToStringStyle;
@Builder @Builder
public class SysFile public class SysFile
{ {
/**
* 高度
*/
private String height;
/**
* 宽度
*/
private String width;
private String dataType;
private String id; private String id;
/** /**
* 文件名称 * 文件名称
@ -50,6 +61,8 @@ public class SysFile
*/ */
private String createUser; private String createUser;
private String jsonData;
/** /**
* 添加属性 * 添加属性
* @param sysFile * @param sysFile

View File

@ -4,6 +4,20 @@ import lombok.Data;
@Data @Data
public class UploadFileVo { public class UploadFileVo {
/**
* 高度
*/
private String height;
/**
* 宽度
*/
private String width;
private String dataType;
private String jsonData;
private String remark;
private String operaName; private String operaName;
@ -33,6 +47,8 @@ public class UploadFileVo {
* 标记文件地址 * 标记文件地址
*/ */
private String bjFilePath; private String bjFilePath;
private String imageUrl;
/** /**
* 标记图片地址 * 标记图片地址
*/ */

View File

@ -175,7 +175,6 @@ public class TokenService
refreshToken(loginUser); refreshToken(loginUser);
// 绑定用户名与当前uuid挤下线旧会话 // 绑定用户名与当前uuid挤下线旧会话
bindUserToken(loginUser.getUsername(), token); bindUserToken(loginUser.getUsername(), token);
Map<String, Object> claims = new HashMap<>(); Map<String, Object> claims = new HashMap<>();
claims.put(Constants.LOGIN_USER_KEY, token); claims.put(Constants.LOGIN_USER_KEY, token);
claims.put(Constants.JWT_USERNAME, loginUser.getUsername()); claims.put(Constants.JWT_USERNAME, loginUser.getUsername());
@ -375,11 +374,12 @@ public class TokenService
{ {
String userTokenKey = getUserTokenKey(username); String userTokenKey = getUserTokenKey(username);
String oldUuid = redisCache.getCacheObject(userTokenKey); String oldUuid = redisCache.getCacheObject(userTokenKey);
if (StringUtils.isNotEmpty(oldUuid) && !uuid.equals(oldUuid)) if(!"admin".equals(username)){
{ if (StringUtils.isNotEmpty(oldUuid) && !uuid.equals(oldUuid)) {
// 删除旧的 login_tokens:{oldUuid} // 删除旧的 login_tokens:{oldUuid}
String oldLoginKey = getTokenKey(oldUuid); String oldLoginKey = getTokenKey(oldUuid);
redisCache.deleteObject(oldLoginKey); redisCache.deleteObject(oldLoginKey);
}
} }
redisCache.setCacheObject(userTokenKey, uuid, expireTime, TimeUnit.MINUTES); redisCache.setCacheObject(userTokenKey, uuid, expireTime, TimeUnit.MINUTES);
} }