Selaa lähdekoodia

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_saas_0614

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
zouxuan 1 vuosi sitten
vanhempi
commit
d477e83d13
100 muutettua tiedostoa jossa 2602 lisäystä ja 932 poistoa
  1. 10 8
      mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  2. 4 0
      mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java
  3. 5 4
      mec-application/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java
  4. 1 1
      mec-application/src/main/java/com/ym/mec/student/controller/SmsCodeController.java
  5. 3 3
      mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  6. 12 30
      mec-application/src/main/java/com/ym/mec/student/controller/SysMessageController.java
  7. 88 38
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  8. 71 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupMemberController.java
  9. 5 2
      mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java
  10. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/SmsCodeController.java
  11. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/StudyReportController.java
  12. 3 3
      mec-application/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java
  13. 65 5
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  14. 2 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/TeacherOrderController.java
  15. 15 0
      mec-application/src/main/java/com/ym/mec/vo/PageUtil.java
  16. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/APIController.java
  17. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  18. 37 29
      mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java
  19. 53 2
      mec-application/src/main/java/com/ym/mec/web/controller/ImGroupMemberController.java
  20. 28 7
      mec-application/src/main/java/com/ym/mec/web/controller/LessonCoursewareController.java
  21. 6 6
      mec-application/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java
  22. 61 39
      mec-application/src/main/java/com/ym/mec/web/controller/SchoolMessageController.java
  23. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/SmsCodeController.java
  24. 72 33
      mec-application/src/main/java/com/ym/mec/web/controller/SysMessageController.java
  25. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/TenantInfoController.java
  26. 304 0
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduImGroupController.java
  27. 71 0
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduImGroupMemberController.java
  28. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduSendNoticeController.java
  29. 12 33
      mec-application/src/main/java/com/ym/mec/web/controller/education/SysEduMessageController.java
  30. 25 2
      mec-application/src/main/resources/logback-dev.xml
  31. 23 0
      mec-application/src/main/resources/logback-spring.xml
  32. 1 1
      mec-auth/pom.xml
  33. 8 8
      mec-biz/pom.xml
  34. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/config/AdapayNotifyConstants.java
  35. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  36. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupMemberDao.java
  37. 0 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java
  38. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  39. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  40. 76 82
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java
  41. 3 30
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMemberPlus.java
  42. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonCourseware.java
  43. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonCoursewareUserMapper.java
  44. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessage.java
  45. 13 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EFriendRoleType.java
  46. 24 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  47. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/im/EImGroupRoleType.java
  48. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/LessonCoursewareMapper.java
  49. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/LessonCoursewareUserMapperMapper.java
  50. 6 14
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GroupMemberQueryInfo.java
  51. 79 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java
  52. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupWrapper.java
  53. 89 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LessonCoursewareWrapper.java
  54. 70 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SysMessageWrapper.java
  55. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/event/listener/SendSeoMessageListener.java
  56. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  57. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  58. 20 25
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberService.java
  59. 6 3
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  60. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/LessonCoursewareService.java
  61. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/service/LessonCoursewareUserMapperService.java
  62. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SmsCodeService.java
  63. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  64. 23 46
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  65. 7 17
      mec-biz/src/main/java/com/ym/mec/biz/service/im/ImGroupCoreService.java
  66. 90 72
      mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
  67. 46 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CbsUserServiceImpl.java
  68. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java
  69. 13 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  70. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  71. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java
  72. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleEvaluateServiceImpl.java
  73. 14 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  74. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  75. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  76. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java
  77. 9 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  78. 84 60
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  79. 3 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java
  80. 320 90
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  81. 160 69
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  82. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  83. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/InspectionItemPlanServiceImpl.java
  84. 125 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareServiceImpl.java
  85. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareUserMapperServiceImpl.java
  86. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java
  87. 12 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  88. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OnlineMusicGroupServiceImpl.java
  89. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrderPayOpsServiceImpl.java
  90. 18 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  91. 8 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentActivityServiceImpl.java
  92. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentCooperationServiceImpl.java
  93. 5 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SmsCodeServiceImpl.java
  94. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java
  95. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java
  96. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  97. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  98. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java
  99. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  100. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

+ 10 - 8
mec-application/src/main/java/com/ym/mec/student/controller/ImGroupController.java

@@ -20,15 +20,10 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.student:}/imGroup")
 @Api(tags = "IM群服务")
