Przeglądaj źródła

Merge remote-tracking branch 'origin/feature/1020-tencent-im' into feature/1020-tencent-im

yuanliang 1 rok temu
rodzic
commit
da201f94f0
32 zmienionych plików z 363 dodań i 112 usunięć
  1. 12 1
      mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  2. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/ImHistoryMessageController.java
  3. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  4. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImHistoryMessageController.java
  5. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java
  6. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/ImHistoryMessageController.java
  7. 6 3
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/AbstractAuthenticationProvider.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  9. 6 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EFriendRoleType.java
  10. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java
  11. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  12. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  13. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserService.java
  14. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
  15. 14 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  16. 12 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  17. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java
  18. 31 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  19. 118 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  20. 2 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java
  21. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java
  22. 5 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  23. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  24. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  25. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserServiceImpl.java
  26. 0 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  27. 1 1
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  28. 31 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  29. 25 1
      mec-common/audit-log/src/main/java/com/yonge/log/wrapper/HistoryMessageTencentWrapper.java
  30. 0 3
      mec-im/src/main/java/com/ym/controller/GroupController.java
  31. 7 6
      mec-im/src/main/java/com/ym/controller/UserController.java
  32. 2 2
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

+ 12 - 1
mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.vo.ImUserWrapper;
@@ -47,6 +48,9 @@ public class ImGroupController extends BaseController {
 	@Autowired
 	private SysUserService sysUserService;
 
+    @Autowired
+    private ImGroupCoreService imGroupCoreService;
+
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
 	public Object queryGroupList(String search,String groupType) {
@@ -105,7 +109,7 @@ public class ImGroupController extends BaseController {
 			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
 			if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
 				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
-				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).orElse(user.getUsername()));
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
 			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
@@ -200,4 +204,11 @@ public class ImGroupController extends BaseController {
 	public Object addGroupMember(String imGroupId) {
 		return succeed(imGroupMemberService.join(imGroupId,sysUserService.getUserId(),"",false));
 	}
+
+
+    @ApiOperation("注册im")
+    @GetMapping(value = "/imRegister")
+    public Object imRegister(Integer userId) throws Exception {
+        return succeed(imGroupCoreService.register(userId.toString(),"","测试",null));
+    }
 }

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

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

+ 1 - 1
mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -126,7 +126,7 @@ public class ImGroupController extends BaseController {
 			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
 			if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
 				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
-				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).orElse(user.getUsername()));
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
 			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {

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

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

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

@@ -140,7 +140,7 @@ public class ImGroupController extends BaseController {
 			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
 			if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
 				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
-				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).orElse(user.getUsername()));
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
 			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {

+ 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")
     public HttpResponseResult<PageInfo<HistoryMessageTencentWrapper.HistoryMessageTencent>> historyMessage(@RequestBody  HistoryMessageTencentWrapper.HistoryMessageTencentQuery query) throws Exception {
 
-        return succeedData(historyMessageTenantService.historyMessage(query));
+        return succeedData(imGroupService.historyMessage(query));
     }
 
 

+ 6 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/AbstractAuthenticationProvider.java

@@ -156,11 +156,14 @@ public abstract class AbstractAuthenticationProvider implements AuthenticationPr
 
 		public void check(UserDetails user) {
 			if (!user.isAccountNonLocked()) {
-				throw new LockedException("User account is locked");
+				// User account is locked
+				throw new LockedException("当前账号已锁定");
 			} else if (!user.isEnabled()) {
-				throw new DisabledException("User account is disabled");
+				// User account is disabled
+				throw new DisabledException("当前账号已禁用");
 			} else if (!user.isAccountNonExpired()) {
-				throw new AccountExpiredException("User account is expired");
+				// User account is expired
+				throw new AccountExpiredException("当前账号已失效");
 			}
 		}
 	}

+ 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);
 
     int queryBaseInfoCount(Map<String, Object> params);
+
+    List<SysUser> listUserByIds(@Param("userIds") List<Integer> userIds);
 }

+ 6 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EFriendRoleType.java

@@ -14,6 +14,7 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
     MAINTENANCE_TECHNICIAN(6,"维护技师"),
     ORCHESTRA_TEACHER(7,"指导老师"),
     STUDENT(8,"学生"),
+    UNDEFINE(9,""),
 
 
     ;
@@ -36,6 +37,8 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
                 return SCHOOL_LEADER;
             case "TEACHER":
                 return SCHOOL_TEACHER;
+            case "STUDENT":
+                return STUDENT;
             case "乐团主管":
                 return ORCHESTRA_MANAGER;
             case "指导老师":
@@ -52,7 +55,8 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
             case "维护技师":
                 return SCHOOL_TEACHER;
             default:
-                return STUDENT;
+//                return STUDENT;
+                return UNDEFINE;
         }
     }
 
@@ -74,7 +78,7 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
                 return SysUserType.STUDENT;
         }
 
-        return SysUserType.STUDENT;
+        return null;
     }
 
     public String getMsg() {

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -101,7 +102,7 @@ public class ImGroupMemberWrapper {
         private Boolean groupJoin;
 
         @ApiModelProperty("机构ID")
-        private Integer tenantId;
+        private Integer tenantId = TenantContextHolder.getTenantId();
 
         public static ImGroupMember from(String json) {
             return JSON.parseObject(json, ImGroupMember.class);

+ 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.common.service.BaseService;
 import com.yonge.log.dal.model.HistoryMessage;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 
 public interface ImGroupService extends BaseService<String, ImGroup> {
 
@@ -214,4 +216,13 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 
     @NotNull
     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);
 
     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);
 
     Boolean updateSysUser(SysUser user);
+
+    String getImName(SysUser sysUser);
+
+    String getImAvatar(SysUser sysUser);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -154,6 +154,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         List<ImGroupMemberWrapper.ImGroupMember> groupMembers = null;
         String imUserId = null;
         if (userInfo != null) {
+            userInfo.setGroupId(group.getId());
             imUserId = getImUserId(userInfo.getUserId().toString(), userInfo.getClientType());
             groupMembers = Lists.newArrayList(userInfo);
 
@@ -535,6 +536,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
                 .imUserId(getImUserId(userId.toString(),clientType))
                 .isAdmin(false)
                 .roleType(clientType)
+                .tenantId(imGroup.getTenantId())
                 .build();
         imGroupMembers.add(groupMember);
 

+ 14 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -506,6 +506,20 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         classGroupService.updateClassStudentNum(classGroupId.intValue(), allStudentIds.size());
 
+        if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
+            if (!CollectionUtils.isEmpty(removeStudentIds)){
+                //5、学生退出班级群组
+                imGroupMemberService.quit(classGroup.getId().toString(), new ArrayList<Integer>(removeStudentIds));
+            }
+            if (!CollectionUtils.isEmpty(addStudentIds)) {
+                Map<Integer,String> userRoleMap = new HashMap<>();
+                for (Integer addStudentId : addStudentIds) {
+                    userRoleMap.put(addStudentId, "");
+                }
+                //5、添加进IM群组
+                imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
+            }
+        }
         if (CollectionUtils.isEmpty(classGroupNotStartCourse)) {
             if (!CollectionUtils.isEmpty(addStudentIds)) {
                 if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
@@ -534,23 +548,11 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         if (!CollectionUtils.isEmpty(removeStudentIds)) {
             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, new ArrayList<>(removeStudentIds));
-            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
-                //5、学生退出班级群组
-                imGroupMemberService.quit(classGroup.getId().toString(), new ArrayList<Integer>(addStudentIds));
-            }
         }
 
         if (!CollectionUtils.isEmpty(addStudentIds)) {
             courseScheduleStudentPaymentService.createForMusicGroup(classGroup.getMusicGroupId(), classGroupNotStartCourse, new ArrayList<>(addStudentIds));
             studentDao.updateStudentServiceTag(null, new ArrayList<>(addStudentIds), YesOrNoEnum.YES.getCode());
-            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
-                Map<Integer,String> userRoleMap = new HashMap<>();
-                for (Integer addStudentId : addStudentIds) {
-                    userRoleMap.put(addStudentId, "");
-                }
-                //5、添加进IM群组
-                imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
-            }
         }
 
         //4、调整未上课课酬

+ 12 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -24,6 +24,7 @@ import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.page.QueryInfo;
 import lombok.extern.slf4j.Slf4j;
@@ -64,13 +65,6 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.biz.dal.page.UserBasicQueryInfo;
-import com.ym.mec.biz.service.EmployeeService;
-import com.ym.mec.biz.service.ImGroupMemberService;
-import com.ym.mec.biz.service.ImUserFriendService;
-import com.ym.mec.biz.service.OaUserService;
-import com.ym.mec.biz.service.SysEmployeePositionService;
-import com.ym.mec.biz.service.SysUserTenantService;
-import com.ym.mec.biz.service.TenantInfoService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImResult;
@@ -128,6 +122,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
     @Autowired
     private ImPluginContext imPluginContext;
 
+    @Autowired
+    private SysUserService sysUserService;
+
     @Override
     public BaseDAO<Integer, Employee> getDAO() {
         return employeeDao;
@@ -555,7 +552,12 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 
                             // 设置用户默认头象
                             for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
-                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
+//                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
+                                SysUser user = teacherDao.getUser(member.getUserId().intValue());
+
+                                // 用户头像
+                                member.setAvatar(sysUserService.getImAvatar(user));
+                                member.setNickname(sysUserService.getImName(user));
                             }
                             // 腾讯云用户加群
                             imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
@@ -734,10 +736,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                 String username = userInfo.getUsername();
                 List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
                 if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                    username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
+                    username = Optional.ofNullable(userInfo.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
                 }
 
-                imGroupCoreService.register(String.valueOf(userInfo.getId()), "", username, userInfo.getAvatar());
+                imGroupCoreService.register(String.valueOf(userInfo.getId()), "", username, sysUserService.getImAvatar(userInfo));
             } catch (Exception e) {
                 log.error("用户更新信息同步到三方失败,userId:{}", userInfo.getId(), e);
             }

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java

