Browse Source

群聊添加好友详情信息

yuanliang 1 year ago
parent
commit
a6c41ef455

+ 2 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/ImGroupController.java

@@ -136,7 +136,7 @@ public class ImGroupController extends BaseController {
             return failed("无效的用户ID");
         }
 
-        ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.TEACHER);
+        ImUserFriendVO.ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.TEACHER);
         if (Objects.isNull(userFriend)) {
             return failed("当前好友不存在");
         }
@@ -145,7 +145,7 @@ public class ImGroupController extends BaseController {
             userFriend.setFriendType(ClientEnum.STUDENT);
         }
 
-        return succeed(ImUserFriendVO.ImUserFriend.from(JSON.toJSONString(userFriend)));
+        return succeed(userFriend);
     }
 }
 

+ 2 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/ImUserFriendController.java

@@ -91,7 +91,7 @@ public class ImUserFriendController extends BaseController {
             return failed("无效的用户ID");
         }
 
-        ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.STUDENT);
+        ImUserFriendVO.ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.STUDENT);
         if (Objects.isNull(userFriend)) {
             return failed("当前好友不存在");
         }
@@ -100,7 +100,7 @@ public class ImUserFriendController extends BaseController {
             userFriend.setFriendType(ClientEnum.TEACHER);
         }
 
-        return succeed(ImUserFriendVO.ImUserFriend.from(JSON.toJSONString(userFriend)));
+        return succeed(userFriend);
     }
 }
 

+ 2 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java

@@ -195,7 +195,7 @@ public class ImGroupController extends BaseController {
             return failed("无效的用户ID");
         }
 
-        ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.TEACHER);
+        ImUserFriendVO.ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.TEACHER);
         if (Objects.isNull(userFriend)) {
             return failed("当前好友不存在");
         }
@@ -204,7 +204,7 @@ public class ImGroupController extends BaseController {
             userFriend.setFriendType(ClientEnum.STUDENT);
         }
 
-        return succeed(ImUserFriendVO.ImUserFriend.from(JSON.toJSONString(userFriend)));
+        return succeed(userFriend);
     }
 
     @ApiOperation(value = "转让群主", notes = "转让群主- 传入 ImGroupVo.ImGroupOwner")

+ 4 - 2
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/ImUserFriendController.java

@@ -9,6 +9,7 @@ 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;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -90,7 +91,7 @@ public class ImUserFriendController extends BaseController {
             return failed("无效的用户ID");
         }
 
-        ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.TEACHER);
+        ImUserFriendVO.ImUserFriend userFriend = imUserFriendService.getDetail(userId, ClientEnum.TEACHER);
         if (Objects.isNull(userFriend)) {
             return failed("当前好友不存在");
         }
@@ -99,7 +100,8 @@ public class ImUserFriendController extends BaseController {
             userFriend.setFriendType(ClientEnum.STUDENT);
         }
 
-        return succeed(ImUserFriendVO.ImUserFriend.from(JSON.toJSONString(userFriend)));
+
+        return succeed(userFriend);
     }
 
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfo.java

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.biz.dal.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
 * @description: 用户基本信息
 * @author zx
@@ -27,4 +29,10 @@ public class BasicUserInfo {
 
     @ApiModelProperty("手机号")
     private String phone;
+
+    @ApiModelProperty("性别")
+    private Integer gender;
+
+    @ApiModelProperty("生日")
+    private Date birthdate;
 }

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImUserFriendService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.vo.im.ImUserFriendVO;
 import com.yonge.cooleshow.biz.dal.wrapper.im.CustomerService;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
 import org.springframework.transaction.annotation.Transactional;