@@ -243,4 +238,11 @@ public class ImGroupController extends BaseController {
     public Object imRegister(Integer userId) throws Exception {
         return succeed(imGroupCoreService.register(userId.toString(),"","测试",null));
     }
+
+	@ApiOperation("主动退群")
+	@PostMapping(value = "/quitGroup/v2")
+	public Object quitGroupV2(String imGroupId, String userId) {
+		List<Integer> userIds = Arrays.stream(userId.split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		return succeed(imGroupMemberService.quit(imGroupId,userIds,false));
+	}
 }

+ 4 - 0
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -9,6 +9,7 @@ import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.LessonCoursewareService;
+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;
@@ -31,11 +32,14 @@ public class LessonCoursewareController extends BaseController {
 	private CoursewareFeignService coursewareFeignService;
 	@Resource
 	private LessonCoursewareService lessonCoursewareService;
+	@Resource
+	private SysUserService sysUserService;
 
 	@ApiOperation(value = "分页查询已添加的课件")
 	@PostMapping("/queryLessonCourseware")
 	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
 		query.setEnable(true);
+		query.setStudentId(sysUserService.getUserId());
 		IPage<LessonCoursewareWrapper.LessonCoursewareDto> pages = lessonCoursewareService.selectPage(QueryInfo.getPage(query), query);
 		return succeed(PageUtil.pageInfo(pages));
 	}

+ 5 - 4
mec-application/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -13,6 +13,7 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.PracticeGroupType;
 import com.ym.mec.biz.service.PracticeGroupService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
@@ -276,7 +277,7 @@ public class PracticeGroupController extends BaseController {
     @GetMapping(value = "/freePush")
     public HttpResponseResult freePush(Integer userId, String pushType){
         sysUserService.getUser();
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
 
         String pushUrl = baseApiUrl + "/#/auditionbanner/id";
 
@@ -305,7 +306,7 @@ public class PracticeGroupController extends BaseController {
     @GetMapping(value = "/reportPush")
     public HttpResponseResult reportPush(Integer userId, String pushType){
         sysUserService.getUser();
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
         PracticeGroup userFreePracticeGroup = practiceGroupDao.getUserFreePracticeGroup(userId);
         ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(userFreePracticeGroup.getId().toString(), GroupType.PRACTICE.getCode());
 
@@ -323,14 +324,14 @@ public class PracticeGroupController extends BaseController {
         if(pushType.equals("ALL")||pushType.equals("JIGUANG")){
             Map<Integer, String> userMap = new HashMap<>();
             userMap.put(userId, userId.toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_PRACTICE_COMPLETED_STUDY_REPORT,
                     userMap, null, 0, "5?" + pushUrl, "STUDENT", pushUrl);
         }
 
         if(pushType.equals("ALL")||pushType.equals("SMS")){
             Map<Integer, String> userPhoneMap = new HashMap<>();
             userPhoneMap.put(userId, student.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PRACTICE_COMPLETED_STUDY_REPORT,
                     userPhoneMap, null, 0, null, "STUDENT", HttpUtil.getSortUrl(smsUrl));
         }
 

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

@@ -54,7 +54,7 @@ public class SmsCodeController extends BaseController {
         RBucket<String> bucket = redissonClient.getBucket(redisKey);
         if(bucket.isExists()){
             if(StringUtils.equalsIgnoreCase(bucket.get(),code)){
-                smsCodeService.sendValidCode(mobile);
+                smsCodeService.sendValidCode(mobile,"STUDENT");
                 return succeed();
             }
         }

+ 3 - 3
mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -514,12 +514,12 @@ public class StudentOrderController extends BaseController {
         return succeed();
     }
 
-    @RequestMapping("${app-config.url.student:}/paymentResult")
+    @RequestMapping("/paymentResult")
     public void paymentResult(HttpServletResponse response, String orderNo, String type) {
         try {
-            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
             if (type != null && type.equals("edu")) {
-                baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL);
+                baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL_MANAGER);
             }
             response.sendRedirect(baseApiUrl + "/#/paymentresult?orderNo=" + orderNo);
         } catch (IOException e) {

+ 12 - 30
mec-application/src/main/java/com/ym/mec/student/controller/SysMessageController.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.entity.AppVersionInfo;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
@@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.Map;
 
 @RestController
@@ -29,23 +31,19 @@ import java.util.Map;
 @RequestMapping("${app-config.url.student:}/sysMessage")
 public class SysMessageController extends BaseController {
 
-	@Autowired
+	@Resource
 	private SysMessageService sysMessageService;
 
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	@Resource
+	private SysUserService sysUserService;
 
-	@Autowired
+	@Resource
 	private AppVersionInfoDao appVersionInfoDao;
 
 	@ApiOperation("获取所有消息列表")
 	@GetMapping(value = "list")
 	public Object list(SysMessageQueryInfo queryInfo){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		queryInfo.setUserId(sysUser.getId());
+		queryInfo.setUserId(sysUserService.getUserId());
 		queryInfo.setType(MessageSendMode.PUSH.getCode());
 		queryInfo.setJpushType("STUDENT");
 		return succeed(sysMessageService.queryPage(queryInfo));
@@ -77,32 +75,19 @@ public class SysMessageController extends BaseController {
 	@ApiOperation("一键已读")
 	@PostMapping("batchSetRead")
 	public Object batchSetRead() {
-		int status = 1;
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return sysMessageService.updateStatus(sysUser.getId(), status,"STUDENT") > 0 ? succeed() : failed();
+		return sysMessageService.updateStatus(sysUserService.getUserId(), 1,"STUDENT")? succeed() : failed();
 	}
 
 	@ApiOperation("设置已读")
 	@PostMapping("setRead")
 	public Object setRead(Long id) {
-		int status = 1;
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
+		return sysMessageService.updateOneStatus(id) ? succeed() : failed();
 	}
 
 	@ApiOperation(value = "查询用户未读消息条数")
 	@GetMapping("/queryCountOfUnread")
 	public Object queryCountOfUnread() {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
 		Map<String, Integer> map = sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId(),"STUDENT", sysUser.getTenantId());
 
 		if (map == null || map.size() == 0) {
@@ -114,17 +99,14 @@ public class SysMessageController extends BaseController {
 	@ApiOperation(value = "发送消息")
 	@PostMapping("/sendMessage")
 	public Object sendMessage(MessageSender messageSender, String content, String receiver, int readStatus, String url, String group) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
 		Integer userId = sysUser.getId();
 
 		String mobileNo = sysUser.getPhone();
 		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
 			throw new BizException("请输入正确的手机号");
 		}
-		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group, "STUDENT");
+//		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group, "STUDENT");
 		return succeed();
 	}
 }

+ 88 - 38
mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -1,29 +1,33 @@
 package com.ym.mec.teacher.controller;
 
 import com.google.common.collect.Lists;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 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 com.ym.mec.vo.ImUserWrapper;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -34,40 +38,79 @@ import java.util.stream.Collectors;
 @RestController
 public class ImGroupController extends BaseController {
 
-	@Autowired
+	@Resource
 	private ImGroupService imGroupService;
-
-	@Autowired
+	@Resource
 	private ImUserFriendService imUserFriendService;
-
-	@Autowired
+	@Resource
+	private ImGroupMemberService imGroupMemberService;
+	@Resource
 	private ImGroupNoticeService imGroupNoticeService;
+	@Resource
+	private SysUserService sysUserService;
+    @Resource
+    private ImGroupMemberPlusService imGroupMemberPlusService;
 
-	@Autowired
-	private SysUserService userLoginService;
+	@ApiOperation(value = "全体禁言/解除禁言")
+	@PostMapping("/muteAll")
+	public HttpResponseResult<Object> muteAll(@RequestBody ImGroupWrapper.GroupMuteAll groupMuteAll) {
+		if (StringUtils.isEmpty(groupMuteAll.getGroupId()) || groupMuteAll.getMuteAll() == null){
+			throw new BizException("参数错误");
+		}
+		imGroupService.muteAll(groupMuteAll);
+		return succeed();
+	}
 
-    @Autowired
-    private ImGroupMemberPlusService imGroupMemberPlusService;
+	@ApiOperation(" 移交群主")
+	@PostMapping(value = "/groupChangeOwner")
+	public Object groupChangeOwner(@RequestBody ImGroupWrapper.GroupTransferOwner groupTransferOwner) {
+		if (StringUtils.isEmpty(groupTransferOwner.getImGroupId()) || StringUtils.isEmpty(groupTransferOwner.getUserId())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("参数错误");
+		}
+		groupTransferOwner.setCurrentOwner(sysUserService.getUserId().toString());
+		if(StringUtils.equals(groupTransferOwner.getUserId(),groupTransferOwner.getCurrentOwner())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("不能转交给自己");
+		}
+		imGroupService.transferOwner(groupTransferOwner);
+		return succeed();
+	}
+
+	@ApiOperation("解散群")
+	@PostMapping(value = "/dismissGroup")
+	@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String")
+	public HttpResponseResult<Object> dismissGroup(String imGroupId) {
+		imGroupService.dismissGroup(imGroupId,sysUserService.getUserId().toString());
+		return succeed();
+	}
+
+	@ApiOperation("退群")
+	@PostMapping(value = "/quitGroup")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "String")})
+	public Object quitGroup(String imGroupId, String userId) {
+		List<Integer> userIds = Arrays.stream(userId.split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		return succeed(imGroupMemberService.quit(imGroupId,userIds));
+	}
 
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
-	public Object queryGroupList(String search,String groupType) {
-		return succeed(imGroupService.queryByUserId(userLoginService.getUserId(), search,groupType));
+	public HttpResponseResult<List<ImGroup>> queryGroupList(String search, String groupType) {
+		return succeed(imGroupService.queryByUserId(sysUserService.getUserId(), search,groupType));
 	}
 
 
     @ApiOperation("查询群列表-v2")
     @GetMapping(value = "/queryGroupList/v2")
-    public Object queryGroupListV2(String search,String groupType,String musicGroupId,String classType) {
+    public HttpResponseResult<List<ImGroup>> queryGroupListV2(String search, String groupType, String musicGroupId, String classType) {
         if (StringUtils.isNotBlank(classType) && classType.equals("SINGLE")) {
             classType = "NORMAL";
         }
-        return succeed(imGroupService.queryByUserIdV2(userLoginService.getUserId(), search,groupType,musicGroupId,classType));
+        return succeed(imGroupService.queryByUserIdV2(sysUserService.getUserId(), search,groupType,musicGroupId,classType));
     }
 
 	@ApiOperation("查询群详情")
 	@GetMapping(value = "/queryGroupDetail")
-	public Object queryGroupDetail(String imGroupId) {
+	public HttpResponseResult<ImGroup> queryGroupDetail(String imGroupId) {
 		if (imGroupId.contains("S") || imGroupId.contains("I")){
 			imGroupId = imGroupId.substring(1);
 		}
@@ -78,7 +121,7 @@ public class ImGroupController extends BaseController {
         }
         ImGroupMemberPlus admin = imGroupMemberPlusService.lambdaQuery()
             .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
-            .eq(ImGroupMemberPlus::getUserId, userLoginService.getUser().getId())
+            .eq(ImGroupMemberPlus::getUserId, sysUserService.getUser().getId())
             .last("limit 1").one();
         if (admin == null) {
             // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
@@ -107,7 +150,7 @@ public class ImGroupController extends BaseController {
         }
         ImGroupMemberPlus admin = imGroupMemberPlusService.lambdaQuery()
             .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
-            .eq(ImGroupMemberPlus::getUserId, userLoginService.getUser().getId())
+            .eq(ImGroupMemberPlus::getUserId, sysUserService.getUser().getId())
             .last("limit 1").one();
         if (admin == null) {
             // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
@@ -118,36 +161,36 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询群成员列表")
 	@GetMapping(value = "/queryGroupMemberList")
-	public Object queryGroupMemberList(String imGroupId) {
+	public HttpResponseResult<List<ImGroupMemberDto>> queryGroupMemberList(String imGroupId) {
 		return succeed(imGroupService.queryMemberById(imGroupId));
 	}
 
 	@ApiOperation("查询群学生列表")
 	@GetMapping(value = "/queryGroupStudentList")
-	public Object queryGroupStudentList(String imGroupId) {
+	public HttpResponseResult<List<ImGroupMemberDto>> queryGroupStudentList(String imGroupId) {
 		return succeed(imGroupService.queryMemberById(imGroupId).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
 	}
 
 
     @ApiOperation("查询群学生列表v2")
     @GetMapping(value = "/queryGroupStudentList/v2")
-    public Object queryGroupStudentListV2(String imGroupId,String search,Integer subjectId,Boolean vipFlag) {
+    public HttpResponseResult<List<ImGroupMemberDto>> queryGroupStudentListV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
         return succeed(imGroupService.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
     }
 
 	@ApiOperation("查询群成员详情")
 	@GetMapping(value = "/queryGroupMemberDetail")
-	public Object queryGroupMemberDetail(String imGroupId, Integer userId) {
+	public HttpResponseResult<ImGroupMemberDto> queryGroupMemberDetail(String imGroupId, Integer userId) {
 		return succeed(imGroupService.queryMember(imGroupId, userId));
 	}
 
 	@ApiOperation("查询好友详情")
 	@GetMapping(value = "/queryFriendDetail")
-	public Object queryFriendDetail(Integer userId) {
-		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(userLoginService.getUserId(), userId);
+	public HttpResponseResult<ImUserFriendDto> queryFriendDetail(Integer userId) {
+		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(sysUserService.getUserId(), userId);
 		if (dto == null) {
 			dto = new ImUserFriendDto();
-			SysUser user = userLoginService.queryUserById(userId);
+			SysUser user = sysUserService.queryUserById(userId);
 			dto.setFriend(user);
 
 			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
@@ -172,10 +215,10 @@ public class ImGroupController extends BaseController {
 	})
 	@GetMapping(value = "/imUserFriend/getDetail/{userId}")
 	public HttpResponseResult<ImUserWrapper.ImUserFriend> getImUserFriendDetail(@PathVariable("userId") Integer userId) {
-		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(userLoginService.getUserId(), userId);
+		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(sysUserService.getUserId(), userId);
 		if (dto == null) {
 			dto = new ImUserFriendDto();
-			SysUser user = userLoginService.queryUserById(userId);
+			SysUser user = sysUserService.queryUserById(userId);
 			dto.setFriend(user);
 			if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
 				dto.setFriendNickname(user.getUsername());
@@ -203,8 +246,8 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询好友列表")
 	@GetMapping(value = "/queryFriendList")
-	public Object queryFriendList(String search) {
-		return succeed(imUserFriendService.queryFriendListByUserId(userLoginService.getUserId(), search));
+	public HttpResponseResult<List<ImUserFriendDto>> queryFriendList(String search) {
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search));
 	}
 
 	@ApiOperation("查询好友列表(重构版)")
@@ -212,7 +255,7 @@ public class ImGroupController extends BaseController {
 	public HttpResponseResult<List<ImUserWrapper.ImUserFriend>> queryImUserFriendList(String search) {
 
 		// 好友关系列表
-		List<ImUserFriendDto> friendDtos = imUserFriendService.queryFriendListByUserId(userLoginService.getUserId(), search);
+		List<ImUserFriendDto> friendDtos = imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search);
 
 		List<ImUserWrapper.ImUserFriend> wrappers = Lists.newArrayList();
 		if (CollectionUtils.isNotEmpty(friendDtos)) {
@@ -240,23 +283,30 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询好友中的学生列表")
 	@GetMapping(value = "/queryFriendStudentList")
-	public Object queryFriendStudentList(String search) {
-		return succeed(imUserFriendService.queryFriendListByUserId(userLoginService.getUserId(), search).stream().filter(e -> StringUtils.isBlank(e.getTags()))
+	public HttpResponseResult<List<ImUserFriendDto>> queryFriendStudentList(String search) {
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search).stream().filter(e -> StringUtils.isBlank(e.getTags()))
 				.collect(Collectors.toList()));
 	}
 
 
     @ApiOperation("查询好友中的学生列表-v2")
     @GetMapping(value = "/queryFriendStudentList/v2")
-    public Object queryFriendStudentListV2(String search,String musicGroupId,Integer subjectId,Boolean vipFlag) {
-        return succeed(imUserFriendService.queryFriendListByUserIdV2(userLoginService.getUserId(), search,musicGroupId,subjectId,vipFlag)
+    public HttpResponseResult<List<ImUserFriendDto>> queryFriendStudentListV2(String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
+        return succeed(imUserFriendService.queryFriendListByUserIdV2(sysUserService.getUserId(), search,musicGroupId,subjectId,vipFlag)
                 .stream().filter(e -> StringUtils.isBlank(e.getTags()))
                 .collect(Collectors.toList()));
     }
 
 	@ApiOperation("查询群公告列表")
 	@GetMapping(value = "/queryNoticeList")
-	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
+	public HttpResponseResult<PageInfo<ImGroupNoticeDto>> queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
 		return succeed(imGroupNoticeService.queryPage(queryInfo));
 	}
+
+	@ApiOperation("主动退群")
+	@PostMapping(value = "/quitGroup/v2")
+	public Object quitGroupV2(String imGroupId, String userId) {
+		List<Integer> userIds = Arrays.stream(userId.split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		return succeed(imGroupMemberService.quit(imGroupId,userIds,false));
+	}
 }

+ 71 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/ImGroupMemberController.java

@@ -0,0 +1,71 @@
+package com.ym.mec.teacher.controller;
+
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
+import com.ym.mec.biz.service.ImGroupMemberService;
+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.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Optional;
+
+@RequestMapping("${app-config.url.teacher:}/imGroupMember")
+@Api(tags = "IM群成员服务")
+@RestController
+public class ImGroupMemberController extends BaseController {
+
+	@Resource
+	private ImGroupMemberService imGroupMemberService;
+
+	@ApiOperation(value = "群成员禁言", notes = "群成员禁言- 传入 ImGroupMemberVo.GroupMemberMute")
+	@PostMapping("/groupMute")
+	public HttpResponseResult<Object> groupMemberMute(@RequestBody ImGroupMemberWrapper.GroupMemberMute member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberMute(member);
+		return succeed();
+	}
+
+	@ApiOperation(value = "群成员身份设置", notes = "群成员身份设置- 传入 ImGroupMemberVo.GroupMemberRole")
+	@PostMapping("/groupRole")
+	public HttpResponseResult<Object> groupMemberRole(@RequestBody ImGroupMemberWrapper.GroupMemberRole member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberRole(member);
+		return succeed();
+	}
+
+	@ApiOperation("分页查询群成员列表")
+	@PostMapping(value = "/queryGroupMemberPage")
+	public HttpResponseResult<PageInfo<ImGroupMemberDto>> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
+		return succeed(imGroupMemberService.queryGroupMemberPage(queryInfo));
+	}
+
+	@ApiOperation("添加群成员")
+	@PostMapping(value = "/addGroupMember")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "roleType", value = "指导老师,乐队指导,乐团主管,运营主管,学员不传", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "userId", value = "用户编号(多个逗号分割)", required = true, dataType = "String")})
+	public Object addGroupMember(String imGroupId, String userId, String roleType) {
+		imGroupMemberService.batchJoin(imGroupId,userId,roleType);
+		return succeed();
+	}
+}

+ 5 - 2
mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java

@@ -9,6 +9,7 @@ import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.LessonCoursewareService;
+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;
@@ -16,7 +17,6 @@ import com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -28,15 +28,18 @@ import java.util.List;
 @RestController
 public class LessonCoursewareController extends BaseController {
 
-	@Autowired
+	@Resource
 	private CoursewareFeignService coursewareFeignService;
 	@Resource
+	private SysUserService sysUserService;
+	@Resource
 	private LessonCoursewareService lessonCoursewareService;
 
 	@ApiOperation(value = "分页查询已添加的课件")
 	@PostMapping("/queryLessonCourseware")
 	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
 		query.setEnable(true);
+		query.setTeacherId(sysUserService.getUserId());
 		IPage<LessonCoursewareWrapper.LessonCoursewareDto> pages = lessonCoursewareService.selectPage(QueryInfo.getPage(query), query);
 		return succeed(PageUtil.pageInfo(pages));
 	}

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

@@ -53,7 +53,7 @@ public class SmsCodeController extends BaseController {
         RBucket<String> bucket = redissonClient.getBucket(redisKey);
         if(bucket.isExists()){
             if(StringUtils.equalsIgnoreCase(bucket.get(),code)){
-                smsCodeService.sendValidCode(mobile);
+                smsCodeService.sendValidCode(mobile,"TEACHER");
                 return succeed();
             }
         }

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

@@ -41,7 +41,7 @@ public class StudyReportController extends BaseController {
     @GetMapping("getGroupReviews")
     public Object getGroupReviews(Integer groupId) {
         List<CourseScheduleEvaluate> courseScheduleEvaluates = courseScheduleEvaluateService.findByGroupId(groupId,null);
-        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL);
+        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL_MTEACHER);
         for (CourseScheduleEvaluate courseScheduleEvaluate : courseScheduleEvaluates) {
             courseScheduleEvaluate.setReportLink(teacherBaseUrl + "/#/studyReportNew?id=" + courseScheduleEvaluate.getId() + "&classGroupId=" + courseScheduleEvaluate.getClassGroupId());
             if (courseScheduleEvaluate.getStatus().equals(1) && courseScheduleEvaluate.getVersion().equals(2)) {

+ 3 - 3
mec-application/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java

@@ -58,13 +58,13 @@ public class SysMessageController extends BaseController {
 	@ApiOperation("一键已读")
 	@PostMapping("batchSetRead")
 	public Object batchSetRead() {
-		return sysMessageService.updateStatus(sysUserService.getUserId(), 1,"TEACHER") > 0 ? succeed() : failed();
+		return sysMessageService.updateStatus(sysUserService.getUserId(), 1,"TEACHER")? succeed() : failed();
 	}
 
 	@ApiOperation("设置已读")
 	@PostMapping("setRead")
 	public Object setRead(Long id) {
-		return sysMessageService.updateOneStatus(id, 1) > 0 ? succeed() : failed();
+		return sysMessageService.updateOneStatus(id) ? succeed() : failed();
 	}
 
 	@ApiOperation(value = "查询用户未读消息条数")
@@ -87,7 +87,7 @@ public class SysMessageController extends BaseController {
 		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
 			throw new BizException("请输入正确的手机号");
 		}
-		sysMessageService.sendMessage(messageSender, sysUser.getId(), "", content, receiver, null, readStatus, url, group,"TEACHER");
+//		sysMessageService.sendMessage(messageSender, sysUser.getId(), "", content, receiver, null, readStatus, url, group,"TEACHER");
 		return succeed();
 	}
 }

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

@@ -1,13 +1,16 @@
 package com.ym.mec.teacher.controller;
 
+import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
+import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.entity.LessonCourseware;
+import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.vo.CourseScheduleWrapper;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
@@ -22,13 +25,14 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.*;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -56,6 +60,12 @@ public class TeacherCourseScheduleController extends BaseController {
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
     private SubjectService subjectService;
+    @Resource
+    private CoursewareFeignService coursewareFeignService;
+    @Resource
+    private LessonCoursewareUserMapperService lessonCoursewareUserMapperService;
+    @Resource
+    private LessonCoursewareService lessonCoursewareService;
 
     @ApiOperation(value = "根据月份获取该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
@@ -84,6 +94,33 @@ public class TeacherCourseScheduleController extends BaseController {
         String courseAfterBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, user.getTenantId());
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type,user.getTenantId());
         Map<String,Object> result = new HashMap<>(7);
+        if (CollectionUtils.isNotEmpty(teacherCourseSchedulesWithDate)){
+            for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+                if(courseScheduleDto.getTeachMode() == TeachModeEnum.OFFLINE && courseScheduleDto.getStatus() != CourseStatusEnum.UNDERWAY
+                        && StringUtils.isNotEmpty(courseScheduleDto.getCoursewareDetailId())){
+                    //获取课件详情列表
+                    R<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> voR = coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(courseScheduleDto.getCoursewareDetailId()));
+                    if (voR.getCode().equals(200)){
+                        LessonCourseware lessonCourseware = lessonCoursewareService.lambdaQuery()
+                                .eq(LessonCourseware::getLessonCourseId, voR.getData().getLessonCoursewareId()).last("LIMIT 1").one();
+                        if (Objects.isNull(lessonCourseware) || StringUtils.equals(lessonCourseware.getTeacherRangeType(),"DISABLE")){
+                            courseScheduleDto.setCoursewareEnable(false);
+                            continue;
+                        }
+                        if(StringUtils.equals(lessonCourseware.getTeacherRangeType(),"ALL")){
+                            continue;
+                        }
+                        LessonCoursewareUserMapper lessonCoursewareUserMapper = lessonCoursewareUserMapperService.lambdaQuery()
+                                .eq(LessonCoursewareUserMapper::getLessonCoursewareId, lessonCourseware.getId())
+                                .eq(LessonCoursewareUserMapper::getUserType, "TEACHER")
+                                .eq(LessonCoursewareUserMapper::getUserId, user.getId()).last("LIMIT 1").one();
+                        if(Objects.isNull(lessonCoursewareUserMapper)){
+                            courseScheduleDto.setCoursewareEnable(false);
+                        }
+                    }
+                }
+            }
+        }
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealHoursRange",4);
         result.put("offlineSignInEarlyForwardTime", StringUtils.isEmpty(offlineSignInEarlyForwardTime)?60:Integer.parseInt(offlineSignInEarlyForwardTime));
@@ -99,7 +136,30 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "获取最近的一节课")
     @PostMapping("/getRecentCourseSchedule")
     public HttpResponseResult<CourseScheduleDto> getRecentCourseSchedule(Long courseId){
-        return succeed(scheduleService.getRecentCourseSchedule(sysUserService.getUserId(),courseId));
+        CourseScheduleDto courseScheduleDto = scheduleService.getRecentCourseSchedule(sysUserService.getUserId(), courseId);
+        if(courseScheduleDto.getTeachMode() == TeachModeEnum.OFFLINE && courseScheduleDto.getStatus() != CourseStatusEnum.UNDERWAY
+                && StringUtils.isNotEmpty(courseScheduleDto.getCoursewareDetailId())){
+            //获取课件详情列表
+            R<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> voR = coursewareFeignService.lessonCoursewareDetailDetail(Long.parseLong(courseScheduleDto.getCoursewareDetailId()));
+            if (voR.getCode().equals(200)){
+                LessonCourseware lessonCourseware = lessonCoursewareService.lambdaQuery()
+                        .eq(LessonCourseware::getLessonCourseId, voR.getData().getLessonCoursewareId()).last("LIMIT 1").one();
+                if (Objects.isNull(lessonCourseware) || StringUtils.equals(lessonCourseware.getTeacherRangeType(),"DISABLE")){
+                    courseScheduleDto.setCoursewareEnable(false);
+                }else if(StringUtils.equals(lessonCourseware.getTeacherRangeType(),"ALL")){
+                    courseScheduleDto.setCoursewareEnable(true);
+                }else {
+                    LessonCoursewareUserMapper lessonCoursewareUserMapper = lessonCoursewareUserMapperService.lambdaQuery()
+                            .eq(LessonCoursewareUserMapper::getLessonCoursewareId, lessonCourseware.getId())
+                            .eq(LessonCoursewareUserMapper::getUserType, "TEACHER")
+                            .eq(LessonCoursewareUserMapper::getUserId, sysUserService.getUserId()).last("LIMIT 1").one();
+                    if(Objects.isNull(lessonCoursewareUserMapper)){
+                        courseScheduleDto.setCoursewareEnable(false);
+                    }
+                }
+            }
+        }
+        return succeed(courseScheduleDto);
     }
 
     @ApiOperation(value = "根据月份获取该月历史有课的日期")

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

@@ -3,6 +3,7 @@ package com.ym.mec.teacher.controller;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TenantPaymentOrderDao;
 import com.ym.mec.biz.dal.entity.TenantPaymentOrder;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.TenantPaymentOrderService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.thirdparty.yqpay.YqPayFeignService;
@@ -34,7 +35,7 @@ public class TeacherOrderController extends BaseController {
 	@RequestMapping("paymentResult")
 	public void paymentResult(HttpServletResponse response, String orderNo) {
 		try {
-			String baseApiUrl = sysConfigDao.findConfigValue("teacher_base_url");
+			String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL_MTEACHER);
 			response.sendRedirect(baseApiUrl + "/#/paymentresult?orderNo=" + orderNo);
 		} catch (IOException e) {
 			e.printStackTrace();

+ 15 - 0
mec-application/src/main/java/com/ym/mec/vo/PageUtil.java

@@ -2,6 +2,7 @@ package com.ym.mec.vo;
 
 import com.ym.mec.common.page.PageInfo;
 
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -23,4 +24,18 @@ public class PageUtil {
         resultPage.setTotal(total);
         return resultPage;
     }
+
+    public static <T,E> PageInfo<T> pageInfo(com.microsvc.toolkit.common.response.paging.PageInfo<E> source, List<T> rows) {
+        if (Objects.isNull(source)) {
+            return new PageInfo<>(1, 20);
+        }
+        int total = Integer.parseInt(String.valueOf(source.getTotal()));
+        int limit = Integer.parseInt(String.valueOf(source.getLimit()));
+        PageInfo<T> resultPage = new PageInfo<>();
+        resultPage.setRows(rows);
+        resultPage.setPageNo(Long.valueOf(source.getCurrent()).intValue());
+        resultPage.setLimit(limit);
+        resultPage.setTotal(total);
+        return resultPage;
+    }
 }

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

@@ -194,7 +194,7 @@ public class APIController extends BaseController {
 	@GetMapping("/getRefundInfo")
 	public HttpResponseResult<Map<String,String>> getBaseUrl(@RequestParam String orderNo) {
 
-		SysConfig baseApiUrl = sysConfigService.findByParamName("base_api_url");
+		SysConfig baseApiUrl = sysConfigService.findByParamName(SysConfigService.BASE_API_URL);
 		StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(orderNo);
 		Map<String,String> result = new HashMap<>();
 		result.put("transNo",orderByOrderNo.getTransNo());

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

@@ -74,7 +74,7 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "班级基本信息修改")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('classGroup/update')")
-    public HttpResponseResult update(ClassGroup classGroup) throws Exception {
+    public HttpResponseResult<Integer> update(ClassGroup classGroup) throws Exception {
         classGroup.setUpdateTime(new Date());
         return succeed(classGroupService.updateClassGroup(classGroup));
     }

+ 37 - 29
mec-application/src/main/java/com/ym/mec/web/controller/ImGroupController.java

@@ -7,16 +7,13 @@ import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.ImGroupMember;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
-import com.ym.mec.biz.dal.vo.ImGroupVo;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 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.exception.BizException;
 import com.ym.mec.vo.ImUserWrapper;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
@@ -25,15 +22,11 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import javax.annotation.Resource;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
@@ -43,24 +36,34 @@ import java.util.stream.Collectors;
 @RestController
 public class ImGroupController extends BaseController {
 
-	@Autowired
+	@Resource
 	private ImGroupService imGroupService;
 
-	@Autowired
+	@Resource
 	private ImUserFriendService imUserFriendService;
 
-	@Autowired
+	@Resource
 	private ImGroupMemberService imGroupMemberService;
 
-    @Autowired
+    @Resource
     private ImGroupMemberPlusService imGroupMemberPlusService;
 
-	@Autowired
+	@Resource
 	private ImGroupNoticeService imGroupNoticeService;
 
-	@Autowired
+	@Resource
 	private SysUserService sysUserService;
 
+	@ApiOperation(value = "全体禁言/解除禁言")
+	@PostMapping("/muteAll")
+	public HttpResponseResult<Object> muteAll(@RequestBody ImGroupWrapper.GroupMuteAll groupMuteAll) {
+		if (StringUtils.isEmpty(groupMuteAll.getGroupId()) || groupMuteAll.getMuteAll() == null){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("参数错误");
+		}
+		imGroupService.muteAll(groupMuteAll);
+		return succeed();
+	}
+
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
 	public HttpResponseResult<List<ImGroup>> queryGroupList(String search,String groupType) {
@@ -69,7 +72,7 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("创建群聊")
 	@PostMapping(value = "/createGroup")
-	public HttpResponseResult queryGroupList(@RequestBody ImGroupDto imGroupDto) {
+	public HttpResponseResult<String> queryGroupList(@RequestBody ImGroupDto imGroupDto) {
 		return succeed(imGroupService.createGroup(imGroupDto));
 	}
 
@@ -294,27 +297,25 @@ public class ImGroupController extends BaseController {
 
     @ApiOperation(" 移交群主")
     @AuditLogAnnotation(operateName = "移交群主",interfaceURL = "imGroup/groupChangeOwner")
-    /*@ApiImplicitParams({
-			@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "integer")
-	})*/
     @PostMapping(value = "/groupChangeOwner")
-    public Object groupChangeOwner(@RequestBody ImGroupVo.GroupChangeOwner info) throws Exception {
-
-		// 校验参数合法性
-		if (StringUtils.isBlank(info.getImGroupId()) || Objects.isNull(info.getUserId())) {
-			throw new BizException("请求参数错误");
+    public Object groupChangeOwner(@RequestBody ImGroupWrapper.GroupTransferOwner groupTransferOwner) {
+		if (StringUtils.isEmpty(groupTransferOwner.getImGroupId()) || StringUtils.isEmpty(groupTransferOwner.getUserId())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("参数错误");
 		}
-
-        return succeed(imGroupService.groupChangeOwner(info.getUserId(), info.getImGroupId()));
+		groupTransferOwner.setCurrentOwner(sysUserService.getUserId().toString());
+		if(StringUtils.equals(groupTransferOwner.getUserId(),groupTransferOwner.getCurrentOwner())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("不能转交给自己");
+		}
+		imGroupService.transferOwner(groupTransferOwner);
+		return succeed();
     }
 
 	@ApiOperation("解散群")
 	@PostMapping(value = "/dismissGroup")
 	@AuditLogAnnotation(operateName = "解散群",interfaceURL = "imGroup/dismissGroup")
 	@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String")
-	public Object dismissGroup(String imGroupId) {
-		imGroupService.dismissGroup(imGroupId);
+	public HttpResponseResult<Object> dismissGroup(String imGroupId) {
+		imGroupService.dismissGroup(imGroupId,sysUserService.getUserId().toString());
 		return succeed();
 	}
 
@@ -376,4 +377,11 @@ public class ImGroupController extends BaseController {
         return succeed();
     }
 
+	@ApiOperation("主动退群")
+	@PostMapping(value = "/quitGroup/v2")
+	public Object quitGroupV2(String imGroupId, String userId) {
+		List<Integer> userIds = Arrays.stream(userId.split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		return succeed(imGroupMemberService.quit(imGroupId,userIds,false));
+	}
+
 }

+ 53 - 2
mec-application/src/main/java/com/ym/mec/web/controller/ImGroupMemberController.java

@@ -1,7 +1,10 @@
 package com.ym.mec.web.controller;
 
+import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -10,19 +13,67 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
 @RequestMapping("${app-config.url.web:}/imGroupMember")
 @Api(tags = "IM群成员服务")
 @RestController
 public class ImGroupMemberController extends BaseController {
 
-	@Autowired
+	@Resource
 	private ImGroupMemberService imGroupMemberService;
 
+	@ApiOperation(value = "群成员禁言", notes = "群成员禁言- 传入 ImGroupMemberVo.GroupMemberMute")
+	@PostMapping("/groupMute")
+	public HttpResponseResult<Object> groupMemberMute(@RequestBody ImGroupMemberWrapper.GroupMemberMute member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberMute(member);
+		return succeed();
+	}
+
+	@ApiOperation(value = "群成员身份初始化")
+	@PostMapping("/groupRoleInit")
+	public HttpResponseResult<Object> groupRoleInit(String groupRoleType) {
+		List<ImGroupMemberWrapper.GroupMemberRole1> memberRoles = imGroupMemberService.getDao().groupRoleInit(groupRoleType);
+		if(CollectionUtils.isNotEmpty(memberRoles)){
+			memberRoles.stream().collect(Collectors.groupingBy(ImGroupMemberWrapper.GroupMemberRole1::getGroupId)).forEach((k,v)->{
+				ImGroupMemberWrapper.GroupMemberRole memberRole = new ImGroupMemberWrapper.GroupMemberRole();
+				memberRole.setGroupId(k);
+				memberRole.setUserIds(v.stream().map(e->e.getUserId().toString()).collect(Collectors.toList()));
+				memberRole.setGroupRoleType(EImGroupRoleType.valueOf(v.get(0).getGroupRoleType()));
+				imGroupMemberService.groupMemberRole1(memberRole);
+			});
+			return succeed();
+		}
+		return failed("没有需要初始化的数据");
+	}
+
+	@ApiOperation(value = "群成员身份设置", notes = "群成员身份设置- 传入 ImGroupMemberVo.GroupMemberRole")
+	@PostMapping("/groupRole")
+	public HttpResponseResult<Object> groupMemberRole(@RequestBody ImGroupMemberWrapper.GroupMemberRole member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberRole(member);
+		return succeed();
+	}
+
 	@ApiOperation("分页查询群成员列表")
 	@PostMapping(value = "/queryGroupMemberPage")
 	public HttpResponseResult<PageInfo<ImGroupMemberDto>> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {

+ 28 - 7
mec-application/src/main/java/com/ym/mec/web/controller/LessonCoursewareController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.web.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.google.common.collect.Lists;
@@ -9,13 +8,13 @@ import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.biz.dal.entity.LessonCourseware;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.LessonCoursewareService;
+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 com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
@@ -29,10 +28,12 @@ import java.util.List;
 @RestController
 public class LessonCoursewareController extends BaseController {
 
-	@Autowired
+	@Resource
 	private CoursewareFeignService coursewareFeignService;
 	@Resource
 	private LessonCoursewareService lessonCoursewareService;
+	@Resource
+	private SysUserService sysUserService;
 
 	@ApiOperation(value = "获取内容平台课件教材")
 	@PostMapping("/queryPage")
@@ -46,7 +47,7 @@ public class LessonCoursewareController extends BaseController {
 	@PostMapping("/queryLessonCoursewareId")
 	@PreAuthorize("@pcs.hasPermissions('lessonCourseware/queryLessonCoursewareId')")
 	public HttpResponseResult<List<Long>> queryLessonCoursewareId(){
-		List<LessonCourseware> list = lessonCoursewareService.lambdaQuery().list();
+		List<LessonCourseware> list = lessonCoursewareService.list();
 		if (list == null || list.isEmpty()) {
 			return succeed(Lists.newArrayList());
 		}
@@ -67,9 +68,9 @@ public class LessonCoursewareController extends BaseController {
 	@ApiOperation(value = "分页查询已添加的课件")
 	@PostMapping("/queryLessonCourseware")
 	@PreAuthorize("@pcs.hasPermissions('lessonCourseware/queryLessonCourseware')")
-	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
-		IPage<LessonCoursewareWrapper.LessonCoursewareDto> pages = lessonCoursewareService.selectPage(QueryInfo.getPage(query), query);
-		return succeed(PageUtil.pageInfo(pages));
+	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>>
+	queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
+		return succeed(PageUtil.pageInfo(lessonCoursewareService.selectPage(QueryInfo.getPage(query), query)));
 	}
 
 	@ApiOperation(value = "添加课件")
@@ -79,10 +80,13 @@ public class LessonCoursewareController extends BaseController {
 		if (CollectionUtils.isEmpty(lessonCoursewareIds)) {
 			throw new BizException("课件id不能为空");
 		}
+		Integer userId = sysUserService.getUserId();
 		List<LessonCourseware> list = new ArrayList<>();
 		lessonCoursewareIds.forEach(id -> {
 			LessonCourseware lessonCourseware = new LessonCourseware();
 			lessonCourseware.setLessonCourseId(id);
+			lessonCourseware.setCreateBy(userId);
+			lessonCourseware.setUpdateBy(userId);
 			list.add(lessonCourseware);
 		});
 		Integer count = lessonCoursewareService.lambdaQuery().in(LessonCourseware::getLessonCourseId, lessonCoursewareIds).count();
@@ -97,6 +101,7 @@ public class LessonCoursewareController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('lessonCourseware/updateEnableFlag')")
 	public HttpResponseResult updateEnableFlag(Integer id,Boolean enableFlag){
 		lessonCoursewareService.lambdaUpdate().set(LessonCourseware::getEnable, enableFlag)
+				.set(LessonCourseware::getUpdateBy, sysUserService.getUserId())
 				.eq(LessonCourseware::getId, id)
 				.update();
 		return succeed();
@@ -107,8 +112,24 @@ public class LessonCoursewareController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('lessonCourseware/updateSubject')")
 	public HttpResponseResult updateSubject(Integer id,Integer subjectId){
 		lessonCoursewareService.lambdaUpdate().set(LessonCourseware::getSubjectId, subjectId)
+				.set(LessonCourseware::getUpdateBy, sysUserService.getUserId())
 				.eq(LessonCourseware::getId, id)
 				.update();
 		return succeed();
 	}
+
+	@ApiOperation(value = "修改适用范围")
+	@PostMapping("/updateRangeType")
+	@PreAuthorize("@pcs.hasPermissions('lessonCourseware/updateRangeType')")
+	public HttpResponseResult updateRangeType(@RequestBody LessonCoursewareWrapper.UpdateRange updateRange){
+		lessonCoursewareService.updateRangeType(updateRange);
+		return succeed();
+	}
+
+	@ApiOperation(value = "获取课件适用范围详情")
+	@GetMapping("/getRangeType")
+	@PreAuthorize("@pcs.hasPermissions('lessonCourseware/getRangeType')")
+	public HttpResponseResult<LessonCoursewareWrapper.UpdateRangeDetail> getRangeType(Integer lessonCoursewareId){
+		return succeed(lessonCoursewareService.getRangeType(lessonCoursewareId));
+	}
 }

+ 6 - 6
mec-application/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java

@@ -94,14 +94,14 @@ public class ReplacementInstrumentActivityController extends BaseController {
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             Integer userId = oldReplacementInstrumentActivity.getUserId();
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
             String pushUrl = baseApiUrl + "/#/questionGoodsSale?id=";
             userMap.put(userId, userId.toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_REPLACEMENT_PAY,
                     userMap, null, 0, "5?" + pushUrl + replacementInstrumentActivity.getId(), "STUDENT", goods.getBrand(), "");
 
             userPhoneMap.put(userId, oldReplacementInstrumentActivity.getMobileNo());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_REPLACEMENT_PAY,
                     userPhoneMap, null, 0, null, null, goods.getBrand(), HttpUtil.getSortUrl(pushUrl + replacementInstrumentActivity.getId()));
         }
 
@@ -132,14 +132,14 @@ public class ReplacementInstrumentActivityController extends BaseController {
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             Integer userId = replacementInstrumentActivity.getUserId();
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
             String pushUrl = baseApiUrl + "/#/questionGoodsSale?id=";
             userMap.put(userId, userId.toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_REPLACEMENT_PAY,
                     userMap, null, 0, "5?" + pushUrl + replacementInstrumentActivity.getId(), "STUDENT", goods.getBrand(), "");
 
             userPhoneMap.put(userId, replacementInstrumentActivity.getMobileNo());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_REPLACEMENT_PAY,
                     userPhoneMap, null, 0, null, null, goods.getBrand(), HttpUtil.getSortUrl(pushUrl + replacementInstrumentActivity.getId()));
         }
 

+ 61 - 39
mec-application/src/main/java/com/ym/mec/web/controller/SchoolMessageController.java

@@ -1,49 +1,85 @@
 package com.ym.mec.web.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.AppVersionInfoDao;
+import com.dayaedu.cbs.common.enums.message.EMessageSendMode;
+import com.dayaedu.cbs.common.enums.message.ESendStatus;
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.ym.mec.biz.dal.dto.SysMessageDto;
+import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.vo.PageUtil;
 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.apache.commons.collections.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
 @RestController
 @Api(tags = "消息服务")
 @RequestMapping("${app-config.url.web:}/schoolMessage")
 public class SchoolMessageController extends BaseController {
 
-    @Autowired
+    @Resource
     private SysMessageService sysMessageService;
-
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-    @Autowired
-    private AppVersionInfoDao appVersionInfoDao;
+    @Resource
+    private SysUserService sysUserService;
 
     @ApiOperation("获取所有消息列表")
     @PostMapping(value = "list")
-    public Object list(@RequestBody SysMessageQueryInfo queryInfo){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-
-        queryInfo.setUserId(sysUserFeignService.queryUserInfo().getId());
+    public HttpResponseResult<com.ym.mec.common.page.PageInfo<SysMessage>> list(@RequestBody SysMessageQueryInfo queryInfo){
+        queryInfo.setUserId(sysUserService.getUserId());
         queryInfo.setType(3);
         queryInfo.setJpushType("SCHOOL");
-        PageInfo<SysMessageDto> pageInfo = sysMessageService.queryListPage(queryInfo);
-        return succeed(pageInfo);
+        PageInfo<CbsMessageWrapper.SysMessage> pageInfo = sysMessageService.queryListPage(queryInfo).feignData();
+
+        List<SysMessage> sysMessages = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(pageInfo.getRows())){
+            pageInfo.getRows().forEach(sysMessage -> {
+                SysMessage message = new SysMessage();
+                message.setId(sysMessage.getId().toString());
+                message.setTitle(sysMessage.getTitle());
+                message.setContent(sysMessage.getContent());
+                if(sysMessage.getSendMode() != null){
+                    message.setType(sysMessage.getSendMode() == EMessageSendMode.SMS?MessageSendMode.SMS:
+                            sysMessage.getSendMode() == EMessageSendMode.EMAIL?MessageSendMode.EMAIL:
+                                    sysMessage.getSendMode() == EMessageSendMode.PUSH?MessageSendMode.PUSH:MessageSendMode.SEO);
+                }
+                if(sysMessage.getStatus() != null){
+                    message.setStatus(sysMessage.getStatus() == ESendStatus.FAILED? SendStatusEnum.FAILED:
+                            sysMessage.getStatus() == ESendStatus.SENDING?SendStatusEnum.SENDING:
+                                    sysMessage.getStatus() == ESendStatus.SUCCESSED?SendStatusEnum.SUCCESSED:SendStatusEnum.WAIT);
+                }
+                message.setReceiver(sysMessage.getReceiver());
+                message.setSendTime(sysMessage.getSendTime());
+                message.setErrorMsg(sysMessage.getErrorMsg());
+                message.setCreateOn(sysMessage.getCreateTime());
+                message.setModifyOn(sysMessage.getUpdateTime());
+                if(sysMessage.getUserId() != null){
+                    message.setUserId(sysMessage.getUserId().intValue());
+                }
+                if(sysMessage.getMessageConfigId() != null){
+                    message.setMessageConfigId(sysMessage.getMessageConfigId().intValue());
+                }
+                message.setMemo(sysMessage.getMemo());
+                if (sysMessage.getReadStatus() != null){
+                    message.setReadStatus(sysMessage.getReadStatus()?1:0);
+                }
+                message.setGroup(sysMessage.getGroup());
+                sysMessages.add(message);
+            });
+        }
+        return succeed(PageUtil.pageInfo(pageInfo,sysMessages));
     }
 
     @ApiOperation("获取消息分类类型")
@@ -59,31 +95,17 @@ public class SchoolMessageController extends BaseController {
     @ApiOperation("一键已读")
     @PostMapping("batchSetRead")
     public Object batchSetRead() {
-        int status = 1;
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return sysMessageService.updateStatus(sysUser.getId(), status,"SCHOOL") > 0 ? succeed() : failed();
+        return sysMessageService.updateStatus(sysUserService.getUserId(), 1,"SCHOOL")? succeed() : failed();
     }
     @ApiOperation("设置已读")
     @PostMapping("setRead")
     public Object setRead(@ApiParam("id") Long id) {
-        int status = 1;
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
+        return sysMessageService.updateOneStatus(id)? succeed() : failed();
     }
 
     @ApiOperation(value = "查询用户未读消息条数")
     @GetMapping("/queryCountOfUnread")
     public Object queryCountOfUnread() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId(),"SCHOOL", null));
+        return succeed(sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUserService.getUserId(),"SCHOOL", null));
     }
 }

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

@@ -53,7 +53,7 @@ public class SmsCodeController extends BaseController {
         RBucket<String> bucket = redissonClient.getBucket(redisKey);
         if(bucket.isExists()){
             if(StringUtils.equalsIgnoreCase(bucket.get(),code)){
-                smsCodeService.sendValidCode(mobile);
+                smsCodeService.sendValidCode(mobile,"SYSTEM");
                 return succeed();
             }
         }

+ 72 - 33
mec-application/src/main/java/com/ym/mec/web/controller/SysMessageController.java

@@ -1,26 +1,33 @@
 package com.ym.mec.web.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.dayaedu.cbs.common.enums.message.EMessageSendMode;
+import com.dayaedu.cbs.common.enums.message.ESendStatus;
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.AppVersionInfoDao;
-import com.ym.mec.biz.dal.dto.SysMessageDto;
 import com.ym.mec.biz.dal.dto.SysMessageVo;
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
+import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
+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 com.ym.mec.vo.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -29,28 +36,60 @@ import java.util.regex.Pattern;
 @RequestMapping("${app-config.url.web:}/sysMessage")
 public class SysMessageController extends BaseController {
 
-	@Autowired
+	@Resource
 	private SysMessageService sysMessageService;
 
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	@Resource
+	private SysUserService sysUserService;
 
-	@Autowired
+	@Resource
 	private AppVersionInfoDao appVersionInfoDao;
 
 	@ApiOperation("获取所有消息列表")
 	@GetMapping(value = "list")
 	public Object list(SysMessageQueryInfo queryInfo){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		if(!sysUser.getIsSuperAdmin()){
-			queryInfo.setUserId(sysUser.getId());
-		}
+		SysUser sysUser = sysUserService.getUser();
+		queryInfo.setUserId(sysUser.getId());
 		queryInfo.setType(MessageSendMode.SEO.getCode());
-		PageInfo<SysMessageDto> pageInfo = sysMessageService.queryListPage(queryInfo);
-		return succeed(pageInfo);
+		com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage> pageInfo = sysMessageService.queryListPage(queryInfo).feignData();
+
+		List<SysMessage> sysMessages = new ArrayList<>();
+		if(org.apache.commons.collections.CollectionUtils.isNotEmpty(pageInfo.getRows())){
+			pageInfo.getRows().forEach(sysMessage -> {
+				SysMessage message = new SysMessage();
+				message.setId(sysMessage.getId().toString());
+				message.setTitle(sysMessage.getTitle());
+				message.setContent(sysMessage.getContent());
+				if(sysMessage.getSendMode() != null){
+					message.setType(sysMessage.getSendMode() == EMessageSendMode.SMS?MessageSendMode.SMS:
+							sysMessage.getSendMode() == EMessageSendMode.EMAIL?MessageSendMode.EMAIL:
+									sysMessage.getSendMode() == EMessageSendMode.PUSH?MessageSendMode.PUSH:MessageSendMode.SEO);
+				}
+				if(sysMessage.getStatus() != null){
+					message.setStatus(sysMessage.getStatus() == ESendStatus.FAILED? SendStatusEnum.FAILED:
+							sysMessage.getStatus() == ESendStatus.SENDING?SendStatusEnum.SENDING:
+									sysMessage.getStatus() == ESendStatus.SUCCESSED?SendStatusEnum.SUCCESSED:SendStatusEnum.WAIT);
+				}
+				message.setReceiver(sysMessage.getReceiver());
+				message.setSendTime(sysMessage.getSendTime());
+				message.setErrorMsg(sysMessage.getErrorMsg());
+				message.setCreateOn(sysMessage.getCreateTime());
+				message.setModifyOn(sysMessage.getUpdateTime());
+				if(sysMessage.getUserId() != null){
+					message.setUserId(sysMessage.getUserId().intValue());
+				}
+				if(sysMessage.getMessageConfigId() != null){
+					message.setMessageConfigId(sysMessage.getMessageConfigId().intValue());
+				}
+				message.setMemo(sysMessage.getMemo());
+				if (sysMessage.getReadStatus() != null){
+					message.setReadStatus(sysMessage.getReadStatus()?1:0);
+				}
+				message.setGroup(sysMessage.getGroup());
+				sysMessages.add(message);
+			});
+		}
+		return succeed(PageUtil.pageInfo(pageInfo,sysMessages));
 	}
 
 	@ApiOperation("获取消息分类类型")
@@ -81,21 +120,13 @@ public class SysMessageController extends BaseController {
 	@ApiOperation("设置已读")
 	@PostMapping("setRead")
 	public Object setRead(Long id) {
-		int status = 1;
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
+		return sysMessageService.updateOneStatus(id)? succeed() : failed();
 	}
 
 	@ApiOperation(value = "查询用户未读消息条数")
 	@GetMapping("/queryCountOfUnread")
 	public Object queryCountOfUnread() {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
 		return succeed(sysMessageService.queryCountOfUnread(MessageSendMode.SEO, sysUser.getId(),null, sysUser.getTenantId()));
 	}
 
@@ -104,19 +135,27 @@ public class SysMessageController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('sysMessage/page')")
 	@PostMapping("/page")
 	public HttpResponseResult<PageInfo<SysMessageVo.SysMessageList>> page(@RequestBody SysMessageVo.SysMessageQuery query) {
-		// 数据类型转换
-		PageInfo<SysMessageVo.SysMessageList> records = sysMessageService.queryMessageCode(query);
-
+		com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage> pageInfo = sysMessageService.queryMessageCode(query).feignData();
+		if(CollectionUtils.isEmpty(pageInfo.getRows())){
+			return succeed(new PageInfo<>());
+		}
+		List<SysMessageVo.SysMessageList> sysMessageList = new ArrayList<>();
 		Pattern pattern = Pattern.compile("\\b验证码\\s*(\\d{6})\\b");
-		records.getRows().forEach(next -> {
+		pageInfo.getRows().forEach(next -> {
+			SysMessageVo.SysMessageList sysMessage = new SysMessageVo.SysMessageList();
 			String content = next.getContent();
+			sysMessage.setContent(content);
+			sysMessage.setTitle(next.getTitle());
+			sysMessage.setSendTime(next.getSendTime());
+			sysMessage.setReceiver(next.getReceiver());
 			if (StringUtils.isNotEmpty(content)) {
 				Matcher matcher = pattern.matcher(content);
 				if (matcher.find()) {
-					next.setVerityCode(matcher.group().replace("验证码",""));
+					sysMessage.setVerityCode(matcher.group().replace("验证码",""));
 				}
 			}
+			sysMessageList.add(sysMessage);
 		});
-		return succeed(records);
+		return succeed(PageUtil.pageInfo(pageInfo, sysMessageList));
 	}
 }

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

@@ -82,7 +82,7 @@ public class TenantInfoController extends BaseController {
         String pw = WrapperUtil.toStr(openPar, "pw");
         TenantInfo tenantInfo = (TenantInfo) openPar.get("tenantInfo");
         if (StringUtils.isNotBlank(pw) && Objects.nonNull(tenantInfo)) {
-            Object[] msg = {tenantInfo.getName(), tenantInfo.getPhone(), pw, "https://online.dayaedu.com"};
+            Object[] msg = {tenantInfo.getName(), tenantInfo.getPhone(), pw, "https://gym.lexiaoya.cn"};
             tenantInfoSendMsgService.platformSendToAll(OPEN, tenantInfo.getUserId(), tenantInfo.getEmail(), tenantInfo.getPhone(), msg);
         }
         return succeed();

+ 304 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduImGroupController.java

@@ -0,0 +1,304 @@
+package com.ym.mec.web.controller.education;
+
+import com.google.common.collect.Lists;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
+import com.ym.mec.biz.dal.dto.ImUserFriendDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
+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 com.ym.mec.vo.ImUserWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+@RequestMapping("${app-config.url.web:}/eduImGroup")
+@Api(tags = "IM群服务")
+@RestController
+public class EduImGroupController extends BaseController {
+
+	@Resource
+	private ImGroupService imGroupService;
+	@Resource
+	private ImUserFriendService imUserFriendService;
+	@Resource
+	private ImGroupMemberService imGroupMemberService;
+	@Resource
+	private ImGroupNoticeService imGroupNoticeService;
+	@Resource
+	private SysUserService sysUserService;
+    @Resource
+    private ImGroupMemberPlusService imGroupMemberPlusService;
+
+	@ApiOperation(value = "全体禁言/解除禁言")
+	@PostMapping("/muteAll")
+	public HttpResponseResult<Object> muteAll(@RequestBody ImGroupWrapper.GroupMuteAll groupMuteAll) {
+		if (StringUtils.isEmpty(groupMuteAll.getGroupId()) || groupMuteAll.getMuteAll() == null){
+			throw new BizException("参数错误");
+		}
+		imGroupService.muteAll(groupMuteAll);
+		return succeed();
+	}
+
+	@ApiOperation(" 移交群主")
+	@PostMapping(value = "/groupChangeOwner")
+	public Object groupChangeOwner(@RequestBody ImGroupWrapper.GroupTransferOwner groupTransferOwner) {
+		if (StringUtils.isEmpty(groupTransferOwner.getImGroupId()) || StringUtils.isEmpty(groupTransferOwner.getUserId())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("参数错误");
+		}
+		groupTransferOwner.setCurrentOwner(sysUserService.getUserId().toString());
+		if(StringUtils.equals(groupTransferOwner.getUserId(),groupTransferOwner.getCurrentOwner())){
+			throw new com.microsvc.toolkit.common.webportal.exception.BizException("不能转交给自己");
+		}
+		imGroupService.transferOwner(groupTransferOwner);
+		return succeed();
+	}
+
+	@ApiOperation("解散群")
+	@PostMapping(value = "/dismissGroup")
+	@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String")
+	public HttpResponseResult<Object> dismissGroup(String imGroupId) {
+		imGroupService.dismissGroup(imGroupId,sysUserService.getUserId().toString());
+		return succeed();
+	}
+
+	@ApiOperation("退群")
+	@PostMapping(value = "/quitGroup")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "String")})
+	public Object quitGroup(String imGroupId, String userId) {
+		List<Integer> userIds = Arrays.stream(userId.split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+		return succeed(imGroupMemberService.quit(imGroupId,userIds));
+	}
+
+	@ApiOperation("查询群列表")
+	@GetMapping(value = "/queryGroupList")
+	public HttpResponseResult<List<ImGroup>> queryGroupList(String search, String groupType) {
+		return succeed(imGroupService.queryByUserId(sysUserService.getUserId(), search,groupType));
+	}
+
+
+    @ApiOperation("查询群列表-v2")
+    @GetMapping(value = "/queryGroupList/v2")
+    public HttpResponseResult<List<ImGroup>> queryGroupListV2(String search, String groupType, String musicGroupId, String classType) {
+        if (StringUtils.isNotBlank(classType) && classType.equals("SINGLE")) {
+            classType = "NORMAL";
+        }
+        return succeed(imGroupService.queryByUserIdV2(sysUserService.getUserId(), search,groupType,musicGroupId,classType));
+    }
+
+	@ApiOperation("查询群详情")
+	@GetMapping(value = "/queryGroupDetail")
+	public HttpResponseResult<ImGroup> queryGroupDetail(String imGroupId) {
+		if (imGroupId.contains("S") || imGroupId.contains("I")){
+			imGroupId = imGroupId.substring(1);
+		}
+        ImGroup imGroup = imGroupService.get(imGroupId);
+
+        if (imGroup == null) {
+            return failed(HttpStatus.NO_CONTENT, "群组不存在");
+        }
+        ImGroupMemberPlus admin = imGroupMemberPlusService.lambdaQuery()
+            .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
+            .eq(ImGroupMemberPlus::getUserId, sysUserService.getUser().getId())
+            .last("limit 1").one();
+        if (admin == null) {
+            // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
+            return failed(HttpStatus.NO_CONTENT, "群组不存在");
+        }
+		// 设置默认头像
+		if (Objects.nonNull(imGroup) && Objects.nonNull(imGroup.getGroupType()) && StringUtils.isBlank(imGroup.getImg())) {
+			imGroup.setImg(imGroup.getGroupType().getAvatar());
+		}
+		return succeed(imGroup);
+	}
+
+	@ApiOperation("查询群详情(重构版)")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "groupId", value = "群编号", required = true, dataType = "String")
+	})
+	@GetMapping(value = "/getDetail/{groupId}")
+	public HttpResponseResult<ImGroup> groupDetail(@PathVariable("groupId") String imGroupId) {
+		if (imGroupId.contains("S") || imGroupId.contains("I")){
+			imGroupId = imGroupId.substring(1);
+		}
+        ImGroup imGroup = imGroupService.get(imGroupId);
+
+        if (imGroup == null) {
+            return failed(HttpStatus.NO_CONTENT, "群组不存在");
+        }
+        ImGroupMemberPlus admin = imGroupMemberPlusService.lambdaQuery()
+            .eq(ImGroupMemberPlus::getImGroupId, imGroup.getId())
+            .eq(ImGroupMemberPlus::getUserId, sysUserService.getUser().getId())
+            .last("limit 1").one();
+        if (admin == null) {
+            // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
+            return failed(HttpStatus.NO_CONTENT, "群组不存在");
+        }
+		return succeed(imGroupService.get(imGroupId));
+	}
+
+	@ApiOperation("查询群成员列表")
+	@GetMapping(value = "/queryGroupMemberList")
+	public HttpResponseResult<List<ImGroupMemberDto>> queryGroupMemberList(String imGroupId) {
+		return succeed(imGroupService.queryMemberById(imGroupId));
+	}
+
+	@ApiOperation("查询群学生列表")
+	@GetMapping(value = "/queryGroupStudentList")
+	public HttpResponseResult<List<ImGroupMemberDto>> queryGroupStudentList(String imGroupId) {
+		return succeed(imGroupService.queryMemberById(imGroupId).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
+	}
+
+
+    @ApiOperation("查询群学生列表v2")
+    @GetMapping(value = "/queryGroupStudentList/v2")
+    public HttpResponseResult<List<ImGroupMemberDto>> queryGroupStudentListV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
+        return succeed(imGroupService.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
+    }
+
+	@ApiOperation("查询群成员详情")
+	@GetMapping(value = "/queryGroupMemberDetail")
+	public HttpResponseResult<ImGroupMemberDto> queryGroupMemberDetail(String imGroupId, Integer userId) {
+		return succeed(imGroupService.queryMember(imGroupId, userId));
+	}
+
+	@ApiOperation("查询好友详情")
+	@GetMapping(value = "/queryFriendDetail")
+	public HttpResponseResult<ImUserFriendDto> queryFriendDetail(Integer userId) {
+		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(sysUserService.getUserId(), userId);
+		if (dto == null) {
+			dto = new ImUserFriendDto();
+			SysUser user = sysUserService.queryUserById(userId);
+			dto.setFriend(user);
+
+			List<String> userTypes = Lists.newArrayList(user.getUserType().split(","));
+			if (userTypes.size() > 1
+				|| userTypes.contains(ClientEnum.TEACHER.getCode())
+				|| userTypes.contains(ClientEnum.SYSTEM.getCode())) {
+				// 增加用户身份数量 > 1 或者包含老师身份,统一使用实名
+				dto.setFriendNickname(Optional.ofNullable(user.getRealName()).filter(StringUtils::isNotBlank).orElse(user.getUsername()));
+			} else if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+				dto.setFriendNickname(user.getUsername());
+			} else {
+				dto.setFriendNickname(user.getRealName());
+			}
+			dto.setFriendId(userId);
+		}
+		return succeed(dto);
+	}
+
+	@ApiOperation("查询好友详情(重构版)")
+	@ApiImplicitParams({
+		@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer")
+	})
+	@GetMapping(value = "/imUserFriend/getDetail/{userId}")
+	public HttpResponseResult<ImUserWrapper.ImUserFriend> getImUserFriendDetail(@PathVariable("userId") Integer userId) {
+		ImUserFriendDto dto = imUserFriendService.queryFriendDetail(sysUserService.getUserId(), userId);
+		if (dto == null) {
+			dto = new ImUserFriendDto();
+			SysUser user = sysUserService.queryUserById(userId);
+			dto.setFriend(user);
+			if (user.getUserType().contains("STUDENT") || user.getUserType().contains("SCHOOL")) {
+				dto.setFriendNickname(user.getUsername());
+			} else {
+				dto.setFriendNickname(user.getRealName());
+			}
+			dto.setFriendId(userId);
+		}
+
+		// 返回数据结构封装
+		ImUserWrapper.ImUserFriend userFriend = ImUserWrapper.ImUserFriend.builder()
+			.id(dto.getId())
+			.userId(dto.getUserId().longValue())
+			.friendId(dto.getFriendId().longValue())
+			.friendAvatar(dto.getFriend().getAvatar())
+			.friendNickname(dto.getFriendNickname())
+			.memo(dto.getMemo())
+			.updateTime(dto.getUpdateTime())
+			.createTime(dto.getCreateTime())
+			.roleType(dto.getRoleType())
+			.friendType(dto.getRoleType())
+			.build();
+		return succeed(userFriend);
+	}
+
+	@ApiOperation("查询好友列表")
+	@GetMapping(value = "/queryFriendList")
+	public HttpResponseResult<List<ImUserFriendDto>> queryFriendList(String search) {
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search));
+	}
+
+	@ApiOperation("查询好友列表(重构版)")
+	@GetMapping(value = "/imUserFriend/queryAll")
+	public HttpResponseResult<List<ImUserWrapper.ImUserFriend>> queryImUserFriendList(String search) {
+
+		// 好友关系列表
+		List<ImUserFriendDto> friendDtos = imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search);
+
+		List<ImUserWrapper.ImUserFriend> wrappers = Lists.newArrayList();
+		if (CollectionUtils.isNotEmpty(friendDtos)) {
+
+			// 封装返回数据结构
+			for (ImUserFriendDto item : friendDtos) {
+
+				wrappers.add(ImUserWrapper.ImUserFriend.builder()
+					.id(item.getId())
+					.userId(item.getUserId().longValue())
+					.friendId(item.getFriendId().longValue())
+					.friendAvatar(item.getFriend().getAvatar())
+					.friendNickname(item.getFriendNickname())
+					.memo(item.getMemo())
+					.roleType(item.getRoleType())
+					.friendType(item.getRoleType())
+					.updateTime(item.getUpdateTime())
+					.createTime(item.getCreateTime())
+					.build());
+			}
+		}
+
+		return succeed(wrappers);
+	}
+
+	@ApiOperation("查询好友中的学生列表")
+	@GetMapping(value = "/queryFriendStudentList")
+	public HttpResponseResult<List<ImUserFriendDto>> queryFriendStudentList(String search) {
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUserService.getUserId(), search).stream().filter(e -> StringUtils.isBlank(e.getTags()))
+				.collect(Collectors.toList()));
+	}
+
+
+    @ApiOperation("查询好友中的学生列表-v2")
+    @GetMapping(value = "/queryFriendStudentList/v2")
+    public HttpResponseResult<List<ImUserFriendDto>> queryFriendStudentListV2(String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
+        return succeed(imUserFriendService.queryFriendListByUserIdV2(sysUserService.getUserId(), search,musicGroupId,subjectId,vipFlag)
+                .stream().filter(e -> StringUtils.isBlank(e.getTags()))
+                .collect(Collectors.toList()));
+    }
+
+	@ApiOperation("查询群公告列表")
+	@GetMapping(value = "/queryNoticeList")
+	public HttpResponseResult<PageInfo<ImGroupNoticeDto>> queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
+		return succeed(imGroupNoticeService.queryPage(queryInfo));
+	}
+}

+ 71 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduImGroupMemberController.java

@@ -0,0 +1,71 @@
+package com.ym.mec.web.controller.education;
+
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
+import com.ym.mec.biz.service.ImGroupMemberService;
+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.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Optional;
+
+@RequestMapping("${app-config.url.web:}/eduImGroupMember")
+@Api(tags = "IM群成员服务")
+@RestController
+public class EduImGroupMemberController extends BaseController {
+
+	@Resource
+	private ImGroupMemberService imGroupMemberService;
+
+	@ApiOperation(value = "群成员禁言", notes = "群成员禁言- 传入 ImGroupMemberVo.GroupMemberMute")
+	@PostMapping("/groupMute")
+	public HttpResponseResult<Object> groupMemberMute(@RequestBody ImGroupMemberWrapper.GroupMemberMute member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberMute(member);
+		return succeed();
+	}
+
+	@ApiOperation(value = "群成员身份设置", notes = "群成员身份设置- 传入 ImGroupMemberVo.GroupMemberRole")
+	@PostMapping("/groupRole")
+	public HttpResponseResult<Object> groupMemberRole(@RequestBody ImGroupMemberWrapper.GroupMemberRole member) {
+		// 群成员不能为空
+		if (CollectionUtils.isEmpty(member.getUserIds())) {
+			throw BizException.from("群成员不能为空");
+		}
+		// 更新群成员禁言
+		imGroupMemberService.groupMemberRole(member);
+		return succeed();
+	}
+
+	@ApiOperation("分页查询群成员列表")
+	@PostMapping(value = "/queryGroupMemberPage")
+	public HttpResponseResult<PageInfo<ImGroupMemberDto>> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
+		return succeed(imGroupMemberService.queryGroupMemberPage(queryInfo));
+	}
+
+	@ApiOperation("添加群成员")
+	@PostMapping(value = "/addGroupMember")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "roleType", value = "指导老师,乐队指导,乐团主管,运营主管,学员不传", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "userId", value = "用户编号(多个逗号分割)", required = true, dataType = "String")})
+	public Object addGroupMember(String imGroupId, String userId, String roleType) {
+		imGroupMemberService.batchJoin(imGroupId,userId,roleType);
+		return succeed();
+	}
+}

+ 1 - 1
mec-application/src/main/java/com/ym/mec/web/controller/education/EduSendNoticeController.java

@@ -46,7 +46,7 @@ public class EduSendNoticeController extends BaseController {
     @ApiOperation(value = "发送IM")
     @PostMapping(value = "/im")
     public HttpResponseResult im(@RequestBody PushInfoDto pushInfo) {
-        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL);
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL_MANAGER);
         String workOrderUrl = baseApiUrl + pushInfo.getWorkOrderUrl();
         String msg = pushInfo.getImContent() + " " + workOrderUrl;
 

+ 12 - 33
mec-application/src/main/java/com/ym/mec/web/controller/education/SysEduMessageController.java

@@ -1,13 +1,13 @@
 package com.ym.mec.web.controller.education;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.AppVersionInfoDao;
 import com.ym.mec.biz.dal.entity.AppVersionInfo;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
@@ -15,13 +15,12 @@ import com.ym.mec.util.validator.CommonValidator;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.Map;
 
 @RestController
@@ -29,23 +28,19 @@ import java.util.Map;
 @RequestMapping("${app-config.url.web:}/sysEduMessage")
 public class SysEduMessageController extends BaseController {
 
-	@Autowired
+	@Resource
 	private SysMessageService sysMessageService;
 
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	@Resource
+	private SysUserService sysUserService;
 
-	@Autowired
+	@Resource
 	private AppVersionInfoDao appVersionInfoDao;
 
 	@ApiOperation("获取所有消息列表")
 	@GetMapping(value = "list")
 	public Object list(SysMessageQueryInfo queryInfo){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		queryInfo.setUserId(sysUser.getId());
+		queryInfo.setUserId(sysUserService.getUserId());
 		queryInfo.setType(3);
 		queryInfo.setJpushType("SYSTEM");
 		return succeed(sysMessageService.queryPage(queryInfo));
@@ -77,32 +72,19 @@ public class SysEduMessageController extends BaseController {
 	@ApiOperation("一键已读")
 	@PostMapping("batchSetRead")
 	public Object batchSetRead() {
-		int status = 1;
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return sysMessageService.updateStatus(sysUser.getId(), status,"SYSTEM") > 0 ? succeed() : failed();
+		return sysMessageService.updateStatus(sysUserService.getUserId(), 1,"SYSTEM") ? succeed() : failed();
 	}
 
 	@ApiOperation("设置已读")
 	@PostMapping("setRead")
 	public Object setRead(Long id) {
-		int status = 1;
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
+		return sysMessageService.updateOneStatus(id)? succeed() : failed();
 	}
 
 	@ApiOperation(value = "查询用户未读消息条数")
 	@GetMapping("/queryCountOfUnread")
 	public Object queryCountOfUnread() {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("请重新登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
 		Map<String, Integer> map = sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId(),"SYSTEM", sysUser.getTenantId());
 
 		if (map == null || map.size() == 0) {
@@ -114,17 +96,14 @@ public class SysEduMessageController extends BaseController {
 	@ApiOperation(value = "发送消息")
 	@PostMapping("/sendMessage")
 	public Object sendMessage(MessageSender messageSender, String content, String receiver, int readStatus, String url, String group) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+		SysUser sysUser = sysUserService.getUser();
 		Integer userId = sysUser.getId();
 
 		String mobileNo = sysUser.getPhone();
 		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
 			throw new BizException("请输入正确的手机号");
 		}
-		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group,"SYSTEM");
+//		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group,"SYSTEM");
 		return succeed();
 	}
 }

+ 25 - 2
mec-application/src/main/resources/logback-dev.xml

@@ -1,7 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-    <property name="LOG_HOME" value="/mdata/mec-dev/logs/app-%d{yyyy-MM-dd_HH}-%i.log" />
+    <!--Spring读取配置参数-->
+    <!--<springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
+    <springProperty scope="context" name="LOG_HOME" source="spring.application.name"/>-->
+    <property name="FILE_NAME" value="app" />
+
+    <property name="FILE_LOG_HOME" value="/mdata/mec-dev/logs/app-%d{yyyy-MM-dd_HH}-%i.log" />
     <property name="CONSOLE_LOG_PATTERN"
               value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
 
@@ -14,7 +19,7 @@
     <appender name="file"
               class="ch.qos.logback.core.rolling.RollingFileAppender">
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <FileNamePattern>${LOG_HOME}</FileNamePattern>
+            <FileNamePattern>${FILE_LOG_HOME}</FileNamePattern>
             <MaxHistory>90</MaxHistory>
             <TimeBasedFileNamingAndTriggeringPolicy
                     class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
@@ -27,6 +32,19 @@
         </encoder>
     </appender>
 
+    <appender name="FeignAccessFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/${FILE_NAME}-feign.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/%d{yyyyMM,aux}/feign-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>1GB</totalSizeCap>
+            <maxFileSize>20 MB</maxFileSize>
+        </rollingPolicy>
+        <encoder charset="UTF-8">
+            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %p %c{0} %m%n</pattern>
+        </encoder>
+    </appender>
+
     <logger name="com.ym.app" level="INFO" />
 <!--    <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="trace" />-->
 
@@ -35,4 +53,9 @@
         <appender-ref ref="stdout" />
         <appender-ref ref="file" />
     </root>
+
+    <!--总控平台Feign接口日志-->
+    <logger name="com.dayaedu.cbs.openfeign.client" level="DEBUG" additivity="false">
+        <appender-ref ref="FeignAccessFile" />
+    </logger>
 </configuration>

+ 23 - 0
mec-application/src/main/resources/logback-spring.xml

@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
+    <property name="FILE_NAME" value="app" />
+
 <!--    <property name="LOG_HOME" value="${LOG_HOME}"/>-->
     <property name="CONSOLE_LOG_PATTERN"
               value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n"/>
@@ -27,6 +29,19 @@
         </encoder>
     </appender>
 
+    <appender name="FeignAccessFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/${FILE_NAME}-feign.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/%d{yyyyMM,aux}/feign-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>1GB</totalSizeCap>
+            <maxFileSize>20 MB</maxFileSize>
+        </rollingPolicy>
+        <encoder charset="UTF-8">
+            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %p %c{0} %m%n</pattern>
+        </encoder>
+    </appender>
+
     <appender name="messagefile"
               class="ch.qos.logback.core.rolling.RollingFileAppender">
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
@@ -120,6 +135,10 @@
         <Logger name="org.redisson" level="INFO" additivity="false">
             <appender-ref ref="file" level="INFO" />
         </Logger>
+        <!--总控平台Feign接口日志-->
+        <logger name="com.dayaedu.cbs.openfeign.client" level="DEBUG" additivity="false">
+            <appender-ref ref="FeignAccessFile" />
+        </logger>
     </springProfile>
     <!--生产环境:输出到文件 -->
     <springProfile name="pre">
@@ -127,6 +146,10 @@
             <appender-ref ref="file"/>
             <appender-ref ref="plumelog"/>
         </root>
+        <!--总控平台Feign接口日志-->
+        <logger name="com.dayaedu.cbs.openfeign.client" level="DEBUG" additivity="false">
+            <appender-ref ref="FeignAccessFile" />
+        </logger>
     </springProfile>
 
 </configuration>

+ 1 - 1
mec-auth/pom.xml

@@ -18,7 +18,7 @@
 		<dependency>
 			<groupId>com.dayaedu.cbs.openfeign</groupId>
 			<artifactId>dayaedu-openfeign-api</artifactId>
-			<version>1.0.2</version>
+			<version>${cbs.version}</version>
 		</dependency>
 		<!-- 引用Mybatis 和 Mysql驱动开始 -->
 		<dependency>

+ 8 - 8
mec-biz/pom.xml

@@ -49,17 +49,17 @@
 		<dependency>
 			<groupId>com.microsvc.toolkit.middleware</groupId>
 			<artifactId>microsvc-middleware-live</artifactId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>com.microsvc.toolkit.common</groupId>
 			<artifactId>microsvc-common-response</artifactId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>com.microsvc.toolkit.middleware</groupId>
 			<artifactId>microsvc-middleware-rtc</artifactId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
 
 		<!--修复依赖冲突-->
@@ -70,22 +70,22 @@
 		<dependency>
 			<groupId>com.microsvc.toolkit.config</groupId>
 			<artifactId>microsvc-config-validator</artifactId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
         <dependency>
             <groupId>com.microsvc.toolkit.config</groupId>
             <artifactId>microsvc-config-jwt</artifactId>
-            <version>1.0.0</version>
+            <version>${com.microsvc.toolkit.version}</version>
         </dependency>
 		<dependency>
 			<groupId>com.microsvc.toolkit.middleware</groupId>
 			<artifactId>microsvc-middleware-im</artifactId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>com.microsvc.toolkit.middleware</groupId>
 			<artifactId>microsvc-middleware-oss</artifactId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
 
 		<dependency>
@@ -106,7 +106,7 @@
 				</exclusion>
 			</exclusions>
 			<groupId>com.microsvc.toolkit.common</groupId>
-			<version>1.0.0</version>
+			<version>${com.microsvc.toolkit.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>com.yonge.log</groupId>

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/config/AdapayNotifyConstants.java

@@ -2,12 +2,12 @@ package com.ym.mec.biz.dal.config;
 
 public class AdapayNotifyConstants {
 	
-	public static String corp_member_notify_url_test = "https://test.dayaedu.com/api-web/{}/callback";
+	public static String corp_member_notify_url_test = "https://test.gym.lexiaoya.cn/api-web/{}/callback";
 
-	public static String corp_member_notify_url_prod = "https://online.dayaedu.com/api-web/{}/callback";
+	public static String corp_member_notify_url_prod = "https://gym.lexiaoya.cn/api-web/{}/callback";
 	
-	public static String student_payment_notify_url_test = "https://mstutest.dayaedu.com/api-student/studentOrder/callback";
+	public static String student_payment_notify_url_test = "https://test.gym.lexiaoya.cn/api-student/studentOrder/callback";
 	
-	public static String student_payment_notify_url_prod = "https://mstuonline.dayaedu.com/api-student/studentOrder/callback";
+	public static String student_payment_notify_url_prod = "https://gym.lexiaoya.cn/api-student/studentOrder/callback";
 
 }

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

@@ -45,6 +45,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     int batchAddCourseSchedules(List<CourseSchedule> courseSchedules);
 
+    int batchAddCourseSchedulesHasId(List<CourseSchedule> courseSchedules);
+
     int batchInsert(List<CourseSchedule> courseSchedules);
 
     /**

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupMemberDao.java

@@ -5,6 +5,7 @@ import java.util.Map;
 import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.entity.ImGroupMember;
@@ -60,4 +61,10 @@ public interface ImGroupMemberDao extends BaseDAO<Long, ImGroupMember> {
     List<ImGroupMember> getByGroupId(@Param("musicGroupIds") List<String> musicGroupId);
 
     void delByImGroupAndUserId(@Param("imGroupId") String imGroupId, @Param("userIds") List<Integer> userIds);
+
+    void updateGroupMemberMute(@Param("groupId") String groupId, @Param("userIds") List<String> userIds, @Param("groupMute") Boolean groupMute);
+
+    void batchUpdateGroupMemberRole(@Param("groupId") String groupId, @Param("userIds") List<String> userIds, @Param("groupRoleType") String groupRoleType);
+
+    List<ImGroupMemberWrapper.GroupMemberRole1> groupRoleInit(@Param("groupRoleType") String groupRoleType);
 }

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

@@ -5,19 +5,13 @@ import com.ym.mec.biz.dal.entity.ImGroupMember;
 import io.swagger.annotations.ApiModelProperty;
 
 public class ImGroupMemberDto extends ImGroupMember {
-
 	private SysUser user = new SysUser();
-
     private String type;
-
     private String imUserId;
-
     @ApiModelProperty(value = "群编号;")
     private String groupId;
-
     @ApiModelProperty("群成员头象")
     private String avatar;
-
     public String getType() {
         return type;
     }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -251,6 +251,14 @@ public class CourseSchedule  extends BaseEntity{
 	@ApiModelProperty("课件编号")
 	private String coursewareDetailId;
 
+	@Getter
+	@ApiModelProperty("课件是否可以使用")
+	private Boolean coursewareEnable = true;
+
+	public void setCoursewareEnable(Boolean coursewareEnable) {
+		this.coursewareEnable = coursewareEnable;
+	}
+
 	public void setCoursewareDetailId(String coursewareDetailId) {
 		this.coursewareDetailId = coursewareDetailId;
 	}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -2,6 +2,9 @@ package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.common.entity.BaseEntity;
 import com.ym.mec.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -25,6 +28,9 @@ public class ImGroup extends BaseEntity {
 	
 	/** 群备注 */
 	private String memo;
+
+	@ApiModelProperty(value = "禁言配置")
+	private String configJson;
 	
 	/** 群标签 */
 	private String tags;
@@ -91,6 +97,13 @@ public class ImGroup extends BaseEntity {
 		}
 	}
 
+	public String getConfigJson() {
+		if (StringUtils.isEmpty(configJson)){
+			return "{mute: false}";
+		}
+		return configJson;
+	}
+
 	//群类型
 	private GroupTypeEnum groupType;
 
@@ -204,6 +217,10 @@ public class ImGroup extends BaseEntity {
 		this.importFlag = importFlag;
 	}
 
+	public void setConfigJson(String configJson) {
+		this.configJson = configJson;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 76 - 82
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -1,8 +1,14 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
+import com.ym.mec.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
-import com.ym.mec.common.entity.BaseEntity;
+import java.util.Date;
 
 /**
  * 对应数据库表(im_group_member):
@@ -10,156 +16,144 @@ import com.ym.mec.common.entity.BaseEntity;
 public class ImGroupMember extends BaseEntity {
 
 	/**  */
+	@Getter
 	private Long id;
 	
 	/**  */
+	@Getter
 	private String imGroupId;
 	
 	/**  */
+	@Getter
 	private Integer userId;
 	
+	@Getter
 	private String nickname;
 
-	/** 群昵称 */
+	@Getter
+	@ApiModelProperty(value = "群昵称")
 	private String groupNickname;
 	
-	/** 是否是管理员 */
+	@ApiModelProperty(value = "是否是管理员")
 	private boolean isAdmin;
+
+	@Getter
+	@Setter
+	@ApiModelProperty(value = "是否禁言")
+	private Boolean muteFlag = false;
+
+	@Getter
+	@ApiModelProperty(value = "第三方群角色")
+	private String groupRoleType;
 	
-	/** 群角色 */
+	@Getter
+	@ApiModelProperty(value = "群角色")
 	private String roleType;
 
-
-    /** 群角色 */
+	@Getter
+	@ApiModelProperty(value = "群角色")
     private String type;
 
+	@Getter
 	private Integer memberRankSettingId;
 
+	@Getter
 	private String subjectName;
 
+	@Getter
 	private String subjectId;
 
+	@Getter
 	private String avatar;
 	
 	/**  */
+	@Getter
 	private java.util.Date createTime;
 	
 	/**  */
+	@Getter
 	private java.util.Date updateTime;
 
+	private ImGroup.GroupTypeEnum groupType;
 
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-	public String getSubjectId() {
-		return subjectId;
+	public ImGroup.GroupTypeEnum getGroupType() {
+		return groupType;
 	}
 
-	public void setSubjectId(String subjectId) {
-		this.subjectId = subjectId;
-	}
-
-	public Integer getMemberRankSettingId() {
-		return memberRankSettingId;
-	}
-
-	public void setMemberRankSettingId(Integer memberRankSettingId) {
-		this.memberRankSettingId = memberRankSettingId;
+	public void setGroupType(ImGroup.GroupTypeEnum groupType) {
+		this.groupType = groupType;
 	}
 
-	public String getSubjectName() {
-		return subjectName;
-	}
-
-	public void setSubjectName(String subjectName) {
-		this.subjectName = subjectName;
-	}
-
-	public void setId(Long id){
+	public void setId(Long id) {
 		this.id = id;
 	}
-	
-	public Long getId(){
-		return this.id;
-	}
-			
-	public void setImGroupId(String imGroupId){
+
+	public void setImGroupId(String imGroupId) {
 		this.imGroupId = imGroupId;
 	}
-	
-	public String getImGroupId(){
-		return this.imGroupId;
-	}
-			
-	public void setUserId(Integer userId){
+
+	public void setUserId(Integer userId) {
 		this.userId = userId;
 	}
-	
-	public Integer getUserId(){
-		return this.userId;
-	}
-			
-	public String getNickname() {
-		return nickname;
-	}
 
 	public void setNickname(String nickname) {
 		this.nickname = nickname;
 	}
 
-	public void setIsAdmin(boolean isAdmin){
-		this.isAdmin = isAdmin;
+	public void setGroupNickname(String groupNickname) {
+		this.groupNickname = groupNickname;
 	}
-	
-	public boolean getIsAdmin(){
-		return this.isAdmin;
+
+	public boolean getIsAdmin() {
+		return isAdmin;
+	}
+
+	public void setIsAdmin(boolean admin) {
+		isAdmin = admin;
+		if (admin){
+			this.groupRoleType = EImGroupRoleType.Owner.getCode();
+		}
 	}
 
-	public String getRoleType() {
-		return roleType;
+	public void setGroupRoleType(String groupRoleType) {
+		this.groupRoleType = groupRoleType;
 	}
 
 	public void setRoleType(String roleType) {
 		this.roleType = roleType;
+		if(StringUtils.isEmpty(this.groupRoleType)){
+			this.groupRoleType = StringUtils.isEmpty(roleType)?EImGroupRoleType.Member.getCode():EImGroupRoleType.Admin.getCode();
+		}
 	}
 
-	public void setCreateTime(java.util.Date createTime){
-		this.createTime = createTime;
-	}
-	
-	public java.util.Date getCreateTime(){
-		return this.createTime;
-	}
-			
-	public void setUpdateTime(java.util.Date updateTime){
-		this.updateTime = updateTime;
-	}
-	
-	public java.util.Date getUpdateTime(){
-		return this.updateTime;
+	public void setType(String type) {
+		this.type = type;
 	}
 
-	public String getGroupNickname() {
-		return groupNickname;
+	public void setMemberRankSettingId(Integer memberRankSettingId) {
+		this.memberRankSettingId = memberRankSettingId;
 	}
 
-	public void setGroupNickname(String groupNickname) {
-		this.groupNickname = groupNickname;
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
 	}
 
-	public String getAvatar() {
-		return avatar;
+	public void setSubjectId(String subjectId) {
+		this.subjectId = subjectId;
 	}
 
 	public void setAvatar(String avatar) {
 		this.avatar = avatar;
 	}
 
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 3 - 30
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMemberPlus.java

@@ -17,50 +17,32 @@ import java.util.Date;
 @TableName("im_group_member")
 public class ImGroupMemberPlus implements Serializable {
 
-    /**
-     *
-     */
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
-    /**
-     *
-     */
     @TableField(value = "im_group_id_")
     private String imGroupId;
 
-    /**
-     *
-     */
     @TableField(value = "user_id_")
     private Integer userId;
 
     @TableField(value = "nickname_")
     private String nickname;
 
-    /**
-     * 群昵称
-     */
     @TableField(exist = false)
     private String groupNickname;
 
-    /**
-     * 是否是管理员
-     */
     @ApiModelProperty("是否是管理员")
     @TableField(value = "is_admin_")
     private Boolean isAdmin;
 
-    /**
-     * 群角色
-     */
     @TableField(value = "role_type_")
     private String roleType;
 
+    @ApiModelProperty(value = "第三方群角色")
+    @TableField(value = "group_role_type_")
+    private String groupRoleType;
 
-    /**
-     * 群角色
-     */
     @TableField(value = "type_")
     private String type;
 
@@ -73,21 +55,12 @@ public class ImGroupMemberPlus implements Serializable {
     @TableField(exist = false)
     private String subjectId;
 
-    /**
-     * 头像
-     */
     @TableField(exist = false)
     private String avatar;
 
-    /**
-     *
-     */
     @TableField(value = "create_time_")
     private Date createTime;
 
-    /**
-     *
-     */
     @TableField(value = "update_time_")
     private Date updateTime;
 

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonCourseware.java

@@ -24,10 +24,26 @@ public class LessonCourseware{
 	@TableField(value = "lesson_course_id_")
 	private Long lessonCourseId;
 
+	@ApiModelProperty(value = "学员适用范围ALL,RANGE,DISABLE")
+	@TableField(value = "student_range_type_")
+	private String studentRangeType;
+
+	@ApiModelProperty(value = "老师适用范围ALL,RANGE,DISABLE")
+	@TableField(value = "teacher_range_type_")
+	private String teacherRangeType;
+
 	@ApiModelProperty(value = "是否启用")
 	@TableField(value = "enable_")
 	private Boolean enable = false;
 
+	@ApiModelProperty(value = "创建人")
+	@TableField(value = "create_by_")
+	private Integer createBy;
+
+	@ApiModelProperty(value = "修改人")
+	@TableField(value = "update_by_")
+	private Integer updateBy;
+
 	@ApiModelProperty(value = "更新时间")
 	@TableField(value = "update_time_")
 	private Date updateTime;

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonCoursewareUserMapper.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class LessonCoursewareUserMapper {
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "课件id")
+    @TableField(value = "lesson_courseware_id_")
+    private Integer lessonCoursewareId;
+
+    @ApiModelProperty(value = "用户类型")
+    @TableField(value = "user_type_")
+    private String userType;
+
+    @ApiModelProperty(value = "用户id")
+    @TableField(value = "user_id_")
+    private Integer userId;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(value = "update_time_")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "create_time_")
+    private Date createTime;
+}

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessage.java

@@ -14,7 +14,7 @@ import com.ym.mec.common.entity.BaseEntity;
 public class SysMessage extends BaseEntity {
 
 	/** 主键 */
-	private Long id;
+	private String id;
 
     private Integer messageConfigId;
 	
@@ -98,11 +98,11 @@ public class SysMessage extends BaseEntity {
 		this.memo = memo;
 	}
 
-	public void setId(Long id){
+	public void setId(String id){
 		this.id = id;
 	}
 	
-	public Long getId(){
+	public String getId(){
 		return this.id;
 	}
 			

+ 13 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EFriendRoleType.java

@@ -14,7 +14,9 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
     MAINTENANCE_TECHNICIAN(6,"维护技师"),
     ORCHESTRA_TEACHER(7,"指导老师"),
     STUDENT(8,"学生"),
-    UNDEFINE(9,""),
+    BAND_DIRECTOR(9,"乐队指导"),
+    BRIDGING_TEACHER(10,"衔接老师"),
+    UNDEFINE(11,""),
 
 
     ;
@@ -40,12 +42,15 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
                 return SCHOOL_TEACHER;
             case "STUDENT":
                 return STUDENT;
+            case "BRIDGING_TEACHER":
+                return BRIDGING_TEACHER;
+            case "BAND_DIRECTOR":
+                return BAND_DIRECTOR;
             case "乐团主管":
             case "ORCHESTRA_MANAGER":
                 return ORCHESTRA_MANAGER;
             case "指导老师":
                 return ORCHESTRA_TEACHER;
-
             case "校长":
                 return SCHOOLMASTER;
             case "乐团领队":
@@ -56,9 +61,13 @@ public enum EFriendRoleType implements BaseEnum<Integer, EFriendRoleType> {
                 return SCHOOL_TEACHER;
             case "维护技师":
                 return SCHOOL_TEACHER;
+            case "衔接老师":
+                return BRIDGING_TEACHER;
+            case "乐队指导":
+                return BAND_DIRECTOR;
             default:
-//                return STUDENT;
-                return UNDEFINE;
+                return STUDENT;
+//                return UNDEFINE;
         }
     }
 

+ 24 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -4,12 +4,16 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_APPLY_MESSAGE("SMS_APPLY_MESSAGE", "报名通知"),
-    SYSTEM_REMIND_EDUCATION_COURSE_TIME("SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
-    STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
+    SMS_SYSTEM_REMIND_EDUCATION_COURSE_TIME("SMS_SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
+
+    PUSH_SYSTEM_REMIND_EDUCATION_COURSE_TIME("PUSH_SYSTEM_REMIND_EDUCATION_COURSE_TIME", "排课提醒"),
+    SMS_STUDENT_MEMBER_RENEW_MESSAGE("SMS_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
+    PUSH_STUDENT_MEMBER_RENEW_MESSAGE("STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
     PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE("PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE", "会员试用提醒"),
+    SMS_EXPERIENCE_MEMBERSHIP_MESSAGE("SMS_EXPERIENCE_MEMBERSHIP_MESSAGE", "会员试用提醒"),
     SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
     PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE("PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE", "会员续费提醒"),
-    STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),
+//    STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "会员续费提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),
     SMS_PAYMENT_MESSAGE("SMS_PAYMENT_MESSAGE", "缴费通知"),
@@ -30,7 +34,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     PUSH_STUDENT_BUY_ACTIVITY("PUSH_STUDENT_BUY_ACTIVITY", "活动购买成功"),
     PUSH_SYSTEM_ACTIVITY_COURSE("PUSH_SYSTEM_ACTIVITY_COURSE", "待排课通知"),
     PUSH_TEACHER_ACTIVITY_COURSE("PUSH_TEACHER_ACTIVITY_COURSE", "待排课通知"),
-    STUDENT_SMS_PUSH_PAYMENT_SUCCESS("STUDENT_SMS_PUSH_PAYMENT_SUCCESS", "缴费成功结果通知"),
+    STUDENT_SMS_PAYMENT_SUCCESS("STUDENT_SMS_PAYMENT_SUCCESS", "缴费成功结果通知"),
+    STUDENT_PUSH_PAYMENT_SUCCESS("STUDENT_PUSH_PAYMENT_SUCCESS", "缴费成功结果通知"),
     STUDENT_SMS_BALANCE_CONSUME("STUDENT_SMS_BALANCE_CONSUME", "余额消费"),
     STUDENT_PUSH_VIP_BUY("STUDENT_PUSH_VIP_BUY", "VIP课购买"),
     STUDENT_PUSH_LIVE_BUY("STUDENT_PUSH_LIVE_BUY", "直播课购买"),
@@ -47,7 +52,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     STUDENT_PUSH_JOB_MESSAGE_EXTRA_V2("STUDENT_PUSH_JOB_MESSAGE_EXTRA_V2", "训练提醒"),
     //    STUDENT_PUSH_CLASS_MESSAGE("STUDENT_PUSH_CLASS_MESSAGE", "班级消息"),
     TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN("TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN", "乐团课新增安排"),
-    TEACHER_SMS_PUSH_VIP_COURSE_APPLY_RESULT("TEACHER_SMS_PUSH_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
+    TEACHER_SMS_VIP_COURSE_APPLY_RESULT("TEACHER_SMS_VIP_COURSE_APPLY_RESULT", "VIP课申请结果"),
     TEACHER_SMS_VIP_COURSE_ADD("TEACHER_SMS_VIP_COURSE_ADD", "VIP课新增"),
     TEACHER_PUSH_VIP_COURSE_STOP("TEACHER_PUSH_VIP_COURSE_STOP", "VIP课停止"),
     TEACHER_PUSH_LIVE_COURSE_STOP("TEACHER_PUSH_LIVE_COURSE_STOP", "直播课停止"),
@@ -75,12 +80,16 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TEACHER_PUSH_VIP_STOP("TEACHER_PUSH_VIP_STOP", "VIP课取消"),
     STUDENT_SMS_OPEN_PAYMENT("STUDENT_SMS_OPEN_PAYMENT", "开启缴费"),
     //    SMS_MUSIC_GROUP_ADD_STUDENT_FREE("SMS_MUSIC_GROUP_ADD_STUDENT_FREE", "入团通知"),
-    STUDENT_SMS_PUSH_SPORADIC_PAYMENT_SUCCESS("STUDENT_SMS_PUSH_SPORADIC_PAYMENT_SUCCESS", "零星支付成功结果"),
-    STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED("STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED", "零星支付失败结果"),
+    STUDENT_PUSH_SPORADIC_PAYMENT_SUCCESS("STUDENT_PUSH_SPORADIC_PAYMENT_SUCCESS", "零星支付成功结果"),
+    STUDENT_SMS_SPORADIC_PAYMENT_SUCCESS("STUDENT_SMS_SPORADIC_PAYMENT_SUCCESS", "零星支付成功结果"),
+    STUDENT_SMS_SPORADIC_PAYMENT_FAILED("STUDENT_SMS_SPORADIC_PAYMENT_FAILED", "零星支付失败结果"),
+    STUDENT_PUSH_SPORADIC_PAYMENT_FAILED("STUDENT_PUSH_SPORADIC_PAYMENT_FAILED", "零星支付失败结果"),
     TEACHER_PUSH_COURSE_COLLIDE("TEACHER_PUSH_COURSE_COLLIDE", "课程冲突"),
     //    PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告"),
-    STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS("STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS", "网管课购买成功"),
-    STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT("STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT", "网管课完成学习报告"),
+    STUDENT_SMS_PAY_PRACTICE_BUY_SUCCESS("STUDENT_SMS_PAY_PRACTICE_BUY_SUCCESS", "网管课购买成功"),
+    STUDENT_PUSH_PAY_PRACTICE_BUY_SUCCESS("STUDENT_PUSH_PAY_PRACTICE_BUY_SUCCESS", "网管课购买成功"),
+    STUDENT_PUSH_PRACTICE_COMPLETED_STUDY_REPORT("STUDENT_PUSH_PRACTICE_COMPLETED_STUDY_REPORT", "网管课完成学习报告"),
+    STUDENT_SMS_PRACTICE_COMPLETED_STUDY_REPORT("STUDENT_SMS_PRACTICE_COMPLETED_STUDY_REPORT", "网管课完成学习报告"),
     STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH("STUDENT_SMS_PUSH_FREE_PRACTICE_APPLY_PUSH", "免费陪练课预约推送"),
     TEACHER_PUSH_NEED_POST_STUDY_REPORT("TEACHER_PUSH_NEED_POST_STUDY_REPORT", "新增待填写月报"),
     STUDENT_PUSH_HOMEWORK_REMIND("STUDENT_PUSH_HOMEWORK_REMIND", "训练提醒-网管课"),
@@ -122,7 +131,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TEACHER_PUSH_COURSE_SALARY_COMPLAINTS_RESULT("TEACHER_PUSH_COURSE_SALARY_COMPLAINTS_RESULT", "课酬申述结果"),
     TEACHER_PUSH_SALARY_CONFIRM("TEACHER_PUSH_SALARY_CONFIRM", "课酬确认"),
     STUDENT_PUSH_TRIAL_PRACTICE_CREATE("STUDENT_PUSH_TRIAL_PRACTICE_CREATE", "试听课安排"),
-    TEACHER_SMS_PUSH_PRACTICE_CREATE("TEACHER_SMS_PUSH_PRACTICE_CREATE", "新增网管课程"),
+    TEACHER_SMS_PRACTICE_CREATE("TEACHER_SMS_PRACTICE_CREATE", "新增网管课程"),
+    TEACHER_PUSH_PRACTICE_CREATE("TEACHER_PUSH_PRACTICE_CREATE", "新增网管课程"),
     STUDENT_PUSH_REPAIR_UNSEND_COMPLETED("STUDENT_PUSH_REPAIR_UNSEND_COMPLETED", "乐器维修完成自取"),
     STUDENT_PUSH_REPAIR_SEND_COMPLETED("STUDENT_PUSH_REPAIR_SEND_COMPLETED", "乐器维修完成邮寄"),
     STUDENT_PUSH_REPAIR_ONLINE_PAYMENT_SUCCESS("STUDENT_PUSH_REPAIR_ONLINE_PAYMENT_SUCCESS", "乐器线上维修支付成功"),
@@ -145,13 +155,15 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TEACHER_PUSH_SERVE("TEACHER_PUSH_SERVE", "服务指标未完成提醒"),
     STUDENT_PUSH_MAINTENANCE_NOTICE("STUDENT_PUSH_MAINTENANCE_NOTICE", "乐保到期提醒"),
     TEACHER_IM_STUDENT_LEAVE("TEACHER_IM_STUDENT_LEAVE", "学员请假"),
-    STUDENT_SMS_PUSH_REPLACEMENT_PAY("STUDENT_SMS_PUSH_REPLACEMENT_PAY", "乐器置换支付提醒"),
+    STUDENT_SMS_REPLACEMENT_PAY("STUDENT_SMS_REPLACEMENT_PAY", "乐器置换支付提醒"),
+    STUDENT_PUSH_REPLACEMENT_PAY("STUDENT_PUSH_REPLACEMENT_PAY", "乐器置换支付提醒"),
     TEACHER_PUSH_INCOME_REMIND("TEACHER_PUSH_INCOME_REMIND", "今日收入"),
     STUDENT_PUSH_PAYMENT_RESULT("STUDENT_PUSH_PAYMENT_RESULT", "缴费结果"),
     STUDENT_PUSH_MUSIC_GROUP_CLOSE("STUDENT_PUSH_MUSIC_GROUP_CLOSE", "乐团关闭(确认后)"),
     STUDENT_PUSH_BASICS_SKILL_APPLY_MESSAGE("STUDENT_PUSH_BASICS_SKILL_APPLY_MESSAGE", "基础技能训练报名通知"),
     STUDENT_PUSH_WAIT_RENEW_MESSAGE("STUDENT_PUSH_WAIT_RENEW_MESSAGE", "待续费通知"),
-    STUDENT_SMS_PUSH_MUSIC_GROUP_RENEW_SUCCESS("STUDENT_SMS_PUSH_MUSIC_GROUP_RENEW_SUCCESS", "乐团续费成功结果"),
+    STUDENT_SMS_MUSIC_GROUP_RENEW_SUCCESS("STUDENT_SMS_MUSIC_GROUP_RENEW_SUCCESS", "乐团续费成功结果"),
+    STUDENT_PUSH_MUSIC_GROUP_RENEW_SUCCESS("STUDENT_PUSH_MUSIC_GROUP_RENEW_SUCCESS", "乐团续费成功结果"),
     STUDENT_PUSH_BALANCE_CONSUME("STUDENT_PUSH_BALANCE_CONSUME", "余额消费"),
     STUDENT_PUSH_ATTEND_COURSE_MESSAGE("STUDENT_PUSH_ATTEND_COURSE_MESSAGE", "上课提醒"),
     STUDENT_PUSH_TEACHING_SCHOOL_CHANGE("STUDENT_PUSH_TEACHING_SCHOOL_CHANGE", "教学点变动"),

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/im/EImGroupRoleType.java

@@ -0,0 +1,39 @@
+package com.ym.mec.biz.dal.enums.im;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.microsvc.toolkit.common.enums.ConverterEnum;
+import lombok.Getter;
+
+/**
+ * 群组成员角色
+ */
+@Getter
+public enum EImGroupRoleType implements ConverterEnum<String> {
+
+    Owner("群主"),
+    Admin("管理员"),
+    Member("群成员"),
+    ;
+
+    private final String msg;
+
+    @EnumValue
+    private final String code;
+
+    EImGroupRoleType(String msg) {
+        this.msg = msg;
+
+        this.code = this.name();
+    }
+
+    // ClientType -> EImGroupRoleType
+    public static EImGroupRoleType fromClientType(String clientType) {
+        switch (clientType) {
+            case "TEACHER":
+                return Admin;
+            case "STUDENT":
+            default:
+                return Member;
+        }
+    }
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/LessonCoursewareMapper.java

@@ -15,6 +15,8 @@ public interface LessonCoursewareMapper extends BaseMapper<LessonCourseware> {
     List<LessonCoursewareWrapper.LessonCoursewareDto> selectPage(@Param("page") IPage<LessonCoursewareWrapper.LessonCoursewareDto> page,
                                                                  @Param("param") LessonCoursewareWrapper.LessonCoursewareQuery param);
 
+    List<LessonCoursewareWrapper.LessonCoursewareDto> list(@Param("param") LessonCoursewareWrapper.LessonCoursewareQuery param);
+
 
     //获取课件关联的声部列表
     List<Subject> getLessonCoursewareSubjectList();

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/LessonCoursewareUserMapperMapper.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.entity.LessonCourseware;
+import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface LessonCoursewareUserMapperMapper extends BaseMapper<LessonCoursewareUserMapper> {
+
+}

+ 6 - 14
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GroupMemberQueryInfo.java

@@ -2,7 +2,9 @@ package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class GroupMemberQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "群编号")
@@ -11,19 +13,9 @@ public class GroupMemberQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "角色")
     private String roleType;
 
-    public String getRoleType() {
-        return roleType;
-    }
+    @ApiModelProperty("群禁言状态")
+    private Boolean groupMute;
 
-    public void setRoleType(String roleType) {
-        this.roleType = roleType;
-    }
-
-    public String getImGroupId() {
-        return imGroupId;
-    }
-
-    public void setImGroupId(String imGroupId) {
-        this.imGroupId = imGroupId;
-    }
+    @ApiModelProperty("群成员身份")
+    private String groupRoleType;
 }

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

@@ -2,11 +2,16 @@ package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.webportal.validation.annotation.EnumValidation;
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 
 import lombok.AllArgsConstructor;
@@ -15,6 +20,9 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 /**
  * 群成员表
  * 2023-08-29 17:18:04
@@ -84,11 +92,14 @@ public class ImGroupMemberWrapper {
         private String nickname;
 
         @ApiModelProperty("是否是管理员")
-        private Boolean isAdmin;
+        private Boolean isAdmin = false;
 
         @ApiModelProperty("群角色TEACHER老师、STUDENT学生")
         private String roleType;
 
+        @ApiModelProperty(value = "群角色")
+        private String type;
+
         @ApiModelProperty("修改时间")
         private Date updateTime;
 
@@ -104,6 +115,8 @@ public class ImGroupMemberWrapper {
         @ApiModelProperty("机构ID")
         private Integer tenantId = TenantContextHolder.getTenantId();
 
+        private String groupRoleType;
+
         public static ImGroupMember from(String json) {
             return JSON.parseObject(json, ImGroupMember.class);
         }
@@ -141,4 +154,69 @@ public class ImGroupMemberWrapper {
         }
     }
 
+    @Data
+    @ApiModel(" GroupMemberMute-群成员禁言")
+    public static class GroupMemberMute implements Serializable {
+
+        @ApiModelProperty(value = "群ID",required = true)
+        private String groupId;
+
+//        @ApiModelProperty("禁言时长(分钟), 0取消禁方;不能小于0")
+//        private Integer muteTime;
+
+        @ApiModelProperty("群禁言状态")
+        private Boolean groupMute;
+
+        @ApiModelProperty("群成员ID")
+        private List<String> userIds;
+
+        /*public Integer getMuteTime() {
+            // 禁言时长不能小于0,最小为1分钟
+            if (Objects.nonNull(muteTime) && muteTime < 0) {
+                return 1;
+            }
+            return Optional.ofNullable(muteTime).orElse(0);
+        }*/
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+    }
+
+    @Data
+    @ApiModel(" GroupMemberMute-群成员角色")
+    public static class GroupMemberRole implements Serializable {
+
+        @ApiModelProperty(value = "群ID",required = true)
+        private String groupId;
+
+        @ApiModelProperty("群成员身份")
+        private EImGroupRoleType groupRoleType;
+
+        @ApiModelProperty("群成员ID")
+        private List<String> userIds;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+    }
+
+    @Data
+    @ApiModel(" GroupMemberMute-群成员角色")
+    public static class GroupMemberRole1 implements Serializable {
+
+        @ApiModelProperty(value = "群ID",required = true)
+        private String groupId;
+
+        @ApiModelProperty("群成员身份")
+        private String groupRoleType;
+
+        @ApiModelProperty("群成员ID")
+        private Integer userId;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+    }
+
 }

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

@@ -7,7 +7,10 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
@@ -143,4 +146,49 @@ public class ImGroupWrapper {
         }
 
     }
+
+    @Data
+    @ApiModel(" GroupMuteAll-群组禁言")
+    public static class GroupMuteAll implements Serializable {
+
+        @ApiModelProperty(value = "群ID",required = true)
+        private String groupId;
+
+        @ApiModelProperty(value = "是否禁言",required = true)
+        private Boolean muteAll;
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("配置信息")
+    public static class ConfigJson implements Serializable {
+
+        @ApiModelProperty("群聊禁言(1:禁言,管理员可以发言,0:不禁言)")
+        private Boolean mute = false;
+
+        public static ConfigJson from(String json) {
+            if (StringUtils.isBlank(json)) {
+                return new ConfigJson();
+            }
+            return JSON.parseObject(json, ConfigJson.class);
+        }
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("转交群主")
+    public static class GroupTransferOwner {
+        @ApiModelProperty(value = "群ID",required = true)
+        private String imGroupId;
+
+        @ApiModelProperty("新群主ID")
+        private String userId;
+
+        @ApiModelProperty("当前群主")
+        private String currentOwner;
+    }
 }

+ 89 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LessonCoursewareWrapper.java

@@ -1,9 +1,13 @@
 package com.ym.mec.biz.dal.wrapper;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.dto.im.BasicUserInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -27,11 +31,26 @@ public class LessonCoursewareWrapper {
 
         private Integer rows = 20;
 
+        private String search;
+
         @ApiModelProperty("声部")
         private Integer subjectId;
 
+        @ApiModelProperty("内容平台课件编号")
+        private List<Long> lessonCoursewareIds;
+
         @ApiModelProperty("启用状态")
         private Boolean enable;
+
+        @ApiModelProperty(value = "学员适用范围ALL,RANGE,DISABLE")
+        private String studentRangeType;
+
+        @ApiModelProperty(value = "老师适用范围ALL,RANGE,DISABLE")
+        private String teacherRangeType;
+
+        private Integer teacherId;
+
+        private Integer studentId;
     }
 
     @Data
@@ -62,6 +81,27 @@ public class LessonCoursewareWrapper {
 
         @ApiModelProperty("声部id")
         private Integer subjectId;
+
+        @ApiModelProperty(value = "学员适用范围ALL,RANGE,DISABLE")
+        private String studentRangeType;
+
+        @ApiModelProperty(value = "老师适用范围ALL,RANGE,DISABLE")
+        private String teacherRangeType;
+
+        @ApiModelProperty(value = "创建人")
+        private Integer createBy;
+
+        @ApiModelProperty(value = "修改人")
+        private Integer updateBy;
+
+        @ApiModelProperty(value = "创建人")
+        private String createName;
+
+        @ApiModelProperty(value = "修改人")
+        private String updateName;
+
+        @ApiModelProperty(value = "创建时间")
+        private String createTime;
     }
 
     @Data
@@ -96,4 +136,53 @@ public class LessonCoursewareWrapper {
 
     }
 
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("updateRangeTypeDto-修改适用范围")
+    public static class UpdateRange{
+
+        @ApiModelProperty(value = "课件编号")
+        private Integer lessonCoursewareId;
+
+        @ApiModelProperty(value = "学员适用范围ALL,RANGE,DISABLE")
+        private String studentRangeType;
+
+        @ApiModelProperty(value = "学员编号")
+        private List<Integer> studentIds;
+
+        @ApiModelProperty(value = "老师适用范围ALL,RANGE,DISABLE")
+        private String teacherRangeType;
+
+        @ApiModelProperty(value = "老师编号")
+        private List<Integer> teacherIds;
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("UpdateRangeDetail-获取适用范围")
+    public static class UpdateRangeDetail{
+
+        @ApiModelProperty(value = "课件编号")
+        private Integer lessonCoursewareId;
+
+        @ApiModelProperty(value = "课件名称")
+        private String name;
+
+        @ApiModelProperty(value = "学员适用范围ALL,RANGE,DISABLE")
+        private String studentRangeType;
+
+        @ApiModelProperty(value = "老师适用范围ALL,RANGE,DISABLE")
+        private String teacherRangeType;
+
+        @ApiModelProperty(value = "适用学员列表")
+        private List<SimpleUserDto> studentList;
+
+        @ApiModelProperty(value = "适用老师列表")
+        private List<SimpleUserDto> teacherList;
+    }
+
 }

+ 70 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SysMessageWrapper.java

@@ -0,0 +1,70 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.enums.SendStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+public class SysMessageWrapper {
+
+    @Data
+    public static class Message {
+
+        /** 主键 */
+        private String id;
+
+        private Integer messageConfigId;
+
+        /** 标题 */
+        @ApiModelProperty(value = "标题",required = false)
+        private String title;
+
+        /** 消息内容 */
+        @ApiModelProperty(value = "消息内容",required = false)
+        private String content;
+
+        /** 消息类型;1,表示短信;2,表示邮件; 3,app推送消息 */
+        @ApiModelProperty(value = "消息类型",required = false)
+        private MessageSendMode type;
+
+        /** 状态,-1,发送失败;0,待发送;1,发送中;2,发送完成 */
+        @ApiModelProperty(value = "状态",required = false)
+        private SendStatusEnum status;
+
+        /** 接收人(多个人用逗号分隔) */
+        @ApiModelProperty(value = "接收人(多个人用逗号分隔)",required = false)
+        private String receiver;
+
+        /** 发送时间 */
+        @ApiModelProperty(value = "发送时间",required = false)
+        private java.util.Date sendTime;
+
+        /** 错误信息 */
+        @ApiModelProperty(value = "错误信息",required = false)
+        private String errorMsg;
+
+        /** 创建时间 */
+        private java.util.Date createOn;
+
+        /** 修改时间 */
+        private java.util.Date modifyOn;
+
+        /** 用户编号 */
+        @ApiModelProperty(value = "用户编号",required = false)
+        private Integer userId;
+
+        /** 备注 */
+        @ApiModelProperty(value = "备注",required = false)
+        private String memo;
+
+        /** 是否已读 */
+        @ApiModelProperty(value = "是否已读",required = false)
+        private Integer readStatus;
+
+        @ApiModelProperty(value = "消息组",required = false)
+        private String group;
+
+        @ApiModelProperty(value = "极光推送客户端标识",required = false)
+        private String jpushType;
+    }
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/event/listener/SendSeoMessageListener.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.event.SendSeoMessageChangeEvent;
 import com.ym.mec.biz.service.SysEmployeePositionService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.context.ApplicationListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
@@ -35,7 +36,7 @@ public class SendSeoMessageListener implements ApplicationListener<SendSeoMessag
         if(event.getTargetId() != null){
             targetUserIdList.add(event.getTargetId());
         }
-        if(targetUserIdList.size() > 0){
+        if(CollectionUtils.isNotEmpty(targetUserIdList)){
             sysMessageService.batchSeoMessage(targetUserIdList,
                     event.getMsgTemplate(),
                     event.getMemo(),

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

@@ -596,7 +596,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     void batchUpdateLockByClassGroupIds(List<Integer> classGroupIds,int lockFlag);
 
     //修改班级基本信息
-    int updateClassGroup(ClassGroup classGroup);
+    int updateClassGroup(ClassGroup classGroup) throws Exception;
 
     /**
      * 查询班级列表

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

@@ -137,6 +137,8 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 */
 	void batchAddCourseSchedule(List<CourseSchedule> courseSchedules);
 
+	void batchAddCourse(List<CourseSchedule> courseSchedules);
+
 	/**
 	 * @describe 创建乐团课课程计划
 	 * @author Joburgess

+ 20 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberService.java

@@ -1,18 +1,23 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.ImGroupMemberDao;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
 
 public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 
+	ImGroupMemberDao getDao();
+
 	/**
 	 * 加入群组
 	 * @param imGroupId 群编号
@@ -23,6 +28,10 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	 */
 	boolean join(String imGroupId, Integer userId, String roleType, boolean isAdmin);
 
+	void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType);
+
+	void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType);
+
 	/**
 	 * 加入群组
 	 * @param imGroupId 群编号
@@ -49,14 +58,6 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	boolean quit(String imGroupId, Integer userId);
 
 	/**
-	 * 退出指定群组
-	 * @param imGroupIdList 群组编号列表
-	 * @param userId 用户编号
-	 * @return
-	 */
-	boolean quit(List<String> imGroupIdList, Integer userId);
-
-	/**
 	 * 用户批量退出群组
 	 * @param imGroupId 群组编号
 	 * @param userIdList 学生编号
@@ -64,7 +65,9 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	 */
 	boolean quit(String imGroupId, List<Integer> userIdList);
 
-	/**
+    boolean quit(String imGroupId, List<Integer> userIdList, Boolean quit);
+
+    /**
 	 * 修改角色类型
 	 * @param imGroupId 群组编号
 	 * @param userId 用户编号
@@ -76,30 +79,22 @@ public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
 	void batchInsert(List<ImGroupMember> imGroupMemberList);
 
 	/**
-	 * 批量删除
-	 * @param imGroupMemberList
-	 */
-	void batchDelete(List<ImGroupMember> imGroupMemberList);
-
-	/**
 	 * 根据群编号和用户编号批量删除
 	 * @param imGroupMemberList
 	 */
 	void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList);
 
-	/**
-	 * 是否在群里
-	 * @param groupId
-	 * @param userId
-	 * @return
-	 */
-	boolean isExit(String groupId, String userId);
-
 	void delRepeat();
 
-	List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId);
-
 	PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo);
 
 	void batchJoin(String imGroupId, String userId, String roleType);
+
+	// 群成员禁言
+    void groupMemberMute(ImGroupMemberWrapper.GroupMemberMute member);
+
+	// 群成员身份设置
+	void groupMemberRole(ImGroupMemberWrapper.GroupMemberRole member);
+
+	void groupMemberRole1(ImGroupMemberWrapper.GroupMemberRole member);
 }

+ 6 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -92,7 +92,7 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
     void updateImGroup(ImGroup imGroup);
 
     //解散群组
-    void dismissGroup(String imGroupId);
+    void dismissGroup(String imGroupId,String userId);
 
     /**
      * @description: 获取群聊、用户详情
@@ -134,7 +134,6 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
      * @param userId 用户id
      * @param imGroupId     群组id
      */
-    @Transactional(rollbackFor = Exception.class)
     Boolean  groupChangeOwner(Integer userId, String imGroupId) throws Exception;
 
     /**
@@ -225,6 +224,10 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 
     void deleteGroup();
 
-    @Transactional(rollbackFor = Exception.class)
     void delGroup(String imGroupId);
+
+    void muteAll(ImGroupWrapper.GroupMuteAll groupMuteAll);
+
+    void transferOwner(ImGroupWrapper.GroupTransferOwner groupTransferOwner);
+
 }

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

@@ -12,5 +12,11 @@ public interface LessonCoursewareService extends IService<LessonCourseware> {
 
     //分页查询已添加的课件
     IPage<LessonCoursewareWrapper.LessonCoursewareDto> selectPage(IPage<LessonCoursewareWrapper.LessonCoursewareDto> page, LessonCoursewareWrapper.LessonCoursewareQuery query);
+
+    //修改课件适用范围
+    void updateRangeType(LessonCoursewareWrapper.UpdateRange updateRange);
+
+    //获取课件适用范围
+    LessonCoursewareWrapper.UpdateRangeDetail getRangeType(Integer lessonCoursewareId);
 }
 

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/LessonCoursewareUserMapperService.java

@@ -0,0 +1,13 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
+import com.ym.mec.biz.dal.mapper.LessonCoursewareMapper;
+import com.ym.mec.biz.dal.mapper.LessonCoursewareUserMapperMapper;
+
+public interface LessonCoursewareUserMapperService extends IService<LessonCoursewareUserMapper> {
+
+    LessonCoursewareUserMapperMapper getDao();
+
+}
+

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

@@ -16,5 +16,5 @@ public interface SmsCodeService {
 	 * 发送登录验证码
 	 * @return
 	 */
-	boolean sendValidCode(String mobile) throws Exception;
+	boolean sendValidCode(String mobile,String jpushType) throws Exception;
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -198,6 +198,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
 
     public static final String BASE_API_URL = "base_api_url";
+    public static final String BASE_API_URL_MDAYA = "base_api_url_mdaya";
 
     /**
      * 缴费状态提前{}天刷新
@@ -320,6 +321,8 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String TEACHER_BASE_URL = "teacher_base_url";
 
+    String TEACHER_BASE_URL_MTEACHER = "teacher_base_url_mteacher";
+
     String PRACTICE_PROMOTION_ACTIVITY_START_DATE = "practice_promotion_activity_start_date";
 
     String NEW_MSG_PUSH = "您收到一条训练回复,请点击查看";
@@ -328,6 +331,7 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      * @describe 教务端baseUrl
      */
     String EDU_TEACHER_BASE_URL = "edu_teacher_base_url";
+    String EDU_TEACHER_BASE_URL_MANAGER = "edu_teacher_base_url_manager";
 
     String HOLIDAY_SETTING = "holiday_setting";
 

+ 23 - 46
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -1,32 +1,29 @@
 package com.ym.mec.biz.service;
 
-import java.net.MalformedURLException;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.ym.mec.biz.dal.dto.SysMessageDto;
+import com.dayaedu.cbs.common.enums.EClientType;
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
+import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.dto.SysMessageVo;
 import com.ym.mec.biz.dal.entity.ImSendGroupMessage;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
+import com.ym.mec.biz.dal.wrapper.SysMessageWrapper;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 
+import java.net.MalformedURLException;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 public interface SysMessageService extends BaseService<Long, SysMessage> {
-	
-	PageInfo<SysMessageDto> queryListPage(QueryInfo queryInfo);
 
-	/**
-	 * 修改消息对象
-	 * @param message
-	 * @return
-	 */
-	public int updateMessage(SysMessage message);
+	R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage>> queryListPage(SysMessageQueryInfo queryInfo);
 
 	/**
 	 * 推送站内消息
@@ -101,7 +98,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @return
 	 */
-	public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum messageType, Map<Integer, String> receivers, Date triggerTime,
+	public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum messageType, Map<Integer,String> receivers, Date triggerTime,
 			Integer readStatus, String url,String jpushType, Object... args);
 
 	/**
@@ -115,7 +112,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @return
 	 */
-	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum messageType, Map<Integer, String> receivers, Date triggerTime,
+	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum messageType, Map<Integer,String> receivers, Date triggerTime,
 			Integer readStatus, String url,String jpushType, Object... args);
 
 
@@ -129,25 +126,9 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param args 参数
 	 * @return
 	 */
-	public void batchPushMessage(MessageTypeEnum messageType, Map<Integer, String> receivers, Date triggerTime,
+	public void batchPushMessage(MessageTypeEnum messageType, Map<Integer,String> receivers, Date triggerTime,
 			Integer readStatus, String url,String jpushType,String sound,String channelId, Object... args);
 
-	/**
-	 * 发送消息
-	 * @param messageSender 消息发送者
-	 * @param userId 用户编号
-	 * @param mode 消息模式
-	 * @param title 消息标题
-	 * @param content 消息内容
-	 * @param receiver 消息接受者
-	 * @param triggerTime 触发时间
-	 * @param readStatus 阅读状态(0-未读  1-已读)
-	 * @param url 超链接地址
-	 * @param group 组
-	 * @return
-	 */
-	public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus,
-			String url, String group,String jpushType);
 
 	/**
 	 * 发送验证码
@@ -158,7 +139,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param receiver 消息接受者
 	 * @return
 	 */
-	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver);
+	public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver,String jpushType);
 
 	/**
 	 * 获取已经发送的验证码
@@ -169,13 +150,6 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	public String getSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr);
 
 	/**
-	 * 删除已有的key
-	 * @param type
-	 * @param mobileNOOrEmailAddr
-	 */
-	public void delSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr);
-
-	/**
 	 * 查询消息未读条数
 	 * @param type
 	 * @param userId
@@ -189,14 +163,14 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param status 状态/1 已读,0未读
 	 * @return
 	 */
-	public int updateStatus(Integer userId, int status,String jpushType);
+	public Boolean updateStatus(Integer userId, int status,String jpushType);
 
 	/**
 	 * 修改单条消息状态
 	 */
-	public int updateOneStatus(Long id, int status);
+	public Boolean updateOneStatus(Long id);
 	
-	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type);
+	public List<CbsMessageWrapper.SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type);
 
 	/**
 	 * 发送私聊消息
@@ -220,5 +194,8 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	void pushWaitSendMessageTask();
 
 	//获取短信验证码
-	PageInfo<SysMessageVo.SysMessageList> queryMessageCode(SysMessageVo.SysMessageQuery query);
+	R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage>> queryMessageCode(SysMessageVo.SysMessageQuery query);
+
+
+    PageInfo<SysMessageWrapper.Message> queryPage(SysMessageQueryInfo queryInfo);
 }

+ 7 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/im/ImGroupCoreService.java

@@ -75,6 +75,13 @@ public interface ImGroupCoreService {
      */
     void groupQuit(List<GroupMemberWrapper.ImGroupMember> imGroupMembers, String groupId) throws Exception;
 
+
+    /**
+     * 批量退群
+     *
+     */
+    void groupQuit(List<GroupMemberWrapper.ImGroupMember> imGroupMembers, String groupId,Boolean quit) throws Exception;
+
     /**
      * 用户主动退出群聊
      * @param userId 用户信息
@@ -93,14 +100,6 @@ public interface ImGroupCoreService {
     void saveImGroupMemberList(String groupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
 
     /**
-     * 添加群组成员
-     * @param imGroupId 群组主键ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
-
-    /**
      * 群成员加入
      * @param imGroupId 群主ID
      * @param groupMembers 群成员
@@ -109,15 +108,6 @@ public interface ImGroupCoreService {
     void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
 
     /**
-     * 添加进入群组
-     *
-     * @param userId 用户ID
-     * @param clientType 客户端类型
-     * @param imGroupId 群组ID
-     */
-    void groupJoin(Long userId, String clientType, String imGroupId) throws Exception;
-
-    /**
      * 转让群主
      *
      * @param groupId 群组ID

+ 90 - 72
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -8,12 +8,15 @@ 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.microsvc.toolkit.middleware.im.message.TencentWrapper;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.service.ImGroupMemberPlusService;
+import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.ImGroupPlusService;
 import com.ym.mec.biz.service.im.ImGroupCoreService;
 import com.ym.mec.common.exception.BizException;
@@ -47,6 +50,8 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     private ImGroupMemberPlusService imGroupMemberPlusService;
     @Resource
     private ImGroupNoticeDao imGroupNoticeDao;
+    @Resource
+    private ImGroupMemberService imGroupMemberService;
 
     /**
      * IM 用户注册
@@ -179,8 +184,24 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
         if (userInfo != null) {
             // 添加群成员到当前群组
-            imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),
-                    getImGroupMembers(groupMembers));
+            List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
+            imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),imGroupMembers);
+            //设置管理员
+            groupMembers.stream().filter(o -> StringUtils.isNotEmpty(o.getGroupRoleType()) && !StringUtils.equals(o.getGroupRoleType(),"Member")).forEach(o -> {
+                try {
+                    imPluginContext.getPluginService().groupAdminCreate(o.getGroupId(), o.getImUserId());
+                } catch (Exception e) {
+                    log.error("groupAdminCreate error", e);
+                }
+            });
+            //转让群主
+            imGroupMembers.stream().filter(GroupMemberWrapper.ImGroupMember::getIsAdmin).forEach(o -> {
+                try {
+                    changeGroupOwner(imGroup.getGroupId(), o.getImUserId(), null);
+                } catch (Exception e) {
+                    log.error("changeGroupOwner error", e);
+                }
+            });
         }
         return group.getId();
     }
@@ -198,7 +219,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             imGroupMember.setRoleType(o.getRoleType());
             imGroupMember.setType(EFriendRoleType.getByName(o.getRoleType()).name());
             imGroupMember.setTenantId(o.getTenantId());
-
+            imGroupMember.setGroupRoleType(o.getGroupRoleType());
             return imGroupMember;
         }).collect(Collectors.toList());
 
@@ -260,14 +281,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      */
     @Override
     public void groupDismiss(String groupId) throws Exception {
-
-        // 判定登录用户是否为群主
-        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            return;
-        }
-
-
         // 获取群成员
         List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberPlusService.lambdaQuery()
                 .select(ImGroupMemberPlus::getUserId, ImGroupMemberPlus::getImGroupId, ImGroupMemberPlus::getRoleType)
@@ -286,7 +299,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         imGroupNoticeDao.deleteByImGroupId(groupId);
 
         // 解散群
-        imPluginContext.getPluginService().groupDismiss(imGroup.getId(), getImGroupMembers(groupMembers));
+        imPluginContext.getPluginService().groupDismiss(groupId, getImGroupMembers(groupMembers));
 
     }
 
@@ -345,6 +358,14 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      */
     @Override
     public void groupQuit(List<GroupMemberWrapper.ImGroupMember> imGroupMembers, String groupId) throws Exception {
+        groupQuit(imGroupMembers, groupId, true);
+    }
+        /**
+         * 批量退群
+         *
+         */
+    @Override
+    public void groupQuit(List<GroupMemberWrapper.ImGroupMember> imGroupMembers, String groupId,Boolean quit) throws Exception {
 
 
         // 判定登录用户是否为群主
@@ -379,7 +400,9 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
                 .eq(ImGroupPlus::getId, imGroup.getId())
                 .set(ImGroupPlus::getMemberNum, count)
                 .update();
-        imPluginContext.getPluginService().groupQuit(imGroup.getId(), imGroupMembers);
+        if (quit) {
+            imPluginContext.getPluginService().groupQuit(imGroup.getId(), imGroupMembers);
+        }
 
     }
 
@@ -441,34 +464,31 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
             // 过滤出需要添加到群组的成员
             groupMembers = groupMembers.stream().filter(ImGroupMemberWrapper.ImGroupMember::getGroupJoin).collect(Collectors.toList());
-
             // 添加群成员到当前群组
-            imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
+            List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
+            imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), imGroupMembers);
+            //设置管理员
+            groupMembers.stream().filter(o -> StringUtils.isNotEmpty(o.getGroupRoleType()) && !StringUtils.equals(o.getGroupRoleType(),"Member")).forEach(o -> {
+                try {
+                    imPluginContext.getPluginService().groupAdminCreate(imGroupId, o.getImUserId());
+                } catch (Exception e) {
+                    log.error("groupAdminCreate error", e);
+                }
+            });
+            //转让群主
+            imGroupMembers.stream().filter(GroupMemberWrapper.ImGroupMember::getIsAdmin).forEach(o -> {
+                try {
+                    changeGroupOwner(imGroup.getId(), o.getImUserId(), null);
+                } catch (Exception e) {
+                    log.error("changeGroupOwner error", e);
+                }
+            });
 
             // 自动激活用户
             asyncRegisterUser(groupMembers);
         }
     }
 
-    /**
-     * 添加群组成员
-     *
-     * @param imGroupId    群组主键ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    @Override
-    public void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
-
-        // 群组信息
-        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        // 添加群组成员信息
-        saveImGroupMemberList(imGroup.getId(), groupMembers);
-    }
 
     /**
      * 群成员加入
@@ -485,16 +505,30 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         if (Objects.isNull(imGroup)) {
             throw new BizException("群组不存在");
         }
-
         // 添加群组成员信息
         if (CollectionUtils.isEmpty(groupMembers)) {
             // 群成员为空,直接忽略
             return;
         }
-
         // 添加群成员到当前群组
-        imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
-
+        List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
+        imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(),imGroupMembers);
+        //设置管理员
+        groupMembers.stream().filter(o -> StringUtils.isNotEmpty(o.getGroupRoleType()) && !StringUtils.equals(o.getGroupRoleType(),"Member")).forEach(o -> {
+            try {
+                imPluginContext.getPluginService().groupAdminCreate(imGroupId, o.getImUserId());
+            } catch (Exception e) {
+                log.error("groupAdminCreate error", e);
+            }
+        });
+        //转让群主
+        imGroupMembers.stream().filter(GroupMemberWrapper.ImGroupMember::getIsAdmin).forEach(o -> {
+            try {
+                changeGroupOwner(imGroup.getId(), o.getImUserId(), null);
+            } catch (Exception e) {
+                log.error("changeGroupOwner error", e);
+            }
+        });
         // 自动激活用户
         asyncRegisterUser(groupMembers);
 
@@ -517,39 +551,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             .update();
     }
 
-
-    /**
-     * 添加进入群组
-     *
-     * @param userId     用户ID
-     * @param clientType 客户端类型
-     * @param imGroupId  群组ID
-     */
-    @Override
-    public void groupJoin(Long userId, String clientType, String imGroupId) throws Exception {
-
-        // 群组信息
-        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        List<ImGroupMemberWrapper.ImGroupMember> imGroupMembers = new ArrayList<>();
-        ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember
-                .builder()
-                .groupId(imGroup.getId())
-                .userId(userId)
-                .clientType(clientType)
-                .imUserId(getImUserId(userId.toString(),clientType))
-                .isAdmin(false)
-                .roleType(clientType)
-                .tenantId(imGroup.getTenantId())
-                .build();
-        imGroupMembers.add(groupMember);
-
-        saveImGroupMemberList(imGroupId, imGroupMembers);
-    }
-
     /**
      * 转让群主
      *
@@ -559,9 +560,26 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      */
     @Override
     public void changeGroupOwner(String groupId, String newOwner, String oldOwner) throws Exception {
-
+        if(StringUtils.isEmpty(oldOwner)){
+            //获取群主信息
+            TencentWrapper.GroupInfoResult groupInfo = imPluginContext.getPluginService().getGroupInfo(groupId);
+            List<TencentWrapper.GroupInfo> groupInfoList = groupInfo.getGroupInfo();
+            if(CollectionUtils.isNotEmpty(groupInfoList)){
+                oldOwner = groupInfoList.get(0).getOwnerAccount();
+            }
+        }
         // 转主群主
         imPluginContext.getPluginService().changeGroupOwner(groupId, newOwner, oldOwner);
+        //设置管理员
+        if(StringUtils.isNotEmpty(oldOwner)){
+            ImGroupMemberPlus one = imGroupMemberPlusService.lambdaQuery().eq(ImGroupMemberPlus::getImGroupId, groupId)
+                    .eq(ImGroupMemberPlus::getUserId, Long.parseLong(oldOwner)).last("LIMIT 1").one();
+            if(Objects.nonNull(one)){
+                if(StringUtils.isNotEmpty(one.getGroupRoleType()) && !StringUtils.equals(one.getGroupRoleType(),"Member")){
+                    imPluginContext.getPluginService().groupAdminCreate(groupId, oldOwner);
+                }
+            }
+        }
     }
 
     /**

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CbsUserServiceImpl.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.service.impl;
+
+import com.dayaedu.cbs.common.enums.EClientType;
+import com.dayaedu.cbs.openfeign.service.CbsUserService;
+import com.dayaedu.cbs.openfeign.wrapper.user.CbsUserWrapper;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class CbsUserServiceImpl implements CbsUserService {
+
+    @Resource
+    private TeacherDao teacherDao;
+
+    @Override
+    public List<CbsUserWrapper.User> list(CbsUserWrapper.UserQuery query) {
+        if (query == null || CollectionUtils.isEmpty(query.getUserIds())) {
+            return new ArrayList<>();
+        }
+        List<Integer> userIds = new ArrayList<>();
+        for (Long userId : query.getUserIds()) {
+            userIds.add(userId.intValue());
+        }
+        List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(userIds);
+        List<CbsUserWrapper.User> result = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(userDtoList)){
+            for (SimpleUserDto simpleUserDto : userDtoList) {
+                CbsUserWrapper.User user = new CbsUserWrapper.User();
+                user.setId(simpleUserDto.getUserId().longValue());
+                user.setUsername(query.getClientType() == null || query.getClientType() == EClientType.STUDENT ?
+                        simpleUserDto.getNickName() : Optional.ofNullable(simpleUserDto.getUserName()).orElse(simpleUserDto.getNickName()));
+                user.setPhone(simpleUserDto.getPhone());
+                result.add(user);
+            }
+        }
+        return result;
+    }
+
+}

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

@@ -335,7 +335,7 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         String orderSubject = "6.1考级活动";
         String receiver = "degree";
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         Map payMap = payService.getPayMap(
                 orderAmount,
@@ -431,7 +431,7 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "6.1考级支付失败");
             }
 
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
                     studentPaymentOrder.getActualAmount(), "6.1考级活动");
             return false;
         }
@@ -469,7 +469,7 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
             return true;
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
         String pushUrl = baseApiUrl + "/#/childrenPayment?dHlwZT0x";
 
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.CHILDREN_DAY_NOTICE_PUSH,

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -168,7 +169,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private CooperationOrganService cooperationOrganService;
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
-
+    @Autowired
+    private ImPluginContext imPluginContext;
     @Autowired
     private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
 
@@ -260,7 +262,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             teacherIdList.add(tm.getUserId());
         }
 
-        if (teacherMapperList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(teacherMapperList)) {
             classGroupTeacherMapperService.getDao().classGroupTeachersInsert(teacherMapperList);
         }
 
@@ -285,12 +287,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             userIdList.add(Integer.parseInt(userId));
         }
-        if (classGroupStudentList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(classGroupStudentList)) {
             classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentList);
         }
 
         // 加入IM群组
-        if (userIdList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(userIdList)) {
             addImGroup(classGroup, userIdList, teacherIdList);
         } else {
             MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
@@ -304,7 +306,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             if (musicGroup.getTransactionTeacherId() != null) {
                 userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
             }
-            if (teacherIdList != null && teacherIdList.size() > 0) {
+            if (CollectionUtils.isNotEmpty(teacherIdList)) {
                 for (Integer teacherId : teacherIdList) {
                     userRoleMap.put(teacherId, "指导老师");
                 }
@@ -1552,7 +1554,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //删除班级
         classGroupDao.delete(classGroupId);
         //删除im群组
-        imGroupService.cancel(classGroupId.toString());
+        imGroupService.dismissGroup(classGroupId.toString(),null);
     }
 
     @Override
@@ -1732,7 +1734,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     teacherClassGroupDto.setHasReport(true);
                     String studyReportUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_STUDY_REPORT_URL);
                     if (courseScheduleEvaluate.getVersion().equals(2)) {
-                        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL);
+                        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL_MTEACHER);
                         teacherClassGroupDto.setStudyReportUrl(teacherBaseUrl + "/#/studyReportNew?id=" + courseScheduleEvaluate.getId() + "&classGroupId=" + courseScheduleEvaluate.getClassGroupId());
                     } else {
                         teacherClassGroupDto.setStudyReportUrl(studyReportUrl + teacherClassGroupDto.getClassGroupId());
@@ -2487,7 +2489,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //冲突校验
             courseScheduleList = autoAdjust(classGroup4MixDto, courseScheduleList, classAdjust);
 
-            courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
+            courseScheduleService.batchAddCourse(courseScheduleList);
 
             //计算每节课的课酬
             List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
@@ -3590,7 +3592,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int updateClassGroup(ClassGroup classGroup) {
+    public int updateClassGroup(ClassGroup classGroup) throws Exception {
         ClassGroup group = classGroupDao.get(classGroup.getId());
         if (Objects.isNull(group)) {
             throw new BizException("班级信息不存在");
@@ -3604,6 +3606,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (!Objects.isNull(imGroup)) {
             imGroup.setName(groupName);
             imGroupService.update(imGroup);
+            imPluginContext.getPluginService().modifyGroupInfo(imGroup.getId(),imGroup.getName(),imGroup.getImg());
         }
         return 1;
     }
@@ -3948,7 +3951,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             userRoleMap.put(userId, "");
         }
 
-        if (teacherIdList != null && teacherIdList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(teacherIdList)) {
             for (Integer teacherId : teacherIdList) {
                 userRoleMap.put(teacherId, "指导老师");
             }

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

@@ -275,7 +275,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         //生成订单编号
         String orderNo = idGenerator.generatorId("payment") + "";
         TenantOrderRecordEnum tenantEnum = TenantOrderRecordEnum.CLOUD_TEACHER;
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         Map<String, Object> payMap = new HashMap<>();
         int orderState = 0;
         //消费大于0元则拉起支付

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

@@ -370,7 +370,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         }
         Map<Integer, List<CourseReviewDto>> teacherNeedReview = practiceGroupReviews.getRows().stream().collect(Collectors.groupingBy(CourseReviewDto::getTeacherId));
 
-        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL);
+        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL_MTEACHER);
 
         String pushUrl = teacherBaseUrl + "/#/manageEvaluation";
         Map<Integer, String> userMap = new HashMap<>();

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

@@ -218,7 +218,7 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
             return;
         }
         Map<Integer, List<CourseScheduleEvaluate>> teacherEvaluates = needPostReports.stream().collect(Collectors.groupingBy(CourseScheduleEvaluate::getTeacherId));
-        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL);
+        String teacherBaseUrl = sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL_MTEACHER);
 
         String pushUrl = teacherBaseUrl + "/#/tobeReport";
         Map<Integer, String> userMap = new HashMap<>();

+ 14 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1014,7 +1014,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
 //        checkNewCourseSchedules(courseSchedules, false,false);
         createCourseScheduleName(courseSchedules);
-        courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+		this.batchAddCourse(courseSchedules);
 		courseScheduleModifyLogService.pushSchoolCourseCreate(courseSchedules.get(0));
     }
 
@@ -1026,11 +1026,21 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
         checkNewCourseSchedules(courseSchedules, false,false);
         createCourseScheduleName(courseSchedules);
-		courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+		this.batchAddCourse(courseSchedules);
 		courseScheduleModifyLogService.pushSchoolCourseCreate(courseSchedules.get(0));
     }
 
-    @Override
+	@Override
+	public void batchAddCourse(List<CourseSchedule> courseSchedules) {
+		CourseSchedule courseSchedule = courseSchedules.get(0);
+		if(courseSchedule.getId() == null){
+			courseScheduleDao.batchAddCourseSchedules(courseSchedules);
+		}else {
+			courseScheduleDao.batchAddCourseSchedulesHasId(courseSchedules);
+		}
+	}
+
+	@Override
     @Transactional(rollbackFor = Exception.class)
     public void batchUpdateCourseSchedule(List<CourseSchedule> courseSchedules, String musicGroupID) {
         if (Objects.isNull(courseSchedules) && courseSchedules.size() <= 0) {
@@ -1422,21 +1432,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         Set<Long> homeworkCourseIds = studentServeService.getTeacherHomeworkCourseIdsWithMonday(userId, classDate);
 
-        for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+		for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
             Long studentNum = studentNumCourseMap.get(courseScheduleDto.getId());
             if (Objects.nonNull(studentNum)) {
                 courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
             } else {
                 courseScheduleDto.setStudentAttendanceIsFirstTime(1);
             }
-
-//            if (now.before(courseScheduleDto.getStartClassTime())) {
-//            courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
-//            } else if (now.after(courseScheduleDto.getEndClassTime())) {
-//            courseScheduleDto.setStatus(CourseStatusEnum.OVER);
-//            } else {
-//            courseScheduleDto.setStatus(CourseStatusEnum.UNDERWAY);
-//            }
             if (Objects.nonNull(courseScheduleDto.getClassGroupId())) {
                 //                String[] studentNames = classGroupStudentMapperDao.findCourseStudentName(courseScheduleDto.getId().intValue());
                 List<StudentNameAndPhoneDto> courseStudentNameAndPhone = classGroupStudentMapperDao.findCourseStudentNameAndPhone(courseScheduleDto.getId().intValue());

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

@@ -1098,7 +1098,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
         courseScheduleTeacherSalaryDao.updateTeacherSalaryConfirmStatus(teacherSalaryIds,TeacherSalaryConfirmStatus.UNCONFIRMED);
         teacherCourseRewardDao.updateTeacherRewardConfirmStatusWithMonth(month, null, TeacherSalaryConfirmStatus.UNCONFIRMED, TenantContextHolder.getTenantId());
-        String teacherBaseUrl = sysConfigDao.findByParamName(SysConfigService.TEACHER_BASE_URL).getParanValue();
+        String teacherBaseUrl = sysConfigDao.findByParamName(SysConfigService.TEACHER_BASE_URL_MTEACHER).getParanValue();
         String notifyUrl="8?"+teacherBaseUrl+"/#/remuneration?month=" + month;
         String monthStr = DateUtil.dateToString(DateUtil.stringToDate(month, "yyyy-MM"),"M月");
         String expireDateStr = DateUtil.dateToString(DateUtil.addDays(new Date(), 2), "M月d号");

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

@@ -230,7 +230,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
             errMessage += courseTime;
             return BaseController.failed(HttpStatus.FOUND, errMessage);
         }
-        courseScheduleDao.batchAddCourseSchedules(newCourses);
+        courseScheduleService.batchAddCourse(newCourses);
 
         for (CourseSchedule courseSchedule : newCourses) {
             //课程与老师薪水表
@@ -574,7 +574,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                 }
             }
 
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
             Map<String, BigDecimal> classFee = new HashMap<>();
             classFee.put("course", amount);
             classFee.put("instrument", BigDecimal.ZERO);

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

@@ -188,7 +188,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
             return BaseController.failed(HttpStatus.CREATED, notifyMap,"恭喜您,支付成功!");
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         String receiver = "kjRegister";
         Map payMap = payService.getPayMap(

+ 9 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -383,7 +383,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             courseSchedule.setIsLock(1);
             courseSchedule.setOrganId(practiceGroupBuyParams.getOrganId());
         }
-        courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        courseScheduleService.batchAddCourse(practiceCourses);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(),practiceCourseMinutes);
         BigDecimal teacherDefaultSalary=null;
         if(Objects.nonNull(teacherDefaultPracticeGroupSalary)){
@@ -715,7 +715,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             courseSchedule.setIsLock(1);
             courseSchedule.setOrganId(practiceGroupBuyParams.getOrganId());
         }
-        courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        courseScheduleService.batchAddCourse(practiceCourses);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(),practiceCourseMinutes);
         BigDecimal teacherDefaultSalary=null;
         if(PracticeGroupType.COME_ON_PACKAGE.equals(practiceGroupBuyParams.getType())){
@@ -968,13 +968,13 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         try{
             Map<Integer, String> userMap = new HashMap<>();
             userMap.put(practiceGroup.getStudentId(), practiceGroup.getStudentId().toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_PAY_PRACTICE_BUY_SUCCESS,
                     userMap, null, 0, null, "STUDENT", groupStartTime, groupEndTime, teacherName, drillTimesOnWeek, firstCourseStartTime);
 //            SysUser student = sysUserFeignService.queryUserById(practiceGroup.getStudentId());
             SysUser student = teacherDao.getUser(practiceGroup.getStudentId());
             Map<Integer, String> userPhoneMap = new HashMap<>();
             userPhoneMap.put(practiceGroup.getStudentId(), student.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PAY_PRACTICE_BUY_SUCCESS,
                     userPhoneMap, null, 0, null, "STUDENT", groupStartTime, groupEndTime, teacherName, drillTimesOnWeek, firstCourseStartTime);
 
             String practiceType = "网管课";
@@ -993,12 +993,12 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
 
             Map<Integer, String> teacherMap = new HashMap<>();
             teacherMap.put(practiceGroup.getUserId(), practiceGroup.getUserId().toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_PRACTICE_CREATE,
                     teacherMap, null, 0, null, "TEACHER", teacher.getRealName(),
                     practiceType, practiceGroup.getName());
             Map<Integer, String> teacherPhoneMap = new HashMap<>();
             teacherPhoneMap.put(practiceGroup.getUserId(), teacher.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PRACTICE_CREATE,
                     teacherPhoneMap, null, 0, null, "TEACHER", teacher.getRealName(),
                     practiceType, practiceGroup.getName());
         }catch (Exception e){
@@ -1446,7 +1446,7 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             practiceCourses.add(courseSchedule);
         }
         practiceCourses.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
-        courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        courseScheduleService.batchAddCourse(practiceCourses);
 
         BigDecimal teacherDefaultSalary=new BigDecimal(16.67);
         for (CourseSchedule courseSchedule : practiceCourses) {
@@ -1549,12 +1549,12 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
 
             Map<Integer, String> teacherMap = new HashMap<>();
             teacherMap.put(practiceGroupBuyParams.getUserId(), practiceGroupBuyParams.getUserId().toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_PRACTICE_CREATE,
                     teacherMap, null, 0, null, "TEACHER", teacher.getRealName(),
                     practiceType, practiceGroupBuyParams.getName());
             Map<Integer, String> teacherPhoneMap = new HashMap<>();
             teacherPhoneMap.put(practiceGroupBuyParams.getUserId(), teacher.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PRACTICE_CREATE,
                     teacherPhoneMap, null, 0, null, "TEACHER", teacher.getRealName(),
                     practiceType, practiceGroupBuyParams.getName());
         }catch (Exception e){

+ 84 - 60
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -6,6 +6,29 @@ 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.EFriendRoleType;
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
+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;
@@ -504,72 +527,73 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                 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);
+                        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());
+                            if(StringUtils.isNotEmpty(imGroupModel.getUserRole())){
+                                imGroupMember.setType(EFriendRoleType.getByName(imGroupModel.getUserRole()).name());
+                            }
+                            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)
+                                    .groupRoleType(imGroupMember.getGroupRoleType())
+                                    .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));
-                                    }
+            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 {
+                            // 设置用户默认头象
+                            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));
+                                if(StringUtils.isNotEmpty(member.getRoleType())){
+                                    member.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
+                                }else {
+                                    member.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
                                 }
-                                // 腾讯云用户加群
-                                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);
                         }
                     }
                 }
-            });
-        }
+            }
+        });
         //原有员工退群
         CompletableFuture.runAsync(() ->{
             List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);

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

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dayaedu.cbs.common.enums.EClientType;
 import com.microsvc.toolkit.middleware.oss.OssPluginContext;
 import com.microsvc.toolkit.middleware.oss.impl.TencentOssPlugin;
 import com.ym.mec.biz.dal.dao.GoodsDao;
@@ -964,7 +965,7 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 		if(StringUtils.isNotEmpty(innerRepertoryWarnNum)){
 			String goodsNames = goodsDao.getInnerRepertoryWarnName(innerRepertoryWarnNum);
 			if(StringUtils.isNotEmpty(goodsNames)){
-				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SYSTEM_SMS_GOODS_REPERTORY_WARN, receivers, null, 0, null,null,
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SYSTEM_SMS_GOODS_REPERTORY_WARN, receivers, null, 0, null, EClientType.BACKEND.getCode(),
 						goodsNames,"内部");
 			}
 		}
@@ -974,7 +975,7 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 		if(StringUtils.isNotEmpty(outerRepertoryWarnNum)){
 			String goodsNames = goodsDao.getOuterRepertoryWarnName(outerRepertoryWarnNum);
 			if(StringUtils.isNotEmpty(goodsNames)){
-				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SYSTEM_SMS_GOODS_REPERTORY_WARN, receivers, null, 0, null,null,
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SYSTEM_SMS_GOODS_REPERTORY_WARN, receivers, null, 0, null,EClientType.BACKEND.getCode(),
 						goodsNames,"税务");
 			}
 		}

+ 320 - 90
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -3,13 +3,14 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
+import com.microsvc.toolkit.middleware.im.ImPluginService;
 import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
-import com.ym.mec.biz.dal.dto.im.BasicUserInfo;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
@@ -26,12 +27,13 @@ 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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.stream.Collectors;
@@ -39,41 +41,40 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
-	@Autowired
+	@Resource
 	private ImGroupMemberDao imGroupMemberDao;
-	@Autowired
+	@Resource
 	private ImGroupDao imGroupDao;
-	@Autowired
+	@Resource
 	private ImGroupService imGroupService;
-	@Autowired
+	@Resource
 	private TeacherDao teacherDao;
-	@Autowired
+	@Resource
 	private ClassGroupDao classGroupDao;
-	@Autowired
+	@Resource
 	private MusicGroupDao musicGroupDao;
-	@Autowired
+	@Resource
 	private PracticeGroupDao practiceGroupDao;
-	@Autowired
+	@Resource
 	private VipGroupDao vipGroupDao;
-	@Autowired
+	@Resource
 	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
-	@Autowired
+	@Resource
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
-	@Autowired
+	@Resource
 	private ImFeignService imFeignService;
-	@Autowired
+	@Resource
 	private ImGroupCoreService imGroupCoreService;
-	@Autowired
+	@Resource
 	private ImPluginContext imPluginContext;
-
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
 	@Override
 	public BaseDAO<Long, ImGroupMember> getDAO() {
 		return imGroupMemberDao;
 	}
 
-	public ImGroup joinGroup(String imGroupId, Integer userId, String roleType, boolean isAdmin,Map<Integer,String> userRoleMap){
+	public void joinGroup(String imGroupId, Integer userId, String roleType, boolean isAdmin, Map<Integer,String> userRoleMap){
 		int groupId = Integer.parseInt(imGroupId);
 		ClassGroup classGroup = classGroupDao.get(groupId);
 		String tags = classGroup.getName();
@@ -119,13 +120,17 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			}
 			tags = vipGroup.getName();
 		}
-		ImGroup imGroup = imGroupService.create(imGroupId, null, classGroup.getName(), tags,
+		imGroupService.create(imGroupId, null, classGroup.getName(), tags,
 				tags, tags, null, classGroup.getGroupType().getCode(), ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
 		if(userId != null){
 			join(imGroupId,userId,roleType,isAdmin);
 		}
 		join(imGroupId,userRoleMap);
-		return imGroup;
+	}
+
+	@Override
+	public ImGroupMemberDao getDao() {
+		return imGroupMemberDao;
 	}
 
 	@Override
@@ -137,27 +142,28 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			return true;
 		}
 		//检查用户是否已存在
-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userId.toString());
-		if(imGroupMemberList != null && imGroupMemberList.size() > 0){
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, userId.toString());
+		if(CollectionUtils.isNotEmpty(imGroupMemberList)){
 			return true;
 		}
-
 		ImGroupMember imGroupMember = new ImGroupMember();
 		Date date = new Date();
-
+		imGroupMember.setGroupType(imGroup.getGroupType());
 		imGroupMember.setCreateTime(date);
 		imGroupMember.setImGroupId(imGroupId);
 		imGroupMember.setIsAdmin(isAdmin);
+		SysUser user = teacherDao.getUser(userId);
 		imGroupMember.setRoleType(roleType);
+		if(StringUtils.isNotEmpty(roleType)){
+			imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+			imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
+		}else {
+			imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
+		}
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(userId);
-//		if (StringUtils.isBlank(roleType)) {
-//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
-//		} else {
-//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
-//		}
-        SysUser user = teacherDao.getUser(userId);
-        imGroupMember.setNickname(sysUserService.getImName(user));
+		//初始化群主数据
+		this.initImGroupMember(imGroupMember,imGroup.getGroupType());
 
 		imGroupMemberDao.insert(imGroupMember);
 
@@ -177,11 +183,13 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 				groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
 						.groupId(groupId)
-						.isAdmin(isAdmin)
-						.roleType(roleType)
+						.isAdmin(imGroupMember.getIsAdmin())
+						.roleType(imGroupMember.getRoleType())
+						.type(imGroupMember.getType())
 						.nickname(imGroupMember.getNickname())
 						.userId(userId.longValue())
 						.imUserId(userId.toString())
+						.groupRoleType(imGroupMember.getGroupRoleType())
 						.avatar(sysUserService.getImAvatar(user))
 						.updateTime(DateTime.now().toDate())
 						.createTime(DateTime.now().toDate())
@@ -196,6 +204,133 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	}
 
 	@Override
+	public void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType){
+		try {
+			List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupMember.getImGroupId());
+			if(CollectionUtils.isNotEmpty(members)){
+				List<String> imGroupUserIds = members.stream().map(e -> e.getId()).collect(Collectors.toList());
+				if(CollectionUtils.isNotEmpty(imGroupUserIds)){
+					if(imGroupUserIds.contains(imGroupMember.getUserId().toString())){
+						imGroupMember.setMuteFlag(true);
+					}
+				}
+			}
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		//是否有群主
+		if(!imGroupMember.getIsAdmin()){
+			ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupMember.getImGroupId());
+			if(Objects.nonNull(admin)){
+				return;
+			}
+			switch (groupType) {
+				case NORMAL:
+				case MIX:
+				case HIGH:
+				case SNAP:
+				case HIGH_ONLINE:
+				case MUSIC_NETWORK:
+				case PARENT_MEETING:
+					if("乐团主管".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+				case VIP:
+				case DEMO:
+				case PRACTICE:
+				case COMM:
+				case REPERTOIRE_PLAY:
+				case LIVE:
+					if("指导老师".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+				case TRAINING:
+					if("分部经理".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+				case SCHOOL:
+					if("乐团领队".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+					}
+					break;
+			}
+		}
+	}
+
+	@Override
+	public void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType){
+		if (CollectionUtils.isEmpty(imGroupMembers)) {
+			return;
+		}
+		String imGroupId = imGroupMembers.get(0).getImGroupId();
+		try {
+			List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupId);
+			if(CollectionUtils.isNotEmpty(members)){
+				List<String> imGroupUserIds = members.stream().map(e -> e.getId()).collect(Collectors.toList());
+				if(CollectionUtils.isNotEmpty(imGroupUserIds)){
+					for (ImGroupMember imGroupMember : imGroupMembers) {
+						if(imGroupUserIds.contains(imGroupMember.getUserId().toString())){
+							imGroupMember.setMuteFlag(true);
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+		//是否有群主
+		long count = imGroupMembers.stream().filter(e -> e.getIsAdmin()).count();
+		if(count > 0){
+			return;
+		}
+		ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupId);
+		if(Objects.nonNull(admin)){
+			return;
+		}
+		for (ImGroupMember imGroupMember : imGroupMembers) {
+			switch (groupType) {
+				case NORMAL:
+				case MIX:
+				case HIGH:
+				case SNAP:
+				case HIGH_ONLINE:
+				case MUSIC_NETWORK:
+				case PARENT_MEETING:
+					if("乐团主管".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+				case VIP:
+				case DEMO:
+				case PRACTICE:
+				case COMM:
+				case REPERTOIRE_PLAY:
+				case LIVE:
+					if("指导老师".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+				case TRAINING:
+					if("分部经理".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+				case SCHOOL:
+					if("乐团领队".equals(imGroupMember.getRoleType())){
+						imGroupMember.setIsAdmin(true);
+						return;
+					}
+					break;
+			}
+		}
+	}
+
 	@Transactional(rollbackFor = Exception.class)
 	public boolean join(String imGroupId,String roleType, boolean isAdmin,ImGroup imGroup,SysUser user) {
 		if (imGroup == null) {
@@ -206,8 +341,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			return true;
 		}
 		//检查用户是否已存在
-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), user.getId().toString());
-		if(imGroupMemberList != null && imGroupMemberList.size() > 0){
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, user.getId().toString());
+		if(CollectionUtils.isNotEmpty(imGroupMemberList)){
 			return true;
 		}
 
@@ -218,23 +353,22 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMember.setImGroupId(imGroupId);
 		imGroupMember.setIsAdmin(isAdmin);
 		imGroupMember.setRoleType(roleType);
+		if(StringUtils.isNotEmpty(roleType)){
+			imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+			imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
+		}else {
+			imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
+		}
 		imGroupMember.setUpdateTime(date);
 		imGroupMember.setUserId(user.getId());
-//		if (StringUtils.isBlank(roleType)) {
-//			imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
-//		} else {
-//			imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
-//		}
-
-
-        imGroupMember.setNickname(sysUserService.getImName(user));
+		this.initImGroupMember(imGroupMember,imGroup.getGroupType());
 		imGroupMemberDao.insert(imGroupMember);
 
 		imGroup.setMemberNum(1);
 		imGroup.setUpdateTime(date);
 		imGroupDao.update(imGroup);
 
-		String groupId = imGroup.getId().toString();
+		String groupId = imGroup.getId();
 
 		if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
 			// 融云IM用户加群
@@ -251,7 +385,9 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 						.imUserId(imGroupMember.getUserId().toString())
 						.nickname(imGroupMember.getNickname())
 						.isAdmin(imGroupMember.getIsAdmin())
+						.groupRoleType(imGroupMember.getGroupRoleType())
 						.roleType(imGroupMember.getRoleType())
+						.type(imGroupMember.getType())
 						.avatar(sysUserService.getImAvatar(user))
 					.build());
 				// 腾讯云IM用户加群
@@ -299,11 +435,12 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			if(StringUtils.isEmpty(entry.getValue())){
 				usernameIds.add(entry.getKey());
 			}else {
+				imGroupMember.setType(EFriendRoleType.getByName(entry.getValue()).name());
 				realNameIds.add(entry.getKey());
 			}
 			imGroupMember.setUpdateTime(date);
 			imGroupMember.setUserId(entry.getKey());
-//			imGroupMember.setNickname(nameIdMap.get(imGroupMember.getUserId()));
+			this.initImGroupMember(imGroupMember,imGroup.getGroupType());
 			imGroupMemberList.add(imGroupMember);
 			groupMemberList.add(new GroupMember(imGroupMember.getUserId().toString(), groupId));
 
@@ -313,20 +450,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 					.userId(imGroupMember.getUserId().longValue())
 					.imUserId(imGroupMember.getUserId().toString())
 					.isAdmin(imGroupMember.getIsAdmin())
+					.nickname(imGroupMember.getNickname())
+					.groupRoleType(imGroupMember.getGroupRoleType())
 					.roleType(imGroupMember.getRoleType())
+					.type(imGroupMember.getType())
 					.updateTime(imGroupMember.getUpdateTime())
 					.createTime(imGroupMember.getCreateTime())
 				.build());
 		}
 
 
-		if (imGroupMemberList.size() > 0) {
+		if (CollectionUtils.isNotEmpty(imGroupMemberList)) {
 			Map<Integer, String> usernameMap = new HashMap<>();
 			Map<Integer, String> realNameMap = new HashMap<>();
-			if(usernameIds.size() > 0){
+			if(CollectionUtils.isNotEmpty(usernameIds)){
 				usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(usernameIds));
 			}
-			if(realNameIds.size() > 0){
+			if(CollectionUtils.isNotEmpty(realNameIds)){
 				realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(realNameIds));
 			}
 			for (ImGroupMember imGroupMember : imGroupMemberList) {
@@ -336,6 +476,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 					imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
 				}
 			}
+			this.initImGroupMembers(imGroupMemberList,imGroup.getGroupType());
 			imGroupMemberDao.batchInsert(imGroupMemberList);
 			imGroup.setMemberNum(imGroupMemberList.size());
 			imGroup.setUpdateTime(date);
@@ -346,19 +487,19 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 				imFeignService.groupJoin(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName()));
 			} else {
 				try {
+					List<SysUser> userList = teacherDao.getUserList(groupMembers.stream().map(e -> e.getUserId()).collect(Collectors.toList()));
+					Map<Integer,SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getId, e -> e));
 					for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) {
-						// 用户昵称
-//						if (StringUtils.isBlank(item.getRoleType())) {
-//							item.setNickname(usernameMap.get(item.getUserId().intValue()));
-//						} else {
-//							item.setNickname(realNameMap.get(item.getUserId().intValue()));
-//						}
-//						item.setImUserId(item.getUserId().toString());
-                        SysUser user = teacherDao.getUser(item.getUserId().intValue());
-
-                        // 用户头像
-						item.setAvatar(sysUserService.getImAvatar(user));
-						item.setNickname(sysUserService.getImName(user));
+                        SysUser user = userMap.get(item.getUserId().intValue());
+						if (user != null) {
+							// 用户头像
+							item.setAvatar(sysUserService.getImAvatar(user));
+							if(StringUtils.isNotEmpty(item.getRoleType())){
+								item.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
+							}else {
+								item.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
+							}
+						}
 					}
 					// 腾讯云IM用户加群
 					imGroupCoreService.groupMemberJoin(groupId, groupMembers);
@@ -382,17 +523,14 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean quit(List<String> imGroupIdList, Integer userId) {
-		for (String imGroupId : imGroupIdList) {
-			quit(imGroupId, userId);
-		}
-		return true;
-	}
+	public boolean quit(String imGroupId, List<Integer> userIdList) {
+
+        return quit(imGroupId, userIdList, true);
+    }
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean quit(String imGroupId, List<Integer> userIdList) {
-
+	public boolean quit(String imGroupId, List<Integer> userIdList,Boolean quit) {
 		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
 		if (imGroup == null) {
 			return true;
@@ -434,7 +572,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		} else {
 			try {
 				// 腾讯云IM用户退群
-				imGroupCoreService.groupQuit(imGroupMembers, groupId);
+				imGroupCoreService.groupQuit(imGroupMembers, groupId,quit);
 			} catch (Exception e) {
 				log.error("腾讯云IM用户退群失败", e);
 			}
@@ -446,20 +584,31 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	public boolean updateRoleType(String imGroupId, Integer userId, String roleType) {
 		List<Integer> userIdList = new ArrayList<Integer>();
 		userIdList.add(userId);
-		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString)
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, userIdList.stream().map(Objects::toString)
 				.collect(Collectors.joining(",")));
 
-		if (imGroupMemberList == null || imGroupMemberList.size() == 0) {
+		if (CollectionUtils.isEmpty(imGroupMemberList)) {
 			throw new BizException("更新失败:找不到用户信息");
 		}
-
 		Date date = new Date();
-		for (ImGroupMember imGroupMember : imGroupMemberList) {
-			imGroupMember.setRoleType(roleType);
-			imGroupMember.setUpdateTime(date);
+		ImGroupMember imGroupMember = imGroupMemberList.get(0);
+		imGroupMember.setGroupRoleType(null);
+		imGroupMember.setRoleType(roleType);
+		imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+		imGroupMember.setUpdateTime(date);
+		ImGroup group = imGroupDao.get(imGroupId);
+		if(!imGroupMember.getIsAdmin()){
+			this.initImGroupMembers(imGroupMemberList,group.getGroupType());
+			if(imGroupMember.getIsAdmin()){
+				try {
+					imPluginContext.getPluginService().changeGroupOwner(imGroupId,imGroupMember.getUserId().toString(),null);
+				} catch (Exception e) {
+					log.error(e.getMessage());
+					throw new BizException("更新失败:设置群主异常");
+				}
+			}
 		}
-		imGroupMemberDao.batchUpdate(imGroupMemberList);
-
+		imGroupMemberDao.update(imGroupMember);
 		return true;
 	}
 
@@ -468,33 +617,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		imGroupMemberDao.batchInsert(imGroupMemberList);
 	}
 
-	@Override
-	public void batchDelete(List<ImGroupMember> imGroupMemberList) {
-		imGroupMemberDao.batchDelete(imGroupMemberList);
-	}
 
 	@Override
 	public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) {
 		imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList);
 	}
 
-	@Override
-	public boolean isExit(String groupId, String userId) {
-		return imGroupMemberDao.isExit(groupId,userId);
-	}
 
 	@Override
 	public void delRepeat() {
 		imGroupMemberDao.delRepeat();
 	}
 
-	@Override
-	public List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId) {
-		return imGroupMemberDao.queryMembers(groupId, userIdList, tenantId);
-	}
-
     @Override
     public PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
+		if(StringUtils.isEmpty(queryInfo.getImGroupId())){
+			throw new BizException("参数校验失败");
+		}
 		PageInfo<ImGroupMemberDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
@@ -520,4 +659,95 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		userIds.stream().forEach(e->userRoleMap.put(e,roleType));
 		this.join(imGroupId,userRoleMap);
 	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void groupMemberMute(ImGroupMemberWrapper.GroupMemberMute member) {
+		try {
+			// 更新群成员禁言状态
+			imGroupMemberDao.updateGroupMemberMute(member.getGroupId(), member.getUserIds(), member.getGroupMute());
+			ImPluginService pluginService = imPluginContext.getPluginService();
+			if (member.getGroupMute()) {
+				// 群成员禁言
+				pluginService.groupUserGagCreate(member.getUserIds(), member.getGroupId(), -1L);
+			} else {
+				// 群成员解除禁言
+				pluginService.groupUserGagRemove(member.getUserIds(), member.getGroupId());
+			}
+
+		} catch (Exception e) {
+			log.error("群成员禁言失败", e);
+			throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员禁言失败,请联系管理员!");
+		}
+    }
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void groupMemberRole(ImGroupMemberWrapper.GroupMemberRole member) {
+		try {
+			// 更新群成员角色
+			imGroupMemberDao.batchUpdateGroupMemberRole(member.getGroupId(), member.getUserIds(), member.getGroupRoleType().getCode());
+
+			for (List<String> items : Lists.partition(member.getUserIds(), 50)) {
+
+				items.parallelStream().forEach(item -> {
+
+					try {
+						ImPluginService pluginService = imPluginContext.getPluginService();
+						switch (member.getGroupRoleType()) {
+							case Owner:
+								// 设置群主
+								pluginService.changeGroupOwner(member.getGroupId(), item,null);
+								break;
+							case Admin:
+								// 设置管理员
+								pluginService.groupAdminCreate(member.getGroupId(), item);
+								break;
+							case Member:
+								// 取消管理员
+								pluginService.groupAdminRemove(member.getGroupId(), item);
+								break;
+							default:
+								break;
+						}
+					} catch (Exception e) {
+						log.error("群成员身份更新异常", e);
+						throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员身份更新异常,请联系管理员!");
+					}
+				});
+			}
+
+		} catch (Exception e) {
+			log.error("群成员身份更新异常", e);
+			throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员身份更新异常,请联系管理员!");
+		}
+	}
+
+	@Override
+	public void groupMemberRole1(ImGroupMemberWrapper.GroupMemberRole member) {
+		ImPluginService pluginService = imPluginContext.getPluginService();
+		try {
+			for (String userId : member.getUserIds()) {
+				switch (member.getGroupRoleType()) {
+					case Owner:
+						// 设置群主
+						pluginService.changeGroupOwner(member.getGroupId(), userId,null);
+						break;
+					case Admin:
+						// 设置管理员
+						pluginService.groupAdminCreate(member.getGroupId(), userId);
+						break;
+					case Member:
+						// 取消管理员
+						pluginService.groupAdminRemove(member.getGroupId(), userId);
+						break;
+					default:
+						break;
+				}
+			}
+			imGroupMemberDao.batchUpdateGroupMemberRole(member.getGroupId(), member.getUserIds(), member.getGroupRoleType().getCode());
+		}catch (Exception e) {
+			log.error("群成员身份更新异常", e);
+		}
+	}
 }

+ 160 - 69
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -21,6 +21,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.im.ClientEnum;
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
@@ -28,16 +29,7 @@ import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.dal.wrapper.ImHistoryMessageWrapper;
 import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
-import com.ym.mec.biz.service.CooperationOrganService;
-import com.ym.mec.biz.service.EmployeeService;
-import com.ym.mec.biz.service.ImGroupMemberService;
-import com.ym.mec.biz.service.ImGroupService;
-import com.ym.mec.biz.service.SchoolStaffService;
-import com.ym.mec.biz.service.StudentService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysUserService;
-import com.ym.mec.biz.service.TeacherService;
-import com.ym.mec.biz.service.UploadFileService;
+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.UploadReturnBean;
@@ -73,7 +65,9 @@ import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.*;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -195,21 +189,27 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
     private String createImGroup(ImGroup imGroup, Integer userId, String roleType) throws Exception {
         ImGroupWrapper.ImGroup group = ImGroupWrapper.ImGroup.from(JSON.toJSONString(imGroup));
-
         //记录群成员
         com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper.ImGroupMember groupMember = null;
         if (userId != null) {
             SysUser sysUser = teacherDao.getUser(userId);
-            groupMember = ImGroupMemberWrapper.ImGroupMember
-                    .builder()
-                    .userId(userId.longValue())
-                    .clientType("")
-                    .avatar(sysUserService.getImAvatar(sysUser))
-                    .nickname(sysUserService.getImName(sysUser))
-                    .roleType(roleType)
-                    .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
-                    .isAdmin(true)
-                    .build();
+            groupMember = new ImGroupMemberWrapper.ImGroupMember();
+            groupMember.setUserId(userId.longValue());
+            groupMember.setClientType("");
+            groupMember.setAvatar(sysUserService.getImAvatar(sysUser));
+            groupMember.setRoleType(roleType);
+            groupMember.setTenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()));
+            groupMember.setGroupRoleType(StringUtils.isEmpty(roleType)?EImGroupRoleType.Member.getCode():EImGroupRoleType.Admin.getCode());
+            if(StringUtils.isNotEmpty(roleType)){
+                groupMember.setType(EFriendRoleType.getByName(roleType).name());
+                groupMember.setNickname(StringUtils.isEmpty(sysUser.getRealName())?sysUser.getUsername():sysUser.getRealName());
+            }else {
+                groupMember.setNickname(StringUtils.isEmpty(sysUser.getUsername())?sysUser.getRealName():sysUser.getUsername());
+            }
+            if(StringUtils.equals(roleType,"乐团领队")){
+                groupMember.setIsAdmin(true);
+                groupMember.setGroupRoleType(EImGroupRoleType.Owner.getCode());
+            }
         }
         return imGroupCoreService.groupCreate(groupMember, group);
     }
@@ -238,8 +238,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         imGroup.setType(type);
         imGroup.setGroupType(imGroupDto.getGroupType());
         imGroup.setUpdateTime(date);
-
-
         try {
             String imGroupId = createImGroup(imGroup, null, null);
             imGroup.setId(imGroupId);
@@ -247,12 +245,9 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             log.error("群组创建失败",e);
             throw new BizException("群组创建失败");
         }
-
+        //当前用户不知道具体角色,由于是通过后台添加,所以默认给了乐团主管
         List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId());
-        if(currentUserId != null){
-            groupMemberList.get(0).setRoleType("乐团主管");
-        }
-
+        imGroupMemberService.initImGroupMembers(groupMemberList,imGroup.getGroupType());
         addImGroupMember(groupId, groupMemberList);
         return groupId;
     }
@@ -268,9 +263,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                     .avatar(sysUserService.getImAvatar(user))
                     .nickname(sysUserService.getImName(user))
                     .isAdmin(groupMember.getIsAdmin())
+                    .groupRoleType(groupMember.getGroupRoleType())
                     .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
                     .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
                     .roleType(groupMember.getRoleType())
+                    .type(groupMember.getType())
                     .build());
         }
         try {
@@ -409,9 +406,28 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void dismissGroup(String imGroupId) {
+    public void dismissGroup(String groupId,String userId) {
+        ImGroup imGroup = imGroupService.get(groupId);
+        if (imGroup == null) {
+            throw new BizException("群组不存在");
+        }
+        if(StringUtils.isNotEmpty(userId)){
+            ImGroupMember admin = imGroupMemberService.getDao().getAdmin(groupId);
+            if (admin == null) {
+                throw new BizException("群主信息不存在");
+            }
+            if (!StringUtils.equals(admin.getUserId().toString(), userId)) {
+                throw new BizException("当前操作人不是群主");
+            }
+        }
+        // 删除群成员
+        imGroupMemberDao.deleteByImGroupId(groupId);
+        // 删除群公告
+        imGroupNoticeDao.deleteByImGroupId(groupId);
+        // 删除群信息
+        imGroupDao.delete(groupId);
         try {
-            imGroupCoreService.groupDismiss(imGroupId);
+            imPluginContext.getPluginService().groupDismiss(groupId,new ArrayList<>());
         } catch (Exception e) {
             log.error("解散群组失败",e);
             throw new BizException("解散群组失败");
@@ -503,7 +519,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         List<ImGroup> groups = imGroups.stream().filter(imGroup -> imGroup.getMemberNum().equals(1)).collect(Collectors.toList());
         for (ImGroup group : groups) {
             try {
-                dismissGroup(group.getId());
+                dismissGroup(group.getId(),userId.toString());
             } catch (Exception e) {
                 log.error("解散群组失败{},{}", userId, group.getId(), e);
             }
@@ -553,25 +569,32 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             initSchoolGroup(imGroup.getSchoolId());
         } else {
             SysUser user = teacherDao.getUser(userId);
-            ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
-                    .userId(userId.longValue())
-                    .nickname(sysUserService.getImName(user))
-                    .avatar(sysUserService.getImAvatar(user))
-                    .build();
-            imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
-            // 更新群主流程
-            if (schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
-                groupChangeOwner(userId, imGroup.getId());
-            }
-
             ImGroupMember imGroupMember = new ImGroupMember();
             imGroupMember.setImGroupId(imGroup.getId());
             imGroupMember.setUserId(userId);
-            imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER));
             imGroupMember.setRoleType(schoolStaffType.getDescribe());
             imGroupMember.setNickname(name);
-            imGroupMember.setType(EFriendRoleType.getByName(schoolStaffType.getDescribe()).name());
+            if (StringUtils.isNotEmpty(schoolStaffType.getDescribe())) {
+                imGroupMember.setType(EFriendRoleType.getByName(schoolStaffType.getDescribe()).name());
+            }
             imGroupMember.setTenantId(imGroup.getTenantId());
+            imGroupMemberService.initImGroupMember(imGroupMember,imGroup.getGroupType());
+
+            ImGroupMemberWrapper.ImGroupMember groupMember = new ImGroupMemberWrapper.ImGroupMember();
+            groupMember.setUserId(userId.longValue());
+            groupMember.setImUserId(userId.toString());
+            groupMember.setNickname(name);
+            groupMember.setAvatar(sysUserService.getImAvatar(user));
+            groupMember.setGroupId(imGroupMember.getImGroupId());
+            groupMember.setType(imGroupMember.getType());
+            groupMember.setRoleType(imGroupMember.getRoleType());
+            groupMember.setGroupRoleType(imGroupMember.getGroupRoleType());
+            groupMember.setIsAdmin(imGroupMember.getIsAdmin());
+            imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
+            // 更新群主流程
+            /*if (schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
+                groupChangeOwner(userId, imGroup.getId());
+            }*/
             imGroupMemberDao.insert(imGroupMember);
 
         }
@@ -650,13 +673,16 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             imGroupMember.setUserId(groupMember.getUserId().intValue());
             imGroupMember.setIsAdmin(false);
             imGroupMember.setRoleType(groupMember.getRoleType());
-            imGroupMember.setType(EFriendRoleType.getByName(groupMember.getRoleType()).name());
+            imGroupMember.setNickname(groupMember.getNickname());
+            if (StringUtils.isNotEmpty(groupMember.getRoleType())) {
+                imGroupMember.setType(EFriendRoleType.getByName(groupMember.getRoleType()).name());
+            }
             imGroupMember.setTenantId(imGroup.getTenantId());
             imGroupMemberList.add(imGroupMember);
             groupMember.setImUserIdFormat(false);
         }
 
-
+        imGroupMemberService.initImGroupMembers(imGroupMemberList,imGroup.getGroupType());
         addImGroupMember(imGroup.getId(), imGroupMemberList);
         updateImGroupUserNumber(imGroup.getId());
     }
@@ -734,13 +760,9 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         if (CollectionUtils.isEmpty(imGroupIds)) {
             return;
         }
-
         List<ImGroup> groupList = imGroupDao.getByIds(imGroupIds);
-
         // id 分组
         Map<String, ImGroup> map = groupList.stream().collect(Collectors.toMap(ImGroup::getId, Function.identity()));
-
-
         for (String musicGroupId : imGroupIds) {
             ImGroup imGroup = map.get(musicGroupId);
             if (imGroup == null) {
@@ -749,23 +771,33 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             try {
 
                 SysUser user = teacherDao.getUser(userId.intValue());
-                ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember.builder()
-                    .userId(userId)
-                    .nickname(sysUserService.getImName(user))
-                    .avatar(sysUserService.getImAvatar(user))
-                    .build();
-                imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
-
                 ImGroupMember imGroupMember = new ImGroupMember();
                 imGroupMember.setImGroupId(imGroup.getId());
                 imGroupMember.setUserId(userId.intValue());
                 imGroupMember.setIsAdmin(false);
                 imGroupMember.setRoleType(roleType);
-                imGroupMember.setNickname(sysUserService.getImName(user));
+                if(StringUtils.isNotEmpty(roleType)){
+                    imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
+                    imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
+                }else {
+                    imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
+                }
                 imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
                 imGroupMember.setTenantId(imGroup.getTenantId());
-                imGroupMemberDao.insert(imGroupMember);
+                imGroupMemberService.initImGroupMember(imGroupMember,imGroup.getGroupType());
+
+                ImGroupMemberWrapper.ImGroupMember groupMember = new ImGroupMemberWrapper.ImGroupMember();
+                groupMember.setUserId(userId);
+                groupMember.setNickname(imGroupMember.getNickname());
+                groupMember.setAvatar(sysUserService.getImAvatar(user));
+                groupMember.setRoleType(roleType);
+                groupMember.setType(imGroupMember.getType());
+                groupMember.setGroupId(imGroupMember.getImGroupId());
+                groupMember.setGroupRoleType(imGroupMember.getGroupRoleType());
+                groupMember.setIsAdmin(imGroupMember.getIsAdmin());
+                imGroupCoreService.groupMemberJoin(imGroup.getId(), Lists.newArrayList(groupMember));
 
+                imGroupMemberDao.insert(imGroupMember);
                 updateImGroupUserNumber(imGroup.getId());
             } catch (Exception e) {
                 log.error("加入群聊失败",e);
@@ -837,7 +869,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void schoolJoinGroup(Integer cooperationOrganId, String imGroupId) {
-
         CooperationOrgan cooperationOrgan = cooperationOrganService.get(cooperationOrganId);
         if (cooperationOrgan == null) {
             return;
@@ -846,21 +877,13 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         if (CollectionUtils.isEmpty(schoolStaffs)) {
             return;
         }
-
-
         // 查询群是否存在
         ImGroup imGroup = imGroupDao.get(imGroupId);
         if (imGroup == null) {
             return;
         }
-
-
         SchoolStaff schoolStaff = schoolStaffs.get(0);
-
-
-
         addImGroup(Lists.newArrayList(imGroup.getId()),schoolStaff.getUserId(),ESchoolStaffType.ORCHESTRA_LEADER.getDescribe());
-
     }
 
 
@@ -1901,6 +1924,74 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void muteAll(ImGroupWrapper.GroupMuteAll groupMute) {
+        // 更新群组禁言状态
+        ImGroup imGroup = imGroupService.get(groupMute.getGroupId());
+        if (imGroup == null) {
+            throw new BizException("群组不存在");
+        }
+        ImGroupWrapper.ConfigJson from = ImGroupWrapper.ConfigJson.from(imGroup.getConfigJson());
+        from.setMute(groupMute.getMuteAll());
+        imGroup.setConfigJson(JSON.toJSONString(from));
+        imGroup.setMemberNum(0);
+        imGroupService.update(imGroup);
+
+        // 调用IM接口
+        try {
+            if (Boolean.TRUE.equals(groupMute.getMuteAll())) {
+                imPluginContext.getPluginService().groupBanCreate(groupMute.getGroupId());
+            } else {
+                imPluginContext.getPluginService().groupBanRemove(groupMute.getGroupId());
+            }
+        } catch (Exception e) {
+            log.error("群组禁言状态修改失败", e);
+            throw new BizException("群组禁言状态修改失败");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void transferOwner(ImGroupWrapper.GroupTransferOwner groupTransferOwner) {
+        ImGroup imGroup = imGroupService.get(groupTransferOwner.getImGroupId());
+        if (imGroup == null) {
+            throw new BizException("群组不存在");
+        }
+        ImGroupMember admin = imGroupMemberService.getDao().getAdmin(groupTransferOwner.getImGroupId());
+        if (admin == null) {
+            throw new BizException("群主信息不存在");
+        }
+        if (!StringUtils.equals(admin.getUserId().toString(), groupTransferOwner.getCurrentOwner())) {
+            throw new BizException("当前操作人不是群主");
+        }
+        List<ImGroupMember> imGroupMembers = imGroupMemberService.getDao().queryByImGroupIdAndUserId(groupTransferOwner.getImGroupId(), groupTransferOwner.getUserId());
+        if (CollectionUtils.isEmpty(imGroupMembers)) {
+            throw new BizException("新群主不在群组中");
+        }
+        ImGroupMember imGroupMember = imGroupMembers.get(0);
+        if (!Objects.equals(imGroupMember.getGroupRoleType(), EImGroupRoleType.Admin.getCode())) {
+            throw new BizException("新群主不是管理员");
+        }
+        // 更新群主
+        imGroupMember.setIsAdmin(true);
+        imGroupMemberService.update(imGroupMember);
+        admin.setGroupRoleType(EImGroupRoleType.Admin.getCode());
+        admin.setIsAdmin(false);
+        imGroupMemberService.update(admin);
+        // 调用IM接口
+        try {
+            //设置成群主
+            imPluginContext.getPluginService().changeGroupOwner(groupTransferOwner.getImGroupId(), groupTransferOwner.getUserId(),groupTransferOwner.getCurrentOwner());
+            //设置成管理员
+            imPluginContext.getPluginService().groupAdminCreate(admin.getImGroupId(),admin.getUserId().toString());
+        } catch (Exception e) {
+            log.error("转让群主失败", e);
+            throw new BizException("转让群主失败");
+        }
+    }
+
+
     private TencentRequest.MessageBody getTimGifElem(String remoteUr,int size,int width,int height) {
         if (StringUtils.isEmpty(remoteUr) && size == 0 && width == 0 && height == 0) {
             return null;

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

@@ -2473,10 +2473,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private void sendRoomLiveState(SysUser user, ImLiveBroadcastRoom room, MessageTypeEnum en) {
         String baseUrl;
         if (SysUserType.EDUCATION.equals(room.getClientType())) {
-            baseUrl=sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL);
+            baseUrl=sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL_MANAGER);
             return;
         } else {
-            baseUrl=sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL);
+            baseUrl=sysConfigDao.findConfigValue(SysConfigService.TEACHER_BASE_URL_MTEACHER);
         }
         if (StringUtils.isBlank(baseUrl)) {
             log.error("sendRoomState error: teacherBaseUrl is null");

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

@@ -189,7 +189,7 @@ public class InspectionItemPlanServiceImpl extends BaseServiceImpl<Long, Inspect
             userMap.put(userId, userId.toString());
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL);
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL_MANAGER);
         String pushUrl = baseApiUrl + "/#/musicInspection";
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SYSTEM_PUSH_SMS_INSPECTION_NOTICE,
                 userMap, null, 0, "8?" + pushUrl, "SYSTEM");

+ 125 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareServiceImpl.java

@@ -4,24 +4,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
+import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.mapper.LessonCoursewareMapper;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.LessonCourseware;
+import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
+import com.ym.mec.biz.dal.mapper.LessonCoursewareMapper;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.LessonCoursewareService;
-import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.LessonCoursewareUserMapperService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-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.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -34,14 +38,35 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
     public LessonCoursewareMapper getDao() {
         return this.baseMapper;
     }
-
-    @Autowired
+    @Resource
     private CoursewareFeignService coursewareFeignService;
     @Resource
+    private LessonCoursewareUserMapperService lessonCoursewareUserMapperService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
     private SubjectDao subjectDao;
+    @Resource
+    private TeacherDao teacherDao;
 
     @Override
     public IPage<LessonCoursewareWrapper.LessonCoursewareDto> selectPage(IPage<LessonCoursewareWrapper.LessonCoursewareDto> page, LessonCoursewareWrapper.LessonCoursewareQuery query) {
+        if(StringUtils.isNotEmpty(query.getSearch())){
+            List<LessonCoursewareWrapper.LessonCoursewareDto> dtos = baseMapper.list(query);
+            if(CollectionUtils.isNotEmpty(dtos)){
+                List<Long> lessonCoursewareIds = dtos.stream().map(LessonCoursewareWrapper.LessonCoursewareDto::getLessonCoursewareId).collect(Collectors.toList());
+                CbsLessonCoursewareWrapper.LambdaQuery lambdaQuery = new CbsLessonCoursewareWrapper.LambdaQuery();
+                lambdaQuery.setIds(lessonCoursewareIds);
+                lambdaQuery.setName(query.getSearch());
+                List<CbsLessonCoursewareWrapper.Entity> entityList = coursewareFeignService.lessonCoursewareLambdaQuery(lambdaQuery).feignData();
+                if(CollectionUtils.isNotEmpty(entityList)){
+                    List<Long> collect = entityList.stream().map(e -> e.getId()).collect(Collectors.toList());
+                    query.setLessonCoursewareIds(collect);
+                }else {
+                    return page;
+                }
+            }
+        }
         List<LessonCoursewareWrapper.LessonCoursewareDto> dtos = baseMapper.selectPage(page, query);
         if(CollectionUtils.isNotEmpty(dtos)){
             List<Long> lessonCoursewareIds = dtos.stream().map(LessonCoursewareWrapper.LessonCoursewareDto::getLessonCoursewareId).collect(Collectors.toList());
@@ -51,27 +76,111 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
             if(CollectionUtils.isNotEmpty(entityList)){
                 Map<Long, CbsLessonCoursewareWrapper.Entity> entityMap = entityList.stream().collect(Collectors.groupingBy(CbsLessonCoursewareWrapper.Entity::getId,
                         Collectors.collectingAndThen(Collectors.toList(), e -> e.get(0))));
+                List<Integer> collect = dtos.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
+                String subjectIds = collect.stream().map(e -> String.valueOf(e)).collect(Collectors.joining(","));
+                List<Map<Integer, String>> subjectNames = subjectDao.queryNameByIds(subjectIds);
+                Map<Integer, String> subjectNameMap = MapUtil.convertMybatisMap(subjectNames);
+
+                List<Integer> userIds = dtos.stream().map(e -> e.getCreateBy()).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+                userIds.addAll(dtos.stream().map(e -> e.getUpdateBy()).filter(Objects::nonNull).distinct().collect(Collectors.toList()));
+                userIds.removeAll(Collections.singleton(null));
+                Map<Integer, String> userNameMap = new HashMap<>();
+                if(CollectionUtils.isNotEmpty(userIds)){
+                    userNameMap = MapUtil.convertMybatisMap(teacherDao.queryNameByIdList(userIds));
+                }
                 for (LessonCoursewareWrapper.LessonCoursewareDto e : dtos) {
                     CbsLessonCoursewareWrapper.Entity entity = entityMap.get(e.getLessonCoursewareId());
                     if (Objects.isNull(entity)) {
                         continue;
                     }
+                    e.setCreateName(userNameMap.get(e.getCreateBy()));
+                    e.setUpdateName(userNameMap.get(e.getUpdateBy()));
+                    e.setSubjectName(subjectNameMap.get(e.getSubjectId()));
                     e.setName(entity.getName());
                     e.setCover(entity.getCoverImg());
                     e.setCourseNum(entity.getCourseNum());
                 }
             }
-            List<Integer> collect = dtos.stream().map(e -> e.getSubjectId()).collect(Collectors.toList());
-            if(CollectionUtils.isNotEmpty(collect)){
-                String subjectIds = collect.stream().map(e -> String.valueOf(e)).collect(Collectors.joining(","));
-                List<Map<Integer, String>> subjectNames = subjectDao.queryNameByIds(subjectIds);
-                Map<Integer, String> subjectNameMap = MapUtil.convertMybatisMap(subjectNames);
-                for (LessonCoursewareWrapper.LessonCoursewareDto e : dtos) {
-                    e.setSubjectName(subjectNameMap.get(e.getSubjectId()));
+        }
+        return page.setRecords(dtos);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateRangeType(LessonCoursewareWrapper.UpdateRange updateRange) {
+        LessonCourseware lessonCourseware = this.getById(updateRange.getLessonCoursewareId());
+        if (Objects.isNull(lessonCourseware)) {
+            throw new RuntimeException("课件不存在");
+        }
+        lessonCourseware.setStudentRangeType(updateRange.getStudentRangeType());
+        lessonCourseware.setTeacherRangeType(updateRange.getTeacherRangeType());
+        lessonCourseware.setUpdateBy(sysUserService.getUserId());
+        this.updateById(lessonCourseware);
+        lessonCoursewareUserMapperService.lambdaUpdate()
+                .eq(LessonCoursewareUserMapper::getLessonCoursewareId, updateRange.getLessonCoursewareId()).remove();
+        if(StringUtils.equals(updateRange.getStudentRangeType(), "RANGE") && CollectionUtils.isNotEmpty(updateRange.getStudentIds())){
+            List<LessonCoursewareUserMapper> list = updateRange.getStudentIds().stream().map(e -> {
+                LessonCoursewareUserMapper mapper = new LessonCoursewareUserMapper();
+                mapper.setLessonCoursewareId(updateRange.getLessonCoursewareId());
+                mapper.setUserId(e);
+                mapper.setUserType("STUDENT");
+                return mapper;
+            }).collect(Collectors.toList());
+            lessonCoursewareUserMapperService.saveBatch(list);
+        }
+        if(StringUtils.equals(updateRange.getTeacherRangeType(), "RANGE") && CollectionUtils.isNotEmpty(updateRange.getTeacherIds())){
+            List<LessonCoursewareUserMapper> list = updateRange.getTeacherIds().stream().map(e -> {
+                LessonCoursewareUserMapper mapper = new LessonCoursewareUserMapper();
+                mapper.setLessonCoursewareId(updateRange.getLessonCoursewareId());
+                mapper.setUserId(e);
+                mapper.setUserType("TEACHER");
+                return mapper;
+            }).collect(Collectors.toList());
+            lessonCoursewareUserMapperService.saveBatch(list);
+        }
+    }
+
+    @Override
+    public LessonCoursewareWrapper.UpdateRangeDetail getRangeType(Integer lessonCoursewareId) {
+        LessonCourseware lessonCourseware = this.getById(lessonCoursewareId);
+        if (Objects.isNull(lessonCourseware)) {
+            throw new RuntimeException("课件不存在");
+        }
+        R<CbsLessonCoursewareWrapper.LessonCourseware> lessonCoursewareR = coursewareFeignService.lessonCoursewareDetail(lessonCourseware.getLessonCourseId());
+        if (!lessonCoursewareR.getCode().equals(200)) {
+            throw new BizException("获取课件详情失败 {}", lessonCoursewareR.getMessage());
+        }
+        LessonCoursewareWrapper.UpdateRangeDetail detail = new LessonCoursewareWrapper.UpdateRangeDetail();
+        detail.setName(lessonCoursewareR.getData().getName());
+        detail.setLessonCoursewareId(lessonCoursewareId);
+        detail.setStudentRangeType(lessonCourseware.getStudentRangeType());
+        detail.setTeacherRangeType(lessonCourseware.getTeacherRangeType());
+        if(lessonCourseware.getStudentRangeType().equals("RANGE")){
+            List<LessonCoursewareUserMapper> studentList = lessonCoursewareUserMapperService.lambdaQuery()
+                    .eq(LessonCoursewareUserMapper::getLessonCoursewareId, lessonCoursewareId)
+                    .eq(LessonCoursewareUserMapper::getUserType, "STUDENT").list();
+            if(CollectionUtils.isNotEmpty(studentList)){
+                List<Integer> studentIds = studentList.stream().map(LessonCoursewareUserMapper::getUserId).collect(Collectors.toList());
+                List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(studentIds);
+                if (CollectionUtils.isNotEmpty(userDtoList)) {
+                    for (SimpleUserDto userDto : userDtoList) {
+                        userDto.setUserName(userDto.getNickName());
+                    }
                 }
+                detail.setStudentList(userDtoList);
             }
         }
-        return page.setRecords(dtos);
+        if(lessonCourseware.getTeacherRangeType().equals("RANGE")){
+            List<LessonCoursewareUserMapper> teacherList = lessonCoursewareUserMapperService.lambdaQuery()
+                    .eq(LessonCoursewareUserMapper::getLessonCoursewareId, lessonCoursewareId)
+                    .eq(LessonCoursewareUserMapper::getUserType, "TEACHER").list();
+            if(CollectionUtils.isNotEmpty(teacherList)){
+                List<Integer> teacherIds = teacherList.stream().map(LessonCoursewareUserMapper::getUserId).collect(Collectors.toList());
+                List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(teacherIds);
+                detail.setTeacherList(userDtoList);
+            }
+        }
+        return detail;
     }
 
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareUserMapperServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
+import com.ym.mec.biz.dal.mapper.LessonCoursewareUserMapperMapper;
+import com.ym.mec.biz.service.LessonCoursewareUserMapperService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LessonCoursewareUserMapperServiceImpl extends ServiceImpl<LessonCoursewareUserMapperMapper, LessonCoursewareUserMapper> implements LessonCoursewareUserMapperService {
+
+    private final static Logger log = LoggerFactory.getLogger(LessonCoursewareUserMapperServiceImpl.class);
+
+
+    @Override
+    public LessonCoursewareUserMapperMapper getDao() {
+        return this.baseMapper;
+    }
+
+}
+

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

@@ -183,7 +183,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					Map<Integer,String> userMap = new HashMap<>(1);
 					userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
 					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-							MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
+							MessageTypeEnum.SMS_SYSTEM_REMIND_EDUCATION_COURSE_TIME,
 							userMap,
 							null,
 							0,
@@ -193,7 +193,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					Map<Integer,String> userMap1 = new HashMap<>(1);
 					userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
 					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-							MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
+							MessageTypeEnum.PUSH_SYSTEM_REMIND_EDUCATION_COURSE_TIME,
 							userMap1,
 							null,
 							0,
@@ -221,7 +221,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 					userMap1.put(studentId,studentId.toString());
 				}
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-						MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
+						MessageTypeEnum.SMS_STUDENT_MEMBER_RENEW_MESSAGE,
 						userMap,
 						null,
 						0,
@@ -229,7 +229,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 						null,memberName,pushMemberRenewAgain);
 
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-						MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
+						MessageTypeEnum.PUSH_STUDENT_MEMBER_RENEW_MESSAGE,
 						userMap1,
 						null,
 						0,

+ 12 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -971,7 +971,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             return notifyMap;
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         Map<String, BigDecimal> classFee = new HashMap<>();
         classFee.put("course", BigDecimal.ZERO);
@@ -1098,7 +1098,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 }
             }
         }
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             studentPaymentRouteOrderService.addRouteOrder(orderNo, organId, balance);
@@ -1472,7 +1472,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
             orderSubject = "乐团相关费用";
         }
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         Map payMap = payService.getPayMap(
                 amount,
@@ -1989,14 +1989,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         //删除续费记录
         musicGroupStudentFeeDao.deleteByMusicGroupId(musicGroupId, null);
 
-        // 删除课表
-        courseScheduleDao.deleteCourseSchedulesByMusicGroupID(musicGroupId, GroupType.MUSIC.getCode());
-        // 删除每节课的课酬
-        courseScheduleStudentPaymentService.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC);
-        courseScheduleTeacherSalaryDao.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC.getCode());
-
-        //删除考勤
-        teacherAttendanceDao.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC.getCode());
+		// 删除每节课的课酬
+		courseScheduleStudentPaymentService.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC);
+		courseScheduleTeacherSalaryDao.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC.getCode());
+		//删除考勤
+		teacherAttendanceDao.deleteByMusicGroupId(musicGroupId, GroupType.MUSIC.getCode());
+		// 删除课表
+		courseScheduleDao.deleteCourseSchedulesByMusicGroupID(musicGroupId, GroupType.MUSIC.getCode());
 
         /*// 查询已缴费信息
         studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, SUCCESS);
@@ -3314,9 +3313,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 push.put(userId, userId.toString());
                 yimei.put(userId, studentRegistration.getParentsPhone());
                 // 发送续费结果通知
-                sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_MUSIC_GROUP_RENEW_SUCCESS, push, null, 0, "1", "STUDENT",
+                sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_MUSIC_GROUP_RENEW_SUCCESS, push, null, 0, "1", "STUDENT",
                         studentRegistration.getName(), studentPaymentOrder.getActualAmount());
-                sysMessageService.batchSendMessage(MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_MUSIC_GROUP_RENEW_SUCCESS, yimei, null, 0, "1", "",
+                sysMessageService.batchSendMessage(MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_MUSIC_GROUP_RENEW_SUCCESS, yimei, null, 0, "1", "",
                         studentRegistration.getName(), studentPaymentOrder.getActualAmount());
             }
             return true;

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

@@ -191,7 +191,7 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
             courseSchedule.setIsLock(0);
             courseSchedule.setOrganId(student.getOrganId());
         }
-        courseScheduleDao.batchAddCourseSchedules(courses);
+        courseScheduleService.batchAddCourse(courses);
         TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = teacherDefaultMusicGroupSalaryDao.findByTeacherAndCourseType(onlineMusicGroupCourseInfo.getTeacherId(), CourseSchedule.CourseScheduleType.MUSIC_NETWORK.getCode());
         if(Objects.isNull(teacherDefaultMusicGroupSalary)){
             throw new BizException("请设置教师课酬");

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

@@ -112,7 +112,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
 
             //签名验证
             checkSing(payParam);
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
             if(studentPaymentOrder.getType() == MALL_BUY){
                 String paymentChannelStr = sysConfigDao.findConfigValue(SysConfigService.PAYMENT_CHANNEL);
                 if(StringUtils.isBlank(paymentChannelStr)) {
@@ -181,7 +181,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
 
         //签名验证
         checkSing(payParam);
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         payParam.setNotifyUrl(baseApiUrl + "/api-web/tenantInfo/callback/" + payParam.getOrderNo());
         
         //获取支付数据

+ 18 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -1611,12 +1611,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         Map<Integer, String> teacherMap = new HashMap<>();
         teacherMap.put(practiceGroup.getUserId(), practiceGroup.getUserId().toString());
-        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_PRACTICE_CREATE,
                 teacherMap, null, 0, null, "TEACHER",
                 teacher.getRealName(), practiceType, practiceGroup.getName());
         Map<Integer, String> teacherPhoneMap = new HashMap<>();
         teacherPhoneMap.put(practiceGroup.getUserId(), teacher.getPhone());
-        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PRACTICE_CREATE,
                 teacherPhoneMap, null, 0, null, "TEACHER",
                 teacher.getRealName(), practiceType, practiceGroup.getName());
 
@@ -2493,7 +2493,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseSchedule.setIsLock(1);
             courseSchedule.setOrganId(practiceGroupBuyParams.getOrganId());
         }
-        courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        courseScheduleService.batchAddCourse(practiceCourses);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(), practiceCourseMinutes);
         BigDecimal teacherDefaultSalary = null;
         if (Objects.nonNull(teacherDefaultPracticeGroupSalary)) {
@@ -2612,7 +2612,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             }
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         Map<String, BigDecimal> classFee = new HashMap<>();
         classFee.put("course", amount);
         classFee.put("instrument", BigDecimal.ZERO);
@@ -2929,7 +2929,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseSchedule.setIsLock(1);
             courseSchedule.setOrganId(practiceGroupBuyParams.getOrganId());
         }
-        courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        courseScheduleService.batchAddCourse(practiceCourses);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(), practiceCourseMinutes);
         BigDecimal teacherDefaultSalary = null;
         if (Objects.nonNull(teacherDefaultPracticeGroupSalary)) {
@@ -3078,7 +3078,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             }
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         Map<String, BigDecimal> classFee = new HashMap<>();
         classFee.put("course", amount);
         classFee.put("instrument", BigDecimal.ZERO);
@@ -3250,12 +3250,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             if (drillTimesOnWeek != null) {
                 Map<Integer, String> userMap = new HashMap<>();
                 userMap.put(practiceGroup.getStudentId(), practiceGroup.getStudentId().toString());
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS,
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_PAY_PRACTICE_BUY_SUCCESS,
                         userMap, null, 0, null, "STUDENT", groupStartTime, groupEndTime, teacherName, drillTimesOnWeek, firstCourseStartTime);
                 SysUser student = teacherDao.getUser(practiceGroup.getStudentId());
                 Map<Integer, String> userPhoneMap = new HashMap<>();
                 userPhoneMap.put(practiceGroup.getStudentId(), student.getPhone());
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_PAY_PRACTICE_BUY_SUCCESS,
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PAY_PRACTICE_BUY_SUCCESS,
                         userPhoneMap, null, 0, null, "STUDENT", groupStartTime, groupEndTime, teacherName, drillTimesOnWeek, firstCourseStartTime);
             }
 
@@ -3275,12 +3275,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
             Map<Integer, String> teacherMap = new HashMap<>();
             teacherMap.put(practiceGroup.getUserId(), practiceGroup.getUserId().toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_PRACTICE_CREATE,
                     teacherMap, null, 0, null, "TEACHER",
                     teacher.getRealName(), practiceType, practiceGroup.getName());
             Map<Integer, String> teacherPhoneMap = new HashMap<>();
             teacherPhoneMap.put(practiceGroup.getUserId(), teacher.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PUSH_PRACTICE_CREATE,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TEACHER_SMS_PRACTICE_CREATE,
                     teacherPhoneMap, null, 0, null, "TEACHER",
                     teacher.getRealName(), practiceType, practiceGroup.getName());
         } catch (Exception e) {
@@ -3590,7 +3590,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             }
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         Map<String, BigDecimal> classFee = new HashMap<>();
         classFee.put("course", newOrder.getActualAmount());
         classFee.put("instrument", BigDecimal.ZERO);
@@ -3720,7 +3720,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             return;
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
 
         for (CourseScheduleEvaluate report : reports) {
             PracticeGroup userFreePracticeGroup = practiceGroupDao.get(Long.valueOf(report.getMusicGroupId()));
@@ -3740,14 +3740,14 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             if (pushType.equals("ALL") || pushType.equals("JIGUANG")) {
                 Map<Integer, String> userMap = new HashMap<>();
                 userMap.put(userFreePracticeGroup.getStudentId(), userFreePracticeGroup.getStudentId().toString());
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT,
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_PRACTICE_COMPLETED_STUDY_REPORT,
                         userMap, null, 0, pushUrl.insert(0, "5?").toString(), "STUDENT", pushUrl.toString());
             }
 
             if (pushType.equals("ALL") || pushType.equals("SMS")) {
                 Map<Integer, String> userPhoneMap = new HashMap<>();
                 userPhoneMap.put(userFreePracticeGroup.getStudentId(), student.getPhone());
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_PRACTICE_COMPLETED_STUDY_REPORT,
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PRACTICE_COMPLETED_STUDY_REPORT,
                         userPhoneMap, null, 0, null, "STUDENT", HttpUtil.getSortUrl(smsUrl.toString()));
             }
             report.setIsPushed(1);
@@ -3864,7 +3864,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         List<Map<Integer, String>> userNeedRemindPracticeIdMaps = practiceGroupDao.getUserNeedRemindPracticeIdMap(needRemindStudentIds);
         if (!CollectionUtils.isEmpty(userNeedRemindPracticeIdMaps)) {
             Map<Integer, String> userNeedRemindPracticeIdMap = MapUtil.convertIntegerMap(userNeedRemindPracticeIdMaps);
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
             String pushUrl = baseApiUrl + "/#/auditionActive/1?groupId=";
             for (Map.Entry<Integer, String> integerStringEntry : userNeedRemindPracticeIdMap.entrySet()) {
                 Map<Integer, String> userMap = new HashMap<>();
@@ -4292,7 +4292,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             LOGGER.error("[{}]小课购买协议生成错误:{}", practiceGroup.getId(), e.getCause());
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         //分类费用 course,instrument,accessories,other
         Map<String, BigDecimal> classFee = new HashMap<>();
         classFee.put("course", amount);
@@ -4478,7 +4478,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         String orderSubject = "营销活动";
         String receiver = "activity";
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         Map payMap = payService.getPayMap(
                 activityFee,
@@ -4811,7 +4811,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseSchedule.setIsLock(0);
             courseSchedule.setOrganId(practiceGroupBuyParams.getOrganId());
         }
-        courseScheduleDao.batchAddCourseSchedules(practiceCourses);
+        courseScheduleService.batchAddCourse(practiceCourses);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(), practiceCourseMinutes);
         BigDecimal teacherDefaultSalary = null;
         if (Objects.nonNull(teacherDefaultPracticeGroupSalary)) {

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

@@ -171,14 +171,14 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             Integer userId = replacementInstrumentActivity.getUserId();
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
             String pushUrl = baseApiUrl + "/#/questionGoodsSale?id=";
             userMap.put(userId, userId.toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_REPLACEMENT_PAY,
                     userMap, null, 0, "5?" + pushUrl + replacementInstrumentActivity.getId(), "STUDENT", goods.getBrand(), "");
 
             userPhoneMap.put(replacementInstrumentActivity.getUserId(), replacementInstrumentActivity.getMobileNo());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_REPLACEMENT_PAY,
                     userPhoneMap, null, 0, null, null, goods.getBrand(), HttpUtil.getSortUrl(pushUrl + replacementInstrumentActivity.getId()));
         }
         return replacementInstrumentActivity;
@@ -255,14 +255,14 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             Integer userId = replacementInstrumentActivity.getUserId();
-            String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+            String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
             String pushUrl = baseApiUrl + "/#/questionGoodsSale?id=";
             userMap.put(userId, userId.toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_REPLACEMENT_PAY,
                     userMap, null, 0, "5?" + pushUrl + replacementInstrumentActivity.getId(), "STUDENT", goods.getBrand(), "");
 
             userPhoneMap.put(replacementInstrumentActivity.getUserId(), replacementInstrumentActivity.getMobileNo());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_REPLACEMENT_PAY,
                     userPhoneMap, null, 0, null, null, goods.getBrand(), HttpUtil.getSortUrl(pushUrl + replacementInstrumentActivity.getId()));
         }
         return replacementInstrumentActivity;
@@ -396,7 +396,7 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
         String orderSubject = "乐器置换";
         String receiver = "replacement";
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         Map payMap = payService.getPayMap(
                 amount,
@@ -506,7 +506,7 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
             }
             sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
 
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
                     studentPaymentOrder.getActualAmount(), "乐器置换");
             return false;
         }

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

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentCooperationQueryInfo;
 import com.ym.mec.biz.service.ReplacementInstrumentCooperationService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -64,17 +65,17 @@ public class ReplacementInstrumentCooperationServiceImpl extends BaseServiceImpl
         replacementInstrumentActivityDao.openPay(id);
 
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
         String pushUrl = baseApiUrl + "/#/questionGoodsSale?id=";
         for (ReplacementInstrumentActivityStatDto pushUser : pushUsers) {
             Map<Integer, String> userMap = new HashMap<>();
             Map<Integer, String> userPhoneMap = new HashMap<>();
             userMap.put(pushUser.getUserId(), pushUser.getUserId().toString());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_REPLACEMENT_PAY,
                     userMap, null, 0, "5?" + pushUrl + pushUser.getId(), "STUDENT", pushUser.getBrand(), "");
 
             userPhoneMap.put(pushUser.getUserId(), pushUser.getMobileNo());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_REPLACEMENT_PAY,
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_REPLACEMENT_PAY,
                     userPhoneMap, null, 0, null, null, pushUser.getBrand(), HttpUtil.getSortUrl(pushUrl + pushUser.getId()));
         }
 

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import java.util.List;
 
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,9 +40,9 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 	}
 
 	@Override
-	public boolean sendValidCode(String mobile) {
+	public boolean sendValidCode(String mobile,String jpushType) {
 		SysUser sysUser = sysUserFeignService.queryUserByMobile(mobile);
-		Integer userId = null;
+		Integer userId = -1;
 		if (sysUser != null) {
 			if(sysUser.getLockFlag() == 9 || sysUser.getLockFlag() == 1 || sysUser.getDelFlag() == YesOrNoEnum.YES) {
 				throw new BizException("账号已冻结,请联系管理员");
@@ -54,11 +55,11 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 			times = Integer.parseInt(sysConfig.getParanValue());
 		}
 		// 十分钟内只能发3条
-		List<SysMessage> list = sysMessageService.queryUserInRecentMinList(mobile, 10, MessageSendMode.SMS);
+		List<CbsMessageWrapper.SysMessage> list = sysMessageService.queryUserInRecentMinList(mobile, 10, MessageSendMode.SMS);
 		if (list != null && list.size() >= times) {
 			throw new BizException("对不起,您发送太频繁请稍后重试!");
 		}
-		sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile);
+		sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.AWSMS, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile,jpushType);
 		return true;
 	}
 

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

@@ -157,9 +157,9 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
                 sysUserCashAccountDetailService.insert(paymentDetail);
             }
 
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_SUCCESS, map, null, 0, "1", "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_SUCCESS, map, null, 0, "1", "STUDENT",
                     studentPaymentOrder.getActualAmount(), info.getTitle());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_SUCCESS, yimei, null, 0, "1", "",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_SPORADIC_PAYMENT_SUCCESS, yimei, null, 0, "1", "",
                     studentPaymentOrder.getActualAmount(), info.getTitle());
             return true;
         }
@@ -173,9 +173,9 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, info.getTitle() + "支付失败");
             }
             sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, "", "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, "", "STUDENT",
                     studentPaymentOrder.getActualAmount(), info.getTitle());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, yimei, null, 0, "", "",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_SPORADIC_PAYMENT_FAILED, yimei, null, 0, "", "",
                     studentPaymentOrder.getActualAmount(), info.getTitle());
             return false;
         }

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

@@ -187,7 +187,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         String orderSubject = "乐保服务";
         String receiver = "maintenance";
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         Map payMap = payService.getPayMap(
                 amount,
@@ -295,7 +295,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐保购买支付失败");
             }
             sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
                     studentPaymentOrder.getActualAmount(), "乐保购买");
             return false;
         }
@@ -339,7 +339,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         if (studentInstruments.size() <= 0) {
             return false;
         }
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL_MDAYA);
         String pushUrl = baseApiUrl + "#/leBao";
         for (StudentInstrument studentInstrument : studentInstruments) {
             Map<Integer, String> userMap = new HashMap<>();

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

@@ -196,7 +196,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             studentPaymentOrderDetailService.allocateAndAdd(details, studentPaymentOrder.getCouponRemitFee());
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
 
         //logger.info("XXX-createOrder ---> cashAmount:{}, balance:{}", cashAmount, cashAmount.compareTo(BigDecimal.ZERO));
         if (cashAmount.compareTo(BigDecimal.ZERO) == 0) {
@@ -1332,7 +1332,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             return notifyMap;
         }
 
-        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
         //获取支付渠道
         /*String paymentChannelStr = sysConfigDao.findConfigValue(SysConfigService.PAYMENT_CHANNEL);
         if(StringUtils.isBlank(paymentChannelStr)) {

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

@@ -1349,13 +1349,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 Map<Integer, String> map = new HashMap<>(1);
                 map.put(studentPaymentOrder.getUserId(), studentRegistration.getParentsPhone());
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-                        MessageTypeEnum.STUDENT_SMS_PUSH_PAYMENT_SUCCESS, map, null, 0, null, "",
+                        MessageTypeEnum.STUDENT_SMS_PAYMENT_SUCCESS, map, null, 0, null, "",
                         studentRegistration.getName(), studentPaymentOrder.getActualAmount());
                 //push
                 Map<Integer, String> map1 = new HashMap<>(1);
                 map1.put(studentPaymentOrder.getUserId(), studentPaymentOrder.getUserId().toString());
                 sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-                        MessageTypeEnum.STUDENT_SMS_PUSH_PAYMENT_SUCCESS, map1, null, 0, null, "STUDENT",
+                        MessageTypeEnum.STUDENT_PUSH_PAYMENT_SUCCESS, map1, null, 0, null, "STUDENT",
                         studentRegistration.getName(), studentPaymentOrder.getActualAmount());
             }
             try {

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

@@ -1263,7 +1263,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐器维修支付失败");
             }
             sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
                     studentPaymentOrder.getActualAmount(), "乐器维修");
             return false;
         }

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

@@ -534,7 +534,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 userMap1.put(studentId,studentId.toString());
             }
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-                    MessageTypeEnum.PUSH_EXPERIENCE_MEMBERSHIP_MESSAGE,
+                    MessageTypeEnum.SMS_EXPERIENCE_MEMBERSHIP_MESSAGE,
                     userMap,
                     null,
                     0,

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

@@ -990,7 +990,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "声部更改支付失败");
             }
             sysCouponCodeService.quit(studentPaymentOrder.getCouponCodeId());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
                     studentPaymentOrder.getActualAmount(), "声部更换");
             return false;
         }

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä