Explorar o código

Merge remote-tracking branch 'origin/master'

Joburgess %!s(int64=4) %!d(string=hai) anos
pai
achega
0aa33c9019

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

@@ -227,6 +227,14 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ImGroupModel> queryTeacherGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
+     * 获取员工离职时需要退出的群组列表
+     *
+     * @param userId
+     * @return
+     */
+    List<ImGroupModel> queryTeacherQuitGroups(@Param("userId") Integer userId);
+
+    /**
      * 获取未分配合奏的单技班列表
      *
      * @param musicGroupId

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/EmployeeDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
+import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.common.dal.BaseDAO;
@@ -117,4 +118,38 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      * @return
      */
     Integer hasCourseSchedule(Integer employeeId);
+
+    /**
+     * 获取维修技师所在分部
+     * @param userId
+     * @return
+     */
+    List<Integer> queryRepairOrganList(Integer userId);
+
+    /**
+     * 教务老师所在分部列表
+     * @param userId
+     * @return
+     */
+    List<Integer> queryEducationOrganList(Integer userId);
+
+    /**
+     * 运营主管所在分部列表
+     * @param userId
+     * @return
+     */
+    List<Integer> queryTeamTeacherOrganList(Integer userId);
+
+    /**
+     * 乐队指导所在分部列表
+     * @param userId
+     * @return
+     */
+    List<Integer> queryDirectorOrganList(Integer userId);
+
+    /**
+     * 员工离职
+     * @param employeeLevelDtos
+     */
+    void employeeLevel(List<EmployeeLevelDto> employeeLevelDtos);
 }

+ 51 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeLevelDto.java

@@ -0,0 +1,51 @@
+package com.ym.mec.biz.dal.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class EmployeeLevelDto {
+
+	@ApiModelProperty(value = "分部编号", required = true)
+	private Integer organId;
+
+	@ApiModelProperty(value = "交接人编号", required = true)
+	private Integer transferUserId;
+
+	@ApiModelProperty(value = "离职人编号", required = true)
+	private Integer levelUserId;
+
+	@ApiModelProperty(value = "角色名称(维修技师repair   教务老师education  运营主管teamTeacher  乐队指导director)", required = true)
+	private String roleName;
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
+	public Integer getTransferUserId() {
+		return transferUserId;
+	}
+
+	public void setTransferUserId(Integer transferUserId) {
+		this.transferUserId = transferUserId;
+	}
+
+	public Integer getLevelUserId() {
+		return levelUserId;
+	}
+
+	public void setLevelUserId(Integer levelUserId) {
+		this.levelUserId = levelUserId;
+	}
+
+	public String getRoleName() {
+		return roleName;
+	}
+
+	public void setRoleName(String roleName) {
+		this.roleName = roleName;
+	}
+}

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
@@ -9,6 +10,7 @@ import com.ym.mec.common.service.BaseService;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public interface EmployeeService extends BaseService<Integer, Employee> {
 
@@ -68,4 +70,17 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * @param targetUserId
      */
     void updateEducationTeacherId(Integer currentUserId, Integer targetUserId);
+
+    /**
+     * 获取员工离职时对应角色所在分部
+     * @param userId
+     * @return
+     */
+    Map<String,Object> levelDetail(Integer userId);
+
+    /**
+     * 员工离职交接
+     * @param employeeLevelDtos
+     */
+    void level(List<EmployeeLevelDto> employeeLevelDtos);
 }

