فهرست منبع

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

liujc 1 سال پیش
والد
کامیت
533792a1ec
25فایلهای تغییر یافته به همراه522 افزوده شده و 162 حذف شده
  1. 9 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/StudentManageController.java
  3. 8 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  4. 7 1
      mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java
  5. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java
  6. 55 53
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  7. 114 30
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java
  8. 96 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMemberPlus.java
  9. 105 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupPlus.java
  10. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupMemberPlusMapper.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupPlusMapper.java
  12. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupWrapper.java
  13. 4 5
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberPlusService.java
  14. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupPlusService.java
  15. 44 38
      mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
  16. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  17. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java
  18. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupPlusServiceImpl.java
  19. 14 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  20. 31 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java
  21. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  22. 3 0
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  23. 2 2
      mec-biz/src/main/resources/config/mybatis/ImGroupMemberPlusMapper.xml
  24. 1 1
      mec-biz/src/main/resources/config/mybatis/ImGroupPlusMapper.xml
  25. 6 3
      mec-im/src/main/java/com/ym/controller/UserController.java

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

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 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.common.controller.BaseController;
@@ -20,7 +21,9 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 @RequestMapping("${app-config.url.student:}/imGroup")
 @Api(tags = "IM群服务")
@@ -91,7 +94,12 @@ public class ImGroupController extends BaseController {
 			dto = new ImUserFriendDto();
 			SysUser user = sysUserService.queryUserById(userId);
 			dto.setFriend(user);
-			if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+
+			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()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
 				dto.setFriendNickname(user.getRealName());

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

@@ -172,7 +172,7 @@ public class StudentManageController extends BaseController {
             // 设置用户Token
             student.setImToken(register.getImToken());
             // 设置用户IM用户ID
-//            student.setImUserId(register.getImUserId());
+            student.setImUserId(register.getImUserId());
         } catch (Exception e) {
             LOGGER.error("注册IM用户Token失败", e);
         }

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

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 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.ImGroupNoticeService;
 import com.ym.mec.biz.service.ImGroupService;
@@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.teacher:}/imGroup")
@@ -114,7 +116,12 @@ public class ImGroupController extends BaseController {
 			dto = new ImUserFriendDto();
 			SysUser user = userLoginService.queryUserById(userId);
 			dto.setFriend(user);
-            if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+
+			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()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
 				dto.setFriendNickname(user.getRealName());

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 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.dal.vo.ImGroupVo;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
@@ -29,6 +30,7 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
@@ -130,7 +132,11 @@ public class ImGroupController extends BaseController {
 			dto.setFriend(user);
 			//这里由原来的优先取老师的realName改成了优先取学员的username,
 			// 因为管理员在修改通讯录备注的时候,如果是多角色,优先改的是学员的username
-            if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+			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()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
 			} else {
 				dto.setFriendNickname(user.getRealName());

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java

@@ -43,5 +43,4 @@ public class ImGroupMemberDto extends ImGroupMember {
         return getImGroupId();
     }
 
-
 }

+ 55 - 53
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -1,71 +1,68 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.ym.mec.common.entity.BaseEntity;
 import com.ym.mec.common.enums.BaseEnum;
-import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-
 /**
  * 对应数据库表(im_group):
  */
 public class ImGroup extends BaseEntity {
 
 	/**  */
-    @TableId(value = "id_")
 	private String id;
 
-    @ApiModelProperty("学校ID")
-    @TableField(value = "school_id_")
     private Long schoolId;
 
 	/** 群名称 */
-    @TableField(value = "name_")
 	private String name;
-
+	
 	/** 群介绍 */
-    @TableField(value = "introduce_")
 	private String introduce;
-
+	
 	/** 群成员数 */
-    @TableField(value = "member_num_")
 	private Integer memberNum;
-
+	
 	/** 群备注 */
-    @TableField(value = "memo_")
 	private String memo;
-
+	
 	/** 群标签 */
-    @TableField(value = "tags_")
 	private String tags;
-
-    @TableField(value = "img_")
+	
 	private String img;
 
 	/** 乐团群 MUSIC,班级群 CLASS,训练营 TRAINING 学校SCHOOL*/
-    @TableField(value = "type_")
 	private String type;
 
-	@TableField(value = "import_flag_")
 	private String importFlag;
 
 	public enum GroupTypeEnum implements BaseEnum<String,GroupTypeEnum> {
-		NORMAL("NORMAL", "普通班级"), MIX("MIX", "合奏班级"), HIGH("HIGH", "基础技能班"),
-		VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), PRACTICE("PRACTICE", "网管课"),
-		SNAP("SNAP","临时班级"), COMM("COMM", "对外课程"), HIGH_ONLINE("HIGH_ONLINE", "线上基础技能课"),
-		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课"),PARENT_MEETING("PARENT_MEETING","家长会"),
-		TRAINING("TRAINING","训练营"),REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课"), SCHOOL("SCHOOL","学校衔接群"),LIVE("LIVE","直播课");
+		NORMAL("NORMAL", "普通班级", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		MIX("MIX", "合奏班级", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		HIGH("HIGH", "基础技能班", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		VIP("VIP", "vip课", "https://oss.dayaedu.com/default-images/mec/VIP.png"),
+		DEMO("DEMO", "试听课", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		PRACTICE("PRACTICE", "网管课", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		SNAP("SNAP","临时班级", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		COMM("COMM", "对外课程", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		HIGH_ONLINE("HIGH_ONLINE", "线上基础技能课", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		PARENT_MEETING("PARENT_MEETING","家长会", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		TRAINING("TRAINING","训练营", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		SCHOOL("SCHOOL","学校衔接群", "https://oss.dayaedu.com/default-images/mec/TRAINING.png"),
+		LIVE("LIVE","直播课", "https://oss.dayaedu.com/default-images/mec/LIVE.png");
 
 		private String code;
 
 		private String msg;
 
-		GroupTypeEnum(String code, String msg) {
+		private String avatar;
+
+		GroupTypeEnum(String code, String msg, String avatar) {
 			this.code = code;
 			this.msg = msg;
+			this.avatar = avatar;
 		}
 
 		public void setCode(String code) {
@@ -84,10 +81,17 @@ public class ImGroup extends BaseEntity {
 		public String getCode() {
 			return this.code;
 		}
+
+		public String getAvatar() {
+			return avatar;
+		}
+
+		public void setAvatar(String avatar) {
+			this.avatar = avatar;
+		}
 	}
 
 	//群类型
-    @TableField(value = "group_type_")
 	private GroupTypeEnum groupType;
 
 	public GroupTypeEnum getGroupType() {
@@ -99,69 +103,67 @@ public class ImGroup extends BaseEntity {
 	}
 
 	/**  */
-    @TableField(value = "create_time_")
 	private java.util.Date createTime;
-
+	
 	/**  */
-    @TableField(value = "update_time_")
 	private java.util.Date updateTime;
 
-	public Long getSchoolId() {
-		return schoolId;
-	}
+    public Long getSchoolId() {
+        return schoolId;
+    }
 
-	public void setSchoolId(Long schoolId) {
-		this.schoolId = schoolId;
-	}
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
 
-	public void setId(String id){
+    public void setId(String id){
 		this.id = id;
 	}
-
+	
 	public String getId(){
 		return this.id;
 	}
-
+			
 	public void setName(String name){
 		this.name = name;
 	}
-
+	
 	public String getName(){
 		return this.name;
 	}
-
+			
 	public void setIntroduce(String introduce){
 		this.introduce = introduce;
 	}
-
+	
 	public String getIntroduce(){
 		return this.introduce;
 	}
-
+			
 	public void setMemberNum(Integer memberNum){
 		this.memberNum = memberNum;
 	}
-
+	
 	public Integer getMemberNum(){
 		return this.memberNum;
 	}
-
+			
 	public void setMemo(String memo){
 		this.memo = memo;
 	}
-
+	
 	public String getMemo(){
 		return this.memo;
 	}
-
+			
 	public void setTags(String tags){
 		this.tags = tags;
 	}
-
+	
 	public String getTags(){
 		return this.tags;
 	}
-
+			
 	public String getImg() {
 		return img;
 	}
@@ -181,15 +183,15 @@ public class ImGroup extends BaseEntity {
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}
-
+	
 	public java.util.Date getCreateTime(){
 		return this.createTime;
 	}
-
+			
 	public void setUpdateTime(java.util.Date updateTime){
 		this.updateTime = updateTime;
 	}
-
+	
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}

+ 114 - 30
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -1,10 +1,5 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import com.ym.mec.common.entity.BaseEntity;
@@ -12,64 +7,153 @@ import com.ym.mec.common.entity.BaseEntity;
 /**
  * 对应数据库表(im_group_member):
  */
-@Data
 public class ImGroupMember extends BaseEntity {
 
 	/**  */
-    @TableId(value = "id_", type = IdType.AUTO)
 	private Long id;
 	
 	/**  */
-    @TableField(value = "im_group_id_")
 	private String imGroupId;
 	
 	/**  */
-    @TableField(value = "user_id_")
 	private Integer userId;
-
-    @TableField(value = "nickname_")
+	
 	private String nickname;
 
 	/** 群昵称 */
-    @TableField(exist = false)
 	private String groupNickname;
 	
 	/** 是否是管理员 */
-    @ApiModelProperty("是否是管理员")
-    @TableField(value = "is_admin_")
-	private Boolean isAdmin;
+	private boolean isAdmin;
 	
 	/** 群角色 */
-    @TableField(value = "role_type_")
 	private String roleType;
 
 
     /** 群角色 */
-    @TableField(value = "type_")
     private String type;
 
-    @TableField(exist = false)
 	private Integer memberRankSettingId;
 
-    @TableField(exist = false)
 	private String subjectName;
 
-    @TableField(exist = false)
 	private String subjectId;
-
-    /**
-     * 头像
-     */
-    @TableField(exist = false)
-    private String avatar;
-
-    /**  */
-    @TableField(value = "create_time_")
+	
+	/**  */
 	private java.util.Date createTime;
 	
 	/**  */
-    @TableField(value = "update_time_")
 	private java.util.Date updateTime;
 
 
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+	public String getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(String subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public Integer getMemberRankSettingId() {
+		return memberRankSettingId;
+	}
+
+	public void setMemberRankSettingId(Integer memberRankSettingId) {
+		this.memberRankSettingId = memberRankSettingId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setImGroupId(String imGroupId){
+		this.imGroupId = imGroupId;
+	}
+	
+	public String getImGroupId(){
+		return this.imGroupId;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public String getNickname() {
+		return nickname;
+	}
+
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+
+	public void setIsAdmin(boolean isAdmin){
+		this.isAdmin = isAdmin;
+	}
+	
+	public boolean getIsAdmin(){
+		return this.isAdmin;
+	}
+
+	public String getRoleType() {
+		return roleType;
+	}
+
+	public void setRoleType(String roleType) {
+		this.roleType = roleType;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+
+	public String getGroupNickname() {
+		return groupNickname;
+	}
+
+	public void setGroupNickname(String groupNickname) {
+		this.groupNickname = groupNickname;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
 }

+ 96 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMemberPlus.java

@@ -0,0 +1,96 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 对应数据库表(im_group_member):
+ */
+@Data
+@TableName("im_group_member")
+public class ImGroupMemberPlus implements Serializable {
+
+    /**
+     *
+     */
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     *
+     */
+    @TableField(value = "im_group_id_")
+    private String imGroupId;
+
+    /**
+     *
+     */
+    @TableField(value = "user_id_")
+    private Integer userId;
+
+    @TableField(value = "nickname_")
+    private String nickname;
+
+    /**
+     * 群昵称
+     */
+    @TableField(exist = false)
+    private String groupNickname;
+
+    /**
+     * 是否是管理员
+     */
+    @ApiModelProperty("是否是管理员")
+    @TableField(value = "is_admin_")
+    private Boolean isAdmin;
+
+    /**
+     * 群角色
+     */
+    @TableField(value = "role_type_")
+    private String roleType;
+
+
+    /**
+     * 群角色
+     */
+    @TableField(value = "type_")
+    private String type;
+
+    @TableField(exist = false)
+    private Integer memberRankSettingId;
+
+    @TableField(exist = false)
+    private String subjectName;
+
+    @TableField(exist = false)
+    private String subjectId;
+
+    /**
+     * 头像
+     */
+    @TableField(exist = false)
+    private String avatar;
+
+    /**
+     *
+     */
+    @TableField(value = "create_time_")
+    private Date createTime;
+
+    /**
+     *
+     */
+    @TableField(value = "update_time_")
+    private Date updateTime;
+
+    @TableField(value = "tenant_id_")
+    private Integer tenantId;
+}

+ 105 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupPlus.java

@@ -0,0 +1,105 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.io.Serializable;
+
+
+/**
+ * 对应数据库表(im_group):
+ */
+@Data
+@TableName("im_group")
+public class ImGroupPlus implements Serializable {
+
+    /**
+     *
+     */
+    @TableId(value = "id_")
+    private String id;
+
+    @ApiModelProperty("学校ID")
+    @TableField(value = "school_id_")
+    private Long schoolId;
+
+    /**
+     * 群名称
+     */
+    @TableField(value = "name_")
+    private String name;
+
+    /**
+     * 群介绍
+     */
+    @TableField(value = "introduce_")
+    private String introduce;
+
+    /**
+     * 群成员数
+     */
+    @TableField(value = "member_num_")
+    private Integer memberNum;
+
+    /**
+     * 群备注
+     */
+    @TableField(value = "memo_")
+    private String memo;
+
+    /**
+     * 群标签
+     */
+    @TableField(value = "tags_")
+    private String tags;
+
+    @TableField(value = "img_")
+    private String img;
+
+    /**
+     * 乐团群 MUSIC,班级群 CLASS,训练营 TRAINING 学校SCHOOL
+     */
+    @TableField(value = "type_")
+    private String type;
+
+    @TableField(value = "tenant_id_")
+    private Integer tenantId;
+
+
+    @TableField(value = "import_flag_")
+    private String importFlag;
+
+    //群类型
+    @TableField(value = "group_type_")
+    private ImGroup.GroupTypeEnum groupType;
+
+    public ImGroup.GroupTypeEnum getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(ImGroup.GroupTypeEnum groupType) {
+        this.groupType = groupType;
+    }
+
+    /**
+     *
+     */
+    @TableField(value = "create_time_")
+    private java.util.Date createTime;
+
+    /**
+     *
+     */
+    @TableField(value = "update_time_")
+    private java.util.Date updateTime;
+
+    @Override
+    public String toString() {
+        return ToStringBuilder.reflectionToString(this);
+    }
+
+}

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupMemberPlusMapper.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import org.springframework.stereotype.Repository;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
 
@@ -11,8 +12,8 @@ import java.util.List;
  * 2023-08-29 17:18:04
  */
 @Repository
-public interface ImGroupMemberPlusMapper extends BaseMapper<ImGroupMember> {
+public interface ImGroupMemberPlusMapper extends BaseMapper<ImGroupMemberPlus> {
 
 
-    void insertBatch(List<ImGroupMember> imGroupMemberEntity);
+    void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupPlusMapper.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import org.springframework.stereotype.Repository;
 import com.ym.mec.biz.dal.entity.ImGroup;
 
@@ -9,7 +10,7 @@ import com.ym.mec.biz.dal.entity.ImGroup;
  * 2023-08-29 17:18:04
  */
 @Repository
-public interface ImGroupPlusMapper extends BaseMapper<ImGroup> {
+public interface ImGroupPlusMapper extends BaseMapper<ImGroupPlus> {
 
 	
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupWrapper.java

@@ -1,14 +1,12 @@
 package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.slf4j.helpers.MessageFormatter;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -117,8 +115,10 @@ public class ImGroupWrapper {
         /** 群标签 */
         private String tags;
 
-        //群类型
+        // 群类型
         private com.ym.mec.biz.dal.entity.ImGroup.GroupTypeEnum groupType;
+
+
         public static ImGroup from(String json) {
             return JSON.parseObject(json, ImGroup.class);
         }

+ 4 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberPlusService.java

@@ -1,9 +1,8 @@
 package com.ym.mec.biz.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 
 import java.util.List;
 
@@ -11,14 +10,14 @@ import java.util.List;
  * 群成员表
  * 2023-08-29 17:18:04
  */
-public interface ImGroupMemberPlusService extends IService<ImGroupMember>  {
+public interface ImGroupMemberPlusService extends IService<ImGroupMemberPlus>  {
 
 	/**
      * 查询详情
      * @param id 详情ID
      * @return ImGroupMember
      */
-	ImGroupMember detail(Long id);
+    ImGroupMemberPlus detail(Long id);
 
 
     /**
@@ -26,5 +25,5 @@ public interface ImGroupMemberPlusService extends IService<ImGroupMember>  {
      *
      * @param imGroupMemberEntity
      */
-    void insertBatch(List<ImGroupMember> imGroupMemberEntity);
+    void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity);
 }

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupPlusService.java

@@ -2,18 +2,19 @@ package com.ym.mec.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 
 /**
  * 即时通讯群组
  * 2023-08-29 17:18:04
  */
-public interface ImGroupPlusService extends IService<ImGroup>  {
+public interface ImGroupPlusService extends IService<ImGroupPlus>  {
 
 	/**
      * 查询详情
      * @param id 详情ID
      * @return ImGroup
      */
-	ImGroup detail(Long id);
+	ImGroupPlus detail(Long id);
      
 }

+ 44 - 38
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -7,8 +7,8 @@ import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.tools.ThreadPool;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
@@ -42,7 +42,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     @Autowired
     private ImGroupPlusService imGroupService;
     @Autowired
-    private ImGroupMemberPlusService imGroupMemberService;
+    private ImGroupMemberPlusService imGroupMemberPlusService;
 
     /**
      * IM 用户注册
@@ -142,7 +142,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
                 .type(Optional.ofNullable(imGroup.getType()).orElse("CLASS"))
                 .groupId(String.valueOf(id));
 
-        ImGroup group = JSON.parseObject(imGroup.jsonString(), ImGroup.class);
+        ImGroupPlus group = JSON.parseObject(imGroup.jsonString(), ImGroupPlus.class);
         group.setId(imGroup.getGroupId());
         // 保存群组信息
         imGroupService.saveOrUpdate(group);
@@ -154,14 +154,19 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             groupMembers = Lists.newArrayList(userInfo);
 
             groupMembers.add(userInfo.imUserId(imUserId));
-            imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
+            imGroupMemberPlusService.insertBatch(getImGroupMemberEntity(groupMembers));
 
             // 自动激活学生IM帐号
             registerUser(groupMembers);
         }
 
+        // 群默认头象
+        String groupAvatar = "";
+        if (Objects.nonNull(imGroup.getGroupType())) {
+            groupAvatar = imGroup.getGroupType().getAvatar();
+        }
         // 创建IM群组
-        imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(),imUserId);
+        imPluginContext.getPluginService().groupCreate(imGroup.getGroupId(), imGroup.getName(), groupAvatar, imUserId);
 
         if (userInfo != null) {
             // 添加群成员到当前群组
@@ -171,12 +176,12 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         return group.getId();
     }
 
-    private List<ImGroupMember> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
+    private List<ImGroupMemberPlus> getImGroupMemberEntity(List<ImGroupMemberWrapper.ImGroupMember> groupMembers) {
         if (CollectionUtils.isEmpty(groupMembers)) {
             return new ArrayList<>();
         }
         return groupMembers.stream().map(o -> {
-            ImGroupMember imGroupMember = new ImGroupMember();
+            ImGroupMemberPlus imGroupMember = new ImGroupMemberPlus();
             imGroupMember.setImGroupId(o.getGroupId());
             imGroupMember.setUserId(o.getUserId().intValue());
             imGroupMember.setNickname(o.getNickname());
@@ -248,25 +253,25 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupDismiss(String groupId) throws Exception {
 
         // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
 
 
         // 获取群成员
-        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
-                .select(ImGroupMember::getUserId, ImGroupMember::getImGroupId, ImGroupMember::getRoleType)
-                .eq(ImGroupMember::getImGroupId, groupId)
+        List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberPlusService.lambdaQuery()
+                .select(ImGroupMemberPlus::getUserId, ImGroupMemberPlus::getImGroupId, ImGroupMemberPlus::getRoleType)
+                .eq(ImGroupMemberPlus::getImGroupId, groupId)
                 .list().stream()
                 .map(x -> ImGroupMemberWrapper.ImGroupMember.builder().userId(x.getUserId().longValue()).groupId(x.getImGroupId()).clientType(x.getRoleType()).build())
                 .collect(Collectors.toList());
 
         // 删除群组
-        imGroupService.remove(Wrappers.<ImGroup>lambdaQuery().eq(ImGroup::getId, groupId));
+        imGroupService.remove(Wrappers.<ImGroupPlus>lambdaQuery().eq(ImGroupPlus::getId, groupId));
 
         // 删除群组成员
-        imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
         // 解散群
         imPluginContext.getPluginService().groupDismiss(imGroup.getId(), getImGroupMembers(groupMembers));
@@ -284,18 +289,19 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupQuit(GroupMemberWrapper.ImGroupMember imGroupMember, String groupId) throws Exception {
 
         // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
 
         // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId
+                , groupId));
 
         // 删除当前用户群成员身份
-        boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .eq(ImGroupMember::getUserId, imGroupMember.getUserId())
+        boolean remove = imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery()
+                .eq(ImGroupMemberPlus::getImGroupId, groupId)
+                .eq(ImGroupMemberPlus::getUserId, imGroupMember.getUserId())
 //                .eq(ImGroupMember::getRoleType, imGroupMember.getRoleType())
         );
         if (!remove) {
@@ -305,8 +311,8 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
         // 修改群组成员数
         imGroupService.lambdaUpdate()
-                .eq(ImGroup::getId, imGroup.getId())
-                .set(ImGroup::getMemberNum, count - 1)
+                .eq(ImGroupPlus::getId, imGroup.getId())
+                .set(ImGroupPlus::getMemberNum, count - 1)
                 .update();
 
         // 群主退出
@@ -330,7 +336,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
 
         // 判定登录用户是否为群主
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, groupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -344,9 +350,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
 
         // 删除当前用户群成员身份
-        boolean remove = imGroupMemberService.remove(Wrappers.<ImGroupMember>lambdaQuery()
-                .eq(ImGroupMember::getImGroupId, groupId)
-                .in(ImGroupMember::getUserId, userIds)
+        boolean remove = imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery()
+                .eq(ImGroupMemberPlus::getImGroupId, groupId)
+                .in(ImGroupMemberPlus::getUserId, userIds)
         );
         if (!remove) {
             // 用户主动退出群聊失败
@@ -354,12 +360,12 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         }
 
         // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
         // 修改群组成员数
         imGroupService.lambdaUpdate()
-                .eq(ImGroup::getId, imGroup.getId())
-                .set(ImGroup::getMemberNum, count)
+                .eq(ImGroupPlus::getId, imGroup.getId())
+                .set(ImGroupPlus::getMemberNum, count)
                 .update();
         imPluginContext.getPluginService().groupQuit(imGroup.getId(), imGroupMembers);
 
@@ -376,7 +382,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     @Override
     public void groupQuit(Long userId, String clientType, String imGroupId) throws Exception {
 
-        ImGroup imGroup = imGroupService.getById(imGroupId);
+        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -410,9 +416,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             item.id(IdWorker.getId()).imUserId(getImUserId(item.getUserId().toString(), item.getClientType())).setGroupId(imGroupId);
         }
 
-        imGroupMemberService.insertBatch(getImGroupMemberEntity(groupMembers));
+        imGroupMemberPlusService.insertBatch(getImGroupMemberEntity(groupMembers));
         // 判断群ID是否有效
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -443,7 +449,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
 
         // 群组信息
-        ImGroup imGroup = imGroupService.getById(imGroupId);
+        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -463,7 +469,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
 
         // 群组信息
-        ImGroup imGroup = imGroupService.lambdaQuery().eq(ImGroup::getId, imGroupId).last("LIMIT 1").one();
+        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, imGroupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
@@ -487,15 +493,15 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      * @param groupId 群组ID
      * @param imGroup ImGroup
      */
-    private void updateGroupMemberNumber(String groupId, ImGroup imGroup) {
+    private void updateGroupMemberNumber(String groupId, ImGroupPlus imGroup) {
 
         // 统计当前群成员用户数
-        long count = imGroupMemberService.count(Wrappers.<ImGroupMember>lambdaQuery().eq(ImGroupMember::getImGroupId, groupId));
+        long count = imGroupMemberPlusService.count(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
         // 修改群组成员数
         imGroupService.lambdaUpdate()
-            .eq(ImGroup::getId, imGroup.getId())
-            .set(ImGroup::getMemberNum, count)
+            .eq(ImGroupPlus::getId, imGroup.getId())
+            .set(ImGroupPlus::getMemberNum, count)
             .update();
     }
 
@@ -511,7 +517,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     public void groupJoin(Long userId, String clientType, String imGroupId) throws Exception {
 
         // 群组信息
-        ImGroup imGroup = imGroupService.getById(imGroupId);
+        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }

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

@@ -731,7 +731,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 
             try {
                 String username = userInfo.getUsername();
-                if (Lists.newArrayList(userInfo.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
+                List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
+                if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                     username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
                 }
 

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberPlusServiceImpl.java

@@ -1,6 +1,7 @@
 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 org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
@@ -16,7 +17,7 @@ import java.util.List;
  */
 @Slf4j
 @Service
-public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusMapper, ImGroupMember> implements ImGroupMemberPlusService {
+public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusMapper, ImGroupMemberPlus> implements ImGroupMemberPlusService {
 
 	/**
      * 查询详情
@@ -24,14 +25,14 @@ public class ImGroupMemberPlusServiceImpl extends ServiceImpl<ImGroupMemberPlusM
      * @return ImGroupMember
      */
 	@Override
-    public ImGroupMember detail(Long id) {
+    public ImGroupMemberPlus detail(Long id) {
         
         return baseMapper.selectById(id);
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void insertBatch(List<ImGroupMember> imGroupMemberEntity) {
+    public void insertBatch(List<ImGroupMemberPlus> imGroupMemberEntity) {
         baseMapper.insertBatch(imGroupMemberEntity);
     }
 

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupPlusServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.service.ImGroupPlusService;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
@@ -13,7 +14,7 @@ import com.ym.mec.biz.dal.mapper.ImGroupPlusMapper;
  */
 @Slf4j
 @Service
-public class ImGroupPlusServiceImpl extends ServiceImpl<ImGroupPlusMapper, ImGroup> implements ImGroupPlusService {
+public class ImGroupPlusServiceImpl extends ServiceImpl<ImGroupPlusMapper, ImGroupPlus> implements ImGroupPlusService {
 
 	/**
      * 查询详情
@@ -21,7 +22,7 @@ public class ImGroupPlusServiceImpl extends ServiceImpl<ImGroupPlusMapper, ImGro
      * @return ImGroup
      */
 	@Override
-    public ImGroup detail(Long id) {
+    public ImGroupPlus detail(Long id) {
         
         return baseMapper.selectById(id);
     }

+ 14 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -278,7 +278,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                     .groupId(groupMember.getImGroupId())
                     .userId(groupMember.getUserId().longValue())
                     .clientType(sysUserType.name())
-                    .avatar(groupMember.getAvatar())
+//                    .avatar(groupMember.getAvatar())
                     .nickname(groupMember.getNickname())
                     .isAdmin(groupMember.getIsAdmin())
                     .imUserId(getImUserId(groupMember.getUserId().toString(), sysUserType.name()))
@@ -334,6 +334,17 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             imGroupMemberDto.setType(EFriendRoleType.getByName(imGroupMemberDto.getRoleType()).name());
             imGroupMemberDto.getUser().setUsername(imGroupMemberDto.getGroupNickname());
             imGroupMemberDto.setNickname(imGroupMemberDto.getGroupNickname());
+
+            if (StringUtils.isNotBlank(imGroupMemberDto.getUserType()) && Objects.nonNull(imGroupMemberDto.getUser())) {
+
+                List<String> userTypes = Lists.newArrayList(imGroupMemberDto.getUserType().split(","));
+                if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
+                    // 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
+                    imGroupMemberDto.setGroupNickname(imGroupMemberDto.getUser().getRealName());
+                }
+
+            }
+
         }
         return imGroupMemberDtos;
     }
@@ -971,7 +982,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             String username = user.getUsername();
 
             // 老师默认使用真实姓名
-            if (Lists.newArrayList(user.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
+            List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
+            if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                 username = Optional.ofNullable(user.getRealName()).orElse(username);
             }
             // 自动激活学生IM帐号

+ 31 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
@@ -124,19 +125,41 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
         String syncImUserFriendKey = "syncImUserFriend:" + userId;
         if(redisTemplate.hasKey(syncImUserFriendKey)){
             List<ImUserFriendDto> imUserFriendDtoList = imUserFriendDao.queryFriendListByUserId(userId, search);
-            imUserFriendDtoList.stream().forEach(i->{
-                i.setImUserId(imGroupCoreService.getImUserId(String.valueOf(i.getUserId()),""));
-            });
-            return imUserFriendDtoList;
+
+            // 获取好友昵称
+            return getImUserFriendNickname(imUserFriendDtoList);
         }else {
             List<ImUserFriendDto> imUserFriendDtoList = teacherService.queryGroupStudents1(userId, null);
-            imUserFriendDtoList.stream().forEach(i->{
-                i.setImUserId(imGroupCoreService.getImUserId(String.valueOf(i.getUserId()),""));
-            });
-            return imUserFriendDtoList;
+
+            // 获取好友昵称
+            return getImUserFriendNickname(imUserFriendDtoList);
         }
     }
 
+    /**
+     * 获取好友昵称
+     * @param imUserFriendDtoList List<ImUserFriendDto>
+     */
+    private List<ImUserFriendDto> getImUserFriendNickname(List<ImUserFriendDto> imUserFriendDtoList) {
+
+        for (ImUserFriendDto item : imUserFriendDtoList) {
+            // 设置用户imUserId
+            item.setImUserId(imGroupCoreService.getImUserId(String.valueOf(item.getUserId()),""));
+
+            // 设置用户好友昵称
+            if (Objects.nonNull(item.getFriend())) {
+                String username = item.getFriend().getUsername();
+
+                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);
+                }
+                item.setFriendNickname(username);
+            }
+        }
+        return imUserFriendDtoList;
+    }
+
     @Override
     public ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId) {
         ImUserFriendDto imUserFriendDto = imUserFriendDao.queryFriendDetail(userId, friendUserId);

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

@@ -758,7 +758,8 @@ public class StudentManageServiceImpl implements StudentManageService {
 
             try {
                 String username = userInfo.getUsername();
-                if (Lists.newArrayList(userInfo.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
+                List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
+                if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                     username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
                 }
 

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

@@ -37,6 +37,8 @@
 		<result column="username_" property="user.username" />
 		<result column="avatar_" property="user.avatar" />
 		<result column="phone_" property="user.phone" />
+		<result column="real_name_" property="user.realName" />
+		<result column="user_type_" property="user.userType" />
 		<result column="group_nickname_" property="groupNickname" />
 	</resultMap>
 	
@@ -170,6 +172,7 @@
 		     , CASE WHEN find_in_set('STUDENT',u.user_type_) THEN u.username_ ELSE u.real_name_ END username_
 		     , IFNULL(NULLIF(u.username_, ''), u.real_name_) AS group_nickname_
 		     , u.real_name_
+		     , u.user_type_
 		     , st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
 		FROM im_group_member igm
 		LEFT JOIN sys_user u ON igm.user_id_ = u.id_

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupMemberPlusMapper.xml → mec-biz/src/main/resources/config/mybatis/ImGroupMemberPlusMapper.xml

@@ -2,14 +2,14 @@
 <!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.ym.mec.biz.dal.mapper.ImGroupMemberPlusMapper">
     
-    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.ImGroupMember">
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.ImGroupMemberPlus">
 		SELECT         
         	t.*
 		FROM im_group_member t
 	</select>
 
 
-    <insert id="insertBatch" parameterType="com.ym.mec.biz.dal.entity.ImGroupMember" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+    <insert id="insertBatch" parameterType="com.ym.mec.biz.dal.entity.ImGroupMemberPlus" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO im_group_member (im_group_id_,user_id_,nickname_,is_admin_,role_type_,create_time_,update_time_,tenant_id_,type_) VALUES
         <foreach collection="list" item="item" separator=",">
             (#{item.imGroupId},#{item.userId},#{item.nickname},#{item.isAdmin},#{item.roleType},NOW(),NOW(),#{item.tenantId},#{item.type})

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/ImGroupPlusMapper.xml → mec-biz/src/main/resources/config/mybatis/ImGroupPlusMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.ym.mec.biz.dal.mapper.ImGroupPlusMapper">
     
-    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.ImGroup">
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.ImGroupPlus">
 		SELECT         
         	t.*
 		FROM im_group t

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

@@ -91,7 +91,8 @@ public class UserController {
             if (Objects.nonNull(userInfo)) {
 
                 String username = userInfo.getUsername();
-                if (Lists.newArrayList(userInfo.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
+                List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
+                if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                     username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
                 }
 
@@ -127,7 +128,8 @@ public class UserController {
         if (Objects.nonNull(userInfo)) {
 
             String username = userInfo.getUsername();
-            if (Lists.newArrayList(userInfo.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
+            List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
+            if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                 username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
             }
 
@@ -160,7 +162,8 @@ public class UserController {
             if (Objects.nonNull(userInfo)) {
 
                 String username = userInfo.getUsername();
-                if (Lists.newArrayList(userInfo.getUserType().split(",")).contains(ClientEnum.TEACHER.getCode())) {
+                List<String> userTypes = Lists.newArrayList(userInfo.getUserType().split(","));
+                if (userTypes.size() > 1 || userTypes.contains(ClientEnum.TEACHER.getCode())) {
                     username = Optional.ofNullable(userInfo.getRealName()).orElse(username);
                 }