@@ -3,13 +3,14 @@ package com.ym.mec.biz.service.impl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.service.ImGroupMemberPlusService;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
-import com.ym.mec.biz.dal.entity.ImGroupMember;
 import com.ym.mec.biz.dal.mapper.ImGroupMemberPlusMapper;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 群成员表
@@ -33,6 +34,12 @@ public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusM
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity) {
+        // 添加机构ID
+        for (ImGroupMemberPlus item : imGroupMemberEntity) {
+            if (Objects.isNull(item.getTenantId())) {
+                item.setTenantId(TenantContextHolder.getTenantId());
+            }
+        }
         baseMapper.insertBatch(imGroupMemberEntity);
     }
 

+ 31 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -64,6 +65,9 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	private ImGroupCoreService imGroupCoreService;
 	@Autowired
 	private ImPluginContext imPluginContext;
+
+    @Autowired
+    private SysUserService sysUserService;
 	@Override
 	public BaseDAO<Long, ImGroupMember> getDAO() {
 		return imGroupMemberDao;
@@ -147,12 +151,13 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setRoleType(roleType);
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(userId);
-		SysUser user = teacherDao.getUser(userId);
-		if (StringUtils.isBlank(roleType)) {
-			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
-		} else {
-			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
-		}
+//		if (StringUtils.isBlank(roleType)) {
+//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
+//		} else {
+//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
+//		}
+        SysUser user = teacherDao.getUser(userId);
+        imGroupMember.setNickname(sysUserService.getImName(user));
 
 		imGroupMemberDao.insert(imGroupMember);
 
@@ -177,7 +182,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 						.nickname(imGroupMember.getNickname())
 						.userId(userId.longValue())
 						.imUserId(userId.toString())
-						.avatar(user.getAvatar())
+						.avatar(sysUserService.getImAvatar(user))
 						.updateTime(DateTime.now().toDate())
 						.createTime(DateTime.now().toDate())
 					.build());
