From 09e0fa3a4c08cc353c5c5a40bdab1681b579984d Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Sun, 5 May 2024 18:26:56 +0800 Subject: [PATCH] init --- .../java/com/ruoyi/test/business/ImTest.java | 2 +- .../com/ruoyi/xq/dto/common/user/MinUser.java | 1 + .../ruoyi/xq/executor/ExecutorConstant.java | 4 ++-- .../src/main/java/com/ruoyi/xq/im/ImOp.java | 6 ++++-- .../ruoyi/xq/manager/CurrentUserManager.java | 17 +++++++++++++--- .../java/com/ruoyi/xq/manager/ImManager.java | 7 +++++++ .../com/ruoyi/xq/manager/LoginManager.java | 4 ++-- .../impl/UserInfoAuditServiceImpl.java | 5 ++++- .../xq/service/impl/UserServiceImpl.java | 20 ++++++------------- 9 files changed, 41 insertions(+), 25 deletions(-) diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/business/ImTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/business/ImTest.java index 59d5005..f5fe94d 100644 --- a/ruoyi-admin/src/test/java/com/ruoyi/test/business/ImTest.java +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/business/ImTest.java @@ -14,6 +14,6 @@ public class ImTest { private ImOp imOp; @Test public void refresh(){ - imOp.refreshIm(); + imOp.refreshIm(false); } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/common/user/MinUser.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/common/user/MinUser.java index 1d2e663..35c847e 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/common/user/MinUser.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/common/user/MinUser.java @@ -6,4 +6,5 @@ import lombok.Data; public class MinUser { private Long id; private String usercode; + private String nickname; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/executor/ExecutorConstant.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/executor/ExecutorConstant.java index 6c97ff1..9a30922 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/executor/ExecutorConstant.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/executor/ExecutorConstant.java @@ -17,7 +17,7 @@ public class ExecutorConstant { public static Executor SYNC_EXECUTOR; public static Executor COMMON_EXECUTOR; - public static Executor ROOM_EXECUTOR; + public static Executor IM_EXECUTOR; static { ThreadPoolExecutor syncExecutor = initExecutor(CPU_NUM, @@ -44,7 +44,7 @@ public class ExecutorConstant { new ArrayBlockingQueue<>(5), init("roomThreadPoll-%d"), new ThreadPoolExecutor.CallerRunsPolicy()); - ROOM_EXECUTOR = TtlExecutors.getTtlExecutor(roomExecutor); + IM_EXECUTOR = TtlExecutors.getTtlExecutor(roomExecutor); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/im/ImOp.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/im/ImOp.java index d45b86d..f0d584b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/im/ImOp.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/im/ImOp.java @@ -53,14 +53,16 @@ public class ImOp { } - public void refreshIm(){ + public void refreshIm(boolean loginOut){ List list = userService.list(); for (User user : list) { String imToken = IdUtil.simpleUUID(); userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getImToken, imToken)); this.register(user.getId(),imToken,user.getNickname()); imManager.updateImInfo(user.getId(),user.getAvatar(),user.getNickname(),user.getGender()); - LoginHelper.logoutApp(user.getId()); + if(loginOut){ + LoginHelper.logoutApp(user.getId()); + } } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java index b2f98dd..22bf227 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CurrentUserManager.java @@ -11,6 +11,7 @@ import com.ruoyi.xq.dto.app.user.UpdateBaseInfoReq; import com.ruoyi.xq.dto.app.user.UpdateUserAuthInfoReq; import com.ruoyi.xq.dto.app.user.UpdateUserFullInfoReq; import com.ruoyi.xq.dto.app.user.vo.*; +import com.ruoyi.xq.dto.common.user.MinUser; import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.common.SystemConfigEnum; import com.ruoyi.xq.enums.user.UserAuthTypeEnum; @@ -52,9 +53,9 @@ public class CurrentUserManager { @Autowired private AreaCodeService areaCodeService; @Autowired - private UserVipService userVipService; - @Autowired private UserExtendService userExtendService; + @Autowired + private ImManager imManager; public CurrentUserFullInfoVo currentFullInfo(){ @@ -141,9 +142,11 @@ public class CurrentUserManager { Long userId = LoginHelper.getUserId(); User updateUser = BeanConvertUtil.convertTo(req, User::new); UserGenderEnum userGenderEnum = UserGenderEnum.getByCode(req.getGender()); + String avatar = null; if(userGenderEnum != null){ String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN); - updateUser.setAvatar(cos + userGenderEnum.getDefaultAvatar()); + avatar = cos + userGenderEnum.getDefaultAvatar(); + updateUser.setAvatar(avatar); } if(req.getAddressCode() != null){ AreaCode areaCode = areaCodeService.getById(req.getAddressCode()); @@ -177,6 +180,7 @@ public class CurrentUserManager { userInfoService.updateById(updateUserInfo); // 检查finishStatus userService.checkFinishStatus(userId); + imManager.updateImInfoAsync(userId,avatar,req.getNickname(),req.getGender()); } @Autowired @@ -249,6 +253,10 @@ public class CurrentUserManager { public void updateInfo(UpdateUserFullInfoReq req) { Long userId = LoginHelper.getUserId(); + MinUser minUser = userService.getMinUserById(userId); + if(minUser == null){ + throw new ServiceException("当前用户不存在"); + } User updateUser = BeanConvertUtil.convertTo(req, User::new); if(req.getAddressCode() != null){ AreaCode areaCode = areaCodeService.getById(req.getAddressCode()); @@ -278,6 +286,9 @@ public class CurrentUserManager { updateUserInfo.setId(userInfo.getId()); updateUserInfo.setUpdateTime(LocalDateTime.now()); userInfoService.updateById(updateUserInfo); + if(!minUser.getNickname().equals(req.getNickname())){ + imManager.updateImInfoAsync(userId,null,req.getNickname(),null); + } } public UserAuthInfoVo currentAuthInfo() { diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/ImManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/ImManager.java index cdea004..6af9c43 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/ImManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/ImManager.java @@ -11,6 +11,7 @@ import com.ruoyi.xq.dto.app.im.ImMessageDTO; import com.ruoyi.xq.dto.app.im.ImResp; import com.ruoyi.xq.enums.ErrorEnum; import com.ruoyi.xq.enums.common.SystemConfigEnum; +import com.ruoyi.xq.executor.ExecutorConstant; import com.ruoyi.xq.service.UserChatFilterService; import com.ruoyi.xq.service.UserChatRecordService; import com.ruoyi.xq.service.UserService; @@ -112,6 +113,12 @@ public class ImManager { return resp; } + public void updateImInfoAsync(Long userId,String avatar,String nickname,Integer gender){ + ExecutorConstant.IM_EXECUTOR.execute(() -> { + this.updateImInfo(userId,avatar,nickname,gender); + }); + } + public void updateImInfo(Long userId, String avatar, String nickname, Integer gender) { if(userId == null){ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java index 8b19df0..2b53e45 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java @@ -199,7 +199,7 @@ public class LoginManager { req.setName(user.getNickname()); YxCommonR r = imUserClient.createUser(req); if(!r.isSuccess()){ - /*if(r.getCode() == 414){ + if(r.getCode() == 414){ UpdateTokenReq req1 = new UpdateTokenReq(); req1.setAccid(user.getId()+""); req1.setToken(user.getImToken()); @@ -211,7 +211,7 @@ public class LoginManager { }else{ log.error("创建云信账号失败,{}", JSON.toJSONString(r)); throw new ServiceException("注册失败,云信异常"); - }*/ + } } String clientIP = ServletUtils.getClientIP(); UserLogin userLogin = new UserLogin(); diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInfoAuditServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInfoAuditServiceImpl.java index bfbaf17..9b94684 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInfoAuditServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInfoAuditServiceImpl.java @@ -14,6 +14,7 @@ import com.ruoyi.xq.dto.app.common.IdsReq; import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum; import com.ruoyi.xq.enums.userinfo.UserHousingStatusEnum; +import com.ruoyi.xq.manager.ImManager; import com.ruoyi.xq.mapper.UserInfoAuditMapper; import com.ruoyi.xq.service.UserInfoAuditService; import com.ruoyi.xq.service.UserService; @@ -37,6 +38,8 @@ public class UserInfoAuditServiceImpl extends ServiceImpl implements Use private AreaCodeService areaCodeService; @Autowired private UserStarService userStarService; + @Autowired + private ImManager imManager; @Override public MinUser getMinUserById(Long userId){ @@ -205,13 +208,7 @@ public class UserServiceImpl extends ServiceImpl implements Use this.update(Wrappers.lambdaUpdate(User.class) .eq(User::getId,user.getId()) .set(User::getAvatar,avatar)); - UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); - uinfoReq.setAccid(user.getId()+""); - uinfoReq.setIcon(avatar); - YxCommonR r = userRefClient.updateUinfo(uinfoReq); - if(!r.isSuccess()){ - log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r)); - } + imManager.updateImInfo(userId,avatar,null,null); } @Override @@ -226,13 +223,7 @@ public class UserServiceImpl extends ServiceImpl implements Use if(!update){ return; } - UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); - uinfoReq.setAccid(user.getId()+""); - uinfoReq.setName("用户"+user.getUsercode()); - YxCommonR r = userRefClient.updateUinfo(uinfoReq); - if(!r.isSuccess()){ - log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r)); - } + imManager.updateImInfo(userId,null,"用户"+user.getUsercode(),null); } @Override @@ -422,6 +413,7 @@ public class UserServiceImpl extends ServiceImpl implements Use .set(updateUserReq.getCarStatus() != null,UserInfo::getCarStatus, updateUserReq.getCarStatus()) .set(updateUserReq.getHousingStatus() != null,UserInfo::getHousingStatus, updateUserReq.getHousingStatus())); } + imManager.updateImInfoAsync(user.getId(),user.getAvatar(),user.getNickname(),user.getGender()); this.checkFinishStatus(user.getId()); }