This commit is contained in:
77
2024-05-05 18:26:56 +08:00
parent bd5a48efc5
commit 09e0fa3a4c
9 changed files with 41 additions and 25 deletions

View File

@@ -14,6 +14,6 @@ public class ImTest {
private ImOp imOp; private ImOp imOp;
@Test @Test
public void refresh(){ public void refresh(){
imOp.refreshIm(); imOp.refreshIm(false);
} }
} }

View File

@@ -6,4 +6,5 @@ import lombok.Data;
public class MinUser { public class MinUser {
private Long id; private Long id;
private String usercode; private String usercode;
private String nickname;
} }

View File

@@ -17,7 +17,7 @@ public class ExecutorConstant {
public static Executor SYNC_EXECUTOR; public static Executor SYNC_EXECUTOR;
public static Executor COMMON_EXECUTOR; public static Executor COMMON_EXECUTOR;
public static Executor ROOM_EXECUTOR; public static Executor IM_EXECUTOR;
static { static {
ThreadPoolExecutor syncExecutor = initExecutor(CPU_NUM, ThreadPoolExecutor syncExecutor = initExecutor(CPU_NUM,
@@ -44,7 +44,7 @@ public class ExecutorConstant {
new ArrayBlockingQueue<>(5), new ArrayBlockingQueue<>(5),
init("roomThreadPoll-%d"), init("roomThreadPoll-%d"),
new ThreadPoolExecutor.CallerRunsPolicy()); new ThreadPoolExecutor.CallerRunsPolicy());
ROOM_EXECUTOR = TtlExecutors.getTtlExecutor(roomExecutor); IM_EXECUTOR = TtlExecutors.getTtlExecutor(roomExecutor);
} }

View File

@@ -53,14 +53,16 @@ public class ImOp {
} }
public void refreshIm(){ public void refreshIm(boolean loginOut){
List<User> list = userService.list(); List<User> list = userService.list();
for (User user : list) { for (User user : list) {
String imToken = IdUtil.simpleUUID(); String imToken = IdUtil.simpleUUID();
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getImToken, imToken)); userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getImToken, imToken));
this.register(user.getId(),imToken,user.getNickname()); this.register(user.getId(),imToken,user.getNickname());
imManager.updateImInfo(user.getId(),user.getAvatar(),user.getNickname(),user.getGender()); imManager.updateImInfo(user.getId(),user.getAvatar(),user.getNickname(),user.getGender());
LoginHelper.logoutApp(user.getId()); if(loginOut){
LoginHelper.logoutApp(user.getId());
}
} }
} }

View File