@@ -215,12 +220,14 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setRoleType(roleType);
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(user.getId());
-		if (StringUtils.isBlank(roleType)) {
-			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
-		} else {
-			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
-		}
+//		if (StringUtils.isBlank(roleType)) {
+//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
+//		} else {
+//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
+//		}
+
 
+        imGroupMember.setNickname(sysUserService.getImName(user));
 		imGroupMemberDao.insert(imGroupMember);
 
 		imGroup.setMemberNum(1);
@@ -245,7 +252,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 						.nickname(imGroupMember.getNickname())
 						.isAdmin(imGroupMember.getIsAdmin())
 						.roleType(imGroupMember.getRoleType())
-						.avatar(user.getAvatar())
+						.avatar(sysUserService.getImAvatar(user))
 					.build());
 				// 腾讯云IM用户加群
 				imGroupCoreService.groupMemberJoin(groupId, groupMembers);
@@ -341,16 +348,17 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 				try {
 					for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) {
 						// 用户昵称
-						if (StringUtils.isBlank(item.getRoleType())) {
-							item.setNickname(usernameMap.get(item.getUserId().intValue()));
-						} else {
-							item.setNickname(realNameMap.get(item.getUserId().intValue()));
-						}
-						item.setImUserId(item.getUserId().toString());
-
-						BasicUserInfo userInfo = teacherDao.getBasicUserInfo(item.getUserId().intValue());
-						// 用户头像
-						item.setAvatar(userInfo.getAvatar());
+//						if (StringUtils.isBlank(item.getRoleType())) {
+//							item.setNickname(usernameMap.get(item.getUserId().intValue()));
+//						} else {
+//							item.setNickname(realNameMap.get(item.getUserId().intValue()));
+//						}
+//						item.setImUserId(item.getUserId().toString());
+                        SysUser user = teacherDao.getUser(item.getUserId().intValue());
+
+                        // 用户头像
+						item.setAvatar(sysUserService.getImAvatar(user));
+						item.setNickname(sysUserService.getImName(user));
 					}
 					// 腾讯云IM用户加群
 					imGroupCoreService.groupMemberJoin(groupId, groupMembers);

+ 118 - 28
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.service.HistoryMessageService;
 import com.yonge.log.service.HistoryMessageTenantService;
+import com.yonge.log.wrapper.HistoryMessageTencentWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -76,16 +77,7 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 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.stream.Collectors;
 
@@ -210,10 +202,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             groupMember = com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember
                     .builder()
                     .userId(userId.longValue())
-                    .clientType(sysUserType.name())
-                    .avatar(sysUser.getAvatar())
-                    .nickname(sysUserType == SysUserType.STUDENT?sysUser.getUsername():sysUser.getRealName())
+                    .clientType("")
+                    .avatar(sysUserService.getImAvatar(sysUser))
+                    .nickname(sysUserService.getImName(sysUser))
                     .roleType(roleType)
+                    .tenantId(imGroup.getTenantId())
                     .isAdmin(true)
                     .build();
         }
@@ -266,15 +259,16 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     private void addImGroupMember(String groupId, List<ImGroupMember> groupMemberList) {
         List<com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
         for (ImGroupMember groupMember : groupMemberList) {
-            SysUserType sysUserType = EFriendRoleType.getByName(groupMember.getRoleType()).toSysUserType();
+            SysUser user = teacherDao.getUser(groupMember.getUserId());
             imGroupMembers.add(com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember.builder()
                     .groupId(groupMember.getImGroupId())
                     .userId(groupMember.getUserId().longValue())
-                    .clientType(sysUserType.name())
-//                    .avatar(groupMember.getAvatar())
-                    .nickname(groupMember.getNickname())
+//                    .clientType(sysUserType.name())
+                    .avatar(sysUserService.getImAvatar(user))
+                    .nickname(sysUserService.getImName(user))
                     .isAdmin(groupMember.getIsAdmin())
-                    .imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name()))
+                    .tenantId(groupMember.getTenantId())
+                    .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
                     .roleType(groupMember.getRoleType())
                     .build());
         }
