zouxuan 1 år sedan
förälder
incheckning
074aa74623
24 ändrade filer med 436 tillägg och 371 borttagningar
  1. 19 29
      mec-application/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  2. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  3. 25 22
      mec-application/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  4. 16 27
      mec-application/src/main/java/com/ym/mec/web/controller/education/ImGroupNoticeController.java
  5. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  6. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java
  7. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupNoticeDao.java
  8. 6 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  12. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupNoticeService.java
  13. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
  14. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  15. 49 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  16. 184 217
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  17. 14 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java
  18. 0 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  19. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  20. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  21. 3 3
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  22. 61 37
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  23. 10 1
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  24. 5 2
      mec-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml

+ 19 - 29
mec-application/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -1,30 +1,24 @@
 package com.ym.mec.teacher.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.StudentSubjectDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.CourseScheduleEvaluateService;
-import com.ym.mec.biz.service.ImGroupNoticeService;
-import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -36,34 +30,34 @@ import java.util.stream.Collectors;
 @RequestMapping("${app-config.url.teacher:}/classGroup")
 @RestController
 public class ClassGroupController extends BaseController {
-    @Autowired
+    @Resource
     private ClassGroupService classGroupService;
-    @Autowired
+    @Resource
     private CourseScheduleEvaluateService courseScheduleEvaluateService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
     private ImGroupNoticeService imGroupNoticeService;
-    @Autowired
+    @Resource
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-    @Autowired
+    @Resource
     private SubjectService subjectService;
 
     @ApiOperation(value = "教师关联班级获取")
     @GetMapping("/findTeacherClassGroups")
-    public Object findTeacherClassGroups(String type,String status, String groupName){
+    public HttpResponseResult<List<TeacherClassGroupDto>> findTeacherClassGroups(String type, String status, String groupName){
         return succeed(classGroupService.findTeacherClassGroups(type,status,groupName));
     }
 
     @ApiOperation(value = "获取教师班级详情界面头部信息")
     @GetMapping("/findTeacherClassGroupInfo")
-    public Object findTeacherClassGroupInfo(@ApiParam(value = "班级编号", required = true)Integer classGroupId){
+    public HttpResponseResult<TeacherClassHeadInfo> findTeacherClassGroupInfo(@ApiParam(value = "班级编号", required = true)Integer classGroupId){
         return succeed(classGroupService.findTeacherClassGroupInfo(classGroupId));
     }
 
     @ApiOperation(value = "获取班级对应学生列表")
     @GetMapping("/findTeacherClassStudents")
-    public Object findTeacherClassStudents(CourseScheduleQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<TeacherClassStudentDto>> findTeacherClassStudents(CourseScheduleQueryInfo queryInfo){
         return succeed(classGroupService.findTeacherClassStudents(queryInfo));
     }
 
@@ -93,24 +87,20 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "提交陪练报告")
     @PostMapping(value = "/addStudyReport")
-    public HttpResponseResult addStudyReport(@RequestBody CourseScheduleEvaluate courseScheduleEvaluate) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(sysUser)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
+    public HttpResponseResult<Boolean> addStudyReport(@RequestBody CourseScheduleEvaluate courseScheduleEvaluate) {
         if(courseScheduleEvaluate.getClassGroupId()==null || courseScheduleEvaluate.getClassGroupId()<0){
             return failed(HttpStatus.BAD_REQUEST,"班级id必须大于0");
         }
         if(courseScheduleEvaluate.getItem()==null || courseScheduleEvaluate.getItem().isEmpty()){
             return failed(HttpStatus.BAD_REQUEST,"课程评价选项不能为空");
         }
-        courseScheduleEvaluate.setTeacherId(sysUser.getId());
+        courseScheduleEvaluate.setTeacherId(sysUserService.getUserId());
         return succeed(courseScheduleEvaluateService.addStudyReport(courseScheduleEvaluate));
     }
 
     @ApiOperation(value = "根据群编号,获取用户群名片")
     @GetMapping("/getUserInfoWithUserId")
-    public Object getUserInfoWithUserId(Integer groupId,Integer userId) {
+    public HttpResponseResult<Map<String,Object>> getUserInfoWithUserId(Integer groupId,Integer userId) {
         if (groupId == null || userId == null) {
             return failed("参数校验错误");
         }
@@ -119,13 +109,13 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "获取最新一条群公告")
     @RequestMapping("/getNewNotice")
-    public Object getNewNotice(String groupId) {
+    public HttpResponseResult<ImGroupNoticeDto> getNewNotice(String groupId) {
         return succeed(imGroupNoticeService.queryLatestNotice(groupId));
     }
 
     @ApiOperation(value = "获取群公告列表")
     @RequestMapping("/queryNoticePage")
-    public Object queryPage(ImGroupNoticeQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<ImGroupNoticeDto>> queryPage(ImGroupNoticeQueryInfo queryInfo) {
         return succeed(imGroupNoticeService.queryPage(queryInfo));
     }
 

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

@@ -141,7 +141,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "获取老师指定班级的排课")
     @GetMapping("/queryTeacherVipClassCourseSchedule")
     public Object queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo){
-        Map<String,Object> result = new HashMap<>();
+        Map<String,Object> result = new HashMap<>(2);
         queryInfo.setUserId(sysUserService.getUserId().longValue());
         result.put("rows",scheduleService.queryTeacherVipClassCourseSchedule(queryInfo));
         result.put("appealHoursRange",4);

+ 25 - 22
mec-application/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -2,8 +2,10 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SysEmployeePositionDto;
+import com.ym.mec.biz.dal.dto.SysUserDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
@@ -21,14 +23,15 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -41,25 +44,25 @@ import java.util.stream.Collectors;
 @RestController
 public class EmployeeController extends BaseController {
 
-    @Autowired
+    @Resource
     private EmployeeService employeeService;
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
-    @Autowired
+    @Resource
     private StudentManageService studentManageService;
-    @Autowired
+    @Resource
     private OrganizationService organizationService;
-    @Autowired
+    @Resource
     private EmployeeDao employeeDao;
-    @Autowired
+    @Resource
     private SysEmployeePositionService sysEmployeePositionService;
-    @Autowired
+    @Resource
     private ImGroupCoreService imGroupCoreService;
 
     @ApiOperation(value = "获取员工列表(基本信息)")
     @GetMapping("/queryEmployeeBasicInfo")
     @PreAuthorize("@pcs.hasPermissions('employee/queryEmployeeBasicInfo')")
-    public Object queryEmployeeBasicInfo(UserBasicQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<SysUserDto>> queryEmployeeBasicInfo(UserBasicQueryInfo queryInfo){
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(employeeService.queryEmployeeBasicInfo(queryInfo));
     }
@@ -67,7 +70,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "根据部门获取下面的员工")
     @GetMapping("/queryEmployByOrganId")
     @PreAuthorize("@pcs.hasPermissions('employee/queryEmployByOrganId')")
-    public HttpResponseResult<PageInfo> queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
+    public HttpResponseResult<PageInfo<EmployeeDto>> queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
     }
@@ -75,7 +78,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "获取平台的员工")
     @GetMapping("/queryPlatformEmploy")
     @PreAuthorize("@pcs.hasPermissions('employee/queryPlatformEmploy')")
-    public Object queryPlatformEmploy(EmployeeQueryInfo queryInfo) throws Exception {
+    public HttpResponseResult<PageInfo<EmployeeDto>> queryPlatformEmploy(EmployeeQueryInfo queryInfo) throws Exception {
         queryInfo.setOrganId(null);
         queryInfo.setTenantId(-1);
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
@@ -84,7 +87,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "员工操作")
     @PostMapping("/employeeOperate")
     @PreAuthorize("@pcs.hasPermissions('employee/employeeOperate')")
-    public HttpResponseResult employeeOperate(Integer employeeId, EmployeeOperateEnum operate){
+    public HttpResponseResult<Object> employeeOperate(Integer employeeId, EmployeeOperateEnum operate){
         employeeService.employeeOperate(employeeId,operate);
         return succeed();
     }
@@ -92,7 +95,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "密码重置")
     @PostMapping("/resetPassword")
     @PreAuthorize("@pcs.hasPermissions('employee/resetPassword')")
-    public HttpResponseResult resetPassword(Integer userId){
+    public HttpResponseResult<Object> resetPassword(Integer userId){
         employeeService.resetPassword(userId);
         return succeed();
     }
@@ -107,7 +110,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "修改指定的教务老师关联")
     @PostMapping("/updateEducationTeacherId")
     @PreAuthorize("@pcs.hasPermissions('employee/updateEducationTeacherId')")
-    public HttpResponseResult updateEducationTeacherId(Integer currentUserId,Integer targetUserId){
+    public HttpResponseResult<Object> updateEducationTeacherId(Integer currentUserId, Integer targetUserId){
         employeeService.updateEducationTeacherId(currentUserId,targetUserId);
         return succeed();
     }
@@ -115,7 +118,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "新增员工")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('employee/add')")
-    public HttpResponseResult add(@RequestBody Employee employee) throws Exception {
+    public HttpResponseResult<Object> add(@RequestBody Employee employee) throws Exception {
         employeeService.add(employee);
         return succeed();
     }
@@ -123,7 +126,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "修改员工")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('employee/update')")
-    public Object update(@RequestBody Employee employee) {
+    public HttpResponseResult<Object> update(@RequestBody Employee employee) {
         TenantContextHolder.setTenantId(employee.getTenantId());
         employee.setUpdateTime(new Date());
         employeeService.updateEmployee(employee);
@@ -133,7 +136,7 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "修改员工角色")
     @PostMapping("/updateRole")
     @PreAuthorize("@pcs.hasPermissions('employee/updateRole')")
-    public Object updateRole(@RequestBody Employee employee) {
+    public HttpResponseResult<Object> updateRole(@RequestBody Employee employee) {
         TenantContextHolder.setTenantId(employee.getTenantId());
         employee.setUpdateTime(new Date());
         employeeService.updateEmployeeRole(employee);
@@ -143,14 +146,14 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "修改员工")
     @PostMapping("/simpleUpdate")
     @PreAuthorize("@pcs.hasPermissions('employee/simpleUpdate')")
-    public HttpResponseResult simpleUpdate(@RequestBody Employee employee) {
+    public HttpResponseResult<Object> simpleUpdate(@RequestBody Employee employee) {
         employeeService.simpleUpdate(employee);
         return succeed();
     }
 
     @ApiOperation(value = "修改用户")
     @PostMapping("/updateUser")
-    public HttpResponseResult update(SysUser sysUser) {
+    public HttpResponseResult<Object> update(SysUser sysUser) {
         SysUser user = sysUserService.getUser();
         Date date = new Date();
         sysUser.setId(user.getId());
@@ -168,7 +171,7 @@ public class EmployeeController extends BaseController {
 
     @ApiOperation(value = "获取用户信息")
     @GetMapping("/queryUserInfo")
-    public HttpResponseResult apiQueryUserInfo() {
+    public HttpResponseResult<SysUser> apiQueryUserInfo() {
         SysUser sysUser = sysUserService.getUser();
         Employee employee = employeeService.get(sysUser.getId());
         sysUser.setOrganName(organizationService.getOrganName(employee.getOrganIdList()));
@@ -221,14 +224,14 @@ public class EmployeeController extends BaseController {
     @ApiOperation(value = "获取所选用户离职所需交接信息")
     @GetMapping("/levelDetail")
     @PreAuthorize("@pcs.hasPermissions('employee/levelDetail')")
-    public HttpResponseResult levelDetail(Integer userId){
+    public HttpResponseResult<Map<String, Object>> levelDetail(Integer userId){
         return succeed(employeeService.levelDetail(userId));
     }
 
     @ApiOperation(value = "员工离职交接")
     @PostMapping("/level")
     @PreAuthorize("@pcs.hasPermissions('employee/level')")
-    public HttpResponseResult level(@RequestBody List<EmployeeLevelDto> employeeLevelDtos){
+    public HttpResponseResult<Object> level(@RequestBody List<EmployeeLevelDto> employeeLevelDtos){
         employeeService.level(employeeLevelDtos);
         return succeed();
     }

+ 16 - 27
mec-application/src/main/java/com/ym/mec/web/controller/education/ImGroupNoticeController.java

@@ -1,17 +1,19 @@
 package com.ym.mec.web.controller.education;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.Date;
 
 /**
@@ -23,55 +25,42 @@ import java.util.Date;
 @RestController
 public class ImGroupNoticeController extends BaseController {
 
-    @Autowired
+    @Resource
     private ImGroupNoticeService imGroupNoticeService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysUserService sysUserService;
 
     @ApiOperation(value = "新增")
     @RequestMapping("/add")
-//    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/add','system')")
-    public Object add(ImGroupNotice imGroupNotice ) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("获取用户信息失败");
-        }
-        imGroupNotice.setOperatorId(sysUser.getId().longValue());
+    public HttpResponseResult<Long> add(ImGroupNotice imGroupNotice ) {
+        imGroupNotice.setOperatorId(sysUserService.getUserId().longValue());
         return succeed(imGroupNoticeService.insert(imGroupNotice));
     }
 
     @ApiOperation(value = "修改")
     @RequestMapping("/update")
-//    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/update','system')")
-    public Object update(ImGroupNotice imGroupNotice ) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("获取用户信息失败");
-        }
-        imGroupNotice.setOperatorId(sysUser.getId().longValue());
+    public HttpResponseResult<Object> update(ImGroupNotice imGroupNotice ) {
+        imGroupNotice.setOperatorId(sysUserService.getUserId().longValue());
         imGroupNotice.setUpdateTime(new Date());
-        imGroupNoticeService.update(imGroupNotice);
+        imGroupNoticeService.modify(imGroupNotice);
         return succeed();
     }
 
     @ApiOperation(value = "获取最新一条群公告")
     @RequestMapping("/getNewNotice")
-//    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/getNewNotice','system')")
-    public Object getNewNotice(String groupId) {
+    public HttpResponseResult<ImGroupNoticeDto> getNewNotice(String groupId) {
         return succeed(imGroupNoticeService.queryLatestNotice(groupId));
     }
 
     @ApiOperation(value = "获取群公告列表")
     @RequestMapping("/queryNoticePage")
-//    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/queryNoticePage','system')")
-    public Object queryPage(ImGroupNoticeQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<ImGroupNoticeDto>> queryPage(ImGroupNoticeQueryInfo queryInfo) {
         return succeed(imGroupNoticeService.queryPage(queryInfo));
     }
 
     @ApiOperation(value = "删除")
     @RequestMapping("/del")
-//    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/del','system')")
-    public Object del(Long id) {
+    public HttpResponseResult<Object> del(Long id) {
         imGroupNoticeService.delete(id);
         return succeed();
     }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -2094,4 +2094,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     //获取最近的一节线下课
     CourseScheduleDto getRecentCourseSchedule(@Param("userId") Integer userId, @Param("courseId") Long courseId);
+
+    //获取老师可以查看的班级课程列表
+    List<Long> queryTeacherCanViewClassCourseSchedule(@Param("classGroupId") Long classGroupId, @Param("userId") Long userId);
 }

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

@@ -7,8 +7,10 @@ import com.ym.mec.biz.dal.entity.ImHistoryMessage;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImGroupModel;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Collection;
 import java.util.List;
 
 public interface ImGroupDao extends BaseDAO<String, ImGroup> {
@@ -98,4 +100,10 @@ public interface ImGroupDao extends BaseDAO<String, ImGroup> {
      * @param info
      */
     void updateStatus(@Param("info") List<ImHistoryMessage> info);
+
+    //获取相应角色的衔接群
+    List<ImGroupModel> queryUserGroupList(@Param("transferUserId") Integer transferUserId,
+                                          @Param("userId") Integer userId,
+                                          @Param("roleType") String roleType,
+                                          @Param("organId") Integer organId);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupNoticeDao.java

@@ -6,6 +6,7 @@ import java.util.Map;
 import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 public interface ImGroupNoticeDao extends BaseDAO<Long, ImGroupNotice> {
 
@@ -19,4 +20,6 @@ public interface ImGroupNoticeDao extends BaseDAO<Long, ImGroupNotice> {
 	List<ImGroupNoticeDto> queryForPage(Map<String, Object> params);
 	
 	int deleteByImGroupId(String imGroupId);
+
+    void updateTop(@Param("imGroupId") String imGroupId, @Param("topFlag") boolean topFlag);
 }

+ 6 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java

@@ -17,7 +17,7 @@ public class TeacherClassCourseSchudeleDto {
     private Long id;
 
     @ApiModelProperty(value = "班级编号", required = false)
-    private Long classGroupId;
+    private Integer classGroupId;
 
     @ApiModelProperty(value = "课程编号")
     private Long courseScheduleId;
@@ -38,7 +38,7 @@ public class TeacherClassCourseSchudeleDto {
     private java.util.Date endClassTime;
 
     @ApiModelProperty(value = "实际上课教师")
-    private Long actualTeacherId;
+    private Integer actualTeacherId;
 
     @ApiModelProperty(value = "实际上课教师名称")
     private String actualTeacherName;
@@ -201,11 +201,11 @@ public class TeacherClassCourseSchudeleDto {
         this.leaveStudentNum = leaveStudentNum;
     }
 
-    public Long getClassGroupId() {
+    public Integer getClassGroupId() {
         return classGroupId;
     }
 
-    public void setClassGroupId(Long classGroupId) {
+    public void setClassGroupId(Integer classGroupId) {
         this.classGroupId = classGroupId;
     }
 
@@ -257,11 +257,11 @@ public class TeacherClassCourseSchudeleDto {
         this.endClassTime = endClassTime;
     }
 
-    public Long getActualTeacherId() {
+    public Integer getActualTeacherId() {
         return actualTeacherId;
     }
 
-    public void setActualTeacherId(Long actualTeacherId) {
+    public void setActualTeacherId(Integer actualTeacherId) {
         this.actualTeacherId = actualTeacherId;
     }
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -260,7 +260,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param queryInfo:
      * @return org.snaker.engine.access.Page
      */
-    PageInfo findTeacherClassStudents(CourseScheduleQueryInfo queryInfo);
+    PageInfo<TeacherClassStudentDto> findTeacherClassStudents(CourseScheduleQueryInfo queryInfo);
 
     /**
      * @describe 根据班级获取点名列表

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -409,7 +409,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	PageInfo queryTeacherClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
 
 
-	PageInfo queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
+	PageInfo<TeacherClassCourseSchudeleDto> queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo);
 
 	/**
 	 * @describe 获取点名详情界面头部信息

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.auth.api.entity.SysRole;
+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.dto.SysUserDto;
@@ -23,7 +24,7 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * @Date: 2019/9/17
      * 根据部门获取下面的员工
      */
-    PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception;
+    PageInfo<EmployeeDto> queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception;
 
     /**
      * @Author: Joburgess

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupNoticeService.java

@@ -16,4 +16,6 @@ public interface ImGroupNoticeService extends BaseService<Long, ImGroupNotice> {
 	 * @return
 	 */
 	ImGroupNoticeDto queryLatestNotice(String imGroupId);
+
+	void modify(ImGroupNotice imGroupNotice);
 }

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -7,6 +7,7 @@ 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.dao.ImGroupNoticeDao;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -37,12 +39,14 @@ import java.util.stream.Collectors;
 @Service
 public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
-    @Autowired
+    @Resource
     private ImPluginContext imPluginContext;
-    @Autowired
+    @Resource
     private ImGroupPlusService imGroupService;
-    @Autowired
+    @Resource
     private ImGroupMemberPlusService imGroupMemberPlusService;
+    @Resource
+    private ImGroupNoticeDao imGroupNoticeDao;
 
     /**
      * IM 用户注册
@@ -260,7 +264,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         // 判定登录用户是否为群主
         ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
         if (Objects.isNull(imGroup)) {
-            //throw new BizException("群组不存在");
             return;
         }
 
@@ -279,6 +282,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         // 删除群组成员
         imGroupMemberPlusService.remove(Wrappers.<ImGroupMemberPlus>lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId));
 
+        // 删除群公告
+        imGroupNoticeDao.deleteByImGroupId(groupId);
+
         // 解散群
         imPluginContext.getPluginService().groupDismiss(imGroup.getId(), getImGroupMembers(groupMembers));
 

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1783,7 +1783,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             throw new BizException("请指定班级");
         }
 
-        ClassGroup classGroup = classGroupDao.get(classGroupId.intValue());
+        ClassGroup classGroup = classGroupDao.get(classGroupId);
 
         if (Objects.isNull(classGroup)) {
             throw new BizException("未找到该班级");
@@ -1798,9 +1798,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         if (onlineCourseNum > 0 && offlineCourseNum <= 0) {
             teacherClassHeadInfo.setTeachMode("1");
-        } else if (onlineCourseNum > 0 && offlineCourseNum > 0) {
+        } else if (onlineCourseNum > 0) {
             teacherClassHeadInfo.setTeachMode("3");
-        } else if (onlineCourseNum <= 0 && offlineCourseNum > 0) {
+        } else if (offlineCourseNum > 0) {
             teacherClassHeadInfo.setTeachMode("2");
         } else {
             teacherClassHeadInfo.setTeachMode("0");
@@ -1848,8 +1848,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public PageInfo findTeacherClassStudents(CourseScheduleQueryInfo queryInfo) {
-        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+    public PageInfo<TeacherClassStudentDto> findTeacherClassStudents(CourseScheduleQueryInfo queryInfo) {
+        PageInfo<TeacherClassStudentDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         List<TeacherClassStudentDto> dataList = null;

+ 49 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3938,7 +3938,25 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             } else {
                 dataList = courseScheduleDao.queryTeacherHistoryClassCourseSchedule(params);
             }
-            dataList.forEach(e -> {
+			//获取老师姓名
+			List<Integer> teacherIds = dataList.stream().map(e -> e.getActualTeacherId()).distinct().collect(Collectors.toList());
+			List<SimpleUserDto> teacherDtos = teacherDao.getUsersSimpleInfo(teacherIds);
+			Map<Integer, String> teacherDtoMap = teacherDtos.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getRealName));
+			//获取学校名称
+			List<Integer> schoolIds = dataList.stream().map(e -> e.getSchoolId()).distinct().collect(Collectors.toList());
+			List<School> schoolList = schoolDao.getSchools(schoolIds);
+			Map<Integer, String> schoolMap = schoolList.stream().collect(Collectors.toMap(School::getId, School::getName));
+			//获取班级信息
+			List<Integer> classGroupIds = dataList.stream().map(e -> e.getClassGroupId()).distinct().collect(Collectors.toList());
+			List<ClassGroup> classGroups = classGroupDao.findByClassGroupIds(classGroupIds, null);
+			Map<Integer, ClassGroup> classGroupMap = classGroups.stream().collect(Collectors.toMap(ClassGroup::getId, Function.identity()));
+			dataList.forEach(e -> {
+				ClassGroup classGroup = classGroupMap.get(e.getClassGroupId());
+				if (classGroup != null) {
+					e.setTotalClassTimes(classGroup.getTotalClassTimes());
+				}
+				e.setSchoolName(schoolMap.get(e.getSchoolId()));
+				e.setActualTeacherName(teacherDtoMap.get(e.getActualTeacherId()));
                 e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId().intValue(),new Date()));
                 e.setTotalClassTimes(courseScheduleDao.countCurrentCourseTime(e.getCourseScheduleId()));
             });
@@ -3951,7 +3969,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     }
 
 	@Override
-	public PageInfo queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo) {
+	public PageInfo<TeacherClassCourseSchudeleDto> queryTeacherVipClassCourseSchedule(CourseScheduleQueryInfo queryInfo) {
 		SysUser user = sysUserService.getUser();
 		if (null == user.getTenantId()) {
 			throw new BizException("用户机构信息异常");
@@ -3959,7 +3977,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(!queryInfo.getFindTotal()){
 			queryInfo.setUserId(user.getId().longValue());
 		}
-		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		PageInfo<TeacherClassCourseSchudeleDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 
 		if (Objects.isNull(queryInfo.getDate())) {
 			queryInfo.setDate(new Date());
@@ -3975,9 +3993,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             ClassGroup classGroup = classGroupDao.get(queryInfo.getClassGroupId().intValue());
             params.put("groupType", classGroup.getGroupType().name());
         }
+		//获取老师可以查看的班级课程
+		if(queryInfo.getClassGroupId() != null && queryInfo.getUserId() != null){
+			List<Long> courseIds = courseScheduleDao.queryTeacherCanViewClassCourseSchedule(queryInfo.getClassGroupId(),queryInfo.getUserId());
+			if(CollectionUtils.isEmpty(courseIds)){
+				return pageInfo;
+			}
+			params.put("courseIds", courseIds);
+		}
 
 		List<TeacherClassCourseSchudeleDto> dataList = null;
-		int count = 0;
+		int count;
 		if (Objects.isNull(queryInfo.getOnlyHistory()) || queryInfo.getOnlyHistory() == 0) {
 			count = courseScheduleDao.countTeacherClassCourseSchedule(params);
 		} else {
@@ -3991,8 +4017,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			} else {
 				dataList = courseScheduleDao.queryTeacherHistoryClassCourseSchedule(params);
 			}
+			//获取老师姓名
+			List<Integer> teacherIds = dataList.stream().map(e -> e.getActualTeacherId()).distinct().collect(Collectors.toList());
+			List<SimpleUserDto> teacherDtos = teacherDao.getUsersSimpleInfo(teacherIds);
+			Map<Integer, String> teacherDtoMap = teacherDtos.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getRealName));
+			//获取学校名称
+			List<Integer> schoolIds = dataList.stream().map(e -> e.getSchoolId()).distinct().collect(Collectors.toList());
+			List<School> schoolList = schoolDao.getSchools(schoolIds);
+			Map<Integer, String> schoolMap = schoolList.stream().collect(Collectors.toMap(School::getId, School::getName));
+			//获取班级信息
+			List<Integer> classGroupIds = dataList.stream().map(e -> e.getClassGroupId()).distinct().collect(Collectors.toList());
+			List<ClassGroup> classGroups = classGroupDao.findByClassGroupIds(classGroupIds, null);
+			Map<Integer, ClassGroup> classGroupMap = classGroups.stream().collect(Collectors.toMap(ClassGroup::getId, Function.identity()));
 
-			List<Integer> classGroupIds = dataList.stream().map(e->e.getClassGroupId().intValue()).collect(Collectors.toList());
 			List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
 			Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
 
@@ -4016,7 +4053,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 			ImLiveBroadcastRoomDto liveRoom;
 			for (TeacherClassCourseSchudeleDto e : dataList) {
-				e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId().intValue(),new Date()));
+				ClassGroup classGroup = classGroupMap.get(e.getClassGroupId());
+				if (classGroup != null) {
+					e.setTotalClassTimes(classGroup.getTotalClassTimes());
+				}
+				e.setSchoolName(schoolMap.get(e.getSchoolId()));
+				e.setActualTeacherName(teacherDtoMap.get(e.getActualTeacherId()));
+				e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId(),new Date()));
 				e.setTotalClassTimes(courseScheduleDao.countCurrentCourseTime(e.getCourseScheduleId()));
 
 				Long leaveStudentNum = courseLeaveStudentNumMap.get(e.getCourseScheduleId());

+ 184 - 217
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -1,77 +1,36 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
 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.dal.wrapper.ImGroupWrapper;
-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;
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
-import org.redisson.api.RBucket;
-import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.security.authentication.LockedException;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysRole;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.dao.ImGroupDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.SysEmployeePositionDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SysUserDto;
-import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserTenant;
-import com.ym.mec.biz.dal.entity.TenantInfo;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ParamEnum;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.biz.dal.page.UserBasicQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
+import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
+import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
@@ -79,53 +38,75 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.entity.GroupMember;
 import com.ym.mec.im.entity.GroupModel;
 import com.ym.mec.util.collection.MapUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.joda.time.DateTime;
+import org.redisson.api.RBucket;
+import org.redisson.api.RedissonClient;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.security.authentication.LockedException;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
 public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> implements EmployeeService {
 
-    @Autowired
+    @Resource
     private EmployeeDao employeeDao;
-    @Autowired
+    @Resource
     private ImFeignService imFeignService;
-    @Autowired
+    @Resource
     private ImGroupMemberService imGroupMemberService;
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
-    @Autowired
+    @Resource
     private TeacherDao teacherDao;
-    @Autowired
+    @Resource
     private SysUserCashAccountDao sysUserCashAccountDao;
-    @Autowired
+    @Resource
     private ClassGroupDao classGroupDao;
-    @Autowired
+    @Resource
     private ImUserFriendService imUserFriendService;
-    @Autowired
+    @Resource
     private OrganizationDao organizationDao;
-    @Autowired
+    @Resource
     private ImGroupDao imGroupDao;
-    @Autowired
+    @Resource
     private CooperationOrganDao cooperationOrganDao;
-    @Autowired
+    @Resource
     private OaUserService oaUserService;
-    @Autowired
+    @Resource
     private TenantInfoService tenantInfoService;
-    @Autowired
+    @Resource
     private SysEmployeePositionService employeePositionService;
-    @Autowired
+    @Resource
     private SysEmployeePositionDao employeePositionDao;
-    @Autowired
+    @Resource
     private SysUserTenantService sysUserTenantService;
-    @Autowired
+    @Resource
     private RedissonClient redissonClient;
-    @Autowired
+    @Resource
     private ImGroupCoreService imGroupCoreService;
-    @Autowired
+    @Resource
     private ImPluginContext imPluginContext;
-
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
 
+    private static final ExecutorService exportExecutorService = new ThreadPoolExecutor(
+            5, 20, 0L, TimeUnit.MILLISECONDS,
+            new LinkedBlockingQueue<>(),
+            Executors.defaultThreadFactory(),
+            new ThreadPoolExecutor.CallerRunsPolicy()
+    );
+
     @Override
     public BaseDAO<Integer, Employee> getDAO() {
         return employeeDao;
@@ -348,7 +329,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
     }
 
     @Override
-    public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) {
+    public PageInfo<EmployeeDto> queryEmployByOrganId(EmployeeQueryInfo queryInfo) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null) {
             throw new BizException("获取用户信息失败");
@@ -488,7 +469,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
             for (Integer organId : organIds) {
                 List<EmployeeLevelDto> levelDtoList = organIdMap.get(organId);
                 for (EmployeeLevelDto employeeLevelDto : levelDtoList) {
-                    if (employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()) {
+                    if (Objects.equals(employeeLevelDto.getLevelUserId(), employeeLevelDto.getTransferUserId())) {
                         throw new BizException("交接人校验失败,请重新填写");
                     }
                     userIds.add(employeeLevelDto.getTransferUserId());
@@ -500,6 +481,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                             cooperationOrganDao.batchUpdateEduId(employeeLevelDto.getTransferUserId(), levelUserId, organId);
                             //教务老师所需加入的群组
                             educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
+                            //获取当前用户所在的衔接群
+                            educationGroupModels.addAll(imGroupDao.queryUserGroupList(employeeLevelDto.getTransferUserId(),levelUserId,"乐团主管",organId));
                             break;
                         case "teamTeacher":
                             //运营主管所需加入的群组
@@ -513,188 +496,172 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                 }
             }
         }
-        Date date = new Date();
-        if (educationGroupModels.size() > 0) {
-            Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
-            //❤️用户加群
-            List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
-            List<GroupModel> groupModelList = new ArrayList<>();
-
-            List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
-            for (ImGroupModel imGroupModel : educationGroupModels) {
-                String userId = imGroupModel.getMemberList().get(0).getId();
-                com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
-                imGroupMember.setCreateTime(date);
-                imGroupMember.setImGroupId(imGroupModel.getId());
-                imGroupMember.setIsAdmin(false);
-                imGroupMember.setRoleType(imGroupModel.getUserRole());
-                imGroupMember.setUpdateTime(date);
-                imGroupMember.setUserId(Integer.parseInt(userId));
-                imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
-                imGroupMemberList.add(imGroupMember);
-                GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
-                GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
-                groupModelList.add(groupModel);
-
-                // 腾讯云IM用户加群
-                groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
-                    .groupId(imGroupModel.getId())
-                    .roleType(imGroupModel.getUserRole())
-                    .isAdmin(false)
-                    .userId(Long.valueOf(userId))
-                    .imUserId(userId)
-                    .nickname(realNameMap.get(imGroupMember.getUserId()))
-                    .updateTime(DateTime.now().toDate())
-                    .createTime(DateTime.now().toDate())
-                    .build());
-            }
-            imGroupMemberService.batchInsert(imGroupMemberList);
-
-            if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
-                // 融云IM用户加群
-                imFeignService.groupBatchJoin(groupModelList);
-            } else {
-                // 腾讯云IM用户加群
-                if (org.apache.commons.collections.CollectionUtils.isNotEmpty(groupMembers)) {
-                    Map<String, List<ImGroupMemberWrapper.ImGroupMember>> imGroupMembers = groupMembers.stream()
-                        .collect(Collectors.groupingBy(ImGroupMemberWrapper.ImGroupMember::getGroupId));
-
-                    for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
-
-                        try {
-                            // 获取用户头象
-//                            List<Integer> collect1 = entry.getValue().stream()
-//                                .map(x -> x.getUserId().intValue()).distinct().collect(Collectors.toList());
-//
-//                            Map<Integer, String> avatarMap = teacherDao.getUsersSimpleInfo(collect1).stream()
-//                                .collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getAvatar, (o, n) -> n));
-
-                            // 设置用户默认头象
-                            for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
-//                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
-                                SysUser user = teacherDao.getUser(member.getUserId().intValue());
-
-                                // 用户头像
-                                member.setAvatar(sysUserService.getImAvatar(user));
-                                member.setNickname(sysUserService.getImName(user));
+        if (CollectionUtils.isNotEmpty(educationGroupModels)) {
+            CompletableFuture.runAsync(()->{
+                Date date = new Date();
+                Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
+                //❤️用户加群
+                List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+                List<GroupModel> groupModelList = new ArrayList<>();
+
+                List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
+                for (ImGroupModel imGroupModel : educationGroupModels) {
+                    String userId = imGroupModel.getMemberList().get(0).getId();
+                    com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+                    imGroupMember.setCreateTime(date);
+                    imGroupMember.setImGroupId(imGroupModel.getId());
+                    imGroupMember.setIsAdmin(false);
+                    imGroupMember.setRoleType(imGroupModel.getUserRole());
+                    imGroupMember.setUpdateTime(date);
+                    imGroupMember.setUserId(Integer.parseInt(userId));
+                    imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
+                    imGroupMemberList.add(imGroupMember);
+                    GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
+                    GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
+                    groupModelList.add(groupModel);
+
+                    // 腾讯云IM用户加群
+                    groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
+                            .groupId(imGroupModel.getId())
+                            .roleType(imGroupModel.getUserRole())
+                            .isAdmin(false)
+                            .userId(Long.valueOf(userId))
+                            .imUserId(userId)
+                            .nickname(realNameMap.get(imGroupMember.getUserId()))
+                            .updateTime(DateTime.now().toDate())
+                            .createTime(DateTime.now().toDate())
+                            .build());
+                }
+                imGroupMemberService.batchInsert(imGroupMemberList);
+
+                if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
+                    // 融云IM用户加群
+                    imFeignService.groupBatchJoin(groupModelList);
+                } else {
+                    // 腾讯云IM用户加群
+                    if (org.apache.commons.collections.CollectionUtils.isNotEmpty(groupMembers)) {
+                        Map<String, List<ImGroupMemberWrapper.ImGroupMember>> imGroupMembers = groupMembers.stream()
+                                .collect(Collectors.groupingBy(ImGroupMemberWrapper.ImGroupMember::getGroupId));
+                        List<Integer> userIdList = imGroupMembers.values().stream()
+                                .flatMap(List::stream)
+                                .map(x -> x.getUserId().intValue())
+                                .distinct()
+                                .collect(Collectors.toList());
+                        List<SysUser> userList = teacherDao.getUserList(userIdList);
+                        Map<Integer, SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getId, x -> x));
+                        for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
+                            try {
+                                // 设置用户默认头象
+                                for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
+                                    SysUser user = userMap.get(member.getUserId().intValue());
+                                    if (Objects.nonNull(user)) {
+                                        // 用户头像
+                                        member.setAvatar(sysUserService.getImAvatar(user));
+                                        member.setNickname(sysUserService.getImName(user));
+                                    }
+                                }
+                                // 腾讯云用户加群
+                                imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
+                            } catch (Exception e) {
+                                log.error("腾讯云IM用户加群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
                             }
-                            // 腾讯云用户加群
-                            imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
-                        } catch (Exception e) {
-                            log.error("腾讯云IM用户加群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
                         }
                     }
                 }
-            }
+            });
         }
         //原有员工退群
-        List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
-        //原有员工退预报名群
-        groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
-        if (groupModels.size() > 0) {
-            List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
-            // 融支IM用户退群
-            List<GroupModel> groupModelList = new ArrayList<>();
-            // 腾讯云IM用户退群
-            List<GroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
-            for (ImGroupModel imGroupModel : groupModels) {
-                com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
-                imGroupMember.setImGroupId(imGroupModel.getId());
-                imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
-                imGroupMemberList.add(imGroupMember);
-
-                GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
-                GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
-                groupModelList.add(groupModel);
-
-                // 腾讯云
-                imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder()
-                    .groupId(imGroupModel.getId())
-                    .userId(imGroupMember.getUserId().longValue())
-                    .imUserId(imGroupMember.getUserId().toString())
-                    .build());
-            }
-            imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
-            // 用户批量退出群组
-            if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
-                // 融云退群
-                imFeignService.groupBatchQuit(groupModelList);
-            } else {
-                // 腾讯云退群
-                if (org.apache.commons.collections.CollectionUtils.isNotEmpty(imGroupMembers)) {
-
-                    Map<String, List<GroupMemberWrapper.ImGroupMember>> groupMembers = imGroupMembers.stream()
-                        .collect(Collectors.groupingBy(GroupMemberWrapper.ImGroupMember::getGroupId));
-
-                    for (Map.Entry<String, List<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
-
-                        try {
-                            // 获取用户头象
-//                            List<Integer> collect1 = entry.getValue().stream()
-//                                .map(x -> x.getUserId().intValue()).distinct().collect(Collectors.toList());
-//
-//                            Map<Integer, String> avatarMap = teacherDao.getUsersSimpleInfo(collect1).stream()
-//                                .collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getAvatar, (o, n) -> n));
-//
-//                            // 设置用户默认头象
-//                            for (GroupMemberWrapper.ImGroupMember member : entry.getValue()) {
-//                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
-//                            }
-                            // 用户退群
-                            imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
-                        } catch (Exception e) {
-                            log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
+        CompletableFuture.runAsync(() ->{
+            List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
+            //原有员工退预报名群
+            groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
+            //获取当前用户所在的衔接群
+            groupModels.addAll(imGroupDao.queryUserGroupList(levelUserId,levelUserId,"乐团主管",null));
+            if (CollectionUtils.isNotEmpty(groupModels)) {
+                List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+                // 融支IM用户退群
+                List<GroupModel> groupModelList = new ArrayList<>();
+                // 腾讯云IM用户退群
+                List<GroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
+                for (ImGroupModel imGroupModel : groupModels) {
+                    com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+                    imGroupMember.setImGroupId(imGroupModel.getId());
+                    imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
+                    imGroupMemberList.add(imGroupMember);
+
+                    GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
+                    GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
+                    groupModelList.add(groupModel);
+
+                    // 腾讯云
+                    imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder()
+                            .groupId(imGroupModel.getId())
+                            .userId(imGroupMember.getUserId().longValue())
+                            .imUserId(imGroupMember.getUserId().toString())
+                            .build());
+                }
+                imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
+                // 用户批量退出群组
+                if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
+                    // 融云退群
+                    imFeignService.groupBatchQuit(groupModelList);
+                } else {
+                    // 腾讯云退群
+                    if (org.apache.commons.collections.CollectionUtils.isNotEmpty(imGroupMembers)) {
+
+                        Map<String, List<GroupMemberWrapper.ImGroupMember>> groupMembers = imGroupMembers.stream()
+                                .collect(Collectors.groupingBy(GroupMemberWrapper.ImGroupMember::getGroupId));
+
+                        for (Map.Entry<String, List<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
+
+                            try {
+                                // 用户退群
+                                imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
+                            } catch (Exception e) {
+                                log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
+                            }
                         }
                     }
                 }
             }
-
-        }
+        });
         //更换教务老师等数据
         employeeDao.employeeLevel(employeeLevelDtos);
         //新增离职时间
         employeeDao.updateUserDemissionDate(levelUserId);
         //冻结用户
         employeeDao.updateUserLock(levelUserId, 1);
-        ExecutorService executor = Executors.newCachedThreadPool();
-        CompletableFuture<Boolean> refreshUserFriend = CompletableFuture.supplyAsync(() -> {
+        //用户退出登陆
+        sysUserFeignService.exitByPhone("SYSTEM", teacherDao.getUser(levelUserId).getPhone());
+        CompletableFuture.runAsync(() -> {
             //获取用户担任教务老师、维修技师的所有乐团列表
             List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
             //获取用户担任教务老师的所有网管课列表
             List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
             //获取用户担任教务老师的所有VIP课列表
             List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
-            boolean refreshFlag = false;
-            if (musicGroupIds.size() > 0) {
+            if (CollectionUtils.isNotEmpty(musicGroupIds)) {
                 for (String musicGroupId : musicGroupIds) {
                     imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
                 }
-                refreshFlag = true;
             }
-            if (practiceGroupIds.size() > 0) {
+            if (CollectionUtils.isNotEmpty(practiceGroupIds)) {
                 for (String musicGroupId : practiceGroupIds) {
                     imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
                 }
-                refreshFlag = true;
             }
-            if (vipGroupIds.size() > 0) {
+            if (CollectionUtils.isNotEmpty(vipGroupIds)) {
                 for (String musicGroupId : vipGroupIds) {
                     imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
                 }
-                refreshFlag = true;
             }
-            return refreshFlag;
-        }, executor);
-        Boolean join = refreshUserFriend.join();
-        if (join) {
-            refreshUserFriend.thenRun(() -> {
+            if (CollectionUtils.isNotEmpty(musicGroupIds) || CollectionUtils.isNotEmpty(practiceGroupIds) || CollectionUtils.isNotEmpty(vipGroupIds)) {
                 //更新群成员数量
                 imGroupDao.updateMemberNum();
                 //删除重复的群成员
                 imGroupMemberService.delRepeat();
-            });
-        }
-        executor.shutdown();
+            }
+        }, exportExecutorService);
     }
 
     @Override

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java

@@ -5,6 +5,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.common.exception.BizException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -17,6 +18,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotice>  implements ImGroupNoticeService {
@@ -53,5 +55,16 @@ public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotic
 	public ImGroupNoticeDto queryLatestNotice(String imGroupId) {
 		return imGroupNoticeDao.queryLatestNotice(imGroupId);
 	}
-	
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void modify(ImGroupNotice imGroupNotice) {
+        if (imGroupNotice.getId() == null) {
+			throw new BizException("id不能为空");
+		}
+		//置顶取消
+		imGroupNoticeDao.updateTop(imGroupNotice.getImGroupId(),false);
+		imGroupNoticeDao.update(imGroupNotice);
+	}
+
 }

+ 0 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -284,12 +284,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean cancel(String imGroupId) {
-        // 删除群成员
-        imGroupMemberDao.deleteByImGroupId(imGroupId);
-        // 删除群公告
-        imGroupNoticeDao.deleteByImGroupId(imGroupId);
-        // 删除群信息
-        imGroupDao.delete(imGroupId);
         try {
             imGroupCoreService.groupDismiss(imGroupId);
         } catch (Exception e) {

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

@@ -75,7 +75,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			new LinkedBlockingQueue<>(),
 			Executors.defaultThreadFactory(),
 			new ThreadPoolExecutor.CallerRunsPolicy()
-	);;
+	);
 	private static final Logger businessLogger = LoggerFactory.getLogger(IndexBaseMonthDataServiceImpl.class);
 
 	private static ThreadLocal<Set<Integer>> organIds = new ThreadLocal<Set<Integer>>(){

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -3969,6 +3969,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
         teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
         teacherPush(vipGroup);
+        //解散群聊
+        imGroupService.cancel(classGroup.getId().toString());
     }
 
     private void teacherPush(VipGroup vipGroup) {
@@ -5302,6 +5304,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             throw new BizException("当前课程组已排课");
         }
         vipGroupDao.del(id);
+        //解散群
+        ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(id.toString(), vipGroup.getGroupType());
+        if (Objects.nonNull(classGroup)) {
+            imGroupService.cancel(classGroup.getId().toString());
+        }
         return true;
     }
 

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

@@ -541,7 +541,7 @@
         LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_
         WHERE cg.del_flag_ = 0 AND
         ((mg.status_ IN ('PROGRESS','PAUSE') AND cg.group_type_ = 'MUSIC' AND (cgtm.user_id_ = #{userId} OR mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId}))
-        OR (vg.group_status_ IN (2,6) AND cg.group_type_ = 'VIP' AND vg.educational_teacher_id_ =  #{userId})
+        OR (vg.group_status_ IN (2,6) AND cg.group_type_ IN ('VIP','LIVE') AND vg.educational_teacher_id_ =  #{userId})
         OR (csg.status_ = 'NORMAL' AND cg.group_type_ = 'COMM' AND csg.educational_teacher_id_ =  #{userId}))
         <if test="search != null">
             AND (cg.name_ LIKE CONCAT('%',#{search},'%') OR cg.group_name_ LIKE CONCAT('%',#{search},'%')
@@ -558,7 +558,7 @@
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
         LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_
         WHERE cgtm.user_id_ != #{userId} AND cg.del_flag_ = 0
-        AND ((vg.educational_teacher_id_ =  #{userId} AND vg.group_status_ IN (2,6) AND cg.group_type_ = 'VIP')
+        AND ((vg.educational_teacher_id_ =  #{userId} AND vg.group_status_ IN (2,6) AND cg.group_type_ IN ('VIP','LIVE'))
         OR (mg.status_ IN ('PROGRESS','PAUSE','PREPARE') AND cg.group_type_ = 'MUSIC' AND (mg.team_teacher_id_ = #{userId} OR mg.educational_teacher_id_ = #{userId} OR mg.director_user_id_ = #{userId}))
         OR (csg.educational_teacher_id_ =  #{userId} AND csg.status_ = 'NORMAL' AND cg.group_type_ = 'COMM'))
         GROUP BY cg.id_
@@ -594,7 +594,7 @@
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
         LEFT JOIN courses_group csg ON csg.id_ = cg.music_group_id_
         WHERE cg.del_flag_ = 0 AND
-        ((vg.group_status_ IN (2,6) AND cg.group_type_ = 'VIP' AND vg.educational_teacher_id_ =  #{userId} AND vg.organ_id_ = #{organId})
+        ((vg.group_status_ IN (2,6) AND cg.group_type_ IN ('VIP','LIVE') AND vg.educational_teacher_id_ =  #{userId} AND vg.organ_id_ = #{organId})
         OR (mg.status_ IN ('PROGRESS','PAUSE','PREPARE') AND cg.group_type_ = 'MUSIC' AND mg.educational_teacher_id_ =  #{userId} AND mg.organ_id_ = #{organId})
         OR (csg.status_ = 'NORMAL' AND cg.group_type_ = 'COMM' AND csg.educational_teacher_id_ =  #{userId} AND csg.organ_id_ = #{organId}))
         GROUP BY cg.id_

+ 61 - 37
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1558,8 +1558,16 @@
         <where>
             cs.del_flag_ = '0' AND cs.is_lock_ = 0
             AND cs.class_group_id_ = #{classGroupId} AND cs.pre_course_flag_ != 1
-            <if test="userId != null">
-                AND csts.user_id_ = #{userId}
+            <if test="courseIds == null or courseIds.size == 0">
+                <if test="userId != null">
+                    AND csts.user_id_ = #{userId}
+                </if>
+            </if>
+            <if test="courseIds != null and courseIds.size > 0">
+                AND cs.id_ IN
+                <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+                    #{courseId}
+                </foreach>
             </if>
             <if test="onlyHistory!=null and onlyHistory==1">
                 AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ )&lt;now()
@@ -1605,30 +1613,27 @@
         cs.status_,
         cs.actual_teacher_id_,
         cs.teach_mode_,
-        su.real_name_ username_,
-        cg.total_class_times_,
         cs.schoole_id_ school_id_,
         cs.teaching_content_,
         cs.teaching_point_,
         cs.music_group_id_,
         cs.live_room_id_,
-        s.name_ school_name_,
         ch.expiry_date_
-        FROM
-        course_schedule_teacher_salary csts
-        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        FROM course_schedule cs
         LEFT JOIN course_homework ch ON ch.course_schedule_id_ = cs.id_
-        LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
-        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
-        LEFT JOIN school s ON cs.schoole_id_=s.id_
+        <if test="courseIds == null or courseIds.size == 0">
+            <if test="userId != null">
+                LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
+            </if>
+        </if>
         <include refid="teacherClassCourseScheduleQueryCondition"/>
-        ORDER BY start_class_time_
+        ORDER BY cs.start_class_time_
         <include refid="global.limit"/>
     </select>
 
     <sql id="teacherGroupCourseQueryCondition">
         <where>
-            cs.actual_teacher_id_=#{teacherId} AND cs.pre_course_flag_ != 1
+            cs.actual_teacher_id_ = #{teacherId} AND cs.pre_course_flag_ != 1
             AND cs.music_group_id_ = #{groupId}
             AND cs.group_type_ = #{groupType}
         </where>
@@ -1676,28 +1681,28 @@
         cs.status_,
         cs.actual_teacher_id_,
         cs.teach_mode_,
-        su.username_,
-        cg.total_class_times_,
         GROUP_CONCAT(IF(sa.status_='NORMAL',ssu.username_,NULL)) student_names_,
         MAX(sa.current_class_times_) current_class_times_,
         cs.schoole_id_ school_id_,
         ch.expiry_date_,
         cs.teaching_content_,
         cs.teaching_point_,
-        cs.music_group_id_,
-        s.name_ school_name_
-        FROM
-        student_attendance sa
-        LEFT JOIN course_schedule cs ON cs.id_ = sa.course_schedule_id_
+        cs.music_group_id_
+        FROM course_schedule cs
         LEFT JOIN course_homework ch ON ch.course_schedule_id_ = cs.id_
-        LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
-        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
-        LEFT JOIN sys_user ssu ON sa.user_id_=ssu.id_
-        LEFT JOIN school s ON cs.schoole_id_ = s.id_
+        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
         WHERE cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
         AND sa.class_group_id_=#{classGroupId}
-        <if test="userId != null">
-            AND sa.teacher_id_=#{userId}
+        <if test="courseIds == null or courseIds.size == 0">
+            <if test="userId != null">
+                AND sa.teacher_id_ = #{userId}
+            </if>
+        </if>
+        <if test="courseIds != null and courseIds.size > 0">
+            AND cs.id_ IN
+            <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+                #{courseId}
+            </foreach>
         </if>
         <if test="status!=null">
             AND cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -1715,22 +1720,36 @@
 
     <select id="countTeacherClassCourseSchedule" resultType="int">
         SELECT
-        COUNT(cs.id_)
-        FROM
-        course_schedule_teacher_salary csts
-        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        COUNT(distinct cs.id_)
+        FROM course_schedule cs
+        <if test="courseIds == null or courseIds.size == 0">
+            <if test="userId != null">
+                LEFT JOIN course_schedule_teacher_salary csts ON cs.id_ = csts.course_schedule_id_
+            </if>
+        </if>
         <include refid="teacherClassCourseScheduleQueryCondition"/>
     </select>
     <select id="countTeacherHistoryClassCourseSchedule" resultType="int">
         SELECT
-        COUNT(DISTINCT sa.class_group_id_)
-        FROM
-        student_attendance sa
-        LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
+        COUNT(DISTINCT cs.class_group_id_)
+        FROM course_schedule cs
+        <if test="courseIds == null or courseIds.size == 0">
+            <if test="userId != null">
+                LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+            </if>
+        </if>
         WHERE cs.del_flag_ = '0' AND cs.pre_course_flag_ != 1
-        AND sa.class_group_id_=#{classGroupId}
-        <if test="userId != null">
-            AND sa.teacher_id_=#{userId}
+        AND cs.class_group_id_ = #{classGroupId}
+        <if test="courseIds == null or courseIds.size == 0">
+            <if test="userId != null">
+                AND sa.teacher_id_ = #{userId}
+            </if>
+        </if>
+        <if test="courseIds != null and courseIds.size > 0">
+            AND cs.id_ IN
+            <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+                #{courseId}
+            </foreach>
         </if>
         <if test="status!=null">
             AND cs.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -4565,4 +4584,9 @@
         and CONCAT(class_date_,' ',end_class_time_) &gt;= date_format(date_add(now(),interval -1 day),'%Y-%m-%d')
         and CONCAT(class_date_,' ',end_class_time_) &lt;= date_format(now(),'%Y-%m-%d %H:%i:%s')
     </select>
+    <select id="queryTeacherCanViewClassCourseSchedule" resultType="java.lang.Long">
+        select distinct cs.id_ from class_group_teacher_mapper cgtm
+        left join course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_
+        where cgtm.class_group_id_ = #{classGroupId} AND (cgtm.user_id_ = #{userId} OR cs.actual_teacher_id_ = #{userId})
+    </select>
 </mapper>

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

@@ -321,8 +321,17 @@
 		limit #{result},#{size}
 
 	</select>
+    <select id="queryUserGroupList" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ImGroupModelMap">
+		select ig.id_,ig.name_,#{transferUserId} user_id_,igm.role_type_ user_role_ from im_group ig
+		left join im_group_member igm ON igm.im_group_id_ = ig.id_
+		left join school sl ON sl.id_ = ig.school_id_
+		where ig.group_type_ = 'SCHOOL' and igm.role_type_ = #{roleType} and igm.user_id_ = #{userId}
+		<if test="organId != null">
+			and sl.organ_id_ = #{organId}
+		</if>
+	</select>
 
-	<update id="updateSchoolRoleType">
+    <update id="updateSchoolRoleType">
         update im_group_member set role_type_ = #{userType.msg} ,type_ = #{userType.name}  where user_id_ = #{userId}
     </update>
 

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml

@@ -69,8 +69,11 @@
 		update_time_ = NOW()
 		</set> WHERE id_ = #{id} and tenant_id_ = #{tenantId}
 	</update>
-	
-	<!-- 根据主键删除一条记录 -->
+    <update id="updateTop">
+		UPDATE im_group_notice SET is_top_ = #{topFlag} WHERE im_group_id_ = #{imGroupId}
+	</update>
+
+    <!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM im_group_notice WHERE id_ = #{id} 
 	</delete>