Explorar o código

合作单位关联乐团主管群聊

zouxuan %!s(int64=4) %!d(string=hai) anos
pai
achega
b07b870f98

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -235,6 +235,14 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ImGroupModel> queryTeacherQuitGroups(@Param("userId") Integer userId);
 
     /**
+     * 获取员工关联的预报名的群聊
+     *
+     * @param userId
+     * @return
+     */
+    List<ImGroupModel> queryApplyGroups(@Param("transferUserId") Integer transferUserId, @Param("userId") Integer userId, @Param("organId") Integer organId);
+
+    /**
      * 获取教务老师关联的群列表
      *
      * @param userId

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

@@ -258,6 +258,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		List<ImGroupModel> educationGroupModels = new ArrayList<>();
 		List<ImGroupModel> teamGroupModels = new ArrayList<>();
 		List<ImGroupModel> directorGroupModels = new ArrayList<>();
+		//获取用户需要加入的预报名群聊
+		List<ImGroupModel> applyGroupModels = new ArrayList<>();
 		//获取用户担任教务老师的所有乐团列表
 		List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
 		//获取用户担任教务老师的所有网管课列表
@@ -277,6 +279,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 					if(employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()){
 						throw new BizException("交接人校验失败,请重新填写");
 					}
+					//获取关联的预报名的群聊
+					applyGroupModels.addAll(classGroupDao.queryApplyGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 					switch (roleName){
 						case "education":
 							//教务老师所需加入的群组
@@ -294,11 +298,25 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 				}
 			}
 		}
+
+		//预报名群
+		if(applyGroupModels.size() > 0){
+			//❤️用户加群
+			for (ImGroupModel imGroupModel : applyGroupModels) {
+				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
+				
+				List<ImGroupMember> memberList = imGroupModel.getMemberList();
+				for(ImGroupMember member : memberList){
+					userRoleMap.put(Integer.parseInt(member.getId()), imGroupModel.getUserRole());
+				}
+				imGroupMemberService.join(Long.parseLong(imGroupModel.getId()), userRoleMap);
+			}
+		}
 		if(educationGroupModels.size() > 0){
 			//❤️用户加群
 			for (ImGroupModel imGroupModel : educationGroupModels) {
 				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
-				
+
 				List<ImGroupMember> memberList = imGroupModel.getMemberList();
 				for(ImGroupMember member : memberList){
 					userRoleMap.put(Integer.parseInt(member.getId()), "乐团主管");
@@ -339,6 +357,15 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 			}
 			imGroupMemberService.quit(imGroupIdList, levelUserId);
 		}
+		//原有员工退预报名群
+		List<ImGroupModel> imGroupModels = classGroupDao.queryApplyGroups(levelUserId, levelUserId, null);
+		if(imGroupModels.size() > 0){
+			List<Long> imGroupIdList = new ArrayList<Long>();
+			for (ImGroupModel imGroupModel : imGroupModels) {
+				imGroupIdList.add(Long.parseLong(imGroupModel.getId()));
+			}
+			imGroupMemberService.quit(imGroupIdList, levelUserId);
+		}
 		//更换教务老师等数据
 		employeeDao.employeeLevel(employeeLevelDtos);
 		//新增离职时间

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

@@ -2597,8 +2597,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if(cooperationOrgan.getEducationUserId() == null){
             throw new BizException("操作失败:请先配置合作单位: {} 关联的乐团主管",cooperationOrgan.getName());
         }
+        boolean refresh = false;
         musicGroup.setEducationalTeacherId(cooperationOrgan.getEducationUserId());
         if (group.getStatus() == MusicGroupStatusEnum.PROGRESS) {
+            refresh = true;
             updateTeamTeacher(group, musicGroup);
         }
         //不是导入的乐团
@@ -2606,6 +2608,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             //是否有预报名的群聊
             ImGroup imGroup = imGroupService.get(Long.parseLong(musicGroupId));
             if(imGroup != null){
+                refresh = true;
                 List<Integer> quitUserIdList = new ArrayList<>();
                 if(group.getTeamTeacherId() != null){
                     quitUserIdList.add(group.getTeamTeacherId());
@@ -2655,7 +2658,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (subFeeSettingDto.getMusicGroupPaymentEntities() != null && subFeeSettingDto.getMusicGroupPaymentEntities().size() > 0) {
             musicGroupPaymentEntitiesDao.batchAdd(subFeeSettingDto.getMusicGroupPaymentEntities(), musicGroupId);
         }
-        if (group.getStatus() == MusicGroupStatusEnum.PROGRESS) {
+        if (refresh) {
             imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
         }
         //记录操作日志

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -316,6 +316,7 @@
         <result column="img_" property="img"/>
         <result column="teacher_ids_" property="teacherIds"/>
         <result column="group_name_" property="groupName"/>
+        <result column="user_role_" property="userRole"/>
         <collection property="memberList" ofType="com.ym.mec.common.entity.ImGroupMember">
             <result property="id" column="user_id_"/>
         </collection>
@@ -518,6 +519,18 @@
         GROUP BY cg.id_
     </select>
 
+    <select id="queryApplyGroups" resultMap="imGroupModel">
+        SELECT mg.id_,ig.name_,#{transferUserId} user_id_,
+        CASE WHEN mg.educational_teacher_id_ = #{userId} THEN '乐团主管' WHEN mg.team_teacher_id_ = #{userId} THEN '运营主管' ELSE '乐队指导' END user_role_
+        FROM music_group mg
+        LEFT JOIN im_group ig ON ig.id_ = mg.id_
+        WHERE LENGTH(mg.id_) > 10 AND (mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId})
+        AND ig.id_ IS NOT NULL
+        <if test="organId != null">
+            AND mg.organ_id_ = #{organId}
+        </if>
+    </select>
+
     <select id="queryEducationGroups" resultMap="imGroupModel">
         SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,#{transferUserId} user_id_
         FROM class_group_teacher_mapper cgtm

+ 9 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java

@@ -17,6 +17,7 @@ public class ImGroupModel{
     private Integer minute;
     private Integer count;
     private Integer status;
+    private String userRole;
 
     public ImGroupModel() {
     }
@@ -36,6 +37,14 @@ public class ImGroupModel{
         this.name = name;
     }
 
+    public String getUserRole() {
+        return userRole;
+    }
+
+    public void setUserRole(String userRole) {
+        this.userRole = userRole;
+    }
+
     public List<ImGroupMember> getMemberList() {
         return memberList;
     }