@@ -310,7 +304,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
     @Override
     public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
-        List<ImGroup> imGroups = imGroupDao.queryByUserId(userId, search, groupType);
+        List<ImGroup> imGroups = imGroupDao.queryByUserId(userId, search, groupType).stream()
+            .filter(Objects::nonNull).collect(Collectors.toList());
         for (ImGroup item : imGroups) {
             if (Objects.nonNull(item.getGroupType()) && StringUtils.isBlank(item.getImg())) {
                 item.setImg(item.getGroupType().getAvatar());
@@ -347,7 +342,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                 List<String> userTypes = Lists.newArrayList(imGroupMemberDto.getUser().getUserType().split(","));
                 if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                     // 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
-                    imGroupMemberDto.setGroupNickname(imGroupMemberDto.getUser().getRealName());
+                    imGroupMemberDto.setGroupNickname(Optional.ofNullable(imGroupMemberDto.getUser().getRealName()).filter(StringUtils::isNotBlank).orElse(imGroupMemberDto.getUser().getUsername()));
                 }
             }
 
@@ -397,7 +392,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
         // IM用户信息更新
         try {
-            imGroupCoreService.register(userId.toString(),"",nickName,sysUser.getAvatar());
+            imGroupCoreService.register(userId.toString(),"",nickName,sysUserService.getImAvatar(sysUser));
         } catch (Exception e) {
             log.error("更新用户信息失败",e);
             throw new BizException("更新用户信息失败");
@@ -498,7 +493,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         }
         List<String> imGroupIds = imGroupMembers.stream().map(ImGroupMember::getImGroupId).collect(Collectors.toList());
         // 群组没人,删除群组
-        List<ImGroup> imGroups = imGroupDao.queryByUserId(userId.intValue(),null, ImGroup.GroupTypeEnum.SCHOOL.getCode());
+        List<ImGroup> imGroups = imGroupDao.queryByUserId(userId.intValue(),null, ImGroup.GroupTypeEnum.SCHOOL.getCode()).stream()
+            .filter(Objects::nonNull).collect(Collectors.toList());
 
 
         imGroupMemberDao.deleteByUserId(userId);
@@ -537,7 +533,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
 
         // 注册主播用户信息到三方平台
-        imGroupCoreService.register(userId.toString(),"", name, avatar);
+        imGroupCoreService.register(userId.toString(),"", name, sysUserService.getImAvatar(sysUserService.queryUserById(userId)));
 
         boolean createFlag = false;
         // 群组不存在,先创建群组
@@ -558,13 +554,15 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             imGroup.setUpdateTime(new Date());
             imGroup.setTenantId(cooperationOrgan.getTenantId());
 
-            createImGroup(imGroup,userId,"");
+            createImGroup(imGroup,userId,schoolStaffType.getDescribe());
 
             initSchoolGroup(imGroup.getSchoolId());
         } else {
+            SysUser user = teacherDao.getUser(userId);
             ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
                     .userId(userId.longValue())
-                    .nickname(name)
+                    .nickname(sysUserService.getImName(user))
+                    .avatar(sysUserService.getImAvatar(user))
                     .build();
             imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
             // 更新群主流程
@@ -577,6 +575,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             imGroupMember.setUserId(userId);
             imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER));
             imGroupMember.setRoleType(schoolStaffType.getDescribe());
+            imGroupMember.setNickname(name);
             imGroupMember.setType(EFriendRoleType.getByName(schoolStaffType.getDescribe()).name());
             imGroupMember.setTenantId(imGroup.getTenantId());
             imGroupMemberDao.insert(imGroupMember);
