liujc 1 rok temu
rodzic
commit
7daed77515

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/UserRoleEnum.java

@@ -19,4 +19,19 @@ public enum UserRoleEnum implements BaseEnum<String, UserRoleEnum> {
     public String getMsg() {
         return msg;
     }
+
+    // clientEnum 转 UserRoleEnum
+    public static UserRoleEnum convert(ClientEnum clientEnum){
+        if(clientEnum == null){
+            return null;
+        }
+        if(ClientEnum.STUDENT.equals(clientEnum)){
+            return STUDENT;
+        }
+        if(ClientEnum.TEACHER.equals(clientEnum)){
+            return TEACHER;
+        }
+        return null;
+    }
+
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -57,6 +57,8 @@ public interface ImGroupService extends IService<ImGroup> {
      */
     String analysisImUserId(String imUserId);
 
+    String analysisImUserClient(String imUserId);
+
     /**
     * @description: 用户主动创建群聊
      * @param imGroup

+ 3 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java

@@ -140,14 +140,11 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
     @Transactional(rollbackFor = Exception.class)
     public ImGroupMember getUserDetail(String imUserId, String groupId) {
 
-        String[] values = imGroupService.analysisImUserId(imUserId).split("_");
         // 用户ID
-        long userId = Long.parseLong(values[0]);
+        Long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
 
-        ClientEnum clientType = ClientEnum.TEACHER;
-        if (values.length > 1 && ClientEnum.STUDENT.match(values[1])) {
-            clientType = ClientEnum.STUDENT;
-        }
+        // 客户端类型
+        ClientEnum clientType = ClientEnum.valueOf(imGroupService.analysisImUserClient(imUserId));
 
         // 群组信息
         ImGroupMember imGroupMember = baseMapper.findByUserIdAndGroupId(userId, groupId, clientType);

+ 15 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -4,10 +4,8 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
-import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.microsvc.toolkit.middleware.im.message.MessageWrapper;
@@ -219,8 +217,18 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
      */
     @Override
     public String analysisImUserId(String imUserId) {
-        if (StringUtils.isNotBlank(imConfig.getAppPrefix())) {
-            return imUserId.replace(imConfig.getAppPrefix() + "_", "");
+        String[] s = imUserId.split("_");
+        if (s.length == 3) {
+            return s[1];
+        }
+        return imUserId;
+    }
+
+    @Override
+    public String analysisImUserClient(String imUserId) {
+        String[] s = imUserId.split("_");
+        if (s.length == 3) {
+            return s[2];
         }
         return imUserId;
     }
@@ -702,12 +710,12 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 TencentRequest.MessageBody body = new TencentRequest.MessageBody();
                 List<TencentRequest.MessageBody> list = new ArrayList<>();
 
+                JSONObject jsonObject = JSONObject.parseObject(i.getContent());
                 if (i.getClassname().equals("RC:TxtMsg")) {
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(i.getContent());
+                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
                     list.add(body1);
                 } else if (i.getClassname().equals("RC:ImgMsg")) {
-                    JSONObject jsonObject = JSONObject.parseObject(i.getContent());
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getJSONObject("user").getString("portraitUri"));
+                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
                     list.add(body1);
                 }
 

+ 6 - 16
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -193,16 +193,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Transactional(rollbackFor = Exception.class)
     public void joinRoomSuccess(String roomId, String imUserId) throws Exception {
 
-        String[] values = imUserId.split(":");
         // 用户ID
-        Long userId = Long.parseLong(values[0]);
+        Long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
 
         // 客户端类型
-        ClientEnum clientType = ClientEnum.TEACHER;
-        if (values.length > 1 && ClientEnum.STUDENT.match(values[1])) {
-
-            clientType = ClientEnum.STUDENT;
-        }
+        ClientEnum clientType = ClientEnum.valueOf(imGroupService.analysisImUserClient(imUserId));
 
         log.info("joinRoomSuccess: roomId={}, userId={}", roomId, userId);
         CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(roomId)).
@@ -316,20 +311,15 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     @Transactional(rollbackFor = Exception.class)
     public void quitRoomSuccess(String roomId, String imUserId) throws Exception {
 
-        String[] values = imUserId.split(":");
         // 用户ID
-        long userId = Long.parseLong(values[0]);
-
+        Long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
 
         // 客户端类型
-        UserRoleEnum userRole = UserRoleEnum.TEACHER;
-        ClientEnum clientType = ClientEnum.TEACHER;
-        if (values.length > 1 && ClientEnum.STUDENT.match(values[1])) {
+        ClientEnum clientType = ClientEnum.valueOf(imGroupService.analysisImUserClient(imUserId));
 
-            clientType = ClientEnum.STUDENT;
 
-            userRole = UserRoleEnum.STUDENT;
-        }
+        // 客户端类型
+        UserRoleEnum userRole = UserRoleEnum.convert(clientType);
 
         log.info("quitRoomSuccess: roomId={}, userId={}", roomId, userId);
         //防止幂等

+ 2 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImUserFriendServiceImpl.java

@@ -130,9 +130,8 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
     @Transactional(rollbackFor = Exception.class)
     public ImUserFriend getDetail(String imUserId, ClientEnum clientType) {
 
-        String[] values = imUserId.split(":");
         // 用户ID
-        long userId = Long.parseLong(values[0]);
+        long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
 
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
@@ -159,7 +158,7 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
 
         // 好友身份类型
         ClientEnum friendType = ClientEnum.TEACHER;
-        if (values.length > 1 && ClientEnum.STUDENT.match(values[1])) {
+        if (ClientEnum.STUDENT.match(imGroupService.analysisImUserClient(imUserId))) {
             friendType = ClientEnum.STUDENT;
         }
         // 返回当前登录用户信息

+ 6 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImUserFriendController.java

@@ -9,12 +9,14 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MK;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.vo.im.ImUserFriendVO;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -41,6 +43,9 @@ public class ImUserFriendController extends BaseController {
     @Resource
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
     @ApiImplicitParams({
             @ApiImplicitParam(name = "search", dataType = "String", value = "根据用户编号、昵称模糊查询")
     })
@@ -77,7 +82,7 @@ public class ImUserFriendController extends BaseController {
     @PostMapping(value = "/getDetail/{userId}")
     public HttpResponseResult<ImUserFriendVO.ImUserFriend> getDetail(@ApiParam(value = "用户编号", required = true) @PathVariable("userId") String userId) {
 
-        String ret = userId.split(":")[0];
+        String ret = imGroupService.analysisImUserId(userId);
         if (!ret.matches(MK.EXP_INT)) {
             return failed("无效的用户ID");
         }

+ 6 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImUserFriendController.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MK;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.vo.im.ImUserFriendVO;
@@ -14,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -40,6 +42,9 @@ public class ImUserFriendController extends BaseController {
     @Resource
     private SysUserService sysUserService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
     @SuppressWarnings("unchecked")//因为返回是集合,这里提示你集合内容较多排序可能回耗费性能
     @ApiImplicitParams({
             @ApiImplicitParam(name = "search", dataType = "String", value = "根据用户编号、昵称模糊查询")
@@ -76,7 +81,7 @@ public class ImUserFriendController extends BaseController {
     @PostMapping(value = "/getDetail/{userId}")
     public HttpResponseResult<ImUserFriendVO.ImUserFriend> getDetail(@ApiParam(value = "用户编号", required = true) @PathVariable("userId") String userId) {
 
-        String ret = userId.split(":")[0];
+        String ret = imGroupService.analysisImUserId(userId);
         if (!ret.matches(MK.EXP_INT)) {
             return failed("无效的用户ID");
         }