Browse Source

通讯人员添加类型

liujc 2 years ago
parent
commit
31988a9e38

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImUserFriend.java

@@ -31,6 +31,16 @@ public class ImUserFriend extends BaseEntity {
 
 
 	private String subjectId;
 	private String subjectId;
 
 
+    public String getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(String roleType) {
+        this.roleType = roleType;
+    }
+
+    private String roleType;
+
 	/**  */
 	/**  */
 	private java.util.Date createTime;
 	private java.util.Date createTime;
 
 

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EFriendRoleType.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+
+public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
+
+    SCHOOLMASTER(1,"校长"),
+    ORCHESTRA_LEADER(2,"乐团领队"),
+    SCHOOL_LEADER(3,"分管领导"),
+    SCHOOL_TEACHER(4,"负责老师"),
+    ORCHESTRA_MANAGER(5,"乐团主管"),
+    ORCHESTRA_TEACHER(7,"指导老师"),
+    STUDENT(8,"学生"),
+
+
+    ;
+    private Integer code;
+    private String msg;
+
+    EFriendRoleType(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public static EFriendRoleType getByName(String name) {
+        switch (name) {
+            case "SCHOOLMASTER":
+                return SCHOOLMASTER;
+            case "ORCHESTRA_LEADER":
+                return ORCHESTRA_LEADER;
+            case "SCHOOL_LEADER":
+                return SCHOOL_LEADER;
+            case "TEACHER":
+                return SCHOOL_TEACHER;
+            case "乐团主管":
+                return ORCHESTRA_MANAGER;
+            case "指导老师":
+                return ORCHESTRA_TEACHER;
+
+            default:
+                return STUDENT;
+        }
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return code;
+    }
+}

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

@@ -18,7 +18,7 @@ public class ImGroupWrapper {
         @ApiModelProperty("乐团ID")
         @ApiModelProperty("乐团ID")
         private String musicGroupId;
         private String musicGroupId;
 
 
-        @ApiModelProperty("角色 SCHOOLMASTER:校长 ORCHESTRA_LEADER:乐团领队 SCHOOL_LEADER:分管领导 TEACHER:负责老师 STUDENT:学生")
+        @ApiModelProperty("角色 ")
         private String roleType;
         private String roleType;
 
 
         @ApiModelProperty("当前用户ID")
         @ApiModelProperty("当前用户ID")

+ 54 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 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.GroupType;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
@@ -212,10 +213,24 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
                 List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(imGroupIds);
                 List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(imGroupIds);
                 if (CollectionUtils.isNotEmpty(memberList)) {
                 if (CollectionUtils.isNotEmpty(memberList)) {
                     Long staffUserId = schoolStaff.getUserId();
                     Long staffUserId = schoolStaff.getUserId();
+                    // 设置角色
+                    memberList = memberList.stream().map(o -> {
+                        if (StringUtils.isBlank(o.getRoleType())) {
+                            o.setRoleType(EFriendRoleType.STUDENT.name());
+                        } else {
+                            o.setRoleType(EFriendRoleType.getByName(o.getRoleType()).name());
+                        }
+                        return o;
+                    }).collect(Collectors.toList());
+
+                    // ID toMap roleType
+                    Map<Integer, String> roleTypeMap = memberList.stream().collect(Collectors.toMap(ImGroupMember::getUserId, ImGroupMember::getRoleType,(k1,k2) -> k2));
+
+
 
 
                     Set<Integer> userIds = memberList.stream().map(ImGroupMember::getUserId)
                     Set<Integer> userIds = memberList.stream().map(ImGroupMember::getUserId)
                             .collect(Collectors.toSet());
                             .collect(Collectors.toSet());
-                    userFriends(imUserFriends, musicGroup.getName(), staffUserId, userIds);
+                    userFriends(imUserFriends, musicGroup, staffUserId, userIds,roleTypeMap);
                 }
                 }
             }
             }
             // 更新学校端好友列表
             // 更新学校端好友列表
@@ -356,10 +371,16 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
                     .collect(Collectors.toSet());
                     .collect(Collectors.toSet());
             usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
             usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
 
 