@@ -754,7 +753,24 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                 continue;
             }
             try {
-                imGroupCoreService.groupJoin(userId,"",imGroup.getId());
+
+                SysUser user = teacherDao.getUser(userId.intValue());
+                ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
+                    .userId(userId)
+                    .nickname(sysUserService.getImName(user))
+                    .avatar(sysUserService.getImAvatar(user))
+                    .build();
+                imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
+
+                ImGroupMember imGroupMember = new ImGroupMember();
+                imGroupMember.setImGroupId(imGroup.getId());
+                imGroupMember.setUserId(userId.intValue());
+                imGroupMember.setIsAdmin(false);
+                imGroupMember.setRoleType(roleType);
+                imGroupMember.setNickname(sysUserService.getImName(user));
+                imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+                imGroupMember.setTenantId(imGroup.getTenantId());
+                imGroupMemberDao.insert(imGroupMember);
 
                 updateImGroupUserNumber(imGroup.getId());
             } catch (Exception e) {
@@ -1014,10 +1030,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             // 老师默认使用真实姓名
             List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
             if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                username = Optional.ofNullable(user.getRealName()).orElse(username);
+                username = Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
             }
             // 自动激活学生IM帐号
-            imGroupCoreService.register(userId,clientType, username, avatar);
+            imGroupCoreService.register(userId,clientType, username, sysUserService.getImAvatar(user));
         } catch (Exception e) {
             log.error("register user error", e);
         }
@@ -1575,6 +1591,80 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         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) {
         if (StringUtils.isEmpty(remoteUr) && size == 0 && width == 0 && height == 0) {
             return null;

+ 2 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java

@@ -152,7 +152,7 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
                 List<String> userTypes = Lists.newArrayList(item.getFriend().getUserType().split(","));
                 if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                    username = Optional.ofNullable(item.getFriend().getRealName()).orElse(username);
+                    username = Optional.ofNullable(item.getFriend().getRealName()).filter(StringUtils::isNotBlank).orElse(username);
                 }
                 // 用户好友默认用户名
                 if (StringUtils.isNotBlank(username)) {
@@ -173,7 +173,7 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
             if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                 // 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
                 imUserFriendDto.setFriendNickname(Optional.ofNullable(imUserFriendDto.getFriend().getRealName())
-                    .orElse(imUserFriendDto.getFriend().getUsername()));
+                    .filter(StringUtils::isNotBlank).orElse(imUserFriendDto.getFriend().getUsername()));
             }
 
             imUserFriendDto.setImUserId(imGroupCoreService.getImUserId(String.valueOf(imUserFriendDto.getUserId()),""));
