Selaa lähdekoodia

Merge branch 'feature/1020-tencent-im' of http://git.dayaedu.com/yonge/mec into zx_1020_redis

zouxuan 1 vuosi sitten
vanhempi
commit
15a514e6b2
19 muutettua tiedostoa jossa 197 lisäystä ja 96 poistoa
  1. 11 0
      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/ImHistoryMessageController.java
  4. 6 3
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/AbstractAuthenticationProvider.java
  5. 0 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java
  6. 8 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EFriendRoleType.java
  7. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
  8. 34 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  9. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java
  10. 31 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  11. 73 29
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java
  13. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  14. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  15. 4 1
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  16. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  18. 4 4
      mec-common/audit-log/src/main/java/com/yonge/log/service/impl/HistoryMessageTenantServiceImpl.java
  19. 4 3
      mec-im/src/main/java/com/ym/controller/UserController.java

+ 11 - 0
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) {
@@ -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/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));
     }
 
 

+ 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("当前账号已失效");
 			}
 		}
 	}

+ 0 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -47,8 +47,6 @@ public class ImGroupMember extends BaseEntity {
 	/**  */
 	private java.util.Date updateTime;
 
-	private Integer tenantId;
-
 
     public String getType() {
         return type;
@@ -163,16 +161,6 @@ public class ImGroupMember extends BaseEntity {
 	}
 
 	@Override
-	public Integer getTenantId() {
-		return tenantId;
-	}
-
-	@Override
-	public void setTenantId(Integer tenantId) {
-		this.tenantId = tenantId;
-	}
-
-	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}

+ 8 - 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,""),
 
 
     ;
@@ -35,8 +36,12 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
             case "SCHOOL_LEADER":
                 return SCHOOL_LEADER;
             case "TEACHER":
+            case "SCHOOL_TEACHER":
                 return SCHOOL_TEACHER;
+            case "STUDENT":
+                return STUDENT;
             case "乐团主管":
+            case "ORCHESTRA_MANAGER":
                 return ORCHESTRA_MANAGER;
             case "指导老师":
                 return ORCHESTRA_TEACHER;
@@ -52,7 +57,8 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
             case "维护技师":
                 return SCHOOL_TEACHER;
             default:
-                return STUDENT;
+//                return STUDENT;
+                return UNDEFINE;
         }
     }
 
@@ -74,7 +80,7 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
                 return SysUserType.STUDENT;
         }
 
-        return SysUserType.STUDENT;
+        return null;
     }
 
     public String getMsg() {

+ 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);
 

+ 34 - 12
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;
@@ -144,7 +141,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
     @Transactional(rollbackFor = Exception.class)
     public void add(Employee employee) {
         RBucket<String> bucket = redissonClient.getBucket("add_employee_lock" + employee.getPhone());
-        if (!bucket.trySet(employee.getPhone(), 1l, TimeUnit.SECONDS)) {
+        if (!bucket.trySet(employee.getPhone(), 1L, TimeUnit.SECONDS)) {
             throw new BizException("请勿重复提交");
         }
         SysUser user = teacherDao.getUserWithPhone(employee.getPhone());
@@ -152,6 +149,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
             throw new BizException("用户已存在学校账户");
         }
         Integer tenantId = employee.getTenantId();
+
         if (user != null && user.getId() != null) {
             checkTenantId(tenantId, user.getTenantId());
             Employee employee1 = employeeDao.get(user.getId());
@@ -178,6 +176,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                 }
                 employee.setUserType(user.getUserType() + ",SYSTEM");
                 teacherDao.updateUser(employee);
+
+                // 用户更新信息同步到三方
+                if (Objects.nonNull(employee.getId())) {
+                    registerImUserInfo(employee.getId());
+                }
                 return;
             } else {
                 throw new BizException("员工已存在");
@@ -217,6 +220,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
         addUserTenant(employee.getTenantIds(), tenantId, userId);
         //添加到OA
         oaUserService.addOaUser(employee);
+
     }
 
     /**
@@ -310,6 +314,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                 e.printStackTrace();
             }
         });
+
+        // 用户更新信息同步到三方
+        if (Objects.nonNull(employee.getId())) {
+            registerImUserInfo(employee.getId());
+        }
     }
 
     @Override
@@ -555,7 +564,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());
@@ -727,7 +741,16 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
         employeeDao.update(employee);
 
         // 用户更新信息同步到三方
-        SysUser userInfo = teacherDao.getUser(employee.getId());
+        registerImUserInfo(employee.getId());
+
+    }
+
+    /**
+     *  用户更新信息同步到三方
+     * @param userId 用户id
+     */
+    private void registerImUserInfo(Integer userId) {
+        SysUser userInfo = teacherDao.getUser(userId);
         if (Objects.nonNull(userInfo)) {
 
             try {
@@ -737,12 +760,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                     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);
             }
         }
