diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserController.java index 20d9703f..104306e1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/UserController.java @@ -11,6 +11,7 @@ import com.ruoyi.cai.dto.admin.query.UserUpdateAdminReq; import com.ruoyi.cai.dto.admin.vo.UserAdminVo; import com.ruoyi.cai.dto.admin.vo.UserFullAdminVo; import com.ruoyi.cai.dto.app.query.IdReq; +import com.ruoyi.cai.im.ImManager; import com.ruoyi.cai.manager.UserAdminManager; import com.ruoyi.cai.manager.UserForbidManager; import com.ruoyi.cai.service.UserService; @@ -168,4 +169,36 @@ public class UserController extends BaseController { userService.bindInviteUser(userId,inviteUsercode); return R.ok(); } + + @SaCheckPermission("cai:user:im") + @Log(title = "封禁IM", businessType = BusinessType.OTHER) + @GetMapping("/lockIm") + public R lockIm(Long userId){ + userService.lockIm(userId); + return R.ok(); + } + + @SaCheckPermission("cai:user:im") + @Log(title = "解封IM", businessType = BusinessType.OTHER) + @GetMapping("/unLockIm") + public R unLockIm(Long userId){ + userService.unLockIm(userId); + return R.ok(); + } + + @SaCheckPermission("cai:user:im") + @Log(title = "禁言", businessType = BusinessType.OTHER) + @GetMapping("/noSpeckIm") + public R noSpeckIm(Long userId){ + userService.noSpeckIm(userId); + return R.ok(); + } + + @SaCheckPermission("cai:user:im") + @Log(title = "解除禁言", businessType = BusinessType.OTHER) + @GetMapping("/enSpeckIm") + public R enSpeckIm(Long userId){ + userService.enSpeckIm(userId); + return R.ok(); + } } diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/business/RoomTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/business/RoomTest.java index 822436c8..19b15abf 100644 --- a/ruoyi-admin/src/test/java/com/ruoyi/test/business/RoomTest.java +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/business/RoomTest.java @@ -18,14 +18,15 @@ import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest @Slf4j public class RoomTest { -// @Autowired -// private RoomCheckJobService roomCheckJobService; @Test public void test(){ -// Long roomId = 1761964822147088386L; -// JobResp resp = roomCheckJobService.checkRoom(roomId); -// log.error(JSON.toJSONString(resp)); + Long userId = 15040L; + // 封号 +// userService.lockIm(userId); +// userService.unLockIm(userId); +// userService.noSpeckIm(userId); + userService.enSpeckIm(userId); } @Autowired diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/User.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/User.java index 73d6379e..b991fbff 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/User.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/User.java @@ -122,6 +122,9 @@ public class User implements Serializable { * im_token */ private String imToken; + + private Boolean imSpeck; + private Boolean enableIm; /** * 是否是播主 0 否 1 是 */ 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 62a54bb4..379dcda3 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 @@ -4,7 +4,11 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.yunxin.client.ImUserClient; import com.ruoyi.yunxin.client.ImUserRefClient; +import com.ruoyi.yunxin.req.BlockReq; +import com.ruoyi.yunxin.req.MuteModuleReq; +import com.ruoyi.yunxin.req.UnblockReq; import com.ruoyi.yunxin.req.UpdateUinfoReq; import com.ruoyi.yunxin.resp.YxCommonR; import lombok.extern.slf4j.Slf4j; @@ -20,6 +24,44 @@ public class ImManager { private SystemConfigManager systemConfigManager; @Resource private ImUserRefClient userRefClient; + @Resource + private ImUserClient imUserClient; + + public boolean enSpeck(Long userId){ + MuteModuleReq req = new MuteModuleReq(); + req.setMuteP2P(false); + req.setMuteTeam(false); + req.setMuteRoom(false); + req.setMuteQChat(false); + req.setAccid(userId+""); + YxCommonR res = imUserClient.muteModule(req); + return res != null && res.isSuccess(); + } + + public boolean noSpeck(Long userId){ + MuteModuleReq req = new MuteModuleReq(); + req.setMuteP2P(true); + req.setMuteTeam(true); + req.setMuteRoom(true); + req.setMuteQChat(true); + req.setAccid(userId+""); + YxCommonR res = imUserClient.muteModule(req); + return res != null && res.isSuccess(); + } + + public boolean unblock(Long userId){ + UnblockReq req = new UnblockReq(); + req.setAccid(userId+""); + YxCommonR res = imUserClient.unblock(req); + return res != null && res.isSuccess(); + } + + public boolean lock(Long userId){ + BlockReq req = new BlockReq(); + req.setAccid(userId+""); + YxCommonR block = imUserClient.block(req); + return block != null && block.isSuccess(); + } public void updateImInfo(Long userId, String avatar, String nickname,Integer gender){ if(userId == null){ return; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/notice/YunxinHttpService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/notice/YunxinHttpService.java index 3d0925a0..04871b46 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/notice/YunxinHttpService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/notice/YunxinHttpService.java @@ -150,7 +150,7 @@ public class YunxinHttpService { data.setTxt1(String.format("充值分成:每一笔账户充值将给其邀请账户额外赠送%s的%s", CaiNumUtil.rateToStr(rate), caiProperties.getCoinName())); data.setCurrentDate(); data.addFields("充值用户",sourceUser.getNickname()); - data.addFields("蜜瓜号",sourceUser.getUsercode()); + data.addFields(caiProperties.getHomeName()+"号",sourceUser.getUsercode()); data.addFields("充值金额",payCoin+caiProperties.getCoinName()); data.addFields("充值分成",incomeCoin+caiProperties.getCoinName()); NoticeR notice = NoticeR.ok(MessageBaseTypeEnum.TXT, data); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java index af5793a1..711dbf49 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java @@ -51,4 +51,12 @@ public interface UserService extends IService { void bindInviteUser(Long userId, String inviteUsercode); UserMinInfoVo minInfo(Long userId); + + void lockIm(Long userId); + + void unLockIm(Long userId); + + void noSpeckIm(Long userId); + + void enSpeckIm(Long userId); } 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 7697febd..66805c12 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 @@ -1,7 +1,6 @@ package com.ruoyi.cai.service.impl; import cn.dev33.satoken.secure.BCrypt; -import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,9 +12,7 @@ import com.ruoyi.cai.dto.app.query.index.UserMapperQuery; import com.ruoyi.cai.dto.app.query.index.UserQuery; import com.ruoyi.cai.dto.app.vo.user.*; import com.ruoyi.cai.enums.GenderEnum; -import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.im.ImManager; -import com.ruoyi.cai.manager.SystemConfigManager; import com.ruoyi.cai.mapper.UserMapper; import com.ruoyi.cai.notice.YunxinHttpService; import com.ruoyi.cai.service.*; @@ -24,16 +21,12 @@ import com.ruoyi.cai.ws.service.RoomService; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.LoginHelper; -import com.ruoyi.yunxin.client.ImUserRefClient; -import com.ruoyi.yunxin.req.UpdateUinfoReq; -import com.ruoyi.yunxin.resp.YxCommonR; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; @@ -402,4 +395,41 @@ public class UserServiceImpl extends ServiceImpl implements Us return vo; } + @Override + public void lockIm(Long userId){ + boolean success = imManager.lock(userId); + if(success){ + this.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId,userId) + .set(User::getEnableIm, false)); + } + } + @Override + public void unLockIm(Long userId){ + boolean success = imManager.unblock(userId); + if(success){ + this.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId,userId) + .set(User::getEnableIm, true)); + } + } + @Override + public void noSpeckIm(Long userId){ + boolean success = imManager.noSpeck(userId); + if(success){ + this.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId,userId) + .set(User::getImSpeck, false)); + } + } + @Override + public void enSpeckIm(Long userId){ + boolean success = imManager.enSpeck(userId); + if(success){ + this.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getId,userId) + .set(User::getImSpeck, true)); + } + } + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/util/AES.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/util/AES.java index 2c54c090..ec5e427a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/util/AES.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/util/AES.java @@ -8,7 +8,7 @@ import java.util.Base64; public class AES { public static void main(String[] args) throws Exception { - String jsonData ="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"; + String jsonData ="/VLXcyfcTdy7vJhUb2mYF4x0TNmg1wwQiPNvlqcjt1Nib68nfv4oIHqDmORW6M79P0DJPY+dgLqECx6zdlleSnrQd5qxi49si9AANz++o/oe0QyI1Bl38Obt/xaxpQLFCGlMJ61Sh67SePfMVBkjG5zPhLF1xj9aid7QjP4JJ3OHYdKU8uupzvWAZRplgKWSd+go5JUyG3GdPL2cbicgnZAEz8gkp0PVQHK8flAK099cvH0Nwp8dibLUua6RkAfMbMcGJEGRod256E36xm3bJIMnoF3XGJXkqyikbrVUiJE="; String key = "UPsfSES4456W8ILv"; System.out.println(decrypt(jsonData,key)); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/holder/WebSocketSessionHolder.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/holder/WebSocketSessionHolder.java index 193e7c93..2e0ba192 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/holder/WebSocketSessionHolder.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/holder/WebSocketSessionHolder.java @@ -2,6 +2,8 @@ package com.ruoyi.cai.ws.holder; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.WebSocketSession; import java.io.IOException; @@ -15,6 +17,7 @@ import java.util.concurrent.ConcurrentHashMap; * @author zendwang */ @NoArgsConstructor(access = AccessLevel.PRIVATE) +@Slf4j public class WebSocketSessionHolder { private static final Map USER_SESSION_MAP = new ConcurrentHashMap<>(); @@ -25,6 +28,7 @@ public class WebSocketSessionHolder { } public static void addSession(String sessionKey, WebSocketSession session,Long userId) { + log.info("收到sessionId={} userId={}",sessionKey, userId); USER_SESSION_MAP.put(sessionKey, session); if(USER_SESSION_ID_MAP.containsKey(userId)){ // T人动作 String sessionKeyOld = USER_SESSION_ID_MAP.get(userId); @@ -33,7 +37,8 @@ public class WebSocketSessionHolder { if(webSocketSession != null){ if(webSocketSession.isOpen()){ try { - webSocketSession.close(); + log.info("检测到该用户存在历史的sessionId={} userId={}, 清理掉",sessionKey, userId); + webSocketSession.close(new CloseStatus(500100)); } catch (IOException e) { // ignore } diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/client/ImUserClient.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/client/ImUserClient.java index ef38d3a7..555e1307 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/client/ImUserClient.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/client/ImUserClient.java @@ -4,10 +4,7 @@ import com.dtflys.forest.annotation.BaseRequest; import com.dtflys.forest.annotation.Body; import com.dtflys.forest.annotation.Post; import com.ruoyi.yunxin.interceptor.GlodonTokenInterceptor; -import com.ruoyi.yunxin.req.BlockReq; -import com.ruoyi.yunxin.req.CreateUserReq; -import com.ruoyi.yunxin.req.UnblockReq; -import com.ruoyi.yunxin.req.UpdateTokenReq; +import com.ruoyi.yunxin.req.*; import com.ruoyi.yunxin.resp.YxCommonR; @BaseRequest(baseURL = "${baseUrl}", interceptor = GlodonTokenInterceptor.class) @@ -26,4 +23,7 @@ public interface ImUserClient { @Post(url = "/nimserver/user/unblock.action") YxCommonR unblock(@Body UnblockReq req); + @Post(url = "/nimserver/user/muteModule.action") + YxCommonR muteModule(@Body MuteModuleReq req); + } diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/MuteModuleReq.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/MuteModuleReq.java new file mode 100644 index 00000000..83bcdc5f --- /dev/null +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/req/MuteModuleReq.java @@ -0,0 +1,12 @@ +package com.ruoyi.yunxin.req; + +import lombok.Data; + +@Data +public class MuteModuleReq { + private String accid; + private Boolean muteP2P; + private Boolean muteTeam = true; + private Boolean muteRoom = true; + private Boolean muteQChat = true; +}