@@ -41,7 +42,7 @@ public interface ImUserFriendService extends IService<ImUserFriend> {
     * @author zx
     * @date 2022/3/24 12:03
     */
-    ImUserFriend getDetail(String userId, ClientEnum clientType);
+    ImUserFriendVO.ImUserFriend getDetail(String userId, ClientEnum clientType);
 
     /**
      * 新用户自动添加客服

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

@@ -11,18 +11,28 @@ import com.microsvc.toolkit.middleware.im.impl.TencentCloudImPlugin;
 import com.microsvc.toolkit.middleware.im.message.ETencentMessage;
 import com.microsvc.toolkit.middleware.im.message.MessageWrapper;
 import com.microsvc.toolkit.middleware.im.message.TencentRequest;
+import com.yonge.cooleshow.api.feign.StudentFeignService;
+import com.yonge.cooleshow.api.feign.TeacherFeignService;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.config.CustomerServiceConfig;
 import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
+import com.yonge.cooleshow.biz.dal.dao.StudentDao;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
+import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
+import com.yonge.cooleshow.biz.dal.vo.StudentVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
+import com.yonge.cooleshow.biz.dal.vo.im.ImUserFriendVO;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.CustomerService;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
 import com.yonge.toolset.base.exception.BizException;
@@ -78,6 +88,12 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
 
     @Autowired
     private ImPluginContext imPluginContext;
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private SubjectService subjectService;
+    @Autowired
+    private VipCardRecordService vipCardRecordService;
     @Override
     public ImUserFriendDao getDao() {
         return this.baseMapper;
@@ -183,49 +199,75 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ImUserFriend getDetail(String imUserId, ClientEnum clientType) {
+    public ImUserFriendVO.ImUserFriend getDetail(String imUserId, ClientEnum clientType) {
 
         // 用户ID
         long userId = Long.parseLong(imGroupService.analysisImUserId(imUserId));
 
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
-        if (sysUser != null && sysUser.getId() != null) {
-
-            ImUserFriend imUserFriend = lambdaQuery()
-                    .eq(ImUserFriend::getUserId, sysUser.getId())
-                    .eq(ImUserFriend::getClientType, clientType)
-                    .eq(ImUserFriend::getFriendId, userId)
-                    .one();
-            if (Objects.nonNull(imUserFriend)) {
-                //更新当前用户关联的该用户的详情信息
-                imUserFriend.setFriendAvatar(basicUserInfo.getAvatar());
-                imUserFriend.setFriendNickname(basicUserInfo.getUsername());
-                imUserFriend.setUpdateTime(new Date());
-                baseMapper.updateById(imUserFriend);
-
-                // 设置融云IM好友ID
-                imUserFriend.setImFriendId(imUserId);
-
-                return imUserFriend;
+        if (basicUserInfo == null) {
+            throw new BizException("无效的用户");
+        }
+
+        String friendClientType = imGroupService.analysisImUserClient(imUserId);
+        ImUserFriend imUserFriend = lambdaQuery()
+                .eq(ImUserFriend::getUserId, sysUser.getId())
+                .eq(ImUserFriend::getClientType, clientType)
+                .eq(ImUserFriend::getFriendId, userId)
+                .eq(ImUserFriend::getFriendType, ClientEnum.valueOf(friendClientType))
+                .one();
+        if (Objects.nonNull(imUserFriend)) {
+            //更新当前用户关联的该用户的详情信息
+            imUserFriend.setFriendAvatar(basicUserInfo.getAvatar());
+            imUserFriend.setFriendNickname(basicUserInfo.getUsername());
+            imUserFriend.setUpdateTime(new Date());
+            baseMapper.updateById(imUserFriend);
+
+            // 设置融云IM好友ID
+            imUserFriend.setImFriendId(imUserId);
+        } else {
+            // 好友身份类型
+            ClientEnum friendType = ClientEnum.TEACHER;
+            if (ClientEnum.STUDENT.match(imGroupService.analysisImUserClient(imUserId))) {
+                friendType = ClientEnum.STUDENT;
             }
+            // 返回当前登录用户信息
+            imUserFriend = new ImUserFriend();
+            imUserFriend.setFriendAvatar(basicUserInfo.getAvatar());
+            imUserFriend.setFriendNickname(basicUserInfo.getUsername());
+            imUserFriend.setFriendId(userId);
+            imUserFriend.setFriendType(friendType);
+            // 设置融云IM好友ID
+            imUserFriend.setImFriendId(imUserId);
         }
 
-        // 好友身份类型
-        ClientEnum friendType = ClientEnum.TEACHER;
-        if (ClientEnum.STUDENT.match(imGroupService.analysisImUserClient(imUserId))) {
-            friendType = ClientEnum.STUDENT;
+        ImUserFriendVO.ImUserFriend result = JSON.parseObject(JSON.toJSONString(imUserFriend), ImUserFriendVO.ImUserFriend.class);
+        result.setFriendGender(basicUserInfo.getGender());
+
+        if (ClientEnum.STUDENT.getCode().equals(friendClientType)) {
+            StudentVo detail = studentDao.detail(userId);
+            if (detail != null && StringUtils.isNotEmpty(detail.getSubjectId())) {
+                String subjectId = detail.getSubjectId();
+                List<Subject> subject = subjectService.findBySubjectByIdList(subjectId);
+                if (!subject.isEmpty()) {
+                    result.setFriendSubjectName(subject.get(0).getName());
+                }
+            }
+        } else if (ClientEnum.TEACHER.getCode().equals(friendClientType)) {
+            TeacherVo detail = teacherDao.detail(userId);
+            if (detail != null && StringUtils.isNotEmpty(detail.getSubjectId())) {
+                String subjectId = detail.getSubjectId();
+                List<Subject> subject = subjectService.findBySubjectByIdList(subjectId);
+                if (!subject.isEmpty()) {
+                    result.setFriendSubjectName(subject.get(0).getName());
+                }
+            }
         }
-        // 返回当前登录用户信息
-        ImUserFriend imUserFriend = new ImUserFriend();
-        imUserFriend.setFriendAvatar(basicUserInfo.getAvatar());
-        imUserFriend.setFriendNickname(basicUserInfo.getUsername());
-        imUserFriend.setFriendId(userId);
-        imUserFriend.setFriendType(friendType);
-        // 设置融云IM好友ID
-        imUserFriend.setImFriendId(imUserId);
-
-        return imUserFriend;
+        VipCardRecordWrapper.UserVip userVip = vipCardRecordService.UserVipInfo(userId, ClientEnum.valueOf(friendClientType));
+        result.setUserVip(userVip);
+        result.setFriendBirthdate(basicUserInfo.getBirthdate());
+        return result;
     }
 
     /**

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -368,6 +368,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
         teacherHomeVo.setDegreeDate(teacher.getDegreeDate());
         teacherHomeVo.setTeacherDate(teacher.getTeacherDate());
+        teacherHomeVo.setCustomerService(teacher.getCustomerService());
         //身份证号、手机号脱敏
         teacherHomeVo.setIdCardNo(ValueUtil.fuzzyIdCard(teacherHomeVo.getIdCardNo()));
 //        teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
@@ -102,6 +103,9 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     @ApiModelProperty(value = "imToken")
     private String imToken;
 
+    @ApiModelProperty("是否是客服")
+    private Boolean customerService;
+
 
     public String getTenantName() {
         return tenantName;

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/im/ImUserFriendVO.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.vo.im;
 import com.alibaba.fastjson.JSON;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -58,6 +59,18 @@ public class ImUserFriendVO {
         @ApiModelProperty(value = "修改时间;")
         private Date updateTime;
 
+        @ApiModelProperty(value = "好友会员信息")
+        private VipCardRecordWrapper.UserVip userVip;
+
+        @ApiModelProperty("声部")
+        private String friendSubjectName;
+
+        @ApiModelProperty("性别,1:男,0:女")
+        private Integer friendGender;
+
+        @ApiModelProperty("生日")
+        private Date friendBirthdate;
+
         public static ImUserFriend from(String record) {
 
             return JSON.parseObject(record, ImUserFriend.class);

+ 3 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -234,9 +234,11 @@
         <result property="realName" column="real_name_"/>
         <result property="avatar" column="avatar_"/>
         <result property="phone" column="phone_"/>
+        <result property="gender" column="gender_"/>
+        <result property="birthdate" column="birthdate_"/>
     </resultMap>
     <select id="getBasicUserInfo" resultMap="BasicUserInfo">
-        SELECT id_ user_id_, username_, real_name_, avatar_, phone_
+        SELECT id_ user_id_, username_, real_name_, avatar_, phone_, gender_, birthdate_
         FROM sys_user
         WHERE del_flag_ = 0
           and id_ = #{userId}