-
     }
 
     @Override

+ 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);

+ 73 - 29
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -198,14 +198,14 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember groupMember = null;
         if (userId != null) {
             SysUser sysUser = teacherDao.getUser(userId);
-            SysUserType sysUserType = EFriendRoleType.getByName(roleType).toSysUserType();
-            groupMember = com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember
+            groupMember = 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(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
                     .isAdmin(true)
                     .build();
         }
@@ -256,17 +256,18 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     }
 
     private void addImGroupMember(String groupId, List<ImGroupMember> groupMemberList) {
+        ImGroup imGroup = imGroupDao.get(groupId);
         List<com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
         for (ImGroupMember groupMember : groupMemberList) {
-            SysUserType sysUserType = EFriendRoleType.getByName(groupMember.getRoleType()).toSysUserType();
-            imGroupMembers.add(com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember.builder()
+            SysUser user = teacherDao.getUser(groupMember.getUserId());
+            imGroupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
                     .groupId(groupMember.getImGroupId())
                     .userId(groupMember.getUserId().longValue())
-                    .clientType(sysUserType.name())
-//                    .avatar(groupMember.getAvatar())
-                    .nickname(groupMember.getNickname())
+                    .avatar(sysUserService.getImAvatar(user))
+                    .nickname(sysUserService.getImName(user))
                     .isAdmin(groupMember.getIsAdmin())
-                    .imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name()))
+                    .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
+                    .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
                     .roleType(groupMember.getRoleType())
                     .build());
         }
@@ -302,7 +303,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());
@@ -389,7 +391,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("更新用户信息失败");
@@ -490,7 +492,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);
@@ -529,7 +532,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
 
         // 注册主播用户信息到三方平台
-        imGroupCoreService.register(userId.toString(),"", name, avatar);
+        imGroupCoreService.register(userId.toString(),"", name, sysUserService.getImAvatar(teacherDao.getUser(userId)));
 
         boolean createFlag = false;
         // 群组不存在,先创建群组
@@ -543,20 +546,22 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             imGroup.setIntroduce(imGroup.getName());
             imGroup.setMemo(imGroup.getName());
             imGroup.setMemberNum(0);
-            imGroup.setImg(sysConfigService.findByParamName(SysConfigService.SCHOOL_IM_GROUP_IMG).getParanValue());
+            //imGroup.setImg(sysConfigService.findByParamName(SysConfigService.SCHOOL_IM_GROUP_IMG).getParanValue());
             imGroup.setType(ImGroup.GroupTypeEnum.SCHOOL.getCode());
             imGroup.setGroupType(ImGroup.GroupTypeEnum.SCHOOL);
             imGroup.setCreateTime(new Date());
             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));
             // 更新群主流程
@@ -569,6 +574,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);
@@ -746,7 +752,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) {
@@ -1009,6 +1032,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                 username = Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(username);
             }
             // 自动激活学生IM帐号