+            // ID toMap userType
+            Map<Integer, String> roleTypeMap = schoolStaffs.stream()
+                    .collect(Collectors.toMap(o -> o.getUserId().intValue(), o -> EFriendRoleType.getByName(o.getUserType().getCode()).name(),(k1,k2) -> k2));
             // 设置好友关系
             // 设置好友关系
             for (Integer userId : userIds) {
             for (Integer userId : userIds) {
                 this.addImUserFriend(userIds, null, usernameMap, null, userId, imUserFriends);
                 this.addImUserFriend(userIds, null, usernameMap, null, userId, imUserFriends);
             }
             }
+            for (ImUserFriend imUserFriend : imUserFriends) {
+                imUserFriend.setRoleType(roleTypeMap.get(imUserFriend.getFriendId()));
+            }
         }
         }
         return imUserFriends;
         return imUserFriends;
     }
     }
@@ -380,23 +401,52 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
     }
     }
 
 
 
 
-    private void userFriends(List<ImUserFriend> imUserFriends, String musicGroupName, Long userId, Set<Integer> userIds) {
+    private void userFriends(List<ImUserFriend> imUserFriends, MusicGroup musicGroup, Long userId, Set<Integer> userIds,Map<Integer, String> roleTypeMap) {
         Map<Integer, String> usernameMap;
         Map<Integer, String> usernameMap;
         if (CollectionUtils.isNotEmpty(userIds)) {
         if (CollectionUtils.isNotEmpty(userIds)) {
             usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
             usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
 
 
+            //获取当前学员声部
+            Map<Integer,String> studentSubjectName = new HashMap<>();
+            Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
+            List<Integer> studentIds = new ArrayList<>();
+            List<Integer> teacherIds = new ArrayList<>();
+            for (Integer id : userIds) {
+                if( EFriendRoleType.STUDENT.name().equals(roleTypeMap.get(id))){
+                    studentIds.add(id);
+                }else if (EFriendRoleType.ORCHESTRA_TEACHER.name().equals(roleTypeMap.get(id))){
+                    teacherIds.add(id);
+                }
+            }
+            if(studentIds.size() > 0){
+                studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
+            }
+
+            if(teacherIds.size() > 0){
+                teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
+            }
+            studentSubjectName.putAll(teacherSubjectNameMap);
             // 设置好友关系
             // 设置好友关系
-            this.addImUserFriend(userIds,null,usernameMap, musicGroupName, userId.intValue(), imUserFriends);
+            this.addImUserFriend(userIds,studentSubjectName,usernameMap, musicGroup.getName(), userId.intValue(), imUserFriends);
 
 
             for (Integer user : userIds) {
             for (Integer user : userIds) {
                 // 设置好友关系
                 // 设置好友关系
                 this.addImUserFriend(new HashSet<>(Lists.newArrayList(
                 this.addImUserFriend(new HashSet<>(Lists.newArrayList(
-                        userId.intValue())),null,usernameMap, musicGroupName,user, imUserFriends);
+                        userId.intValue())),null,usernameMap, musicGroup.getName(),user, imUserFriends,roleTypeMap);
             }
             }
         }
         }
     }
     }
 
 
     public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
     public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