@@ -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.UpdateUserAuthInfoReq;
import com.ruoyi.xq.dto.app.user.UpdateUserFullInfoReq; import com.ruoyi.xq.dto.app.user.UpdateUserFullInfoReq;
import com.ruoyi.xq.dto.app.user.vo.*; 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.AuditEnum;
import com.ruoyi.xq.enums.common.SystemConfigEnum; import com.ruoyi.xq.enums.common.SystemConfigEnum;
import com.ruoyi.xq.enums.user.UserAuthTypeEnum; import com.ruoyi.xq.enums.user.UserAuthTypeEnum;
@@ -52,9 +53,9 @@ public class CurrentUserManager {
@Autowired @Autowired
private AreaCodeService areaCodeService; private AreaCodeService areaCodeService;
@Autowired @Autowired
private UserVipService userVipService;
@Autowired
private UserExtendService userExtendService; private UserExtendService userExtendService;
@Autowired
private ImManager imManager;
public CurrentUserFullInfoVo currentFullInfo(){ public CurrentUserFullInfoVo currentFullInfo(){
@@ -141,9 +142,11 @@ public class CurrentUserManager {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
User updateUser = BeanConvertUtil.convertTo(req, User::new); User updateUser = BeanConvertUtil.convertTo(req, User::new);
UserGenderEnum userGenderEnum = UserGenderEnum.getByCode(req.getGender()); UserGenderEnum userGenderEnum = UserGenderEnum.getByCode(req.getGender());
String avatar = null;
if(userGenderEnum != null){ if(userGenderEnum != null){
String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN); String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN);
updateUser.setAvatar(cos + userGenderEnum.getDefaultAvatar()); avatar = cos + userGenderEnum.getDefaultAvatar();
updateUser.setAvatar(avatar);
} }
if(req.getAddressCode() != null){ if(req.getAddressCode() != null){
AreaCode areaCode = areaCodeService.getById(req.getAddressCode()); AreaCode areaCode = areaCodeService.getById(req.getAddressCode());
@@ -177,6 +180,7 @@ public class CurrentUserManager {
userInfoService.updateById(updateUserInfo); userInfoService.updateById(updateUserInfo);
// 检查finishStatus // 检查finishStatus
userService.checkFinishStatus(userId); userService.checkFinishStatus(userId);
imManager.updateImInfoAsync(userId,avatar,req.getNickname(),req.getGender());
} }
@Autowired @Autowired
@@ -249,6 +253,10 @@ public class CurrentUserManager {
public void updateInfo(UpdateUserFullInfoReq req) { public void updateInfo(UpdateUserFullInfoReq req) {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
MinUser minUser = userService.getMinUserById(userId);
if(minUser == null){
throw new ServiceException("当前用户不存在");
}
User updateUser = BeanConvertUtil.convertTo(req, User::new); User updateUser = BeanConvertUtil.convertTo(req, User::new);
if(req.getAddressCode() != null){ if(req.getAddressCode() != null){
AreaCode areaCode = areaCodeService.getById(req.getAddressCode()); AreaCode areaCode = areaCodeService.getById(req.getAddressCode());
@@ -278,6 +286,9 @@ public class CurrentUserManager {
updateUserInfo.setId(userInfo.getId()); updateUserInfo.setId(userInfo.getId());
updateUserInfo.setUpdateTime(LocalDateTime.now()); updateUserInfo.setUpdateTime(LocalDateTime.now());
userInfoService.updateById(updateUserInfo); userInfoService.updateById(updateUserInfo);
if(!minUser.getNickname().equals(req.getNickname())){
imManager.updateImInfoAsync(userId,null,req.getNickname(),null);
}
} }
public UserAuthInfoVo currentAuthInfo() { public UserAuthInfoVo currentAuthInfo() {

View File

@@ -11,6 +11,7 @@ import com.ruoyi.xq.dto.app.im.ImMessageDTO;
import com.ruoyi.xq.dto.app.im.ImResp; import com.ruoyi.xq.dto.app.im.ImResp;
import com.ruoyi.xq.enums.ErrorEnum; import com.ruoyi.xq.enums.ErrorEnum;
import com.ruoyi.xq.enums.common.SystemConfigEnum; import com.ruoyi.xq.enums.common.SystemConfigEnum;
import com.ruoyi.xq.executor.ExecutorConstant;
import com.ruoyi.xq.service.UserChatFilterService; import com.ruoyi.xq.service.UserChatFilterService;
import com.ruoyi.xq.service.UserChatRecordService; import com.ruoyi.xq.service.UserChatRecordService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
@@ -112,6 +113,12 @@ public class ImManager {
return resp; 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) { public void updateImInfo(Long userId, String avatar, String nickname, Integer gender) {
if(userId == null){ if(userId == null){

View File

@@ -199,7 +199,7 @@ public class LoginManager {
req.setName(user.getNickname()); req.setName(user.getNickname());
YxCommonR r = imUserClient.createUser(req); YxCommonR r = imUserClient.createUser(req);
if(!r.isSuccess()){ if(!r.isSuccess()){
/*if(r.getCode() == 414){ if(r.getCode() == 414){
UpdateTokenReq req1 = new UpdateTokenReq(); UpdateTokenReq req1 = new UpdateTokenReq();
req1.setAccid(user.getId()+""); req1.setAccid(user.getId()+"");
req1.setToken(user.getImToken()); req1.setToken(user.getImToken());
@@ -211,7 +211,7 @@ public class LoginManager {
}else{ }else{
log.error("创建云信账号失败,{}", JSON.toJSONString(r)); log.error("创建云信账号失败,{}", JSON.toJSONString(r));
throw new ServiceException("注册失败,云信异常"); throw new ServiceException("注册失败,云信异常");
}*/ }
} }
String clientIP = ServletUtils.getClientIP(); String clientIP = ServletUtils.getClientIP();
UserLogin userLogin = new UserLogin(); UserLogin userLogin = new UserLogin();

View File

@@ -14,6 +14,7 @@ import com.ruoyi.xq.dto.app.common.IdsReq;
import com.ruoyi.xq.enums.common.AuditEnum; import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum; import com.ruoyi.xq.enums.user.UserInfoAuditTypeEnum;
import com.ruoyi.xq.enums.userinfo.UserHousingStatusEnum; import com.ruoyi.xq.enums.userinfo.UserHousingStatusEnum;
import com.ruoyi.xq.manager.ImManager;
import com.ruoyi.xq.mapper.UserInfoAuditMapper; import com.ruoyi.xq.mapper.UserInfoAuditMapper;
import com.ruoyi.xq.service.UserInfoAuditService; import com.ruoyi.xq.service.UserInfoAuditService;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
@@ -37,6 +38,8 @@ public class UserInfoAuditServiceImpl extends ServiceImpl<UserInfoAuditMapper,Us
@Autowired @Autowired
private UserService userService; private UserService userService;
@Autowired
private ImManager imManager;
@Override @Override
public UserInfoAudit getAuditingDataByUserIdAndType(Long userId, UserInfoAuditTypeEnum auditTypeEnum){ public UserInfoAudit getAuditingDataByUserIdAndType(Long userId, UserInfoAuditTypeEnum auditTypeEnum){
@@ -71,12 +74,12 @@ public class UserInfoAuditServiceImpl extends ServiceImpl<UserInfoAuditMapper,Us
userService.update(Wrappers.lambdaUpdate(User.class) userService.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, userInfoAudit.getUserId()) .eq(User::getId, userInfoAudit.getUserId())
.set(User::getAvatar, userInfoAudit.getAuditContent())); .set(User::getAvatar, userInfoAudit.getAuditContent()));
imManager.updateImInfoAsync(userInfoAudit.getUserId(),userInfoAudit.getAuditContent(),null,null);
}else if(userInfoAudit.getInfoType().equals(UserInfoAuditTypeEnum.REMARK.getCode())){ }else if(userInfoAudit.getInfoType().equals(UserInfoAuditTypeEnum.REMARK.getCode())){
userService.update(Wrappers.lambdaUpdate(User.class) userService.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, userInfoAudit.getUserId()) .eq(User::getId, userInfoAudit.getUserId())
.set(User::getRemark, userInfoAudit.getAuditContent())); .set(User::getRemark, userInfoAudit.getAuditContent()));
} }
} }
} }
} }

View File

@@ -29,6 +29,7 @@ import com.ruoyi.xq.enums.common.SystemConfigEnum;
import com.ruoyi.xq.enums.image.ImagesEnums; import com.ruoyi.xq.enums.image.ImagesEnums;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum; import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.lock.LockKey; import com.ruoyi.xq.lock.LockKey;
import com.ruoyi.xq.manager.ImManager;
import com.ruoyi.xq.manager.LoginManager; import com.ruoyi.xq.manager.LoginManager;
import com.ruoyi.xq.manager.SystemConfigManager; import com.ruoyi.xq.manager.SystemConfigManager;
import com.ruoyi.xq.mapper.UserMapper; import com.ruoyi.xq.mapper.UserMapper;
@@ -85,6 +86,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
private AreaCodeService areaCodeService; private AreaCodeService areaCodeService;
@Autowired @Autowired
private UserStarService userStarService; private UserStarService userStarService;
@Autowired
private ImManager imManager;
@Override @Override
public MinUser getMinUserById(Long userId){ public MinUser getMinUserById(Long userId){
@@ -205,13 +208,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
this.update(Wrappers.lambdaUpdate(User.class) this.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId,user.getId()) .eq(User::getId,user.getId())
.set(User::getAvatar,avatar)); .set(User::getAvatar,avatar));
UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); imManager.updateImInfo(userId,avatar,null,null);
uinfoReq.setAccid(user.getId()+"");
uinfoReq.setIcon(avatar);
YxCommonR r = userRefClient.updateUinfo(uinfoReq);
if(!r.isSuccess()){
log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r));
}
} }
@Override @Override
@@ -226,13 +223,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
if(!update){ if(!update){
return; return;
} }
UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); imManager.updateImInfo(userId,null,"用户"+user.getUsercode(),null);
uinfoReq.setAccid(user.getId()+"");
uinfoReq.setName("用户"+user.getUsercode());
YxCommonR r = userRefClient.updateUinfo(uinfoReq);
if(!r.isSuccess()){
log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r));
}
} }
@Override @Override
@@ -422,6 +413,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
.set(updateUserReq.getCarStatus() != null,UserInfo::getCarStatus, updateUserReq.getCarStatus()) .set(updateUserReq.getCarStatus() != null,UserInfo::getCarStatus, updateUserReq.getCarStatus())
.set(updateUserReq.getHousingStatus() != null,UserInfo::getHousingStatus, updateUserReq.getHousingStatus())); .set(updateUserReq.getHousingStatus() != null,UserInfo::getHousingStatus, updateUserReq.getHousingStatus()));
} }
imManager.updateImInfoAsync(user.getId(),user.getAvatar(),user.getNickname(),user.getGender());
this.checkFinishStatus(user.getId()); this.checkFinishStatus(user.getId());
} }