+//            imGroupCoreService.register(userId,clientType, username, sysUserService.getImAvatar(user));
             imGroupCoreService.register(userId,clientType, username, avatar);
         } catch (Exception e) {
             log.error("register user error", e);
@@ -1045,7 +1069,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         SysConfig studentAvatar = sysConfigService.findByParamName(SysConfigService.STUDENT_DEFAULT_AVATAR);
         while (!student.isEmpty()) {
             for (String[] next : student) {
-                register(next[0], next[1],studentAvatar.getParanValue());
+                String avatar = next[2];
+                if (StringUtils.isEmpty(avatar)) {
+                    avatar = studentAvatar.getParanValue();
+                }
+                register(next[0], next[1], avatar);
             }
             count += student.size();
             log.info("import im student success count:{}", count);
@@ -1061,7 +1089,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         List<String[]> staff = getStaff(page, rows);
         while (!staff.isEmpty()) {
             for (String[] next : staff) {
-                register(next[0], next[1],staffAvatar.getParanValue());
+                String avatar = next[2];
+                if (StringUtils.isEmpty(avatar)) {
+                    avatar = staffAvatar.getParanValue();
+                }
+                register(next[0], next[1], avatar);
             }
             count += staff.size();
             log.info("import im staff success count:{}", count);
@@ -1077,7 +1109,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         List<String[]> emps = getEmp(page, rows);
         while (!emps.isEmpty()) {
             for (String[] next : emps) {
-                register(next[0], next[1],empAvatar.getParanValue());
+                String avatar = next[2];
+                if (StringUtils.isEmpty(avatar)) {
+                    avatar = empAvatar.getParanValue();
+                }
+                register(next[0], next[1], avatar);
             }
             count += emps.size();
             log.info("import im emps success count:{}", count);
@@ -1092,7 +1128,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         List<String[]> teachers = getTeachers(page, rows);
         while (!teachers.isEmpty()) {
             for (String[] next : teachers) {
-                register(next[0], next[1], teacherAvatar.getParanValue());
+                String avatar = next[2];
+                if (StringUtils.isEmpty(avatar)) {
+                    avatar = teacherAvatar.getParanValue();
+                }
+                register(next[0], next[1], avatar);
             }
             count += teachers.size();
             log.info("import im teacher success count:{}", count);
@@ -1115,9 +1155,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         queryInfo.setRows(rows);
         PageInfo<Employee> employeePageInfo = employeeService.queryBaseInfoByPage(queryInfo);
         return employeePageInfo.getRows().stream().map(next -> {
-            String[] strList = new String[2];
+            String[] strList = new String[3];
             strList[0] = next.getUserId().toString();
             strList[1] = "SYSTEM";
+            strList[2] = next.getAvatar();
             return strList;
         }).collect(Collectors.toList());
     }
@@ -1127,9 +1168,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         IPage<SchoolStaffWrapper.SchoolStaff> iPage = schoolStaffService.selectBaseInfoByPage(staffPage,
                 new SchoolStaffWrapper.SchoolStaffQuery());
         return iPage.getRecords().stream().map(next -> {
-            String[] strList = new String[2];
+            String[] strList = new String[3];
             strList[0] = next.getUserId().toString();
             strList[1] = "SCHOOL";
+            strList[2] = next.getAvatar();
             return strList;
         }).collect(Collectors.toList());
     }
@@ -1140,9 +1182,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         queryInfo.setRows(rows);
         PageInfo<Student> studentPageInfo = studentService.queryBaseInfoByPage(queryInfo);
         return studentPageInfo.getRows().stream().map(next -> {
-            String[] strList = new String[2];
+            String[] strList = new String[3];
             strList[0] = next.getUserId().toString();
             strList[1] = "STUDENT";
+            strList[2] = next.getAvatar();
             return strList;
         }).collect(Collectors.toList());
     }
@@ -1153,9 +1196,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         queryInfo.setRows(rows);
         PageInfo<Teacher> teacherPageInfo = teacherService.queryBaseInfoByPage(queryInfo);
         return teacherPageInfo.getRows().stream().map(next -> {
-            String[] strList = new String[2];
+            String[] strList = new String[3];
             strList[0] = next.getId().toString();
             strList[1] = "TEACHER";
+            strList[2] = next.getAvatar();
             return strList;
         }).collect(Collectors.toList());
     }
@@ -1589,7 +1633,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             SysUser sysUser = userMap.get(Integer.parseInt(item.getFromAccount()));
             if (sysUser != null) {
                 item.setFromAccountName(sysUserService.getImName(sysUser));
-                item.setFromAccountAvatar(sysUserService.getImName(sysUser));
+                item.setFromAccountAvatar(sysUserService.getImAvatar(sysUser));
             }
         });
         // 接收人
