Browse Source

历史记录

liujc 1 year ago
parent
commit
ffab334254

+ 1 - 1
mec-application/src/main/java/com/ym/mec/web/controller/ImHistoryMessageController.java

@@ -120,7 +120,7 @@ public class ImHistoryMessageController extends BaseController {
     @PostMapping(value = "/historyMessage")
     @PostMapping(value = "/historyMessage")
     public HttpResponseResult<PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent>> historyMessage(@RequestBody  HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) throws Exception {
     public HttpResponseResult<PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent>> historyMessage(@RequestBody  HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) throws Exception {
 
 
-        return succeedData(historyMessageTenantService.historyMessage(query));
+        return succeedData(imGroupService.historyMessage(query));
     }
     }
 
 
 
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -383,4 +383,6 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     List<Student> queryBaseInfoByPage(Map<String, Object> params);
     List<Student> queryBaseInfoByPage(Map<String, Object> params);
 
 
     int queryBaseInfoCount(Map<String, Object> params);
     int queryBaseInfoCount(Map<String, Object> params);
+
+    List<SysUser> listUserByIds(@Param("userIds") List<Integer> userIds);
 }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -14,10 +14,12 @@ import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.common.service.BaseService;
 import com.yonge.log.dal.model.HistoryMessage;
 import com.yonge.log.dal.model.HistoryMessage;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 public interface ImGroupService extends BaseService<String, ImGroup> {
 public interface ImGroupService extends BaseService<String, ImGroup> {
 
 
@@ -214,4 +216,13 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 
 
     @NotNull
     @NotNull
     List<TencentRequest.MessageBody> getPrivateMessge(HistoryMessage i, JSONObject jsonObject);
     List<TencentRequest.MessageBody> getPrivateMessge(HistoryMessage i, JSONObject jsonObject);
+
+    /**
+     * 查询聊天记录
+     *
+     * @param query 查询条件
+     */
+    com.yonge.mongodb.PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent> historyMessage(HistoryMessageTencentWrapper.HistoryMessageTencentQuery query);
+
+    Map<String,ImGroup> getMapByIds(List<String> groupIdList);
 }
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -251,4 +251,6 @@ public interface StudentService extends BaseService<Integer, Student> {
     void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId);
     void updateStudentMember(Integer userId, Date endTime,String memo,Integer operatorId);
 
 
     PageInfo<Student> queryBaseInfoByPage(QueryInfo queryInfo);
     PageInfo<Student> queryBaseInfoByPage(QueryInfo queryInfo);
+
+    Map<Integer,SysUser> getUserMapByIds(List<Integer> userIds);
 }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserService.java

@@ -12,4 +12,8 @@ public interface SysUserService {
     SysUser queryUserById(Integer userId);
     SysUser queryUserById(Integer userId);
 
 
     Boolean updateSysUser(SysUser user);
     Boolean updateSysUser(SysUser user);
+
+    String getImName(SysUser sysUser);
+
+    String getImAvatar(SysUser sysUser);
 }
 }

+ 76 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -56,6 +56,7 @@ import com.yonge.log.dal.model.HistoryMessage;
 import com.yonge.log.dal.model.HistoryMessageTencent;
 import com.yonge.log.dal.model.HistoryMessageTencent;
 import com.yonge.log.service.HistoryMessageService;
 import com.yonge.log.service.HistoryMessageService;
 import com.yonge.log.service.HistoryMessageTenantService;
 import com.yonge.log.service.HistoryMessageTenantService;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -76,16 +77,7 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Base64;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Random;
-import java.util.UUID;
+import java.util.*;
 import java.util.function.Function;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -1575,6 +1567,80 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         return list;
         return list;
     }
     }
 
 