+                                Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends,Map<Integer,String> roleTypeMap) {
+        addImUserFriend(friendUserIds,tagsMap,nameMap,memo,userId,imUserFriends);
+        for (ImUserFriend imUserFriend : imUserFriends) {
+            imUserFriend.setRoleType(roleTypeMap.get(imUserFriend.getFriendId()));
+        }
+
+    }
+
+    public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
                                 Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
                                 Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
         if(friendUserIds != null && friendUserIds.size() > 0){
         if(friendUserIds != null && friendUserIds.size() > 0){
             for (Integer friendId : friendUserIds) {
             for (Integer friendId : friendUserIds) {

+ 9 - 14
mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml

@@ -19,6 +19,7 @@
 		<result column="create_time_" property="createTime" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="update_time_" property="updateTime" />
         <result column="tenant_id_" property="tenantId"/>
         <result column="tenant_id_" property="tenantId"/>
+        <result column="role_type_" property="roleType"/>
 	</resultMap>
 	</resultMap>
 	
 	
 	<resultMap type="com.ym.mec.biz.dal.dto.ImUserFriendDto" id="ImUserFriendDto" extends="ImUserFriend">
 	<resultMap type="com.ym.mec.biz.dal.dto.ImUserFriendDto" id="ImUserFriendDto" extends="ImUserFriend">
@@ -40,8 +41,8 @@
 	
 	
 	<!-- 向数据库增加一条记录 -->
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImUserFriend" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImUserFriend" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO im_user_friend (id_,user_id_,friend_id_,friend_nickname_,memo_,tags_,create_time_,update_time_,tenant_id_)
-		VALUES(#{id},#{userId},#{friendId},#{friendNickname},#{memo},#{tags},NOW(),NOW(),#{tenantId})
+		INSERT INTO im_user_friend (id_,user_id_,friend_id_,friend_nickname_,memo_,tags_,create_time_,update_time_,tenant_id_,role_type_)
+		VALUES(#{id},#{userId},#{friendId},#{friendNickname},#{memo},#{tags},NOW(),NOW(),#{tenantId},#{roleType})
 	</insert>
 	</insert>
 
 
 	<insert id="insertByBasicUser">
 	<insert id="insertByBasicUser">
@@ -166,21 +167,12 @@
 	<select id="getFriendListByUserId" resultMap="ImUserFriendDto">
 	<select id="getFriendListByUserId" resultMap="ImUserFriendDto">
         SELECT distinct iuf.*, ifnull(u.real_name_,username_) as real_name_,u.avatar_,u.phone_,u.user_type_
         SELECT distinct iuf.*, ifnull(u.real_name_,username_) as real_name_,u.avatar_,u.phone_,u.user_type_
 
 
-        <if test="param.musicGroupId != null and param.musicGroupId != '' or param.roleType != null and param.roleType == 'STUDENT'">
         ,st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
         ,st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
-        </if>
         FROM im_user_friend iuf
         FROM im_user_friend iuf
         LEFT JOIN sys_user u ON iuf.friend_id_ = u.id_
         LEFT JOIN sys_user u ON iuf.friend_id_ = u.id_
-        <if test="param.musicGroupId != null and param.musicGroupId != '' or param.roleType != null and param.roleType == 'STUDENT'">
-            LEFT JOIN student st ON st.user_id_ = u.id_
-            left join student_registration cgs on cgs.user_id_ = st.user_id_
-            LEFT JOIN `subject` s ON s.id_ = st.subject_id_list_
-        </if>
-        <if test="param.roleType != null and param.roleType != ''">
-            <if test="param.roleType != 'STUDENT'">
-              JOIN school_staff st ON st.user_id_ = u.id_ and st.user_type_ = #{param.roleType}
-            </if>
-        </if>
+        LEFT JOIN student st ON st.user_id_ = u.id_
+        left join student_registration cgs on cgs.user_id_ = st.user_id_
+        LEFT JOIN `subject` s ON s.id_ = st.subject_id_list_
         WHERE iuf.user_id_ = #{param.userId}
         WHERE iuf.user_id_ = #{param.userId}
         <if test="param.keyword != null and param.keyword != ''">
         <if test="param.keyword != null and param.keyword != ''">
             and (u.real_name_ like concat('%',#{param.keyword},'%') or iuf.friend_nickname_ like concat('%',#{param.keyword},'%'))
             and (u.real_name_ like concat('%',#{param.keyword},'%') or iuf.friend_nickname_ like concat('%',#{param.keyword},'%'))
@@ -189,5 +181,8 @@
         <if test="param.musicGroupId != null and param.musicGroupId != ''">
         <if test="param.musicGroupId != null and param.musicGroupId != ''">
             and cgs.music_group_id_ = #{param.musicGroupId}
             and cgs.music_group_id_ = #{param.musicGroupId}
         </if>
         </if>
+        <if test="param.roleType != null and param.roleType != ''">
+            and iuf.role_type_ = #{param.roleType}
+        </if>
     </select>
     </select>
 </mapper>
 </mapper>