@@ -1606,7 +1650,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             SysUser sysUser = toUserMap.get(Integer.parseInt(item.getToAccount()));
             if (sysUser != null) {
                 item.setToAccountName(sysUserService.getImName(sysUser));
-                item.setToAccountAvatar(sysUserService.getImName(sysUser));
+                item.setToAccountAvatar(sysUserService.getImAvatar(sysUser));
             }
         });
         // 群

+ 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("加入群组失败");

+ 4 - 1
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());
@@ -763,7 +766,7 @@ public class StudentManageServiceImpl implements StudentManageService {
                     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);
             }

+ 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={}", JSON.toJSONString(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={}", JSON.toJSONString(imMessageDto));
         CompletableFuture.runAsync(()-> imFeignService.privateSend(imMessageDto));
     }
 

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

@@ -30,6 +30,8 @@
         <result column="bank_card_" property="bankCard"/>
         <result column="open_bank_address_" property="openBankAddress"/>
 		<result column="tenant_id_" property="tenantId" />
+
+        <result column="avatar_" property="avatar"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.auth.api.entity.SysUser" id="SysUser">
@@ -455,7 +457,8 @@
     </sql>
 
     <select id="queryBaseInfoByPage" resultMap="Employee" parameterType="map">
-        SELECT * FROM employee
+        SELECT t.*,su.avatar_ FROM employee t
+        LEFT JOIN sys_user su on t.user_id_ = su.id_
         <include refid="global.limit"/>
     </select>
 

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

@@ -1447,7 +1447,7 @@
     </select>
 
     <select id="queryBaseInfoByPage" resultMap="Student" parameterType="map">
-        SELECT s.*,su.username_,su.phone_ FROM student s
+        SELECT s.*,su.username_,su.phone_,su.avatar_ FROM student s
         LEFT JOIN sys_user su ON  su.id_ = s.user_id_
         <include refid="global.limit"/>
     </select>

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

@@ -1578,7 +1578,7 @@
     <select id="queryBaseInfoByPage" resultMap="Teacher" parameterType="map">
         SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,t.organ_id_
         teacher_organ_id_,t.organ_id_,t.is_support_extra_practice_lesson_,t.dept_id_,t.dept_ids_,t.post_dept_ids_,
-        t.job_nature_,t.demission_date_,t.formal_staff_date_,t.is_probation_period_,t.memo_,su.del_flag_,t.is_settlement_salary_
+        t.job_nature_,t.demission_date_,t.formal_staff_date_,t.is_probation_period_,t.memo_,su.del_flag_,t.is_settlement_salary_,su.avatar_
         FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
         ORDER BY t.id_ DESC

+ 4 - 4
mec-common/audit-log/src/main/java/com/yonge/log/service/impl/HistoryMessageTenantServiceImpl.java

@@ -135,12 +135,12 @@ public class HistoryMessageTenantServiceImpl extends BaseServiceImplWithMongo<St
         Pattern pattern = Pattern.compile(".*", Pattern.CASE_INSENSITIVE);
         if (StringUtils.isNotBlank(param.getKeyword())) {
             pattern = Pattern.compile(".*" + param.getKeyword() + ".*", Pattern.CASE_INSENSITIVE);
+            criteria.and("msg_body_json").elemMatch(
+                Criteria.where("MsgContent.Text").regex(pattern)
+                    .and("MsgType").is("TIMTextElem")
+            );
         }
 
-        criteria.and("msg_body_json").elemMatch(
-            Criteria.where("MsgContent.Text").regex(pattern)
-                .and("MsgType").is("TIMTextElem")
-        );
 
         query.addCriteria(criteria);
         query.with(Sort.by(Sort.Order.asc("msg_timestamp"))); // 以升序方式按字段排序

+ 4 - 3
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -96,7 +96,8 @@ public class UserController {
                     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());
@@ -136,7 +137,7 @@ public class UserController {
             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());
@@ -170,7 +171,7 @@ public class UserController {
                 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) {