+    @Override
+    public com.yonge.mongodb.PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent> historyMessage(HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) {
+        com.yonge.mongodb.PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent> pageInfo = historyMessageTencentService.historyMessage(query);
+
+        List<HistoryMessageTencentWrapper.HistoryMessageTencent> rows = pageInfo.getRows();
+        if (CollectionUtils.isEmpty(rows)) {
+            return pageInfo;
+        }
+        // 发送人信息
+        List<Integer> fromAccountList = rows.stream()
+            .map(HistoryMessageTencentWrapper.HistoryMessageTencent::getFromAccount)
+            .filter(StringUtils::isNotEmpty)
+            .map(Integer::parseInt)
+            .collect(Collectors.toList());
+        Map<Integer, SysUser> userMap = studentService.getUserMapByIds(fromAccountList);
+        rows.forEach(item -> {
+            if (StringUtils.isEmpty(item.getFromAccount())) {
+                return;
+            }
+            SysUser sysUser = userMap.get(Integer.parseInt(item.getFromAccount()));
+            if (sysUser != null) {
+                item.setFromAccountName(sysUserService.getImName(sysUser));
+                item.setFromAccountAvatar(sysUserService.getImName(sysUser));
+            }
+        });
+        // 接收人
+        List<Integer> toAccountList = rows.stream()
+            .map(HistoryMessageTencentWrapper.HistoryMessageTencent::getToAccount)
+            .filter(StringUtils::isNotEmpty)
+            .map(Integer::parseInt)
+            .collect(Collectors.toList());
+        Map<Integer, SysUser> toUserMap = studentService.getUserMapByIds(toAccountList);
+        rows.forEach(item -> {
+            if (StringUtils.isEmpty(item.getToAccount())) {
+                return;
+            }
+            SysUser sysUser = toUserMap.get(Integer.parseInt(item.getToAccount()));
+            if (sysUser != null) {
+                item.setToAccountName(sysUserService.getImName(sysUser));
+                item.setToAccountAvatar(sysUserService.getImName(sysUser));
+            }
+        });
+        // 群
+        List<String> groupIdList = rows.stream()
+            .map(HistoryMessageTencentWrapper.HistoryMessageTencent::getGroupId)
+            .filter(StringUtils::isNotEmpty)
+            .collect(Collectors.toList());
+        Map<String, ImGroup> groupMap = this.getMapByIds(groupIdList);
+        rows.forEach(item -> {
+            if (StringUtils.isEmpty(item.getGroupId())) {
+                return;
+            }
+            ImGroup imGroup = groupMap.get(item.getGroupId());
+            if (imGroup != null) {
+                item.setGroupName(imGroup.getName());
+                item.setGroupAvatar(imGroup.getImg());
+            }
+        });
+
+        return pageInfo;
+    }
+
+    @Override
+    public Map<String, ImGroup> getMapByIds(List<String> groupIdList) {
+        if (CollectionUtils.isEmpty(groupIdList)) {
+            return new HashMap<>();
+        }
+        List<ImGroup> imGroups = imGroupDao.getByIds(groupIdList);
+        if (CollectionUtils.isEmpty(imGroups)) {
+            return new HashMap<>();
+        }
+        return imGroups.stream().collect(Collectors.toMap(ImGroup::getId, item -> item));
+    }
+
     private TencentRequest.MessageBody getTimGifElem(String remoteUr,int size,int width,int height) {
     private TencentRequest.MessageBody getTimGifElem(String remoteUr,int size,int width,int height) {
         if (StringUtils.isEmpty(remoteUr) && size == 0 && width == 0 && height == 0) {
         if (StringUtils.isEmpty(remoteUr) && size == 0 && width == 0 && height == 0) {
             return null;
             return null;

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1692,6 +1692,18 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         return pageInfo;
         return pageInfo;
     }
     }
 
 
+    @Override
+    public Map<Integer,SysUser> getUserMapByIds(List<Integer> userIds) {
+        if (CollectionUtils.isEmpty(userIds)) {
+            return new HashMap<>();
+        }
+        List<SysUser> sysUsers = studentDao.listUserByIds(userIds);
+        if (CollectionUtils.isEmpty(sysUsers)) {
+            return new HashMap<>();
+        }
+        return sysUsers.stream().collect(Collectors.toMap(SysUser::getId, Function.identity()));
+    }
+
     private int queryBaseInfoCount(Map<String, Object> params) {
     private int queryBaseInfoCount(Map<String, Object> params) {
         return studentDao.queryBaseInfoCount(params);
         return studentDao.queryBaseInfoCount(params);
     }
     }

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserServiceImpl.java

@@ -1,12 +1,18 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.enums.ClientEnum;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.List;
 import java.util.Optional;
 import java.util.Optional;
 
 
 @Service
 @Service
@@ -15,6 +21,9 @@ public class SysUserServiceImpl implements SysUserService {
     @Autowired
     @Autowired
     private SysUserFeignService sysUserFeignService;
     private SysUserFeignService sysUserFeignService;
 
 
+    @Autowired
+    private SysConfigService sysConfigService;
+
     @Override
     @Override
     public Integer getUserId(){
     public Integer getUserId(){
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
@@ -52,4 +61,34 @@ public class SysUserServiceImpl implements SysUserService {
     public Boolean updateSysUser(SysUser user) {
     public Boolean updateSysUser(SysUser user) {
         return sysUserFeignService.updateSysUser(user);
         return sysUserFeignService.updateSysUser(user);
     }
     }
+
+    @Override
+    public String getImName(SysUser sysUser) {
+        if (sysUser == null) {
+            return "";
+        }
+        String username = sysUser.getUsername();
+        List<String> userTypes = Lists.newArrayList(sysUser.getUserType().split(","));
+        if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
+            username = Optional.ofNullable(sysUser.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
+        }
+        return username;
+    }
+
+    @Override
+    public String getImAvatar(SysUser sysUser) {
+        if (sysUser == null) {
+            return "";
+        }
+        String avatar = sysUser.getAvatar();
+        if (StringUtils.isNotBlank(avatar)) {
+            return avatar;
+        }
+        List<String> userTypes = Lists.newArrayList(sysUser.getUserType().split(","));
+        if (userTypes.size() == 1 && userTypes.contains(ClientEnum.STUDENT.getCode())) {
+            return Optional.ofNullable(sysConfigService.findByParamName(SysConfigService.STUDENT_DEFAULT_AVATAR)).orElse(new SysConfig()).getParanValue();
+        } else {
+            return Optional.ofNullable(sysConfigService.findByParamName(SysConfigService.TEACHER_DEFAULT_AVATAR)).orElse(new SysConfig()).getParanValue();
+        }
+    }
 }
 }

+ 31 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -59,6 +59,30 @@
         <result column="current_grade_num_" property="currentGrade"/>
         <result column="current_grade_num_" property="currentGrade"/>
         <result column="certificate_type_" property="certificateType"/>
         <result column="certificate_type_" property="certificateType"/>
     </resultMap>
     </resultMap>
+    <resultMap id="SysUser" type="com.ym.mec.auth.api.entity.SysUser">
+
+        <result column="id_" property="id"/>
+        <result column="real_name_" property="realName"/>
+        <result column="password_" property="password"/>
+        <result column="salt_" property="salt"/>
+        <result column="avatar_" property="avatar"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="lock_flag_" property="lockFlag"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="wx_openid_" property="wxOpenid"/>
+        <result column="qq_openid_" property="qqOpenid"/>
+        <result column="user_type_" property="userType"/>
+        <result column="gender_" property="gender"/>
+        <result column="nation_" property="nation"/>
+        <result column="birthdate_" property="birthdate"/>
+        <result column="email_" property="email"/>
+        <result column="im_token_" property="imToken"/>
+        <result column="id_card_no_" property="idCardNo"/>
+        <result column="wechat_id_" property="wechatId"/>
+        <result column="is_super_admin_" property="isSuperAdmin"/>
+        <result column="current_grade_num_" property="currentGrade"/>
+        <result column="certificate_type_" property="certificateType"/>
+    </resultMap>
 
 
     <!-- 根据主键查询一条记录 -->
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Student">
     <select id="get" resultMap="Student">
@@ -1433,4 +1457,11 @@
         SELECT COUNT(s.user_id_) FROM student s
         SELECT COUNT(s.user_id_) FROM student s
         LEFT JOIN sys_user su ON  su.id_ = s.user_id_
         LEFT JOIN sys_user su ON  su.id_ = s.user_id_
     </select>
     </select>
+
+    <select id="listUserByIds" resultMap="SysUser">
+        select * from sys_user where id_ in
+        <foreach collection="userIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>
 </mapper>

+ 25 - 1
mec-common/audit-log/src/main/java/com/yonge/log/wrapper/HistoryMessageTencentWrapper.java

@@ -76,9 +76,17 @@ public class HistoryMessageTencentWrapper {
         @ApiModelProperty("自定义数据")
         @ApiModelProperty("自定义数据")
         private String cloudCustomData;
         private String cloudCustomData;
 
 
-        @ApiModelProperty("发送人")
+        @ApiModelProperty("发送人id")
         private String fromAccount;
         private String fromAccount;
 
 
+
+        @ApiModelProperty("发送人名称")
+        private String fromAccountName;
+
+
+        @ApiModelProperty("发送人头像")
+        private String fromAccountAvatar;
+
         @ApiModelProperty("系统")
         @ApiModelProperty("系统")
         private String appService;
         private String appService;
 
 
@@ -97,9 +105,25 @@ public class HistoryMessageTencentWrapper {
         @ApiModelProperty("接收人")
         @ApiModelProperty("接收人")
         private String toAccount;
         private String toAccount;
 
 
+
+        @ApiModelProperty("接收人名称")
+        private String toAccountName;
+
+
+        @ApiModelProperty("接收人头像")
+        private String toAccountAvatar;
+
         @ApiModelProperty("群ID")
         @ApiModelProperty("群ID")
         private String groupId;
         private String groupId;
 
 
+
+        @ApiModelProperty("群名称")
+        private String groupName;
+
+        @ApiModelProperty("群头像")
+        private String groupAvatar;
+
+
         @ApiModelProperty("消息内容")
         @ApiModelProperty("消息内容")
         private String msgBody;
         private String msgBody;