@@ -234,8 +234,6 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void refreshGroupImUserFriend(String musicGroupId,GroupType groupType) {
-//		ExecutorService executor = Executors.newCachedThreadPool();
-//		CompletableFuture.runAsync(()->{
         List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, groupType==null?null:groupType.getCode());
         List<ImUserFriend> imUserFriends = new ArrayList<>();
         classGroups.forEach(e->{
@@ -248,14 +246,11 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
         setSchoolStaffImFriend(musicGroupId, imUserFriends);
 
-
         if(imUserFriends.size() > 0){
             batchInsert(imUserFriends);
         }
         //更新用户朋友昵称是空的历史数据(线上没有发现这种问题)
         imUserFriendDao.updateNullNickName();
-//		},executor);
-//		executor.shutdown();
     }
 
     private void setSchoolStaffImFriend(String musicGroupId, List<ImUserFriend> imUserFriends) {

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -260,7 +260,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
             TenantContextHolder.setTenantId(cooperation.getTenantId());
 
             // 创建学校im群
-            imGroupService.addSchoolStaffGroup(schoolStaff.getSchoolId(), user.getId(),user.getUsername(),user.getAvatar(),schoolStaff.getUserType());
+            imGroupService.addSchoolStaffGroup(schoolStaff.getSchoolId(), user.getId(),user.getUsername(),sysUserService.getImAvatar(user),schoolStaff.getUserType());
         } catch (Exception e) {
             log.error("加入群组失败 ",e);
             throw new BizException("加入群组失败");

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -119,6 +119,9 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Autowired
     private ImGroupCoreService imGroupCoreService;
 
+    @Autowired
+    private SysUserService sysUserService;
+
     @Override
     public PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
         PageInfo<StudentManageListDto> pageInfo = new PageInfo<StudentManageListDto>(queryInfo.getPage(), queryInfo.getRows());
@@ -760,10 +763,10 @@ public class StudentManageServiceImpl implements StudentManageService {
                 String username = userInfo.getUsername();
                 List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
                 if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                    username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
+                    username = Optional.ofNullable(userInfo.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
                 }
 
-                imGroupCoreService.register(String.valueOf(userInfo.getId()), "", username, userInfo.getAvatar());
+                imGroupCoreService.register(String.valueOf(userInfo.getId()), "", username, sysUserService.getImAvatar(userInfo));
             } catch (Exception e) {
                 log.error("用户更新信息同步到三方失败,userId:{}", userInfo.getId(), e);
             }

+ 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;
     }
 
+    @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) {
         return studentDao.queryBaseInfoCount(params);
     }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -291,6 +291,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	public void batchSendImGroupImgMessage(ImSendGroupMessage messageDto) throws Exception {
+		LOGGER.info("batchSendImGroupImgMessage messageDto={}", messageDto);
 		URL url = new URL(messageDto.getFileUrl());
 		BufferedImage bufferedImage = Thumbnails.of(url).scale(0.1f).outputQuality(0.25f).asBufferedImage();
 		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
@@ -322,6 +323,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	public void sendGroupMessage(ImMessageDto imMessageDto){
+		LOGGER.info("sendGroupMessage groupSend ret={}", imMessageDto);
 		//ExecutorService executor = Executors.newCachedThreadPool();
 		CompletableFuture.runAsync(()->{
 			imFeignService.groupSend(imMessageDto);
@@ -330,6 +332,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 
     public void sendImMessage(ImMessageDto imMessageDto){
+		LOGGER.info("sendImMessage privateSend ret={}", imMessageDto);
         CompletableFuture.runAsync(()-> imFeignService.privateSend(imMessageDto));
     }
 

+ 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;
 
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 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.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Optional;
 
 @Service
@@ -15,6 +21,9 @@ public class SysUserServiceImpl implements SysUserService {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SysConfigService sysConfigService;
+
     @Override
     public Integer getUserId(){
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
@@ -52,4 +61,34 @@ public class SysUserServiceImpl implements SysUserService {
     public Boolean updateSysUser(SysUser 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();
+        }
+    }
 }

+ 0 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -4029,13 +4029,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         if (Objects.nonNull(vipGroupApplyBaseInfo.getEducationalTeacherId()) && !vipGroupApplyBaseInfo.getEducationalTeacherId().equals(oldVipGroupInfo.getEducationalTeacherId())) {
             ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(oldVipGroupInfo.getId().toString(), oldVipGroupInfo.getGroupType());
             if (Objects.nonNull(oldVipGroupInfo.getEducationalTeacherId())) {
-
                 imGroupMemberService.quit(classGroup.getId().toString(), oldVipGroupInfo.getEducationalTeacherId());
             }
-
             oldVipGroupInfo.setEducationalTeacherId(vipGroupApplyBaseInfo.getEducationalTeacherId());
             isChange = true;
-
             imGroupMemberService.join(classGroup.getId().toString(), oldVipGroupInfo.getEducationalTeacherId(), "乐团主管", false);
         }
         if (Objects.nonNull(vipGroupApplyBaseInfo.getOrganId()) && !vipGroupApplyBaseInfo.getOrganId().equals(oldVipGroupInfo.getOrganId())) {

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -292,7 +292,7 @@
             and cg.music_group_id_ = #{param.musicGroupId}
         </if>
         <if test="param.groupType != null">
-            and ig.group_type_ = #{param.groupType.code}
+            and ig.group_type_ = #{param.groupType}
         </if>
     </select>
     <select id="queryInfoCount" resultType="java.lang.Integer">

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

@@ -59,6 +59,30 @@
         <result column="current_grade_num_" property="currentGrade"/>
         <result column="certificate_type_" property="certificateType"/>
     </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">
@@ -1433,4 +1457,11 @@
         SELECT COUNT(s.user_id_) FROM student s
         LEFT JOIN sys_user su ON  su.id_ = s.user_id_
     </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>

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

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

+ 0 - 3
mec-im/src/main/java/com/ym/controller/GroupController.java

@@ -9,7 +9,6 @@ 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.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.entity.ImMessageDto;
 import com.ym.pojo.NoticeMessage;
 import com.ym.service.GroupService;
@@ -51,8 +50,6 @@ public class GroupController{
     GroupService groupService;
     @Autowired
     private ImPluginContext imPluginContext;
-    @Autowired
-    private ImGroupCoreService imGroupCoreService;
 
     @RequestMapping(value = "/send", method = RequestMethod.POST)
     public Object send(@RequestBody ImMessageDto imMessageDto) throws Exception {

+ 7 - 6
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -93,10 +93,11 @@ public class UserController {
                 String username = userInfo.getUsername();
                 List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
                 if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                    username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
+                    username = Optional.ofNullable(userInfo.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
                 }
 
-                ImGroupWrapper.ImUserInfo register = imGroupCoreService.register(userModel.getId(), clientType, username, userInfo.getAvatar());
+                ImGroupWrapper.ImUserInfo register = imGroupCoreService.register(userModel.getId(), clientType, username,
+                    sysUserService.getImAvatar(teacherDao.getUser(userInfo.getUserId().intValue())));
 
                 // 用户注册接入Token
                 tokenResult.setToken(register.getImToken());
@@ -130,13 +131,13 @@ public class UserController {
             String username = userInfo.getUsername();
             List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
             if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
+                username = Optional.ofNullable(userInfo.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
             }
 
             try {
 
                 ImGroupWrapper.ImUserInfo register = imGroupCoreService.register(userModel.getId(), userModel.getClientType(),
-                    username, Optional.ofNullable(userInfo.getAvatar()).orElse(""));
+                    username,  sysUserService.getImAvatar(teacherDao.getUser(userInfo.getUserId().intValue())));
 
                 // 用户注册接入Token
                 tokenResult.setImToken(register.getImToken());
@@ -164,13 +165,13 @@ public class UserController {
                 String username = userInfo.getUsername();
                 List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
                 if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
-                    username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
+                    username = Optional.ofNullable(userInfo.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
                 }
 
                 try {
 
                     ImGroupWrapper.ImUserInfo register = imGroupCoreService.register(userModel.getId(), "",
-                        username, Optional.ofNullable(userModel.getPortrait()).orElse(userInfo.getAvatar()));
+                        username,  sysUserService.getImAvatar(teacherDao.getUser(userInfo.getUserId().intValue())));
 
                     log.info("update IM_USER register: {}", JSONObject.toJSONString(register));
                 } catch (Exception e) {

+ 2 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -640,14 +640,14 @@ public class RoomServiceImpl implements RoomService {
             roomResult.setMembers(roomMemberList, midiMap, examSongMap, scheduleStudentMusicScores);
 
             // 全员静音状态开启
-            if (muteAll && TencentCloudRTCPlugin.PLUGIN_NAME.equals(courseSchedule.getServiceProvider())) {
+            /*if (muteAll && TencentCloudRTCPlugin.PLUGIN_NAME.equals(courseSchedule.getServiceProvider())) {
                 for (RoomResult.MemberResult item : roomResult.getMembers()) {
                     // 重置学生用户当前静音状态
                     if (RoleStudent.getValue() == item.getRole()) {
                         item.setMicrophone(false);
                     }
                 }
-            }
+            }*/
         }
         roomResult.setWhiteboards(whiteboardDao.findByRid(roomId));
         if (room != null) {