+ 41 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -3,11 +3,14 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
+import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
@@ -28,10 +31,8 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  implements EmployeeService {
@@ -46,6 +47,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	private TeacherDao teacherDao;
 	@Autowired
 	private SysUserCashAccountDao sysUserCashAccountDao;
+	@Autowired
+	private ClassGroupDao classGroupDao;
 
 	@Override
 	public BaseDAO<Integer, Employee> getDAO() {
@@ -192,4 +195,38 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	public void updateEducationTeacherId(Integer currentUserId, Integer targetUserId) {
 		employeeDao.updateEducationTeacherId(currentUserId,targetUserId);
 	}
+
+	@Override
+	public Map<String, Object> levelDetail(Integer userId) {
+		Map<String,Object> resultMap = new HashMap<>(4);
+		//维修技师所在分部列表
+		List<Integer> repairOrgans = employeeDao.queryRepairOrganList(userId);
+		resultMap.put("repairOrgans",repairOrgans);
+		//教务老师所在分部列表
+		List<Integer> educationOrgans = employeeDao.queryEducationOrganList(userId);
+		resultMap.put("educationOrgans",educationOrgans);
+		//运营主管所在分部列表
+		List<Integer> teamTeacherOrgans = employeeDao.queryTeamTeacherOrganList(userId);
+		resultMap.put("teamTeacherOrgans",teamTeacherOrgans);
+		//乐队指导所在分部列表
+		List<Integer> directorOrgans = employeeDao.queryDirectorOrganList(userId);
+		resultMap.put("directorOrgans",directorOrgans);
+		return resultMap;
+	}
+
+	@Override
+	public void level(List<EmployeeLevelDto> employeeLevelDtos) {
+		//获取用户需要加入的群组列表
+//		Map<String, List<EmployeeLevelDto>> collect = employeeLevelDtos.stream().collect(Collectors.groupingBy(e -> e.getRoleName()));
+//		Set<String> roleNames = collect.keySet();
+//		for (String roleName : roleNames) {
+//			if("repair" != roleName){
+//				List<EmployeeLevelDto> levelDtoList = collect.get(roleName);
+//
+//			}
+//		}
+//		imFeignService.groupBatchJoin();
+//		employeeDao.employeeLevel(employeeLevelDtos);
+		//用户退群和加群
+	}
 }

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

@@ -483,6 +483,19 @@
         GROUP BY cg.id_
     </select>
 
+    <select id="queryTeacherQuitGroups" 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_
+        FROM class_group_teacher_mapper cgtm
+        LEFT JOIN class_group cg ON cgtm.class_group_id_ = cg.id_
+        LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_ AND cg.group_type_ = 'MUSIC'
+        LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_ AND cg.group_type_ = 'VIP'
+        LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_ AND cg.group_type_ = 'COMM'
+        WHERE cgtm.user_id_ != #{userId} AND (mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId})
+        AND cg.del_flag_ = 0 AND ((mg.status_ = 'PROGRESS' OR vg.group_status_ = 2 OR csg.status_ = 'NORMAL')
+        OR (vg.group_status_ = 2 AND vg.educational_teacher_id_ =  #{userId}) OR (csg.status_ = 'NORMAL' AND csg.educational_teacher_id_ =  #{userId}))
+        GROUP BY cg.id_
+    </select>
+
     <select id="findNoClassSubjects" resultMap="ClassGroup">
         SELECT cg.* FROM class_group cg LEFT JOIN class_group_relation cgr ON cgr.sub_class_group_id_=cg.id_
         WHERE cg.music_group_id_=#{musicGroupId} AND cg.type_ = 'NORMAL'

+ 43 - 0
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -288,4 +288,47 @@
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
         WHERE csts.user_id_ = #{employeeId}
     </select>
+
+    <select id="queryRepairOrganList" resultType="java.lang.Integer">
+        SELECT DISTINCT organ_id_ FROM music_group mg
+        WHERE repair_user_id_ = #{userId}
+    </select>
+    <select id="queryEducationOrganList" resultType="java.lang.Integer">
+        SELECT DISTINCT c.organ_id_ FROM (
+             SELECT organ_id_ FROM music_group
+             WHERE educational_teacher_id_ = #{userId}
+             UNION
+             SELECT organ_id_ FROM practice_group
+             WHERE educational_teacher_id_ = #{userId}
+             UNION
+             SELECT organ_id_ FROM vip_group
+             WHERE educational_teacher_id_ = #{userId}) c
+    </select>
+    <select id="queryTeamTeacherOrganList" resultType="java.lang.Integer">
+        SELECT DISTINCT organ_id_ FROM music_group
+        WHERE team_teacher_id_ = #{userId}
+    </select>
+    <select id="queryDirectorOrganList" resultType="java.lang.Integer">
+        SELECT DISTINCT organ_id_ FROM music_group
+        WHERE director_user_id_ = #{userId}
+    </select>
+
+    <update id="employeeLevel">
+        <foreach collection="employeeLevelDtos" item="item" open="(" close=")" separator=";">
+            <if test="employeeLevelDto.roleName == 'repair'">
+                UPDATE music_group SET repair_user_id_ = #{item.transferUserId} WHERE repair_user_id_ = #{item.levelUserId} AND organ_id_ = #{item.organId}
+            </if>
+            <if test="employeeLevelDto.roleName == 'education'">
+                UPDATE music_group SET educational_teacher_id_ = #{item.transferUserId} WHERE educational_teacher_id_ = #{item.levelUserId} AND organ_id_ = #{item.organId};
+                UPDATE practice_group SET educational_teacher_id_ = #{item.transferUserId} WHERE educational_teacher_id_ = #{item.levelUserId} AND organ_id_ = #{item.organId};
+                UPDATE vip_group SET educational_teacher_id_ = #{item.transferUserId} WHERE educational_teacher_id_ = #{item.levelUserId} AND organ_id_ = #{item.organId}
+            </if>
+            <if test="employeeLevelDto.roleName == 'teamTeacher'">
+                UPDATE music_group SET team_teacher_id_ = #{item.transferUserId} WHERE team_teacher_id_ = #{item.levelUserId} AND organ_id_ = #{item.organId}
+            </if>
+            <if test="employeeLevelDto.roleName == 'director'">
+                UPDATE music_group SET director_user_id_ = #{item.transferUserId} WHERE director_user_id_ = #{item.levelUserId} AND organ_id_ = #{item.organId}
+            </if>
+        </foreach>
+    </update>
 </mapper>

+ 8 - 0
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -56,6 +56,14 @@ public interface ImFeignService {
 	Object groupJoin(@RequestBody ImGroupModel groupModel);
 
 	/**
+	 * 批量加入群组
+	 * @param groupModels
+	 * @return
+	 */
+	@PostMapping(value = "group/batchJoin")
+	Object groupBatchJoin(@RequestBody List<ImGroupModel> groupModels);
+
+	/**
 	 * 退出群组
 	 * @param groupModel
 	 * @return

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java

@@ -38,6 +38,11 @@ public class ImFeignServiceFallback implements ImFeignService {
     }
 
     @Override
+    public Object groupBatchJoin(List<ImGroupModel> groupModels) {
+        return null;
+    }
+
+    @Override
     public Object groupQuit(ImGroupModel groupModel) {
         return null;
     }

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

@@ -90,6 +90,11 @@ public class GroupController{
         return groupService.groupJoin(groupModel);
     }
 
+    @RequestMapping(value = "/batchJoin", method = RequestMethod.POST)
+    public void batchJoin(@RequestBody List<GroupModel> groupModels) throws Exception {
+        groupService.groupBatchJoin(groupModels);
+    }
+
     @RequestMapping(value = "/quit", method = RequestMethod.POST)
     public Object quit(@RequestBody GroupModel groupModel) throws Exception {
         return groupService.groupQuit(groupModel);

+ 8 - 0
mec-im/src/main/java/com/ym/service/GroupService.java

@@ -74,4 +74,12 @@ public interface GroupService {
      * @param groupModels
      */
     void groupBatchQuit(List<GroupModel> groupModels);
+
+    /**
+     * 批量加入
+     * @param groupModels
+     * @return
+     * @throws Exception
+     */
+    void groupBatchJoin(List<GroupModel> groupModels) throws Exception;
 }

+ 16 - 0
mec-im/src/main/java/com/ym/service/Impl/GroupServiceImpl.java

@@ -190,4 +190,20 @@ public class GroupServiceImpl implements GroupService {
             });
         }
     }
+
+    @Override
+    public void groupBatchJoin(List<GroupModel> groupModels){
+        if(groupModels != null && groupModels.size() > 0){
+            Group group = getGroup();
+            GroupMember[] groupMember = {new GroupMember("1",null,null)};
+            groupModels.forEach(e->{
+                try {
+                    e.setMembers(groupMember);
+                    group.join(e);
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
+            });
+        }
+    }
 }

+ 1 - 1
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/JiguangPushPlugin.java

@@ -127,7 +127,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 				base64_auth_string = encryptBASE64(this.teacherAppKey + ":" + this.teacherMasterSecret);
 				break;
 			default:
-				base64_auth_string = encryptBASE64(this.studentAppKey + ":" + this.studentMasterSecret);
+				base64_auth_string = encryptBASE64(this.systemAppKey + ":" + this.systemMasterSecret);
 				break;
 		}
 		String authorization = "Basic " + base64_auth_string;

+ 20 - 0
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
@@ -211,4 +212,23 @@ public class EmployeeController extends BaseController {
         }
         return succeed(employeeService.findByRole("37",organIds));
     }
+
+    @ApiOperation(value = "获取所选用户离职所需交接信息")
+    @GetMapping("/levelDetail")
+    @PreAuthorize("@pcs.hasPermissions('employee/levelDetail')")
+    public HttpResponseResult levelDetail(Integer userId){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(employeeService.levelDetail(userId));
+    }
+
+    @ApiOperation(value = "员工离职交接")
+    @GetMapping("/level")
+    @PreAuthorize("@pcs.hasPermissions('employee/level')")
+    public HttpResponseResult level(@RequestBody List<EmployeeLevelDto> employeeLevelDtos){
+        employeeService.level(employeeLevelDtos);
+        return succeed();
+    }
 }