diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java index 466db751..115a0e5c 100644 --- a/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java @@ -1,7 +1,10 @@ package com.ruoyi.test.business; +import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.UserCount; +import com.ruoyi.cai.im.ImManager; import com.ruoyi.cai.service.UserCountService; +import com.ruoyi.cai.service.UserService; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +18,10 @@ public class UserTest { @Autowired private UserCountService userCountService; + @Autowired + private UserService userService; + @Autowired + private ImManager imManager; @Test public void test(){ @@ -23,4 +30,12 @@ public class UserTest { userCountService.reset(userCount.getUserId()); } } + + @Test + public void refreshIm(){ + List list = userService.list(); + for (User user : list) { + imManager.updateImInfo(user.getId(),user.getAvatar(),user.getNickname()); + } + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java index acc9dad0..51485ce5 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java @@ -24,9 +24,7 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.system.service.SysLoginService; -import com.ruoyi.yunxin.Yunxin; import com.ruoyi.yunxin.client.ImUserClient; import com.ruoyi.yunxin.req.CreateUserReq; import com.ruoyi.yunxin.req.UpdateTokenReq; @@ -135,21 +133,20 @@ public class CaiLoginManager { lock.unlock(); } awardManager.giveRegisterAsync(user.getId()); - if(user.getInviteId() != null){ + if(caiUser.getInviteId() != null){ User finalUser = user; - ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser,true)); + ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser,caiUser.getInviteId(), true)); } return login(user); } - - public void dealInviteId(User user, boolean openIgnore){ - Long inviteId = user.getInviteId(); - if(inviteId == null){ + @Transactional(rollbackFor = Exception.class) + public void dealInviteId(User user, String inviteUserCode, boolean openIgnore){ + if(StringUtils.isEmpty(inviteUserCode)){ return; } - User inviteUser = userService.getById(inviteId); + User inviteUser = userService.getByUserCode(inviteUserCode); if(inviteUser == null){ return; } @@ -167,21 +164,24 @@ public class CaiLoginManager { if(!sj){ InviteIgnoreData data = new InviteIgnoreData(); data.setUserId(user.getId()); - data.setInviteId(inviteId); + data.setInviteId(inviteUserCode); ignoreDataService.saveIgnoreData(IgnoreDataTypeEnum.INVITE,inviteUser.getId(),data); return; } } + userService.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId, user.getId()) + .eq(User::getInviteId, inviteUser.getId())); UserInvite check = userInviteService.getByUserId(user.getId()); if(check == null){ UserInvite userInvite = new UserInvite(); userInvite.setUserId(user.getId()); - userInvite.setInviteId(user.getInviteId()); + userInvite.setInviteId(inviteUser.getInviteId()); userInviteService.save(userInvite); }else{ userInviteService.update(Wrappers.lambdaUpdate(UserInvite.class) .eq(UserInvite::getId,check.getId()) - .set(UserInvite::getInviteId,user.getInviteId()) + .set(UserInvite::getInviteId,inviteUser.getInviteId()) .set(UserInvite::getRewardCoinTotal,0L)); } // 处理工会 @@ -195,7 +195,7 @@ public class CaiLoginManager { } } if(union == null){ - log.info("邀请人没有工会,无法入会 inviteId={}",inviteId); + log.info("邀请人没有工会,无法入会 inviteUserCode={}",inviteUserCode); return; } UnionUser checkUnionUser = unionUserService.getByUserId(user.getId()); @@ -262,7 +262,6 @@ public class CaiLoginManager { add.setMobile(user.getUsername()); add.setGender(GenderEnum.NONE.getCode()); add.setAvatar(GenderEnum.NONE.getDefaultAvatar()); - add.setInviteId(user.getInviteId()); add.setImToken(IdUtil.simpleUUID()); userService.save(add); CreateUserReq req = new CreateUserReq(); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiRegisterUser.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiRegisterUser.java index f556cd19..be513803 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiRegisterUser.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiRegisterUser.java @@ -21,5 +21,5 @@ public class CaiRegisterUser { @NotEmpty(message = "验证码不能为空") private String code; @Schema(description = "邀请人ID") - private Long inviteId; + private String inviteId; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/UserUpdateReq.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/UserUpdateReq.java index 64ddc548..a8d8566a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/UserUpdateReq.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/UserUpdateReq.java @@ -10,8 +10,8 @@ import java.time.LocalDateTime; public class UserUpdateReq { @Schema(description = "用户ID",hidden = true) private Long userId; - @Schema(description = "邀请人ID") - private Long inviteId; + @Schema(description = "邀请人用户编号") + private String inviteId; @Schema(description = "城市") private Integer cityId; @Schema(description = "昵称") diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/ignoredata/InviteIgnoreData.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/ignoredata/InviteIgnoreData.java index b6df8765..abad5e72 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/ignoredata/InviteIgnoreData.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/commom/ignoredata/InviteIgnoreData.java @@ -5,5 +5,5 @@ import lombok.Data; @Data public class InviteIgnoreData { private Long userId; - private Long inviteId; + private String inviteId; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/im/ImManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/im/ImManager.java index d143f3ee..79edfba2 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/im/ImManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/im/ImManager.java @@ -24,15 +24,19 @@ public class ImManager { if(userId == null){ return; } - if(StringUtils.isNotBlank(avatar) && StringUtils.isNotBlank(nickname)){ + if(StringUtils.isBlank(avatar) && StringUtils.isBlank(nickname)){ return; } try { UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); uinfoReq.setAccid(userId+""); - if(StringUtils.isNotEmpty(avatar)){ - String cosDomain = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN); - uinfoReq.setIcon(cosDomain + avatar); + if(StringUtils.isNotBlank(avatar)){ + String icon = avatar; + if(!avatar.startsWith("http")){ + String cosDomain = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN); + icon = cosDomain + avatar; + } + uinfoReq.setIcon(icon); } if(StringUtils.isNotBlank(nickname)){ uinfoReq.setName(nickname); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java index e090a085..0767e1b1 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java @@ -159,10 +159,6 @@ public class CurrentUserManager { updateFlag=true; updateYunxin=true; } - if(res.getInviteId() != null && user.getInviteId() != null){ - update.set(User::getInviteId,res.getInviteId()); - user.setInviteId(res.getInviteId()); - } if(res.getBirthday() != null){ update.set(User::getBirthday,res.getBirthday()); update.set(User::getAge, UserUtil.getAge(res.getBirthday())); @@ -211,10 +207,9 @@ public class CurrentUserManager { } } } - if(res.getInviteId() != null && user.getInviteId() != null){ - ExecutorConstant.COMMON_EXECUTOR.execute(() -> loginManager.dealInviteId(user,false)); - } - + } + if(res.getInviteId() != null && user.getInviteId() != null){ + ExecutorConstant.COMMON_EXECUTOR.execute(() -> loginManager.dealInviteId(user, res.getInviteId(),false)); } return true; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java index 62ccd0ac..1ccf8d43 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java @@ -374,7 +374,7 @@ public class UserServiceImpl extends ServiceImpl implements Us .eq(User::getId,userId) .set(User::getInviteId,inviteUser.getId())); user = this.getById(userId); - caiLoginManager.dealInviteId(user,false); + caiLoginManager.dealInviteId(user,inviteUsercode,false); } @Override diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/AgreeMessageHandle.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/AgreeMessageHandle.java index d8b9cd3f..08bb3209 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/AgreeMessageHandle.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/AgreeMessageHandle.java @@ -55,8 +55,8 @@ public class AgreeMessageHandle extends AbstractMessageHandle implements IMessag String message = "提示:禁止任何涉黄、任何微信QQ引导到其它平台行为"; sendToAll(room.getRoomId(), WsRMsgGen.startVideo(room.getRoomId(),0L),WsRMsgGen.sysNotice(message)); try { - Long callTime = roomService.getCallTime(room); - sendToAll(room.getRoomId(),WsRMsgGen.canCallTime(callTime)); + Long callCallTime = roomService.canCallTime(room); + sendToAll(room.getRoomId(),WsRMsgGen.canCallTime(callCallTime)); }catch (Exception e){ log.error("发送可通话时长失败",e); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/RoomService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/RoomService.java index 5e0d5c8d..5bbf5ced 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/RoomService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/RoomService.java @@ -156,6 +156,7 @@ public class RoomService { long blockAmount = roomData.getPayCoin() + roomData.getPayIncome(); long totalAmount = account.getCoin()+account.getIncomeCoin() + blockAmount; long totalSecond = (totalAmount / roomData.getCallPrice()) * 60; +// log.info("总金额:{}, 锁定金额:{},单价:{},可拨打秒杀:{}",totalAmount, blockAmount, roomData.getCallPrice(), totalSecond); long useTime = 0; if(roomData.getBeginTime() != null){ useTime = DateUtil.currentSeconds() - roomData.getBeginTime(); diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java index 95740e55..7ace798e 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java @@ -50,7 +50,7 @@ public class Yunxin { public YxDataR batchSendToNotice(List toUid, Object data){ SendBatchMsgReq req = new SendBatchMsgReq(); req.setFromAccid(SYS_NOTICE_ID); - req.setToAccids(toUid.stream().map(String::valueOf).collect(Collectors.toList())); + req.setToAccids(JSON.toJSONString(toUid.stream().map(String::valueOf).collect(Collectors.toList()))); req.setBody(JSON.toJSONString(data)); req.setOption(JSON.toJSONString(new Option())); req.setType(100); @@ -60,7 +60,7 @@ public class Yunxin { public YxDataR batchSendToNotice(List toUid, Object body, Option option, YxImTypeEnum type){ SendBatchMsgReq req = new SendBatchMsgReq(); req.setFromAccid(SYS_NOTICE_ID); - req.setToAccids(toUid.stream().map(String::valueOf).collect(Collectors.toList())); + req.setToAccids(JSON.toJSONString(toUid.stream().map(String::valueOf).collect(Collectors.toList()))); req.setBody(JSON.toJSONString(body)); if(option != null){ req.setOption(JSON.toJSONString(new Option())); @@ -86,7 +86,7 @@ public class Yunxin { public YxDataR batchSendToTextMessage(Long fromUid, List toUid, String data){ SendBatchMsgReq req = new SendBatchMsgReq(); req.setFromAccid(fromUid+""); - req.setToAccids(toUid.stream().map(String::valueOf).collect(Collectors.toList())); + req.setToAccids(JSON.toJSONString(toUid.stream().map(String::valueOf).collect(Collectors.toList()))); req.setBody(JSON.toJSONString(new YxTextData(data))); return messageClient.sendBatchMsg(req); } diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/SendBatchMsgReq.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/SendBatchMsgReq.java index 04af4b77..2341067d 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/SendBatchMsgReq.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/SendBatchMsgReq.java @@ -7,7 +7,7 @@ import java.util.List; @Data public class SendBatchMsgReq { private String fromAccid; - private List toAccids; + private String toAccids; private int type = 0; private String body; private String option;