Browse Source

重构学生,老师好友列表查询

Eric 2 years ago
parent
commit
c68c7f1499

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImUserFriendService.java

@@ -5,8 +5,10 @@ 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.wrapper.im.CustomerService;
+import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -53,5 +55,14 @@ public interface ImUserFriendService extends IService<ImUserFriend> {
      * @param info CustomerService.NotifyMessage
      */
     void sendCustomerServiceNotifyMessage(String sender, CustomerService.NotifyMessage info);
+
+    /**
+     * 用户IM好友列表
+     * @param clientType 客户端类型
+     * @param userId 用户ID
+     * @param paramMap Map<String, Object>
+     * @return List<ImUserWrapper.ImUserFriend>
+     */
+    List<ImUserWrapper.ImUserFriend> findUserAllImFriendInfo(ClientEnum clientType, Long userId, Map<String, Object> paramMap);
 }
 

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,6 +19,7 @@ import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 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;
 import io.rong.messages.BaseMessage;
 import io.rong.messages.ImgMessage;
@@ -315,7 +317,48 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
         return new String(encoder.encode((baos.toByteArray())));
     }
 
+    /**
+     * 用户IM好友列表
+     *
+     * @param clientType 客户端类型
+     * @param userId 用户ID
+     * @param paramMap   Map<String, Object>
+     * @return List<ImUserWrapper.ImUserFriend>
+     */
+    @Override
+    public List<ImUserWrapper.ImUserFriend> findUserAllImFriendInfo(ClientEnum clientType, Long userId, Map<String, Object> paramMap) {
+
+        // 用户好友匹配条件
+        Object search = paramMap.get("search");
+
+        // 查询用户好友列表
+        List<ImUserFriend> records = lambdaQuery()
+                .eq(ImUserFriend::getUserId, userId)
+                .and(Objects.nonNull(search) && StringUtils.isNotEmpty(search.toString()),
+                        e -> e.eq(ImUserFriend::getFriendId, search).or().like(ImUserFriend::getFriendNickname, search))
+                .orderByDesc(ImUserFriend::getId).list();
+
+        List<ImUserWrapper.ImUserFriend> userFriends = JSON.parseArray(JSON.toJSONString(records), ImUserWrapper.ImUserFriend.class);
+
+        for (ImUserWrapper.ImUserFriend item : userFriends) {
+
+            switch (clientType) {
+                case TEACHER:
+                    {
+                        // 老师查询学生好友
+                    }
+                    break;
+                case STUDENT:
+                    {
+                        // 查询学生老师好友
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
 
-
+        return userFriends;
+    }
 }
 

+ 67 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/im/ImUserWrapper.java

@@ -0,0 +1,67 @@
+package com.yonge.cooleshow.biz.dal.wrapper.im;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MK;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by Eric.Shang on 2022/10/17.
+ */
+public class ImUserWrapper {
+
+    /**
+     * IM好友用户列表
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class ImUserFriend implements Serializable {
+
+        @ApiModelProperty(value = "主键;")
+        private Long id;
+
+        @ApiModelProperty(value = "当前用户编号")
+        private Long userId;
+
+        @ApiModelProperty(value = "好友编号")
+        private Long friendId;
+
+        @ApiModelProperty(value = "IM用户ID")
+        private String imFriendId;
+
+        @ApiModelProperty(value = "好友头像")
+        private String friendAvatar;
+
+        @ApiModelProperty(value = "好友昵称")
+        private String friendNickname;
+
+        @ApiModelProperty(value = "备注")
+        private String memo;
+
+        @ApiModelProperty(value = "创建时间;")
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
+        private Date createTime;
+
+        @ApiModelProperty(value = "修改时间;")
+        @JsonFormat(pattern = MK.TIME_PATTERN, timezone = MK.TIME_ZONE)
+        private Date updateTime;
+
+        @ApiModelProperty("好友身份")
+        private ClientEnum roleType;
+
+        @ApiModelProperty(value = "好友身份")
+        private ClientEnum friendType;
+
+        public ClientEnum getRoleType() {
+            return getFriendType();
+        }
+    }
+
+}

+ 7 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImUserFriendController.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.enums.MK;
 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.im.ImUserWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.*;
@@ -46,6 +47,12 @@ public class ImUserFriendController extends BaseController {
     @ApiOperation("获取通讯录成员列表")
     @PostMapping(value = "/queryAll")
     public HttpResponseResult<List<ImUserFriend>> queryAll(@RequestBody Map<String, Object> params) {
+
+        // 用户ID
+        Long userId = sysUserService.getUserId();
+
+        List<ImUserWrapper.ImUserFriend> userFriends = imUserFriendService.findUserAllImFriendInfo(ClientEnum.TEACHER, userId, params);
+
         Object search = params.get("search");
         List<ImUserFriend> record = imUserFriendService.list(Wrappers.<ImUserFriend>query().lambda()
                 .eq(ImUserFriend::getUserId, sysUserService.getUserId())