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

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

View File

@@ -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);
}

View File

@@ -53,14 +53,16 @@ public class ImOp {
}
public void refreshIm(){
public void refreshIm(boolean loginOut){
List<User> 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());
}
}
}

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.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() {

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.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){

View File

@@ -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();

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.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<UserInfoAuditMapper,Us
@Autowired
private UserService userService;
@Autowired
private ImManager imManager;
@Override
public UserInfoAudit getAuditingDataByUserIdAndType(Long userId, UserInfoAuditTypeEnum auditTypeEnum){
@@ -71,12 +74,12 @@ public class UserInfoAuditServiceImpl extends ServiceImpl<UserInfoAuditMapper,Us
userService.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, userInfoAudit.getUserId())
.set(User::getAvatar, userInfoAudit.getAuditContent()));
imManager.updateImInfoAsync(userInfoAudit.getUserId(),userInfoAudit.getAuditContent(),null,null);
}else if(userInfoAudit.getInfoType().equals(UserInfoAuditTypeEnum.REMARK.getCode())){
userService.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, userInfoAudit.getUserId())
.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.userinfo.UserGenderEnum;
import com.ruoyi.xq.lock.LockKey;
import com.ruoyi.xq.manager.ImManager;
import com.ruoyi.xq.manager.LoginManager;
import com.ruoyi.xq.manager.SystemConfigManager;
import com.ruoyi.xq.mapper.UserMapper;
@@ -85,6 +86,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> 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<UserMapper,User> 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<UserMapper,User> 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<UserMapper,User> 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());
}