Просмотр исходного кода

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

# Conflicts:
#	mec-application/src/main/resources/exportColumnMapper.ini
zouxuan 1 год назад
Родитель
Сommit
b293615cc2
100 измененных файлов с 1406 добавлено и 1965 удалено
  1. 16 3
      mec-application/src/main/java/com/ym/mec/student/controller/ActivityController.java
  2. 2 2
      mec-application/src/main/java/com/ym/mec/student/controller/CloudCoachPaymentProgramController.java
  3. 106 9
      mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java
  4. 44 15
      mec-application/src/main/java/com/ym/mec/student/controller/MemberRankController.java
  5. 33 0
      mec-application/src/main/java/com/ym/mec/student/controller/MemberRankSettingController.java
  6. 21 4
      mec-application/src/main/java/com/ym/mec/student/controller/MusicSheetController.java
  7. 17 1
      mec-application/src/main/java/com/ym/mec/student/controller/StudentController.java
  8. 10 0
      mec-application/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java
  9. 18 138
      mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  10. 32 11
      mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  11. 13 0
      mec-application/src/main/java/com/ym/mec/student/controller/SysConfigController.java
  12. 10 0
      mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreAccompanimentController.java
  13. 21 0
      mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreController.java
  14. 7 0
      mec-application/src/main/java/com/ym/mec/student/controller/open/OpenMusicSheetController.java
  15. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  16. 1 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java
  17. 7 1
      mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java
  18. 19 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/MusicSheetController.java
  19. 16 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/StudentController.java
  20. 7 0
      mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenMusicSheetController.java
  21. 8 0
      mec-application/src/main/java/com/ym/mec/vo/MusicSheetVo.java
  22. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java
  23. 49 16
      mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java
  24. 7 0
      mec-application/src/main/java/com/ym/mec/web/controller/LessonExaminationController.java
  25. 28 0
      mec-application/src/main/java/com/ym/mec/web/controller/MemberRankOrganizationFeeMapperController.java
  26. 86 14
      mec-application/src/main/java/com/ym/mec/web/controller/MemberRankSettingController.java
  27. 3 3
      mec-application/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java
  28. 19 0
      mec-application/src/main/java/com/ym/mec/web/controller/MusicSheetController.java
  29. 37 28
      mec-application/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  30. 49 0
      mec-application/src/main/java/com/ym/mec/web/controller/StudentMemberUpdateLogController.java
  31. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java
  32. 8 0
      mec-application/src/main/java/com/ym/mec/web/controller/TaskController.java
  33. 4 1
      mec-application/src/main/java/com/ym/mec/web/controller/TenantConfigController.java
  34. 17 0
      mec-application/src/main/java/com/ym/mec/web/controller/education/EduStudentController.java
  35. 6 0
      mec-application/src/main/java/com/ym/mec/web/controller/open/OpenMusicSheetController.java
  36. 27 27
      mec-application/src/main/resources/exportColumnMapper.ini
  37. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  38. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  39. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MemberRankOrganizationFeeMapperDao.java
  40. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MemberRankPrivilegesDao.java
  41. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MemberRankSettingDao.java
  42. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderMemberDao.java
  43. 6 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  44. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDao.java
  45. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonTrainingDetailMapper.java
  46. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberTimeDao.java
  47. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberUpdateLogDao.java
  48. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicScoreDao.java
  49. 3 153
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java
  50. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java
  51. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationDetailDto.java
  52. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto.java
  53. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto1.java
  54. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java
  55. 6 48
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MemberPayParamDto.java
  56. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentBaseCalender.java
  57. 7 359
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java
  58. 11 16
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java
  59. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java
  60. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto1.java
  61. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDto.java
  62. 30 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java
  63. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageBaseInfoOfMusicGroupDto.java
  64. 7 428
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java
  65. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TenantInfoDto.java
  66. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java
  67. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherStudent.java
  68. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java
  69. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java
  70. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java
  71. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankCategoryMapper.java
  72. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankCourseTypeMapper.java
  73. 9 113
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java
  74. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderBase.java
  75. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderMember.java
  76. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java
  77. 21 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java
  78. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberTime.java
  79. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberUpdateLog.java
  80. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java
  81. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java
  82. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScore.java
  83. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScoreAccompaniment.java
  84. 8 45
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TenantConfigDetail.java
  85. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TenantMemberRankSetting.java
  86. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java
  87. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CalenderBaseServiceEnum.java
  88. 8 7
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  89. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java
  90. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java
  91. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PeriodEnum.java
  92. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/MemberRankCategoryMapperMapper.java
  93. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/MemberRankCourseTypeMapperMapper.java
  94. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/TenantMemberRankSettingMapper.java
  95. 3 47
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudCoachPaymentProgramQueryInfo.java
  96. 4 96
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java
  97. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MemberPrivilegesItemQueryInfo.java
  98. 4 127
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.java
  99. 5 160
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java
  100. 2 56
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentSignQueryInfo.java

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

@@ -15,12 +15,11 @@ import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -52,6 +51,8 @@ public class ActivityController extends BaseController {
     private MusicGroupPlanMakingService musicGroupPlanMakingService;
     @Autowired
     private SubjectService subjectService;
+    @Autowired
+    private MemberRankSettingService memberRankSettingService;
 
     @ApiOperation("活动购买")
     @PostMapping(value = "/buy")
@@ -194,11 +195,23 @@ public class ActivityController extends BaseController {
         Map<String, String> categoryMap = vipGroupCategoryDao.findConditionCategorys().stream().collect(Collectors.toMap(e-> e.getId().toString(), ConditionDto::getName));
         vipGroupActivity.setVipGroupCategoryNames(categoryMap.get(vipGroupActivity.getVipGroupCategoryIdList()));
         vipGroupActivity.setGiveCategoryName(categoryMap.get(vipGroupActivity.getGiveCategoryId()));
+        if (vipGroupActivity.getMemberRankId() != null) {
+            MemberRankSetting rankSetting = memberRankSettingService.get(vipGroupActivity.getMemberRankId());
+            if(rankSetting != null){
+                vipGroupActivity.setMemberRankName(rankSetting.getName());
+            }
+        }
+        if (vipGroupActivity.getGiveMemberRankId() != null) {
+            MemberRankSetting rankSetting = memberRankSettingService.get(vipGroupActivity.getGiveMemberRankId());
+            if(rankSetting != null){
+                vipGroupActivity.setGiveMemberRankName(rankSetting.getName());
+            }
+        }
         //如果是固定金额
         if(vipGroupActivity.getFixedCourseNumFlag()){
             vipGroupActivity.setDisplayPrice(vipGroupActivity.getMarketPrice());
         }else {
-            vipGroupActivity.setDisplayPrice(vipGroupActivity.getSinglePrice().multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP));
+            vipGroupActivity.setDisplayPrice(vipGroupActivity.getSinglePrice().multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, RoundingMode.UP));
         }
         vipGroupActivityService.setActivityType(vipGroupActivity);
         return succeed(vipGroupActivity);

+ 2 - 2
mec-application/src/main/java/com/ym/mec/student/controller/CloudCoachPaymentProgramController.java

@@ -36,12 +36,12 @@ public class CloudCoachPaymentProgramController extends BaseController {
     public Object get(Long id){
         CloudCoachPaymentProgram cloudCoachPaymentProgram = cloudCoachPaymentProgramService.get(id);
         if(cloudCoachPaymentProgram == null){
-            throw new BizException("云教练缴费项目不存在,请联系指导老师");
+            throw new BizException("学练宝缴费项目不存在,请联系指导老师");
         }
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         StudentCloudCoachPaymentDetails studentCloudCoachPaymentDetails = studentCloudCoachPaymentDetailsService.findByUserId(id, sysUser.getId());
         if(studentCloudCoachPaymentDetails == null){
-            throw new BizException("您不在当前云教练缴费项目中,请联系指导老师");
+            throw new BizException("您不在当前学练宝缴费项目中,请联系指导老师");
         }
         MemberRankSetting memberRankSetting = memberRankSettingService.get(cloudCoachPaymentProgram.getMemberRankSettingId());
         cloudCoachPaymentProgram.setMemberIntro(memberRankSetting.getIntro());

+ 106 - 9
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -7,24 +7,29 @@ import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWra
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
-import com.ym.mec.biz.service.CbsMusicScoreCategoriesService;
-import com.ym.mec.biz.service.LessonCoursewareService;
-import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.SysUserService;
+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.common.page.PageInfo;
 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.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.student:}/lessonCourseware")
 @Api(tags = "课件教材")
@@ -42,22 +47,87 @@ public class LessonCoursewareController extends BaseController {
 	@Resource
 	private CbsMusicScoreCategoriesService cbsMusicScoreCategoriesService;
 
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+
+    @Autowired
+    private MemberRankCourseTypeMapperService memberRankCourseTypeMapperService;
+
+    @Autowired
+    private MemberRankCategoryMapperService memberRankCategoryMapperService;
+
 	@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));
+        List<LessonCoursewareWrapper.LessonCoursewareDto> records = pages.getRecords();
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            // 根据用户会员判断是否锁定
+            // 查询有效的会员
+            List<Integer> courseIds = getCourseIds();
+
+            // 判断曲目是否在分类中
+            for (LessonCoursewareWrapper.LessonCoursewareDto row : records) {
+                if (courseIds.contains(row.getId())) {
+                    row.setUseStatus("UNLOCK");
+                } else  {
+                    row.setUseStatus("LOCK");
+                }
+            }
+        }
+
+        return succeed(PageUtil.pageInfo(pages));
 	}
 
 	@ApiOperation(value = "获取课件详情")
 	@GetMapping("/getLessonCoursewareDetail/{id}")
-	public HttpResponseResult<CbsLessonCoursewareWrapper.LessonCourseware> getLessonCoursewareDetail(@PathVariable("id") Long id){
-		return succeed(coursewareFeignService.lessonCoursewareDetail(id).feignData());
+	public HttpResponseResult<LessonCoursewareWrapper.LessonCoursewareExtend> getLessonCoursewareDetail(@PathVariable("id") Long id){
+        CbsLessonCoursewareWrapper.LessonCourseware lessonCourseware = coursewareFeignService.lessonCoursewareDetail(id).feignData();
+        if (lessonCourseware == null) {
+            return succeed();
+        }
+        //使用课件ID查询应用这边的ID
+        LessonCourseware lessonCourseware1 = lessonCoursewareService.getByLessonCoursewareId(id);
+        if (lessonCourseware1 == null) {
+            throw new BizException("课件不存在");
+        }
+
+        LessonCoursewareWrapper.LessonCoursewareExtend lessonCoursewareExtend = JSONObject
+            .parseObject(JSONObject.toJSONString(lessonCourseware), LessonCoursewareWrapper.LessonCoursewareExtend.class);
+        // 根据用户会员判断是否锁定
+        // 查询有效的会员
+        List<Integer> courseIds = getCourseIds();
+
+
+        // 判断曲目是否在分类中
+        if (courseIds.contains(lessonCourseware1.getId())) {
+            lessonCoursewareExtend.setUseStatus("UNLOCK");
+        } else {
+            lessonCoursewareExtend.setUseStatus("LOCK");
+        }
+
+        return succeed(lessonCoursewareExtend);
 	}
 
-	@ApiOperation(value = "获取课件关联的课程列表")
+    @NotNull
+    private List<Integer> getCourseIds() {
+        List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(sysUserService.getUserId());
+
+        // 获取会员的曲目分类
+
+        List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(activationVipIds);
+        if (CollectionUtils.isEmpty(courseTypeMapperList)) {
+            courseTypeMapperList = new ArrayList<>();
+        }
+        List<Integer> categoryIds = courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType)
+            .distinct().map(Integer::parseInt).collect(Collectors.toList());
+        return categoryIds;
+    }
+
+    @ApiOperation(value = "获取课件关联的课程列表")
 	@GetMapping("/getLessonCoursewareCourseList/{id}")
 	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id){
 		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(id).feignData();
@@ -73,9 +143,28 @@ public class LessonCoursewareController extends BaseController {
 	@GetMapping("/getLessonCourseDetail/{id}")
 	public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") Long id){
 		SysUser sysUser = sysUserService.getUser();
+        // 机构可用曲目分类
 		String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
 		List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
-		return succeed(lessonCoursewareService.getLessonCourseDetail(id,categoryIdList));
+
+        // 学生会员可用曲目分类
+        Integer userId = sysUserService.getUserId();
+        List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(userId);
+
+        // 获取会员的曲目分类
+
+        List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(activationVipIds);
+        if (CollectionUtils.isEmpty(categoryMapperList)) {
+            categoryMapperList = new ArrayList<>();
+        }
+        List<Integer> categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId)
+            .distinct().collect(Collectors.toList());
+        LessonCoursewareWrapper.LessonCoursewareDetailQuery query = new LessonCoursewareWrapper.LessonCoursewareDetailQuery();
+        query.setLessonCoursewareDetailId(id);
+        query.setUserType(ClientEnum.STUDENT);
+        query.setTenantCategoriesIdList(categoryIdList);
+        query.setStudentCategoriesIdList(categoryIds);
+		return succeed(lessonCoursewareService.getLessonCourseDetail(query));
 	}
 
 	@ApiOperation(value = "获取课件关联的声部列表")
@@ -83,4 +172,12 @@ public class LessonCoursewareController extends BaseController {
 	public HttpResponseResult<List<Subject>> getLessonCoursewareSubjectList(){
 		return succeed(lessonCoursewareService.getDao().getLessonCoursewareSubjectList());
 	}
+
+    @ApiOperation(value = "关联课程类型")
+    @PostMapping("/refLevel")
+    public HttpResponseResult<List<LessonCoursewareWrapper.RefLevelDetailInfo>> refLevel(@RequestBody LessonCoursewareWrapper.RefLevelQuery query) {
+        query.setTeacherId(sysUserService.getUserId());
+        query.setClient(ClientEnum.STUDENT);
+        return succeed(lessonCoursewareService.refLevel(query));
+    }
 }

+ 44 - 15
mec-application/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -1,45 +1,73 @@
 package com.ym.mec.student.controller;
 
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.MemberRankOrganizationFeeMapperDao;
+import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
 import com.ym.mec.biz.dal.dto.MemberPayParamDto;
-import com.ym.mec.biz.dal.entity.MemberRankSetting;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.student:}/memberRank")
 @Api(tags = "会员收费设置服务")
 @RestController
 public class MemberRankController extends BaseController {
 
-    @Autowired
+    @Resource
     private MemberFeeSettingService memberFeeSettingService;
-
-    @Autowired
+    @Resource
     private MemberRankSettingService memberRankSettingService;
-
-    @Autowired
+    @Resource
     private MemberRankPrivilegesService memberRankPrivilegesService;
-
-    @Autowired
+    @Resource
     private CloudTeacherOrderService cloudTeacherOrderService;
-
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
+    @Resource
+    private MemberRankOrganizationFeeMapperDao memberRankOrganizationFeeMapperDao;
+
+    @Resource
+    private SysMusicScoreDao sysMusicScoreDao;
+
+    @Resource
+    private LessonCoursewareService lessonCoursewareService;
 
     @ApiOperation(value = "获取所有的收费标准")
     @GetMapping("/queryList")
-    public Object getMemberDefaultFee() {
+    public Object getMemberDefaultFee(String  type,Integer  typeId) {
         SysUser sysUser = sysUserService.getUser();
-        List<MemberRankSetting> result = memberRankSettingService.queryListByIsDefault(false);
-
+        List<MemberRankOrganizationFeeMapper> feeMappers = memberRankOrganizationFeeMapperDao.queryByOrganId(sysUser.getOrganId());
+        if (CollectionUtils.isEmpty(feeMappers)) {
+            return Lists.newArrayList();
+        }
+        if (StringUtils.isNotBlank(type)&& "MUSIC".equals(type) && typeId !=null) {
+            SysMusicScore sysMusicScore = sysMusicScoreDao.get(typeId);
+            if (sysMusicScore != null) {
+                typeId = sysMusicScore.getCbsMusicCategoriesId();
+            }
+        } else if (StringUtils.isNotBlank(type)&& "LESSON".equals(type) && typeId !=null) {
+            // 远程ID 换课件ID
+            LessonCourseware courseware = lessonCoursewareService.getByLessonCoursewareId(typeId.longValue());
+            if (courseware != null) {
+                typeId = courseware.getId();
+            }
+        }
+        List<Integer> memberIds = feeMappers.stream()
+                .map(MemberRankOrganizationFeeMapper::getMemberRankSettingId).distinct().collect(Collectors.toList());
+        List<MemberRankSetting> result = memberRankSettingService.getByIdsAndType(memberIds,type,typeId);
         for (MemberRankSetting mrs : result) {
             mrs.setMemberFeeSetting(memberFeeSettingService.findByRankIdAndOrganId(sysUser.getOrganId(), mrs.getId()));
             mrs.setMemberPrivilegesItemList(memberRankPrivilegesService.queryByMemberRankId(mrs.getId()));
@@ -116,8 +144,9 @@ public class MemberRankController extends BaseController {
 
     @ApiOperation(value = "查询订单列表")
     @GetMapping("/queryOrderPage")
-    public Object queryOrderPage(CloudTeacherOrderQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<CloudTeacherOrder>> queryOrderPage(CloudTeacherOrderQueryInfo queryInfo) {
         queryInfo.setStudentId(sysUserService.getUserId());
+        queryInfo.setStatus("1,2");
         return succeed(cloudTeacherOrderService.queryPage(queryInfo));
     }
 

+ 33 - 0
mec-application/src/main/java/com/ym/mec/student/controller/MemberRankSettingController.java

@@ -0,0 +1,33 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
+import com.ym.mec.biz.service.MemberRankSettingService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RequestMapping("${app-config.url.student:}/memberRankSetting")
+@Api(tags = "会员等级服务")
+@RestController
+public class MemberRankSettingController extends BaseController {
+
+    @Resource
+    private MemberRankSettingService memberRankSettingService;
+
+    @ApiOperation(value = "获取可用的会员树状列表")
+    @GetMapping("/queryTree")
+    public HttpResponseResult<List<MemberRankSettingWrapper.MemberRankSetting>> queryTree(String musicGroupId,Integer organId,Integer studentId) {
+        if (musicGroupId == null && organId == null && studentId == null) {
+            return failed("参数错误");
+        }
+        return succeed(memberRankSettingService.queryTree(musicGroupId,organId,studentId));
+    }
+
+}

+ 21 - 4
mec-application/src/main/java/com/ym/mec/student/controller/MusicSheetController.java

@@ -1,12 +1,10 @@
 package com.ym.mec.student.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
-import com.ym.mec.biz.dal.entity.Instrument;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.SysMusicScore;
-import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.ClientTypeEnum;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
@@ -32,6 +30,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -85,6 +84,12 @@ public class MusicSheetController {
             musicSheetDetail.setIsConvertibleScore(detail.getIsConvertibleScore());
         }
 
+        // 如果是合奏 并且乐器ID = 2268
+        musicSheetDetail.setSpecialPercussionFlag(false);
+        if ("2268".equals(musicSheetDetail.getMusicalInstrumentIds()) && musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            musicSheetDetail.setSpecialPercussionFlag(true);
+        }
+
         // 设置乐器信息
         if (StringUtils.isNotBlank(musicSheetDetail.getMusicalInstrumentIds())) {
             List<Integer> instrumentIds = Arrays.stream(musicSheetDetail.getMusicalInstrumentIds().split(","))
@@ -101,6 +106,16 @@ public class MusicSheetController {
                 }
             }
         }
+        MusicSheetWrapper.ClientMusicSheetInfoQuery query = new MusicSheetWrapper.ClientMusicSheetInfoQuery();
+        query.setUserType(ClientEnum.STUDENT);
+        query.setUserId(sysUserService.getUserId());
+        query.setMusicSheetId(id);
+        MusicSheetWrapper.ClientMusicSheetInfo clientMusicSheetInfo = musicSheetService.queryMusicScoreDetail(query);
+        if (clientMusicSheetInfo != null) {
+            musicSheetDetail.setUseStatus(clientMusicSheetInfo.getUseStatus());
+        } else {
+            musicSheetDetail.setUseStatus("LOCK");
+        }
         return R.from(musicSheetDetail);
     }
 
@@ -132,6 +147,7 @@ public class MusicSheetController {
         queryInfo.setClientType(ClientTypeEnum.SMART_PRACTICE);
         queryInfo.setRecentFlag(query.getRecentFlag());
         queryInfo.setUserId(userId);
+        queryInfo.setUserType(ClientEnum.STUDENT);
         queryInfo.setClientId(ClientEnum.STUDENT.getCode().toLowerCase());
         PageInfo<SysMusicScore> sysMusicScorePageInfo1 = musicSheetService.queryMusicScorePageInfo(queryInfo);
         PageInfo<MusicSheetWrapper.MusicSheet> convert = sysMusicScorePageInfo1.convert(o -> {
@@ -145,6 +161,7 @@ public class MusicSheetController {
             musicSheet.setUsedNum(0L);
             musicSheet.setPaymentType(StringUtils.isNotBlank(o.getRankIds()) && o.getRankIds().contains("1") ? "VIP" : "FREE");
             musicSheet.setAudioPlayTypes(o.getAudioPlayTypes());
+            musicSheet.setUseStatus(o.getUseStatus());
 
             return musicSheet;
         });

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

@@ -5,9 +5,12 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.RegisterUserDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentPreRegistration;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +21,9 @@ 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.Date;
+import java.util.List;
 
 @RequestMapping("${app-config.url.student:}/student")
 @Api(tags = "学生服务")
@@ -29,8 +34,10 @@ public class StudentController extends BaseController {
     private SysUserFeignService sysUserFeignService;
 	@Resource
 	private SysUserService sysUserService;
-    @Autowired
+    @Resource
     private StudentService studentService;
+    @Resource
+    private CloudTeacherOrderService cloudTeacherOrderService;
 
     @ApiOperation("注册")
     @PostMapping(value = "/registering")
@@ -75,4 +82,13 @@ public class StudentController extends BaseController {
 		studentService.update(student);
 		return succeed();
 	}
+
+	@ApiOperation("获取学员生效中的会员")
+	@PostMapping(value = "/getEffectiveMember")
+	public HttpResponseResult<List<CloudTeacherOrderWrapper.StudentMemberDetail>> getEffectiveMember() {
+		Integer userId = sysUserService.getUserId();
+		List<Integer> userIds = new ArrayList<>();
+		userIds.add(userId);
+		return succeed(cloudTeacherOrderService.getEffectiveCloudTeacherOrder(userIds));
+	}
 }

+ 10 - 0
mec-application/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java

@@ -139,6 +139,16 @@ public class StudentCourseHomeworkController extends BaseController {
         return succeed(studentCourseHomeworkService.addStudentHomeworkRecord(query));
     }
 
+
+
+    @ApiOperation(value = "添加作业练习记录")
+    @PostMapping(value = "/addStudentHomeworkRecord")
+    public HttpResponseResult<Boolean>
+    addStudentHomeworkRecordPost(@RequestBody CourseHomeworkWrapper.AddStudentHomeworkRecord query){
+        query.setUserId(sysUserService.getUserId().longValue());
+        return succeed(studentCourseHomeworkService.addStudentHomeworkRecord(query));
+    }
+
     @ApiOperation(value = "分页查询作业列表")
     @PostMapping(value = "/queryPage")
     public Object queryPage(@RequestBody(required = false) CourseHomeworkQueryInfo queryInfo){

+ 18 - 138
mec-application/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -1,7 +1,7 @@
 package com.ym.mec.student.controller;
 
-import com.beust.jcommander.internal.Lists;
-import com.google.common.collect.Sets;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
@@ -21,7 +21,6 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import com.ym.mec.util.upload.UploadUtil;
 import io.swagger.annotations.*;
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,6 +29,11 @@ import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -79,6 +83,9 @@ public class StudentManageController extends BaseController {
     private ImGroupCoreService imGroupCoreService;
 
     @Autowired
+    private CloudTeacherOrderService cloudTeacherOrderService;
+
+    @Autowired
     private InstrumentService instrumentService;
 
     private final static Logger LOGGER = LoggerFactory.getLogger(StudentManageController.class);
@@ -160,20 +167,14 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取学员基本信息")
     @GetMapping("student/queryUserInfo")
 	public Object queryUserInfo(String platform) {
-		SysUser user = sysUserService.getUser();
-		Student student = studentService.get(user.getId());
-		student.setId(user.getId());
-		student.setUsername(user.getUsername());
-		student.setAvatar(user.getAvatar());
-		student.setPhone(user.getPhone());
-		student.setCurrentClass(user.getCurrentClass());
-		student.setCurrentGrade(user.getCurrentGrade());
-		student.setBirthdate(user.getBirthdate());
-		student.setGender(user.getGender());
-		student.setRealName(user.getRealName());
-		student.setIdCardNo(user.getIdCardNo());
-		student.setImToken(user.getImToken());
-		student.setOrganId(user.getOrganId());
+
+        SysUser user = sysUserService.getUser();
+        // 返回数据
+        Map<String, Object> datas = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(user.getId(), user, datas);
+        datas.put("student", student);
 
 
         // 注册IM用户Token
@@ -193,16 +194,6 @@ public class StudentManageController extends BaseController {
 			List<Subject> subjectList = subjectService.findBySubjectByIdList(student.getSubjectIdList());
 			student.setSubjectNames(subjectList.stream().map(t -> t.getName()).collect(Collectors.joining(",")));
 		}
-		
-		if(StringUtils.isNotBlank(student.getExtSubjectIds())){
-			List<Subject> subjectList = subjectService.findBySubjectByIdList(student.getExtSubjectIds());
-			
-			student.setExtSjectNamesMap(subjectList.stream().collect(Collectors.toMap(Subject :: getId, Subject :: getName)));
-		}
-
-		Map<String, Object> datas = new HashMap<String, Object>();
-		datas.put("student", student);
-		
         List<CloudTeacherOrder> dataList = cloudTeacherOrderDao.queryByUserIdAndStatus(user.getId(),1);
         if(dataList != null && dataList.size() > 0){
         	datas.put("isExistPendingMember", true);
@@ -228,117 +219,6 @@ public class StudentManageController extends BaseController {
 		} else {
 			datas.put("userPrivileges", memberRankPrivilegesService.queryByMemberRankId(student.getMemberRankSettingId()));
 		}
-		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.HOMEWORK_OPEN_FLAG);
-		if (sysConfig == null) {
-			datas.put("homeworkOpenFlag", 0);
-		} else {
-			datas.put("homeworkOpenFlag", Integer.parseInt(sysConfig.getParanValue()));
-		}
-        // 获取会员等级图标
-        MemberRankSetting memberRankSetting = memberRankSettingService.get(student.getMemberRankSettingId());
-        if (memberRankSetting != null) {
-            student.setMemberRankImg(memberRankSetting.getIcon());
-        }
-        //是否是试用会员
-		if(student.getExperienceMemberRankSettingId() == null){
-            datas.put("isExperience", 0);
-        }else {
-            int i = DateUtil.daysBetween(student.getExperienceMembershipEndTime(),student.getMembershipEndTime());
-            if(i > 0){
-                datas.put("isExperience", 0);
-            }else {
-                datas.put("isExperience", 1);
-                if (memberRankSetting != null) {
-                    student.setMemberRankImg(memberRankSetting.getExperienceIcon());
-                }
-            }
-        }
-
-        // 通过学生声部换乐器ID
-        if (StringUtils.isNotBlank(student.getSubjectIdList())) {
-            String subjectId = student.getSubjectIdList();
-            if ("5".equals(student.getSubjectIdList())) {
-                subjectId = "6";
-            } else  if("122".equals(student.getSubjectIdList())){
-                subjectId = "122,121,113,23";
-            }
-            List<Integer> instrumentIdsBySubjectId = instrumentService.getInstrumentIdsBySubjectId(subjectId)
-                .stream().map(Instrument::getId).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(instrumentIdsBySubjectId)) {
-                // 逗号隔开
-                datas.put("instrumentId", StringUtils.join(instrumentIdsBySubjectId, ","));
-            }
-        }
-
-        // 扩展乐器
-        if (student.getExtSjectNamesMap() !=null && !student.getExtSjectNamesMap().isEmpty()) {
-            Set<Integer> integers = student.getExtSjectNamesMap().keySet();
-            Set<Integer> extInstrumentIds = Sets.newConcurrentHashSet();
-            for (Integer integer : integers) {
-                extInstrumentIds.add(integer);
-
-                if ("5".equals(integer.toString())) {
-                    extInstrumentIds.add(6);
-                } else  if("122".equals(integer.toString())){
-                    extInstrumentIds.add(121);
-                    extInstrumentIds.add(113);
-                    extInstrumentIds.add(23);
-                }
-            }
-
-            // 根据声部查询对应乐器信息
-            List<Instrument> instruments = instrumentService.getInstrumentIdsBySubjectId(StringUtils.join(extInstrumentIds, ","));
-            List<Map<String, Object>> extInstrumentNames = Lists.newArrayList();
-            if (CollectionUtils.isNotEmpty(instruments)) {
-
-                Map<Integer, List<Instrument>> collect = instruments.stream().collect(Collectors.groupingBy(Instrument::getSubjectId, Collectors.toList()));
-                for (Map.Entry<Integer, String> entry : student.getExtSjectNamesMap().entrySet()) {
-
-                    // 默认声部映射乐器ID
-                    String instrumentIds = "";
-                    if (collect.containsKey(entry.getKey())) {
-                        instrumentIds = collect.get(entry.getKey()).stream()
-                            .map(Instrument::getId).map(String::valueOf).collect(Collectors.joining(","));
-                    }
-
-                    // 萨克斯乐器,对应中音萨克斯
-                    if (entry.getKey() == 5 || entry.getKey() == 6) {
-
-                        instrumentIds = collect.entrySet().stream()
-                            .filter(x -> x.getKey() == 5 || x.getKey() == 6)
-                            .flatMap(x -> x.getValue().stream())
-                            .map(Instrument::getId)
-                            .map(String::valueOf).collect(Collectors.joining(","));
-                    }
-
-                    // 打击乐器,对应小军鼓,打击乐(键盘),打击乐(键盘+小鼓),打击乐
-                    if (entry.getKey() == 122 || entry.getKey() == 121 || entry.getKey() == 113 || entry.getKey() == 23) {
-
-                        instrumentIds = collect.entrySet().stream()
-                            .filter(x -> x.getKey() == 122 || x.getKey() == 121 || x.getKey() == 113 || x.getKey() == 23)
-                            .flatMap(x -> x.getValue().stream())
-                            .map(Instrument::getId)
-                            .map(String::valueOf).collect(Collectors.joining(","));
-                    }
-                    String finalInstrumentIds = instrumentIds;
-                    extInstrumentNames.add(new HashMap<String, Object>(){{
-                        put("subjectId", entry.getKey());
-                        put("subjectName", entry.getValue());
-                        put("instrumentIds", finalInstrumentIds);
-                    }});
-                }
-
-                /*List<Integer> instrumentIdsBySubjectId = instruments.stream().map(Instrument::getId).collect(Collectors.toList());
-                Map<Integer, InstrumentWrapper.Instrument> mapByIds = instrumentService.getMapByIds(instrumentIdsBySubjectId);
-                mapByIds.forEach((k,v)->{
-                    if (v !=null) {
-                        extInstrumentNamesMap.put(k, v.getName());
-                    }
-                });*/
-            }
-            student.setExtInstrumentNames(extInstrumentNames);
-        }
-
 
 		return succeed(datas);
 	}

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

@@ -15,6 +15,8 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.biz.dal.vo.StudentPaymentOrderVo;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -114,6 +116,8 @@ public class StudentOrderController extends BaseController {
     private HfMerchantConfigService hfMerchantConfigService;
     @Autowired
     private TempDirectorTrainingCampDetailService tempDirectorTrainingCampDetailService;
+    @Autowired
+    private MusicGroupPaymentCalenderMemberService musicGroupPaymentCalenderMemberService;
 
     @Value("${spring.profiles.active:dev}")
     private String profiles;
@@ -332,18 +336,32 @@ public class StudentOrderController extends BaseController {
                 musicGroupRegCalender.setMusicGroupPaymentCalenderCourseSettingsList(courseSettings);
                 //如果包含vip和网管,代表购买了活动包
                 List<Long> activityList = orderDetail1.stream().filter(e -> e.getType() == OrderDetailTypeEnum.VIP
-                        || e.getType() == OrderDetailTypeEnum.PRACTICE).map(e -> e.getStudentInstrumentId())
+                        || e.getType() == OrderDetailTypeEnum.PRACTICE).map(StudentPaymentOrderDetail::getStudentInstrumentId)
                         .collect(Collectors.toList());
-                if(activityList != null && activityList.size() > 0){
+                if(CollectionUtils.isNotEmpty(activityList)){
                     orderDetail.put("activity", musicGroupPaymentCalenderActivityService.findByActivityIds(activityList,musicGroupRegCalender.getId()));
                 }
             }
             orderDetail.put("calender", musicGroupRegCalender);
+            List<Long> ids = orderDetail1.stream().filter(e -> e.getType() == OrderDetailTypeEnum.CLOUD_TEACHER).map(StudentPaymentOrderDetail::getStudentInstrumentId).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(ids)){
+                List<MusicGroupPaymentCalenderMember> calenderMembers = musicGroupPaymentCalenderMemberService.findByIds(ids);
+                List<CloudTeacherOrderWrapper.StudentMemberOrderDetail> memberOrderDetails = new ArrayList<>();
+                for (MusicGroupPaymentCalenderMember calenderMember : calenderMembers) {
+                    CloudTeacherOrderWrapper.StudentMemberOrderDetail memberOrderDetail = new CloudTeacherOrderWrapper.StudentMemberOrderDetail();
+                    memberOrderDetail.setMemberRankId(calenderMember.getMemberRankSettingId());
+                    memberOrderDetail.setMemberRankName(calenderMember.getName());
+                    memberOrderDetail.setIntro(calenderMember.getIntro());
+                    memberOrderDetails.add(memberOrderDetail);
+                }
+                orderDetail.put("member", memberOrderDetails);
+            }
 
             //判断是否是系统收费
-            if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
+            /*if (musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE) {
                 orderDetail.put("member", cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId()));
-            }
+            }else {
+            }*/
         } else if (orderByOrderNo.getGroupType().equals(GroupType.VIP) || orderByOrderNo.getGroupType().equals(GroupType.LIVE)) {
             if(orderByOrderNo.getType() == OrderTypeEnum.ACTIVITY){
                 orderDetail.put("activity", vipGroupActivityService.getDao().queryByIds(orderByOrderNo.getActivityId()));
@@ -415,12 +433,15 @@ public class StudentOrderController extends BaseController {
             }
             orderDetail.put("detail", vipGroupActivities);
         } else if (orderByOrderNo.getGroupType().equals(GroupType.MEMBER)) {
-            CloudTeacherOrderDto orderDto = cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId());
-            orderDetail.put("detail", orderDto);
-            if (orderDto != null) {
-                Map<String, Object> map = new HashMap<>(1);
-                map.put("paymentOrderId", orderDto.getCloudTeacherOrder().getOrderId());
-                orderDetail.put("couponList", sysCouponCodeDao.querySysCouponUseList(map));
+            List<CloudTeacherOrderDto> cloudTeacherOrderDtos = cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId());
+            if(CollectionUtils.isNotEmpty(cloudTeacherOrderDtos)){
+                CloudTeacherOrderDto orderDto = cloudTeacherOrderDtos.get(0);
+                orderDetail.put("detail", orderDto);
+                if (orderDto != null) {
+                    Map<String, Object> map = new HashMap<>(1);
+                    map.put("paymentOrderId", orderDto.getCloudTeacherOrder().getOrderId());
+                    orderDetail.put("couponList", sysCouponCodeDao.querySysCouponUseList(map));
+                }
             }
         } else if (orderByOrderNo.getGroupType().equals(GroupType.LIVE_BUY)) {
             orderDetail.put("detail", vipGroupActivityService.getDao().queryByIds(orderByOrderNo.getActivityId()));
@@ -911,7 +932,7 @@ public class StudentOrderController extends BaseController {
      * 学生端查询订单详情
      */
     @GetMapping("/queryOrderDetail")
-    public Object queryOrderDetail(String orderNo) {
+    public HttpResponseResult<StudentPaymentOrderVo> queryOrderDetail(String orderNo) {
         return succeed(studentPaymentOrderService.queryOrderDetail(orderNo));
     }
 }

+ 13 - 0
mec-application/src/main/java/com/ym/mec/student/controller/SysConfigController.java

@@ -3,11 +3,13 @@ package com.ym.mec.student.controller;
 import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 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.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;
 
@@ -43,4 +45,15 @@ public class SysConfigController extends BaseController {
 		}
 		return succeed(sysConfigService.findByParamName(paramName));
 	}
+
+
+
+    @ApiOperation(value = "查询参数(多个逗号分隔)")
+    @PostMapping(value = "queryByParamNames")
+    public HttpResponseResult<List<SysConfig>> queryByParamNames(String paramName) {
+        if(StringUtils.isBlank(paramName)){
+            return failed("参数不能为空");
+        }
+        return succeed(sysConfigService.findByParamNames(paramName));
+    }
 }

+ 10 - 0
mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreAccompanimentController.java

@@ -2,9 +2,11 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.ClientTypeEnum;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
 import com.ym.mec.biz.service.SysMusicScoreAccompanimentService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -13,6 +15,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 @RequestMapping("${app-config.url.student:}/sysMusicScoreAccompaniment")
 @Api(tags = "曲库服务")
 @RestController
@@ -23,9 +27,15 @@ public class SysMusicScoreAccompanimentController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Resource
+    private SysUserService sysUserService;
+
     @ApiOperation(value = "分页查询")
     @GetMapping("/queryPage")
     public Object queryPage(SysExamSongQueryInfo queryInfo) {
+        // 设置用户ID
+        queryInfo.setUserId(sysUserService.getUserId());
+        queryInfo.setUserType(ClientEnum.STUDENT);
         queryInfo.setType("COMMON");
         if(queryInfo.getClientType() == null){
             queryInfo.setClientType(ClientTypeEnum.SMART_PRACTICE);

+ 21 - 0
mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreController.java

@@ -1,12 +1,16 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.ClientTypeEnum;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
 import com.ym.mec.biz.service.SysMusicScoreService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 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;
 
@@ -20,12 +24,29 @@ public class SysMusicScoreController extends BaseController {
     @Resource
     private SysMusicScoreService sysMusicScoreService;
 
+    @Resource
+    private SysUserService sysUserService;
     @ApiOperation(value = "分页查询")
     @GetMapping("/queryPage2")
     public Object queryPage2(SysExamSongQueryInfo queryInfo) {
+        Integer userId = sysUserService.getUserId();
+        queryInfo.setUserId(userId);
+        queryInfo.setUserType(ClientEnum.STUDENT);
         queryInfo.setType("COMMON");
         queryInfo.setClientFlag(true);
         queryInfo.setClientType(ClientTypeEnum.SMART_PRACTICE);
         return succeed(sysMusicScoreService.queryMusicScorePageInfo(queryInfo));
     }
+
+
+    @ApiOperation(value = "分页查询")
+    @GetMapping("/detail/{id}")
+    public Object queryPage2(@PathVariable Integer id) {
+        MusicSheetWrapper.ClientMusicSheetInfoQuery query = new MusicSheetWrapper.ClientMusicSheetInfoQuery();
+        query.setMusicSheetId(id);
+        query.setUserId(sysUserService.getUserId());
+        query.setUserType(ClientEnum.STUDENT);
+
+        return succeed(sysMusicScoreService.queryMusicScoreDetail(query));
+    }
 }

+ 7 - 0
mec-application/src/main/java/com/ym/mec/student/controller/open/OpenMusicSheetController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.student.controller.open;
 
 import com.alibaba.fastjson.JSON;
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
@@ -66,6 +67,12 @@ public class OpenMusicSheetController {
             musicSheetDetail.setBizMusicCategoryId(detail.getCategoriesId() == null ? null : detail.getCategoriesId().longValue());
         }
 
+        // 如果是合奏 并且乐器ID = 2268
+        musicSheetDetail.setSpecialPercussionFlag(false);
+        if ("2268".equals(musicSheetDetail.getMusicalInstrumentIds()) && musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            musicSheetDetail.setSpecialPercussionFlag(true);
+        }
+
         // 设置乐器信息
         if (StringUtils.isNotBlank(musicSheetDetail.getMusicalInstrumentIds())) {
             List<Integer> instrumentIds = Arrays.stream(musicSheetDetail.getMusicalInstrumentIds().split(","))

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

@@ -68,7 +68,7 @@ public class ClassGroupController extends BaseController {
 
         // 乐团声部为空,取student的声部
         if (!CollectionUtils.isEmpty(courseStudents)) {
-            Set<Long> collect = courseStudents.stream().map(o -> o.getUserId()).map(o -> o.longValue()).collect(Collectors.toSet());
+            Set<Long> collect = courseStudents.stream().map(BasicUserDto::getUserId).map(Integer::longValue).collect(Collectors.toSet());
 
             Map<Integer, StudentSubjectDto> subjectDtoMap = subjectService.getSubjectByStudentId(collect);
             courseStudents.forEach(studentAttendanceViewDto -> {

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

@@ -139,7 +139,7 @@ public class ExtracurricularExercisesController extends BaseController {
 
     @ApiOperation(value = "获取待布置学员列表")
     @GetMapping("/getDontServeStudents")
-    public HttpResponseResult getDontServeStudents(String search, String musicGroupId, Long classGroupId, Integer subjectId,Integer hasMember,String studentIds){
+    public HttpResponseResult<List<BasicUserDto>> getDontServeStudents(String search, String musicGroupId, Long classGroupId, Integer subjectId,Integer hasMember,String studentIds){
         return succeed(extracurricularExercisesService.getDontServeStudents(sysUserService.getUserId(), search, musicGroupId, classGroupId, subjectId,hasMember,studentIds));
     }
 

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

@@ -12,6 +12,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.CbsMusicScoreCategoriesService;
 import com.ym.mec.biz.service.LessonCoursewareService;
@@ -94,7 +95,11 @@ public class LessonCoursewareController extends BaseController {
 		SysUser sysUser = sysUserService.getUser();
 		String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
 		List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
-		return succeed(lessonCoursewareService.getLessonCourseDetail(id,categoryIdList));
+        LessonCoursewareWrapper.LessonCoursewareDetailQuery query = new LessonCoursewareWrapper.LessonCoursewareDetailQuery();
+        query.setLessonCoursewareDetailId(id);
+        query.setUserType(ClientEnum.TEACHER);
+        query.setTenantCategoriesIdList(categoryIdList);
+		return succeed(lessonCoursewareService.getLessonCourseDetail(query));
 	}
 
 	@ApiOperation(value = "获取课件关联的声部列表")
@@ -107,6 +112,7 @@ public class LessonCoursewareController extends BaseController {
 	@PostMapping("/refLevel")
 	public HttpResponseResult<List<LessonCoursewareWrapper.RefLevelDetailInfo>> refLevel(@RequestBody LessonCoursewareWrapper.RefLevelQuery query) {
 		query.setTeacherId(sysUserService.getUserId());
+        query.setClient(ClientEnum.TEACHER);
 		return succeed(lessonCoursewareService.refLevel(query));
 	}
 }

+ 19 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/MusicSheetController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.teacher.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.dao.TeacherDao;
@@ -81,6 +82,12 @@ public class MusicSheetController {
             musicSheetDetail.setIsConvertibleScore(detail.getIsConvertibleScore());
         }
 
+        // 如果是合奏 并且乐器ID = 2268
+        musicSheetDetail.setSpecialPercussionFlag(false);
+        if ("2268".equals(musicSheetDetail.getMusicalInstrumentIds()) && musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            musicSheetDetail.setSpecialPercussionFlag(true);
+        }
+
         // 设置乐器信息
         if (StringUtils.isNotBlank(musicSheetDetail.getMusicalInstrumentIds())) {
             List<Integer> instrumentIds = Arrays.stream(musicSheetDetail.getMusicalInstrumentIds().split(","))
@@ -97,6 +104,16 @@ public class MusicSheetController {
                 }
             }
         }
+        MusicSheetWrapper.ClientMusicSheetInfoQuery query = new MusicSheetWrapper.ClientMusicSheetInfoQuery();
+        query.setUserType(ClientEnum.TEACHER);
+        query.setUserId(sysUserService.getUserId());
+        query.setMusicSheetId(id);
+        MusicSheetWrapper.ClientMusicSheetInfo clientMusicSheetInfo = musicSheetService.queryMusicScoreDetail(query);
+        if (clientMusicSheetInfo != null) {
+            musicSheetDetail.setUseStatus(clientMusicSheetInfo.getUseStatus());
+        } else {
+            musicSheetDetail.setUseStatus("LOCK");
+        }
         return R.from(musicSheetDetail);
     }
 
@@ -135,6 +152,7 @@ public class MusicSheetController {
         queryInfo.setClientFlag(true);
         queryInfo.setClientType(ClientTypeEnum.SMART_PRACTICE);
         queryInfo.setUserId(userId);
+        queryInfo.setUserType(ClientEnum.TEACHER);
         queryInfo.setRecentFlag(query.getRecentFlag());
         queryInfo.setClientId(ClientEnum.TEACHER.getCode().toLowerCase());
         PageInfo<SysMusicScore> sysMusicScorePageInfo1 = musicSheetService.queryMusicScorePageInfo(queryInfo);
@@ -149,6 +167,7 @@ public class MusicSheetController {
             musicSheet.setUsedNum(0L);
             musicSheet.setPaymentType(StringUtils.isNotBlank(o.getRankIds()) && o.getRankIds().contains("1") ? "VIP" : "FREE");
             musicSheet.setAudioPlayTypes(o.getAudioPlayTypes());
+            musicSheet.setUseStatus(o.getUseStatus());
 
             return musicSheet;
         });

+ 16 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/StudentController.java

@@ -1,6 +1,8 @@
 package com.ym.mec.teacher.controller;
 
+import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.BaseMapDto;
+import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -98,6 +100,20 @@ public class StudentController extends BaseController {
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
+    @ApiOperation(value = "根据学生ID获取学生信息")
+    @GetMapping("/queryUserInfo")
+    public Object queryUserInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+
+        // 返回数据
+        Map<String, Object> dataMap = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(userId, null, dataMap);
+        dataMap.put("student", student);
+
+        return succeed(dataMap);
+    }
+
     @ApiOperation(value = "获取老师关联的学员声部列表")
     @GetMapping("/queryStuSubjectId")
     public HttpResponseResult<List<BaseMapDto>> queryStuSubjectId(){

+ 7 - 0
mec-application/src/main/java/com/ym/mec/teacher/controller/open/OpenMusicSheetController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.teacher.controller.open;
 
 import com.alibaba.fastjson.JSON;
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
@@ -66,6 +67,12 @@ public class OpenMusicSheetController {
             musicSheetDetail.setBizMusicCategoryId(detail.getCategoriesId() == null ? null : detail.getCategoriesId().longValue());
         }
 
+        // 如果是合奏 并且乐器ID = 2268
+        musicSheetDetail.setSpecialPercussionFlag(false);
+        if ("2268".equals(musicSheetDetail.getMusicalInstrumentIds()) && musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            musicSheetDetail.setSpecialPercussionFlag(true);
+        }
+
         // 设置乐器信息
         if (StringUtils.isNotBlank(musicSheetDetail.getMusicalInstrumentIds())) {
             List<Integer> instrumentIds = Arrays.stream(musicSheetDetail.getMusicalInstrumentIds().split(","))

+ 8 - 0
mec-application/src/main/java/com/ym/mec/vo/MusicSheetVo.java

@@ -396,6 +396,14 @@ public class MusicSheetVo {
 
         @ApiModelProperty("谱面类型")
         private String scoreType;
+
+
+        @ApiModelProperty("使用状态 试用: FREE 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
+
+        @ApiModelProperty("是否是特殊打击乐")
+        private Boolean specialPercussionFlag;
+
     }
 
     @Data

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

@@ -46,7 +46,7 @@ public class CloudTeacherOrderController extends BaseController {
 
     @ApiOperation(value = "查询未激活团练宝用户")
     @PostMapping("/queryInactive")
-    @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryInActive')")
+    @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryInactive')")
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryInactive(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         Integer tenantId = TenantContextHolder.getTenantId();
         cloudTeacherOrderQueryInfo.setTenantId(tenantId);

+ 49 - 16
mec-application/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
@@ -229,7 +230,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称", "合作单位", "乐团状态",
-                    "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数",  "会员人数",  "非会员人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
+                    "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数",  "学练宝人数",  "非学练宝人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
                     "organName", "id", "name", "cooperationOrganName", "status.msg", "courseViewType.msg", "chargeTypeName",
                     "educationalTeacherName", "groupMemberNum", "payNum", "memberNum", "notMemberNum"
                     , "createTime", "billStartDate", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
@@ -340,7 +341,7 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "总成交金额", "总购买人数", "人均购买金额",
                     "20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数",
-                    "40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送会员人数"}, new String[]{
+                    "40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送学练宝人数"}, new String[]{
                     "organName", "totalBuyAmount", "totalBuyNum", "avgBuyAmount", "vip1V120Amount", "vip1V120Num", "vip1V140Amount",
                     "vip1V140Num", "vip1V220Amount", "vip1V220Num", "vip1V240Amount"
                     , "vip1V240Num", "musicTheoryAmount", "musicTheoryNum", "giveMemberNum"}, rows);
@@ -632,7 +633,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员编号", "学员姓名", "学员声部", "学员状态", "手机号",
-                    "缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间", "会员金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"}, new String[]{
+                    "缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间", "学练宝金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"}, new String[]{
                     "userId", "sysUser.username", "studentRegistration.subjectName", "studentRegistration.musicGroupStatus.msg", "sysUser.phone",
                     "startPaymentDateMgpc", "deadlinePaymentDateStr", "openFlag.msg", "paymentStatus.desc", "payTime",
                     "cloudAmount", "musicalAmount", "courseAmount", "accessoriesAmount", "maintenanceAmount", "activityAmount"}, rows);
@@ -912,16 +913,33 @@ public class ExportController extends BaseController {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         queryInfo.setIsExport(true);
         List<StudentManageListDto> rows = studentManageService.findStudentsByOrganId(queryInfo).getRows();
+        for (StudentManageListDto row : rows) {
+            row.setCourseTeacherName(null);
+            List<CloudTeacherOrderWrapper.StudentMemberDetail> orderList = row.getCloudTeacherOrderList();
+            if (!CollectionUtils.isEmpty(orderList)) {
+                StringBuffer remark = new StringBuffer();
+                for (CloudTeacherOrderWrapper.StudentMemberDetail studentMemberDetail : orderList) {
+                    if (StringUtils.isNotEmpty(remark)) {
+                        remark.append("\r\n");
+                    }
+                    remark.append(studentMemberDetail.getMemberRankName());
+                    remark.append(" ");
+                    remark.append(DateUtil.dateToString(studentMemberDetail.getEndTime(), DateUtil.DEFAULT_PATTERN));
+                    remark.append("(");
+                    remark.append(studentMemberDetail.getRemainingDays());
+                    remark.append("天)");
+                }
+                row.setCourseTeacherName(remark.toString());
+            }
+        }
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "VIP老师", "网管老师", "声部老师", "合奏老师", "是否激活", "是否有课", "是否有网管课", "网管课剩余课时", "VIP课剩余课时", "课程余额(元)", "账户余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用云教练", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"}, new String[]{
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "学练宝截止时间(剩余天数)"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone","vipTeacherName", "practiceTeacherName", "normalTeacherName", "mixTeacherName",
                     "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg", "noStartPracticeCourseNum", "noStartVipCourseNum", "courseBalance", "balance", "musicGroupName",
-                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'",
-                    "membershipEndTime", "membershipEndTime == null ? hasNoStartCloudTeacher ? \"未生效\" : \"未购买\" : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? \"未生效\" : \"会员已过期\"",
-                    "experienceMembershipEndTime", "membershipEndTime == null ? \"未试用\" : membershipDay >= 0 ? membershipDay : \"已失效\""}, rows);
+                    "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "courseTeacherName"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
 
@@ -1113,7 +1131,7 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "云教练金额", "乐保金额", "订单总价"}, new String[]{
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "学练宝金额", "乐保金额", "订单总价"}, new String[]{
                     "organName", "musicGroupName", "userId", "username", "subjectName", "musicalName", "kitGroupPurchaseTypeEnum.msg",
                     "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"}, musicalList);
             response.setContentType("application/octet-stream");
@@ -1174,10 +1192,10 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业",
-                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式", "缴费中/审核中", "是否购买云教练"}, new String[]{
+                    "实际专业", "联系电话", "学员缴费状态", "乐器购买方式", "缴费中/审核中", "是否购买学练宝"}, new String[]{
                     "studentName", "parentsName", "currentGrade", "currentClass", "gender.description",
                     "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc",
-                    "kitGroupPurchaseTypeEnum.msg", "payingStatusStr", "hasCloudTeacher==1'有':'没有'"}, studentApplyDetail);
+                    "kitGroupPurchaseTypeEnum.msg", "payingStatusStr", "hasCloudTeacher==1?'有':'没有'"}, studentApplyDetail);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
 
@@ -1233,7 +1251,7 @@ public class ExportController extends BaseController {
     @RequestMapping("export/musicGroupStudent")
     @PreAuthorize("@pcs.hasPermissions('export/musicGroupStudent')")
     public void queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo, HttpServletResponse response) throws IOException {
-        queryInfo.setIsExport(true);
+        queryInfo.setExport(true);
         queryInfo.setPage(1);
         queryInfo.setRows(49999);
         PageInfo<MusicGroupStudentsDto> musicGroupStudentsDtoPageInfo = studentManageService.queryMusicGroupStudent(queryInfo);
@@ -1243,6 +1261,22 @@ public class ExportController extends BaseController {
             MusicGroup musicGroup = musicGroupDao.get(queryInfo.getMusicGroupId());
             Map<Integer, String> gradeList = organizationService.getGradeList(musicGroup.getOrganId());
             for (MusicGroupStudentsDto row : musicGroupStudentsDtoPageInfo.getRows()) {
+                List<CloudTeacherOrderWrapper.StudentMemberDetail> orderList = row.getCloudTeacherOrderList();
+                if (!CollectionUtils.isEmpty(orderList)) {
+                    StringBuffer remark = new StringBuffer();
+                    for (CloudTeacherOrderWrapper.StudentMemberDetail studentMemberDetail : orderList) {
+                        if (StringUtils.isNotEmpty(remark)) {
+                            remark.append("\r\n");
+                        }
+                        remark.append(studentMemberDetail.getMemberRankName());
+                        remark.append(" ");
+                        remark.append(DateUtil.dateToString(studentMemberDetail.getEndTime(), DateUtil.DEFAULT_PATTERN));
+                        remark.append("(");
+                        remark.append(studentMemberDetail.getRemainingDays());
+                        remark.append("天)");
+                    }
+                    row.setRemark(remark.toString());
+                }
                 if (StringUtils.isNotEmpty(row.getCurrentGrade())) {
                     String grade = gradeList.get(Integer.parseInt(row.getCurrentGrade()));
                     if (StringUtils.isNotEmpty(grade)) {
@@ -1264,7 +1298,7 @@ public class ExportController extends BaseController {
                 } else if (row.getStudentStatus().equals("APPLY")) {
                     row.setStudentStatus("报名");
                 } else {
-                    row.setStudentStatus("" + row.getStudentStatus());
+                    row.setStudentStatus(row.getStudentStatus());
                 }
                 if (row.getIsActive()) {
                     row.setActiveName("是");
@@ -1279,13 +1313,12 @@ public class ExportController extends BaseController {
                 }
             }
             String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活",
-                    "VIP/网管是否有课", "关心包", "加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"};
+                    "VIP/网管是否有课", "关心包", "加油包", "欠费金额(元)", "退团原因", "学练宝截止时间(剩余天数)"};
             String[] body = {"userId", "realName", "gender", "phone", "registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc"
                     , "courseFee", "activeName", "hasCourse ? '是' : '否'"
                     , "carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'"
                     , "comeOnPackage == null || comeOnPackage == 0 ? '不可用'' : comeOnPackage == 1 ? '可用' : '已使用'"
-                    , "noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason",
-                    "membershipEndTime", "membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"};
+                    , "noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason","remark"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1547,7 +1580,7 @@ public class ExportController extends BaseController {
         OutputStream ouputStream = null;
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(
-                    new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交训练", "提交训练时间", "是否评价", "是否有vip", "及时评价", "是否云教练布置"},
+                    new String[]{"布置时间", "截至时间", "训练标题", "老师名字", "分部", "学生姓名", "学生编号", "提交训练", "提交训练时间", "是否评价", "是否有vip", "及时评价", "是否学练宝布置"},
                     new String[]{"createTime", "expireDate", "title", "teacherName", "organName",
                             "user.username", "userId", "statusStr", "submitTime", "isRepliedStr", "existVipCourseStr", "isRepliedTimelyStr", "musicScoreId"}, rows);
             response.setContentType("application/octet-stream");

+ 7 - 0
mec-application/src/main/java/com/ym/mec/web/controller/LessonExaminationController.java

@@ -2,17 +2,21 @@ package com.ym.mec.web.controller;
 
 
 import com.ym.mec.biz.dal.dto.LessonExaminationResultDto;
+import com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto;
 import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto1;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.page.LessonExaminationQueryInfo;
+import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
 import com.ym.mec.biz.service.LessonExaminationService;
 import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.StudentLessonExaminationDetailService;
 import com.ym.mec.biz.service.StudentLessonExaminationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -37,6 +41,9 @@ public class LessonExaminationController extends BaseController {
     @Resource
     private StudentLessonExaminationService studentLessonExaminationService;
 
+    @Autowired
+    private StudentLessonExaminationDetailService studentLessonExaminationDetailService;
+
     @ApiOperation(value = "获取作业学员列表")
     @PostMapping("queryStudentPage")
     @PreAuthorize("@pcs.hasPermissions('lessonExamination/queryStudentPage')")

+ 28 - 0
mec-application/src/main/java/com/ym/mec/web/controller/MemberRankOrganizationFeeMapperController.java

@@ -2,19 +2,25 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.entity.MemberRankOrganizationFeeMapper;
 import com.ym.mec.biz.dal.page.MemberRankFeeQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MemberRankOrganizationFeeMapperWrapper;
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
 import com.ym.mec.biz.service.MemberRankOrganizationFeeMapperService;
 import com.ym.mec.biz.service.OrganizationService;
 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.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
 import com.yonge.log.model.AuditLogAnnotation;
 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.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @RequestMapping("${app-config.url.web:}/memberRankOrganizationFeeMapper")
@@ -39,6 +45,28 @@ public class MemberRankOrganizationFeeMapperController extends BaseController {
         return succeed();
     }
 
+
+    @ApiOperation(value = "查询分部可配置的学练宝")
+    @PostMapping("/getMemberRankSetting")
+    @AuditLogAnnotation(operateName = "查询分部可配置的学练宝")
+    public HttpResponseResult<List<MemberRankSettingWrapper.MemberRankSetting>> getMemberRankSetting(
+        @RequestBody @Validated MemberRankOrganizationFeeMapperWrapper.MemberRankQuery query) {
+        query.setTenantId(TenantContextHolder.getTenantId());
+        return succeed(memberRankOrganizationFeeMapperService.getMemberRankSetting(query));
+
+    }
+
+
+    @ApiOperation(value = "新增")
+    @PostMapping("/addV2")
+    @PreAuthorize("@pcs.hasPermissions('memberRankOrganizationFeeMapper/addV2')")
+    @AuditLogAnnotation(operateName = "新增系统功能类型")
+    public Object addV2(@RequestBody @Validated MemberRankOrganizationFeeMapperWrapper.MemberRankOrganizationFeeMapperAdd memberRankOrganizationFeeMapper) {
+        memberRankOrganizationFeeMapper.setOperatorId(sysUserService.getUserId());
+        memberRankOrganizationFeeMapperService.addV2(memberRankOrganizationFeeMapper);
+        return succeed();
+    }
+
     @ApiOperation(value = "修改")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('memberRankOrganizationFeeMapper/update')")

+ 86 - 14
mec-application/src/main/java/com/ym/mec/web/controller/MemberRankSettingController.java

@@ -1,18 +1,28 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.MemberFeeSetting;
+import com.ym.mec.biz.dal.entity.MemberRankOrganizationFeeMapper;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
+import com.ym.mec.biz.dal.page.MemberRankFeeQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
+import com.ym.mec.biz.service.MemberRankOrganizationFeeMapperService;
 import com.ym.mec.biz.service.MemberRankSettingService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 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.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.web:}/memberRankSetting")
 @Api(tags = "会员等级服务")
@@ -24,12 +34,16 @@ public class MemberRankSettingController extends BaseController {
     @Autowired
     private SysUserService sysUserService;
 
+    @Autowired
+    private MemberRankOrganizationFeeMapperService memberRankOrganizationFeeMapperService;
+
     @ApiOperation(value = "新增")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('memberRankSetting/add')")
     @AuditLogAnnotation(operateName = "新增会员等级")
-    public Object add(@RequestBody MemberRankSetting memberRankSetting) {
+    public HttpResponseResult<Object> add(@RequestBody MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting) {
         memberRankSetting.setOperator(sysUserService.getUserId());
+        memberRankSetting.setUpdateTime(new Date());
         memberRankSettingService.add(memberRankSetting);
         return succeed();
     }
@@ -38,32 +52,90 @@ public class MemberRankSettingController extends BaseController {
     @GetMapping("/get")
     @PreAuthorize("@pcs.hasPermissions('memberRankSetting/get')")
     @AuditLogAnnotation(operateName = "会员等级详情")
-    public Object get(Integer memberRankSettingId) {
+    public HttpResponseResult<MemberRankSettingWrapper.MemberRankSetting> get(Integer memberRankSettingId) {
         return succeed(memberRankSettingService.getDetail(memberRankSettingId));
     }
 
     @ApiOperation(value = "修改")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('memberRankSetting/update')")
-    public Object update(@RequestBody MemberRankSetting memberRankSetting) {
+    @AuditLogAnnotation(operateName = "修改会员等级")
+    public HttpResponseResult<Object> update(@RequestBody MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting) {
         memberRankSetting.setOperator(sysUserService.getUserId());
         memberRankSettingService.updateSetting(memberRankSetting);
         return succeed();
     }
 
+
+
+    @ApiOperation(value = "删除")
+    @PostMapping("/del/{id}")
+    @PreAuthorize("@pcs.hasPermissions('memberRankSetting/del')")
+    @AuditLogAnnotation(operateName = "删除学练宝会员等级")
+    public HttpResponseResult<Object> update(@PathVariable Integer id) {
+        memberRankSettingService.del(id);
+        return succeed();
+    }
     @ApiOperation(value = "分页查询")
-    @GetMapping("/queryPage")
+    @PostMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('memberRankSetting/queryPage')")
-    public Object queryPage(QueryInfo queryInfo) {
-        return succeed(memberRankSettingService.queryPage(queryInfo));
+    public HttpResponseResult<List<MemberRankSettingWrapper.MemberRankSetting>> queryPage(@RequestBody MemberRankSettingWrapper.MemberRankSettingQuery queryInfo) {
+        return succeed(memberRankSettingService.queryPage2(queryInfo));
+    }
+
+    @ApiOperation(value = "树状列表")
+    @GetMapping("/categoryTree")
+    public HttpResponseResult<MemberRankSettingWrapper.Category> queryTree(@RequestParam(required = false) Integer parentMemberId) {
+
+        return succeed(memberRankSettingService.getTree(parentMemberId));
     }
 
     @ApiOperation(value = "获取所有会员列表")
-    @GetMapping("/findAll")
-    @PreAuthorize("@pcs.hasPermissions('memberRankSetting/findAll')")
-    public Object findAll(Boolean isDefault) {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("isDefault",isDefault);
-        return succeed(memberRankSettingService.findAll(map));
+    @PostMapping("/findByOrganIds")
+    @PreAuthorize("@pcs.hasPermissions('memberRankSetting/findByOrganIds')")
+    public HttpResponseResult<List<MemberRankSetting>> findAll(@RequestBody List<Integer> organIds,
+                                                               @RequestParam(required = false, defaultValue = "false") Boolean organFeeFlag) {
+
+        // 根据分部ID查询对应的会员等级
+        List<MemberRankSetting> memberRanks = memberRankSettingService.findByOrganIds(organIds);
+
+        // 根据分部ID查询对应价格
+        if (Boolean.TRUE.equals(organFeeFlag)) {
+            MemberRankFeeQueryInfo queryInfo = new MemberRankFeeQueryInfo();
+            queryInfo.setRows(1000);
+            queryInfo.setPage(1);
+            if (CollectionUtils.isNotEmpty(organIds)) {
+
+                queryInfo.setOrganId(StringUtils.join(organIds, ","));
+            }
+            List<MemberRankOrganizationFeeMapper> rows = memberRankOrganizationFeeMapperService.queryPage(queryInfo).getRows();
+            if (CollectionUtils.isNotEmpty(rows)) {
+                Map<Integer, MemberFeeSetting> collect = rows.stream()
+                    .collect(Collectors.toMap(MemberRankOrganizationFeeMapper::getMemberRankSettingId, MemberRankOrganizationFeeMapper::getMemberFeeSetting, (o, n) -> n));
+
+                // 已统一规定会员等级只有两级,暂不考虑多级
+                for (MemberRankSetting item : memberRanks) {
+                    if (CollectionUtils.isEmpty(item.getChildren())) {
+                        continue;
+                    }
+
+                    // 设置价格
+                    for (MemberRankSetting child : item.getChildren()) {
+                        child.setMemberFeeSetting(collect.get(child.getId()));
+                    }
+                }
+            }
+        }
+
+        return succeed(memberRanks);
+    }
+
+    @ApiOperation(value = "获取可用的会员树状列表")
+    @GetMapping("/queryTree")
+    public HttpResponseResult<List<MemberRankSettingWrapper.MemberRankSetting>> queryTree(String musicGroupId,Integer organId,Integer studentId) {
+        if (musicGroupId == null && organId == null && studentId == null) {
+            return failed("参数错误");
+        }
+        return succeed(memberRankSettingService.queryTree(musicGroupId,organId,studentId));
     }
 }

+ 3 - 3
mec-application/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java

@@ -53,7 +53,7 @@ public class MusicGroupPaymentCalenderController extends BaseController {
 
     @ApiOperation(value = "查询审核人")
     @GetMapping(value = "/queryUser")
-    public Object queryUser(MusicGroupPaymentCalenderQueryInfo queryInfo) {
+    public HttpResponseResult<List<Map<String, String>>> queryUser(MusicGroupPaymentCalenderQueryInfo queryInfo) {
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(musicGroupPaymentCalenderService.queryUser(queryInfo));
     }
@@ -61,14 +61,14 @@ public class MusicGroupPaymentCalenderController extends BaseController {
     @ApiOperation(value = "获取缴费信息")
     @GetMapping("/getDetail")
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/getDetail')")
-    public Object getDetail(Long id) {
+    public HttpResponseResult<Map<String, Object>> getDetail(Long id) {
         return succeed(musicGroupPaymentCalenderService.getDetail(id));
     }
 
     @ApiOperation(value = "新增乐团缴费日历")
     @PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/add')")
-    public HttpResponseResult add(@RequestBody MusicGroupPaymentCalenderDto musicGroupPaymentCalenderDto) {
+    public HttpResponseResult<ModelMap> add(@RequestBody MusicGroupPaymentCalenderDto musicGroupPaymentCalenderDto) {
     	String batchNo = musicGroupPaymentCalenderService.create(musicGroupPaymentCalenderDto);
         ModelMap map = new ModelMap(1);
         map.put("musicGroupPaymentCalenderBatchNo", batchNo);

+ 19 - 0
mec-application/src/main/java/com/ym/mec/web/controller/MusicSheetController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.entity.Instrument;
@@ -75,6 +76,12 @@ public class MusicSheetController {
             musicSheetDetail.setIsConvertibleScore(detail.getIsConvertibleScore());
         }
 
+        // 如果是合奏 并且乐器ID = 2268
+        musicSheetDetail.setSpecialPercussionFlag(false);
+        if ("2268".equals(musicSheetDetail.getMusicalInstrumentIds()) && musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            musicSheetDetail.setSpecialPercussionFlag(true);
+        }
+
         // 设置乐器信息
         if (StringUtils.isNotBlank(musicSheetDetail.getMusicalInstrumentIds())) {
             List<Integer> instrumentIds = Arrays.stream(musicSheetDetail.getMusicalInstrumentIds().split(","))
@@ -91,6 +98,16 @@ public class MusicSheetController {
                 }
             }
         }
+        MusicSheetWrapper.ClientMusicSheetInfoQuery query = new MusicSheetWrapper.ClientMusicSheetInfoQuery();
+        query.setUserType(ClientEnum.SCHOOL);
+        query.setUserId(sysUserService.getUserId());
+        query.setMusicSheetId(id);
+        MusicSheetWrapper.ClientMusicSheetInfo clientMusicSheetInfo = musicSheetService.queryMusicScoreDetail(query);
+        if (clientMusicSheetInfo != null) {
+            musicSheetDetail.setUseStatus(clientMusicSheetInfo.getUseStatus());
+        } else {
+            musicSheetDetail.setUseStatus("LOCK");
+        }
         return R.from(musicSheetDetail);
     }
 
@@ -125,6 +142,7 @@ public class MusicSheetController {
         queryInfo.setUserId(userId);
         queryInfo.setRecentFlag(query.getRecentFlag());
         queryInfo.setClientId("education");
+        queryInfo.setUserType(ClientEnum.SCHOOL);
         PageInfo<SysMusicScore> sysMusicScorePageInfo = musicSheetService.queryMusicScorePage(queryInfo);
         PageInfo<MusicSheetWrapper.MusicSheet> convert = sysMusicScorePageInfo.convert(o -> {
             MusicSheetWrapper.MusicSheet musicSheet = new MusicSheetWrapper.MusicSheet();
@@ -137,6 +155,7 @@ public class MusicSheetController {
             musicSheet.setUsedNum(0L);
             musicSheet.setPaymentType(StringUtils.isNotBlank(o.getRankIds()) && o.getRankIds().contains("1") ? "VIP" : "FREE");
             musicSheet.setAudioPlayTypes(o.getAudioPlayTypes());
+            musicSheet.setUseStatus(o.getUseStatus());
 
             return musicSheet;
         });

+ 37 - 28
mec-application/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -1,10 +1,12 @@
 package com.ym.mec.web.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
@@ -48,7 +50,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取学生请假异常列表")
     @GetMapping("/queryStudentErrorLeaveList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentErrorLeaveList')")
-    public Object queryStudentErrorLeaveList(StudentErrorLeaveQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<StudentErrorLeaveDto>> queryStudentErrorLeaveList(StudentErrorLeaveQueryInfo queryInfo){
         queryInfo.setOrganIds(organizationService.getEmployeeOrgan(queryInfo.getOrganIds()));
         return succeed(studentManageService.queryStudentErrorLeaveList(queryInfo));
     }
@@ -56,14 +58,14 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取学生请假课程列表")
     @GetMapping("/queryStudentLeaveCourseList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentLeaveCourseList')")
-    public Object queryStudentLeaveCourseList(StudentErrorLeaveQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<StudentLeaveCourseDto>> queryStudentLeaveCourseList(StudentErrorLeaveQueryInfo queryInfo){
         return succeed(studentManageService.queryStudentLeaveCourseList(queryInfo));
     }
 
     @ApiOperation(value = "获取学生列表")
     @PostMapping("/queryStudentList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentList')")
-    public Object queryStudentList(@RequestBody StudentManageQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<StudentManageListDto>> queryStudentList(@RequestBody StudentManageQueryInfo queryInfo){
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         queryInfo.setIsExport(false);
         return succeed(studentManageService.findStudentsByOrganId(queryInfo));
@@ -72,7 +74,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取学生列表")
     @GetMapping("/queryStudent")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudent')")
-    public Object queryStudent(StudentActivityQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<Student>> queryStudent(StudentActivityQueryInfo queryInfo){
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(studentManageService.queryStudent(queryInfo));
     }
@@ -80,7 +82,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取学生列表(基本信息)")
     @GetMapping("/queryStudentBasicInfo")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentBasicInfo')")
-    public Object queryStudentBasicInfo(UserBasicQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<SysUserDto>> queryStudentBasicInfo(UserBasicQueryInfo queryInfo){
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(studentService.queryStudentBasicInfo(queryInfo));
     }
@@ -88,7 +90,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取61活动学生列表")
     @GetMapping("/queryChildrenDayStudentList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryChildrenDayStudentList')")
-    public Object queryChildrenDayStudentList(StudentManageQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<Student>> queryChildrenDayStudentList(StudentManageQueryInfo queryInfo){
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(studentService.queryPage(queryInfo));
     }
@@ -104,7 +106,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "获取指定分部学生列表")
     @GetMapping("/queryOrganStudentList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryOrganStudentList')")
-    public Object queryOrganStudentList(StudentManageQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<StudentManageListDto>> queryOrganStudentList(StudentManageQueryInfo queryInfo){
         if(StringUtils.isBlank(queryInfo.getOrganId())){
             return failed("请指定分部");
         }
@@ -115,21 +117,21 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "学员注册")
     @PostMapping("/register")
     @PreAuthorize("@pcs.hasPermissions('studentManage/register')")
-    public Object studentRegister(Student student){
+    public HttpResponseResult<Integer> studentRegister(Student student){
         return succeed(studentManageService.studentRegister(student));
     }
 
     @ApiOperation(value = "修改学员信息")
     @PostMapping("/studentUpdate")
     @PreAuthorize("@pcs.hasPermissions('studentManage/studentUpdate')")
-    public Object studentUpdate(Student student){
+    public HttpResponseResult<Integer> studentUpdate(Student student){
         return succeed(studentManageService.studentUpdate(student));
     }
 
     @ApiOperation(value = "乐团管理--乐团详情--获取学员列表")
     @GetMapping("/queryMusicGroupStudent")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudent')")
-    public Object queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<MusicGroupStudentsDto>> queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo){
         return succeed(studentManageService.queryMusicGroupStudent(queryInfo));
     }
 
@@ -150,7 +152,7 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "乐团修改--学员缴费记录--可新增学员列表")
     @GetMapping("/queryCanAddStudent")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryCanAddStudent')")
-    public Object queryCanAddStudent(String musicGroupId,String batchNo,String search,Integer subjectId){
+    public HttpResponseResult<List<BasicUserDto>> queryCanAddStudent(String musicGroupId, String batchNo, String search, Integer subjectId){
         return succeed(studentManageService.queryCanAddStudent(musicGroupId,batchNo,search,subjectId));
     }
 
@@ -159,7 +161,7 @@ public class StudentManageController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentClassGroup')")
     @ApiImplicitParams({@ApiImplicitParam(name = "teacherId", value = "学生编号", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
-    public Object queryStudentClassGroup(String musicGroupId,Integer teacherId){
+    public HttpResponseResult<List<ConditionDto>> queryStudentClassGroup(String musicGroupId,Integer teacherId){
         if(StringUtils.isEmpty(musicGroupId) || teacherId == null){
             return failed("参数校验失败");
         }
@@ -169,42 +171,42 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "乐团管理--乐团详情--学员列表,汇总数据接口")
     @GetMapping("/musicGroupStudentsSum")
     @PreAuthorize("@pcs.hasPermissions('studentManage/musicGroupStudentsSum')")
-    public Object musicGroupStudentsSum(String musicGroupId){
+    public HttpResponseResult<Map<String, Object>> musicGroupStudentsSum(String musicGroupId){
         return succeed(studentManageService.musicGroupStudentsSum(musicGroupId));
     }
 
     @ApiOperation(value = "乐团管理--乐团详情--点名总览")
     @GetMapping("/queryMusicGroupStudentsSign")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudentsSign')")
-    public Object queryMusicGroupStudentsSign(StudentSignQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo<MusicGroupStudentSignDto>> queryMusicGroupStudentsSign(StudentSignQueryInfo queryInfo){
         return succeed(studentManageService.queryMusicGroupStudentsSign(queryInfo));
     }
 
     @ApiOperation(value = "根据学生ID获取学生基本报名信息")
     @GetMapping("/findStudentBaseInfo")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentBaseInfo')")
-    public Object findStudentBaseInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+    public HttpResponseResult<StudentManageListDto> findStudentBaseInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
         return succeed(studentManageService.findStudentManageBaseInfo(userId));
     }
 
     @ApiOperation(value = "根据学生ID获取其所在的乐团")
     @GetMapping("/findStudentMusicGroups")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentMusicGroups')")
-    public Object findStudentMusicGroups(@ApiParam(value = "学生编号", required = true) Integer userId){
+    public HttpResponseResult<List<StudentManageBaseInfoOfMusicGroupDto>> findStudentMusicGroups(@ApiParam(value = "学生编号", required = true) Integer userId){
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
     @ApiOperation("获取学生所在乐团列表名称")
     @GetMapping(value = "/queryUserMusicInfos")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryUserMusicInfos')")
-    public Object queryUserMusicInfos(Integer userId) {
+    public HttpResponseResult<List<MusicCardDto>> queryUserMusicInfos(Integer userId) {
         return succeed(studentManageService.queryUserMusicInfos(userId));
     }
 
     @ApiOperation(value = "根据乐团获取排课列表")
     @GetMapping("/findStudentCourses")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourses')")
-    public Object findStudentCourses(StudentManageCourseQueryInfo queryInfo){
+    public HttpResponseResult<PageInfo> findStudentCourses(StudentManageCourseQueryInfo queryInfo){
         return succeed(studentManageService.findStudentCourseList(queryInfo));
     }
 
@@ -309,14 +311,6 @@ public class StudentManageController extends BaseController {
         return succeed(studentManageService.sumStudentAttendance(courseScheduleId));
     }
 
-    @ApiOperation(value = "新增会员试用")
-    @PostMapping("/updateMemberExperience")
-    @PreAuthorize("@pcs.hasPermissions('studentManage/updateMemberExperience')")
-    public HttpResponseResult updateMemberExperience(String studentIds, Integer rankId, Date endTime){
-        studentService.updateMemberExperience(studentIds,rankId,endTime);
-        return succeed();
-    }
-
     @ApiOperation(value = "初始化教师编号")
     @GetMapping("/initTeacherId")
     @PreAuthorize("@pcs.hasPermissions('studentManage/initTeacherId')")
@@ -520,8 +514,23 @@ public class StudentManageController extends BaseController {
     @ApiOperation(value = "修改学员会员时长")
     @PostMapping("/updateStudentMember")
     @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentMember')")
-    public HttpResponseResult updateStudentMember(Integer userId,Date endTime,String memo) throws Exception {
-        studentService.updateStudentMember(userId,endTime,memo,sysUserService.getUserId());
+    public HttpResponseResult updateStudentMember(@RequestBody CloudTeacherOrderWrapper.UpdateStudentMemberDto param) throws Exception {
+        param.setOperatorId(sysUserService.getUserId());
+        studentService.updateStudentMember(param);
         return succeed();
     }
+
+    @ApiOperation(value = "根据学生ID获取学生信息")
+    @GetMapping("/queryUserInfo")
+    public Object queryUserInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+
+        // 返回数据
+        Map<String, Object> dataMap = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(userId, null, dataMap);
+        dataMap.put("student", student);
+
+        return succeed(dataMap);
+    }
 }

+ 49 - 0
mec-application/src/main/java/com/ym/mec/web/controller/StudentMemberUpdateLogController.java

@@ -0,0 +1,49 @@
+package com.ym.mec.web.controller;
+
+
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import com.ym.mec.biz.service.StudentMemberUpdateLogService;
+import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.web:}/studentMemberUpdateLog")
+@Api(tags = "学员云教练时长修改记录")
+public class StudentMemberUpdateLogController extends BaseController {
+
+    @Autowired
+    private StudentMemberUpdateLogService studentMemberUpdateLogService;
+
+    @ApiOperation(value = "查询分页", notes = "学员云教练时长修改记录- 传入 StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog>> page(@RequestBody StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query) {
+        
+        IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> pages = studentMemberUpdateLogService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(PageUtil.pageInfo(pages));
+	}
+
+}

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

@@ -107,7 +107,7 @@ public class StudentRegistrationController extends BaseController {
     @ApiOperation(value = "乐团【报名中、缴费中】 学生详情列表分页查询")
     @GetMapping("/queryStudentApplyDetail")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/queryStudentApplyDetail')")
-    public Object queryStudentApplyDetail(StudentRegistrationQueryInfo queryInfo) {
+    public HttpResponseResult<PageInfo<StudentApplyDetailDto>> queryStudentApplyDetail(StudentRegistrationQueryInfo queryInfo) {
         return succeed(studentRegistrationService.queryStudentDetailPage(queryInfo));
     }
 

+ 8 - 0
mec-application/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -766,4 +766,12 @@ public class TaskController extends BaseController {
     public void workOverdue(){
         userMusicService.workOverdue();
     }
+
+    /**
+     * 删除过期作业
+     */
+    @GetMapping("/deleteOverdueHomework")
+    public void deleteOverdueHomework(){
+        studentCourseHomeworkService.deleteOverdueHomework();
+    }
 }

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

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.dal.entity.TenantConfig;
 import com.ym.mec.biz.service.TenantConfigService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 @RequestMapping("${app-config.url.web:}/tenantConfig")
 @Api(tags = "机构配置管理")
 @RestController
@@ -32,7 +35,7 @@ public class TenantConfigController extends BaseController {
 	@ApiOperation("当前机构是否可以自动激活团练宝")
 	@GetMapping(value = "/autoActivationFlag")
 	@PreAuthorize("@pcs.hasPermissions('tenantConfig/autoActivationFlag')")
-	public Object autoActivationFlag() {
+	public HttpResponseResult<Map<Integer, Boolean>> autoActivationFlag() {
 		return succeed(tenantConfigService.autoActivationFlag(TenantContextHolder.getTenantId()));
 	}
 }

+ 17 - 0
mec-application/src/main/java/com/ym/mec/web/controller/education/EduStudentController.java

@@ -1,9 +1,11 @@
 package com.ym.mec.web.controller.education;
 
+import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.BaseMapDto;
 import com.ym.mec.biz.dal.dto.EduOrganStudentDataDto;
 import com.ym.mec.biz.dal.dto.StatDto;
 import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentManageService;
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -51,6 +54,20 @@ public class EduStudentController extends BaseController {
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
+    @ApiOperation(value = "根据学生ID获取学生信息")
+    @GetMapping("/queryUserInfo")
+    public Object queryUserInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
+
+        // 返回数据
+        Map<String, Object> dataMap = Maps.newHashMap();
+
+        // 查询学员基本信息
+        Student student = studentManageService.getStudentUserInfo(userId, null, dataMap);
+        dataMap.put("student", student);
+
+        return succeed(dataMap);
+    }
+
     @ApiOperation(value = "分部云教练学员数据预览")
     @GetMapping("/organStudentOverView")
     public HttpResponseResult<List<EduOrganStudentDataDto>> organStudentOverView() throws Exception {

+ 6 - 0
mec-application/src/main/java/com/ym/mec/web/controller/open/OpenMusicSheetController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller.open;
 
 import com.alibaba.fastjson.JSON;
+import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.template.R;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
@@ -65,6 +66,11 @@ public class OpenMusicSheetController {
             // 设置业务端曲目分类
             musicSheetDetail.setBizMusicCategoryId(detail.getCategoriesId() == null ? null : detail.getCategoriesId().longValue());
         }
+        // 如果是合奏 并且乐器ID = 2268
+        musicSheetDetail.setSpecialPercussionFlag(false);
+        if ("2268".equals(musicSheetDetail.getMusicalInstrumentIds()) && musicSheetDetail.getMusicSheetType() == EMusicSheetType.CONCERT) {
+            musicSheetDetail.setSpecialPercussionFlag(true);
+        }
 
         // 设置乐器信息
         if (StringUtils.isNotBlank(musicSheetDetail.getMusicalInstrumentIds())) {

+ 27 - 27
mec-application/src/main/resources/exportColumnMapper.ini

@@ -11,11 +11,11 @@ headColumns = ["分部", "合作单位", "乐团","学员编号", "学员姓名"
 fieldColumns = ["organName", "cooperationOrganName", "musicGroupName","userId", "username", "phone","subjectName","currentClass", "realName", "isReserve == true ?'是':'否'","gradeLeave","theoryLevel","buyVipFlag == true ?'是':'否'","buyTheoryCourseFlag == true ?'是':'否'"]
 
 [2021双十一学员购买详情]
-headColumns = ["学员编号", "学员姓名","订单号", "交易金额","交易时间", "订单创建时间", "购买课程", "赠送会员"]
+headColumns = ["学员编号", "学员姓名","订单号", "交易金额","交易时间", "订单创建时间", "购买课程", "赠送学练宝"]
 fieldColumns = ["userId", "username", "orderNo","amount", "payTime", "createTime","type","giveMember==0?'否':'是'"]
 
 [分部2021双11活动统计导出]
-headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送会员人数"]
+headColumns = ["分部", "总成交金额","总购买人数", "人均购买金额","20节1v1成交金额", "20节1v1成交人数", "40节1v1成交金额", "40节1v1成交人数", "20节1v2成交金额", "20节1v2成交人数","40节1v2成交金额", "40节1v2成交人数", "小组课成交金额", "小组课成交人数", "赠送学练宝人数"]
 fieldColumns = ["organName", "totalBuyAmount", "totalBuyNum","avgBuyAmount", "vip1V120Amount", "vip1V120Num","vip1V140Amount", "vip1V140Num", "vip1V220Amount", "vip1V220Num","vip1V240Amount" ,"vip1V240Num","musicTheoryAmount","musicTheoryNum","giveMemberNum"]
 
 [学生个人账户余额导出]
@@ -39,7 +39,7 @@ headColumns = ["分部编号", "分部名称", "课程组类型", "课程组编
 fieldColumns = ["organId", "organName", "groupType.desc", "groupId", "groupName", "username", "userId", "courseScheduleId", "courseScheduleName", "classDate", "startClassTime", "endClassTime", "guideTeacherName", "guideTeacherId" , "educationalTeacherName", "educationalTeacherId", "actualTeacherName", "actualTeacherId", "studentAttendanceStatus.msg"]
 
 [缴费记录导出]
-headColumns = ["学员编号", "学员姓名", "学员声部", "学员状态", "手机号","缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间","会员金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"]
+headColumns = ["学员编号", "学员姓名", "学员声部", "学员状态", "手机号","缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间","学练宝金额", "乐器金额", "课程金额", "辅件金额", "乐保金额", "活动金额"]
 fieldColumns = ["userId", "sysUser.username", "studentRegistration.subjectName", "studentRegistration.musicGroupStatus.msg", "sysUser.phone", "startPaymentDateMgpc", "deadlinePaymentDateMgpc", "openFlag.msg", "paymentStatus.desc", "payTime", "cloudAmount", "musicalAmount", "courseAmount", "accessoriesAmount", "maintenanceAmount", "activityAmount"]
 
 [业务管理--审核列表导出]
@@ -71,8 +71,8 @@ headColumns = ["课程组编号", "课程组名称", "分部", "指导老师", "
 fieldColumns = ["musicGroupId", "courseGroupName", "organName", "teacherName", "settlementStatus.msg", "expectRewardAmount", "settlementDate", "memo"]
 
 [导出学员列表]
-headColumns = ["分部", "学员编号", "学员姓名", "性别", "家长姓名","家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)","所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用云教练", "会员截止日期", "会员剩余天数", "会员试用结束日期", "会员试用剩余天数"]
-fieldColumns = ["organName", "userId", "username", "gender.description", "parentsName", "parentsPhone", "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg","noStartPracticeCourseNum","noStartVipCourseNum", "courseBalance", "balance", "musicGroupName", "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'", "experienceMembershipEndTime","membershipEndTime == null ? '未试用' : membershipDay >= 0 ? membershipDay : '已失效'"]
+headColumns = ["分部", "学员编号", "学员姓名", "性别", "家长姓名","家长联系电话", "是否激活", "是否有课", "是否有网管课","网管课剩余课时","VIP课剩余课时", "课程余额(元)", "账户余额(元)","所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议", "是否使用学练宝", "学练宝截止日期", "学练宝剩余天数", "学练宝试用结束日期", "学练宝试用剩余天数"]
+fieldColumns = ["organName", "userId", "username", "gender.description", "parentsName", "parentsPhone", "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg","noStartPracticeCourseNum","noStartVipCourseNum", "courseBalance", "balance", "musicGroupName", "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract ? '是' : '否'", "recordUserId == null ? '否' : '是'", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '学练宝已过期'", "experienceMembershipEndTime","membershipEndTime == null ? '未试用' : membershipDay >= 0 ? membershipDay : '已失效'"]
 
 [导出陪练课列表]
 headColumns = ["课程组编号", "课程组名称", "课程组类型", "分部", "教务老师", "指导老师", "班级人数","当前课次", "总课次", "剩余课次", "开课时间", "结束时间", "课程组状态", "是否续费", "备注"]
@@ -95,11 +95,11 @@ headColumns = ["分部", "乐团", "商品类型", "商品名称", "型号", "
 fieldColumns = ["brief", "memo", "type.desc", "name", "specification", "sellCount"]
 
 [导出学员采购清单明细]
-headColumns = ["分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "云教练金额", "乐保金额", "订单总价"]
+headColumns = ["分部", "乐团", "学员编号", "学员姓名", "声部", "购买乐器", "乐器采购方式", "乐器金额", "购买教辅", "教辅金额", "课程金额", "学练宝金额", "乐保金额", "订单总价"]
 fieldColumns = ["organName", "musicGroupName", "userId", "username", "subjectName", "musicalName", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesName", "accessoriesAmount", "courseAmount", "cloudTeacherAmount", "maintenanceAmount", "orderAmount"]
 
 [学生详情列表导出]
-headColumns = ["学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业","实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买云教练"]
+headColumns = ["学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业","实际专业", "联系电话", "学员缴费状态", "乐器购买方式","缴费中/审核中","是否购买学练宝"]
 fieldColumns = ["studentName", "parentsName", "currentGrade", "currentClass", "gender.description", "isAllowAdjust.msg", "subjectName", "actualSubjectName", "parentsPhone", "paymentStatus.desc", "kitGroupPurchaseTypeEnum.msg","payingStatusStr","hasCloudTeacher==1?'有':'没有'"]
 
 [分页导出教师薪酬列表]
@@ -111,15 +111,15 @@ headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount","balancePaymentAmount","couponRemitFee", "transferFee", "platformFee", "payTime", "organName","memo"]
 
 [订单列表导出1]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额", "课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它", "汇付手续费","平台手续费", "到账时间","关联乐团ID/VIP课ID","课程形态","类型","收费乐团编号","收费乐团","零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额", "课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "学练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它", "汇付手续费","平台手续费", "到账时间","关联乐团ID/VIP课ID","课程形态","类型","收费乐团编号","收费乐团","零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount","balancePaymentAmount","couponRemitFee","musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee","leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId","groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [订单列表导出2]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "学练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee",     "musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee",     "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [订单列表汇总导出]
-headColumns = ["分部", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它"]
+headColumns = ["分部", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "学练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它"]
 fieldColumns = ["organName", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee","musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee", "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee","leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee"]
 
 [学员小课记录导出]
@@ -127,8 +127,8 @@ headColumns = ["分部", "学员编号", "学生姓名", "年级", "课程余额
 fieldColumns = ["organName","userId", "username", "grade","courseBalance", "subjectName", "normalClassTeacherId", "normalClassTeacherName", "beforeClassNum", "vipTotalNum", "vipOverNum", "vipNotStartNum", "vipOverTeacherId", "vipOverTeacherName", "vipNotStartTeacherId", "vipNotStartTeacherName" , "practiceOverNum", "practiceNotStartNum", "practiceOverTeacherId", "practiceOverTeacherName", "practiceNotStartTeacherId", "practiceNotStartTeacherName","teacherId","teacherName"]
 
 [乐团导出学员列表]
-headColumns = ["学员编号", "学员姓名", "性别", "联系电话","入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活","VIP/网管是否有课","关心包","加油包", "欠费金额(元)", "退团原因", "会员截止时间", "会员剩余天数"]
-fieldColumns = ["userId", "realName", "gender", "phone","registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc" ,"courseFee", "activeName", "hasCourse ? '是' : '否'" ,"carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'" ,"comeOnPackage == null || comeOnPackage == 0 ? '不可用' : comeOnPackage == 1 ? '可用' : '已使用'" ,"noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '会员已过期'"]
+headColumns = ["学员编号", "学员姓名", "性别", "联系电话","入团时间", "年级", "班级", "入团专业", "学员状态", "报名缴费", "缴费金额", "是否激活","VIP/网管是否有课","关心包","加油包", "欠费金额(元)", "退团原因", "学练宝截止时间", "学练宝剩余天数"]
+fieldColumns = ["userId", "realName", "gender", "phone","registerTime", "currentGrade", "currentClass", "subjectName", "studentStatus", "paymentStatus.desc" ,"courseFee", "activeName", "hasCourse ? '是' : '否'" ,"carePackage == null || carePackage == 0 ? '不可用' : carePackage == 1 ? '可用' : '已使用'" ,"comeOnPackage == null || comeOnPackage == 0 ? '不可用' : comeOnPackage == 1 ? '可用' : '已使用'" ,"noPaymentAmount == null ? 0 : noPaymentAmount", "quitReason", "membershipEndTime","membershipEndTime == null ? hasNoStartCloudTeacher ? '未生效' : '未购买' : membershipDay >= 0 ? membershipDay : hasNoStartCloudTeacher ? '未生效' : '学练宝已过期'"]
 
 [评论列表导出]
 headColumns = ["分部", "上课日期", "学生编号", "课程编号", "学员是否到课", "课程班名称", "老师", "教材内容", "发音", "节奏", "小组", "曲目", "评价备注", "回访日期(布置训练)", "完成app双向沟通", "学员评分", "是否布置训练", "是否提交训练", "是否回复训练", "教务老师", "教务评价"]
@@ -171,11 +171,11 @@ headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交
 fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee", "transferFee", "platformFee", "payTime", "organName", "memo"]
 
 [财务管理导出1]
-headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "业务分部",  "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "学练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee","musicGroupCourseFee", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [财务管理导出2]
-headColumns = ["序号", "业务分部", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "业务分部", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课",  "直播课", "网管课", "小组课", "考级", "维修费用", "乐保费用", "学练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userOrganName", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount" , "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee","musicGroupCourseFee", "vipCourseFee",  "liveCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [老师默认课酬导出]
@@ -211,7 +211,7 @@ headColumns = ["分部", "老师编号", "老师姓名", "服务周期", "课后
 fieldColumns = ["organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "exerciseNum", "actualExercisesNum", "exercisesReplyNum", "expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "submitRate", "remindDate", "operatorName"]
 
 [首页异常统计导出]
-headColumns = ["分部", "基础技能班学员数量异常", "乐团巡查事项异常", "未在班级学员数", "欠费学员数","申请退团学员数", "预计课酬较低", "课程时间安排异常", "乐团巡查未计划", "乐团巡查任务未提交","回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "会员过期学员数", "总计"]
+headColumns = ["分部", "基础技能班学员数量异常", "乐团巡查事项异常", "未在班级学员数", "欠费学员数","申请退团学员数", "预计课酬较低", "课程时间安排异常", "乐团巡查未计划", "乐团巡查任务未提交","回访任务未完成", "课程考勤异常", "课程异常", "服务指标异常", "异常请假", "学练宝过期学员数", "总计"]
 fieldColumns = ["organName", "highClassStudentLessThanThreeNum", "musicPatrolItem", "noClassMusicGroupStudentInfo", "studentNotPayment", "studentApplyForQuitMusicGroup", "teacherExpectSalaryBeLow", "courseTimeError", "inspectionItem", "inspectionItemPlan", "studentVisit", "teacherExceptionAttendance", "teacherNotAClass", "teacherServeError", "studentErrorLeave", "noMemberStudentNum", "total"]
 
 [运营预警导出]
@@ -231,15 +231,15 @@ headColumns = ["编号", "姓名", "手机号", "微信","声部", "所在城市
 fieldColumns = ["id", "realName", "mobileNo", "wechatNo", "subjectName", "liveCity", "intentionCity", "sourceFrom", "nextVisitDateStr", "entryDateStr", "position.msg","organName","status.desc", "idCard", "age", "gender?'男':'女'", "bankCardNo","bankAddress","emergencyContactName", "emergencyContactRelation", "emergencyContactPhone", "updateTime", "hrbpName","resignationDateStr"]
 
 [分部云教练学员数据预览导出]
-headColumns = ["排名", "分部", "学员总数", "目标人数", "活跃人数", "使用人数", "新增使用人数", "使用比例", "付费会员数", "付费会员占比"]
+headColumns = ["排名", "分部", "学员总数", "目标人数", "活跃人数", "使用人数", "新增使用人数", "使用比例", "付费学练宝数", "付费学练宝占比"]
 fieldColumns = ["index","organName", "totalStudentNum", "targetNum", "cloudStudyLivelyStudentNum", "cloudStudyUseStudentNum", "newCloudStudyStudentNum", "cloudStudyUseStudentDuty+'%'", "vipStudentNum", "vipStudentDuty+'%'"]
 
 [分部云教练学员数据详情导出]
-headColumns = ["分部", "在读人数", "生效待激活总人数", "会员占比", "生效会员", "待激活", "覆盖率", "复购率","近一个月活跃人数", "今日使用人数"]
+headColumns = ["分部", "在读人数", "生效待激活总人数", "学练宝占比", "生效学练宝", "待激活", "覆盖率", "复购率","近一个月活跃人数", "今日使用人数"]
 fieldColumns = ["organName", "totalStudentNum", "vipStudentNum", "vipStudentRate+'%'", "effectiveVipStudentNum", "waitActivateVipStudentNum", "buyRate+'%'", "againBuyRate+'%'", "activeStudentNum", "cloudStudyTodayUseStudentNum"]
 
 [分部云教练学员训练数据导出]
-headColumns = ["分部", "学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "是否会员", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "声部", "声部老师",  "是否有小课","训练次数", "训练天数", "训练平均时长", "会员有效期", "是否服务", "是否运营", "是否云教练活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"]
+headColumns = ["分部", "学员编号", "学员","年级","班级", "手机号", "是否新用户", "是否激活", "是否学练宝", "训练总时长", "连续训练天数", "乐团", "乐团主管", "所属学校", "声部", "声部老师",  "是否有小课","训练次数", "训练天数", "训练平均时长", "学练宝有效期", "是否服务", "是否运营", "是否学练宝活动目标学员", "活动消费金额", "关心包", "加油包", "未上课数", "vip课剩余课时", "网管课剩余课时"]
 fieldColumns = ["organName","studentId", "studentName","currentGradeNum","currentClass", "phone", "newUser?'是':'否'", "enable?'是':'否'", "memberFlag?'是':'否'", "cloudStudyUseTime+'分钟'", "cloudStudyRunningDays+'天'", "musicGroupNames", "educationName", "schoolNames","subjectName","subjectTeacherName",  "hasVipGroup>0?'是':'否'", "cloudStudyUseNum+'次'", "cloudStudyUseDays+'天'",         "cloudStudyUseAvgTime+'分钟'", "membershipEndTime", "serviceTag>0?'是':'否'", "operatingTag>0?'是':'否'","countFlag == null?'否':countFlag == 1?'是':'否'","activeAmount",         "carePackage>0?carePackage>1?'已使用':'可用':'不可用'", "comeOnPackage>0?comeOnPackage>1?'已使用':'可用':'不可用'",         "notStartCourseNum", "notStartVipCourseNum", "notStartPracticeCourseNum"]
 
 [分部云教练活动统计数据导出]
@@ -319,11 +319,11 @@ headColumns = ["分部", "在读人数", "应有课耗", "实际课耗","课耗
 fieldColumns = ["organName","normalNum","courseConsumerNum","courseSum","courseConsumerRate+'%'","num5","num4","num3","num2","num1","num0","standRate+'%'"]
 
 [云教练统计导出]
-headColumns = ["分部", "会员人数","练习人数","练习率","<10分钟","10~60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(会员)","平均练习时长(练习)","练习达标占比"]
+headColumns = ["分部", "学练宝人数","练习人数","练习率","<10分钟","10~60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(学练宝)","平均练习时长(练习)","练习达标占比"]
 fieldColumns = ["organName","normalNum","trainStudentNum","trainRate+'%'","train0","train1","train2","train3","train4","avgTrainTime","trainAvgTrainTime","trainStandRate+'%'"]
 
 [云教练统计详情导出]
-headColumns = ["声部老师", "会员人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(会员)","平均练习时长(练习)","练习达标占比"]
+headColumns = ["声部老师", "学练宝人数","练习人数","练习率","<60分钟", "60~120分钟","120~240分钟",">=240分钟","平均练习时长(学练宝)","平均练习时长(练习)","练习达标占比"]
 fieldColumns = ["teacherName","normalNum","trainStudentNum","trainRate+'%'","train1","train2","train3","train4","avgTrainTime","trainAvgTrainTime","trainStandRate+'%'"]
 
 [班级列表导出]
@@ -335,11 +335,11 @@ headColumns = ["合作单位", "总金额"]
 fieldColumns = ["name", "amount"]
 
 [老师云教练使用数据]
-headColumns = ["分部", "老师姓名", "声部", "课程时长(分)", "课程云教练使用时长(分)", "云教练使用总时长(分)"]
+headColumns = ["分部", "老师姓名", "声部", "课程时长(分)", "课程学练宝使用时长(分)", "学练宝使用总时长(分)"]
 fieldColumns = ["organName", "teacherName", "subjectName", "courseTime", "playTime", "totalPlayTime"]
 
 [oa费用汇总]
-headColumns = ["城市","固定人力成本","房屋","办公","水电物业","变动人力成本","差旅","外部服务","福利","活动","交通","考级","临时场地租赁","通讯","邮递运输","招待费","其他","学员管理费","云教练成本","网络教室成本","业务退费","内部结算","手续费","税费"]
+headColumns = ["城市","固定人力成本","房屋","办公","水电物业","变动人力成本","差旅","外部服务","福利","活动","交通","考级","临时场地租赁","通讯","邮递运输","招待费","其他","学员管理费","学练宝成本","网络教室成本","业务退费","内部结算","手续费","税费"]
 fieldColumns = ["organName", "fixedHumanCost", "house", "office", "mainsProperty","variableHumanCost", "travel","services", "welfare", "activities", "traffic", "certificates", "instrument","communications", "postalTransport", "hospitality", "other", "studentManagementFeeAdjustment","cloudCoachingCost", "network", "refund", "internalSettlement", "commission", "tax"]
 
 [oa费用明细]
@@ -347,7 +347,7 @@ headColumns = ["城市","钉钉流程编号","费用归属学校","申请人","
 fieldColumns = ["organName","batchNo","cooperationOrganName","applyUser","feeProject.desc","type.desc","amount","paymentTime","cause","studentId","currentAmount"]
 
 [经营报表收入汇总]
-headColumns = ["城市","学生指导费课耗收入","承担课程云教练收入","学校课程采买课耗收入","考级","维修费用","乐保费用","其他服务收入","不承担课程云教练收入","团购乐器","团购教辅","大件乐器","其他","服务收入","销售收入"]
+headColumns = ["城市","学生指导费课耗收入","承担课程学练宝收入","学校课程采买课耗收入","考级","维修费用","乐保费用","其他服务收入","不承担课程学练宝收入","团购乐器","团购教辅","大件乐器","其他","服务收入","销售收入"]
 fieldColumns = ["organName","studentGuidanceIncome","cloudCoachIncome","coursePurchaseIncome","examIncome","maintenanceCost","instrumentInsuranceCost","otherServiceIncome","saleCloudCoachIncome","groupPurchaseInstruments","groupPurchaseTeachingAids","largeInstruments","otherIncome","serviceIncome","salesIncome"]
 
 [课程收入明细导出]
@@ -367,8 +367,8 @@ headColumns = ["分部","乐团名称","乐团编号","学员编号","学员姓
 fieldColumns = ["organName","musicGroupName","musicGroupId","studentId","studentName","classroom","comprehensive","high","highOnline","mix","single","trainingMix","trainingSingle"]
 
 [云教练待激活明细]
-headColumns = ["分部","学员编号","学员姓名","手机号","学员声部","云教练类型","数量","缴费金额(元)","状态","取消原因","操作人","操作时间","获得资格时间"]
-fieldColumns = ["organName","studentId","name","phone","subjectName","type.msg","time","amount","status == 1 ? '待激活':'已取消'","cancelReason","operatorName","operateTime","createTime"]
+headColumns = ["分部","学员编号","学员姓名","手机号","学员声部","学练宝版本","学练宝类型","数量","缴费金额(元)","状态","取消原因","操作人","操作时间","获得资格时间"]
+fieldColumns = ["organName","studentId","name","phone","subjectName","memberName","type.msg","time","amount","status == 1 ? '待激活':'已取消'","cancelReason","operatorName","operateTime","createTime"]
 
 [平衡关系-乐团课]
 headColumns = ["分部","乐团名称","乐团编号","班级名称","班级类型","班级编号","课程类型","期初预收款","期初剩余课次","期初课酬","期初被合并课预收款","期初被合并课剩余课次","期初被合并课课酬","当月新增预收","当月新增课酬","当月新增课次","当月被合并新增预收","当月被合并新增课酬","当月被合并新增课次","当月课耗收入","当月消耗课酬","当月消耗课次","当月被合并课耗收入","当月被合并消耗课酬","当月被合并消耗课次","期末预收款","期末剩余课次","期末课酬","期末被合并课预收款","期末被合并课剩余课次","期末被合并课课酬","被删除课次"]
@@ -407,11 +407,11 @@ headColumns = ["分部","乐团编号","乐团名称","学员编号","学员名
 fieldColumns = ["organName","musicGroupId","musicGroupName","studentId","studentName"]
 
 [云课堂统计导出]
-headColumns = ["分部名称","会员人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
+headColumns = ["分部名称","学练宝人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
 fieldColumns = ["organizationName","memberNum","noPlayNum","playTimeLess10","playTimeLess60","playTimeLess120","playTimeLess240","playTimeRather240","avgPlayTime"]
 
 [云课堂统计详情导出]
-headColumns = ["声部老师","会员人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
+headColumns = ["声部老师","学练宝人数","无练习人数","0-10分钟","10-60分钟","60-120分钟","120-240分钟",">240分钟","平均时长(分钟)"]
 fieldColumns = ["teacherName","memberNum","noPlayNum","playTimeLess10","playTimeLess60","playTimeLess120","playTimeLess240","playTimeRather240","avgPlayTime"]
 
 [平衡关系-已分班未排课]

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -45,7 +45,7 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
      * @param orderId
      * @return
      */
-    CloudTeacherOrderDto queryOrderInfoByOrderId(Long orderId);
+    List<CloudTeacherOrderDto> queryOrderInfoByOrderId(Long orderId);
 
     List<Map<Long, String>> queryNoStartByUserIds(@Param("userIds") Set<Integer> userIds, @Param("isMusicMember") Boolean isMusicMember);
 
@@ -130,4 +130,10 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     List<CloudCoachActivationDetailsDto> exportCloudCoachActivationDetails(@Param("month") String month, @Param("organId") String organId);
 
     List<CloudCoachActivationDetailsDto> exportMusicGroupNoCourse(@Param("organId") String organId);
+
+    int countByMemberRankSettingId(@Param("memberRankSettingId") List<Integer> memberRankSettingId);
+
+    List<Integer> getActivationVipIds(Integer userId);
+
+    List<CloudTeacherOrder> queryByUserIds(@Param("userIds") List<Integer> userIds, @Param("status") Integer status);
 }

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java

@@ -43,7 +43,11 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 
     List<NameDto> queryNameByIds(@Param("ids") String ids, @Param("userId") Integer userId);
 
-    List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
+    List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId,
+													@Param("search") String search,
+													@Param("musicGroupId") String musicGroupId,
+													@Param("subjectId") Integer subjectId,
+													@Param("vipFlag") Boolean vipFlag);
 
     /**
      *  删除好友关系

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MemberRankOrganizationFeeMapperDao.java

@@ -4,8 +4,17 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.MemberRankOrganizationFeeMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface MemberRankOrganizationFeeMapperDao extends BaseDAO<Integer, MemberRankOrganizationFeeMapper> {
 
 
     MemberRankOrganizationFeeMapper findByOrganIdAndRankId(@Param("organId") Integer organId, @Param("memberRankSettingId") Integer memberRankSettingId);
+
+    List<MemberRankOrganizationFeeMapper> queryByOrganId(@Param("organId") Integer organId);
+
+    List<MemberRankOrganizationFeeMapper> queryByOrganIds(@Param("orgIds") List<Integer> orgIds);
+
+    //取交集
+    List<Integer> intersectOrganId(@Param("organIdList") List<Integer> organIdList, @Param("num") Integer num);
 }

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

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.entity.MemberRankPrivileges;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Arrays;
 import java.util.List;
 
 public interface MemberRankPrivilegesDao extends BaseDAO<Integer, MemberRankPrivileges>{
@@ -21,4 +22,6 @@ public interface MemberRankPrivilegesDao extends BaseDAO<Integer, MemberRankPriv
      * @return
      */
     boolean hasPrivileges(Integer parentId);
+
+    List<MemberRankPrivileges> findByRankSettingIds(@Param("memberRankIds") List<Integer> memberRankIds);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MemberRankSettingDao.java

@@ -10,4 +10,14 @@ import com.ym.mec.common.dal.BaseDAO;
 public interface MemberRankSettingDao extends BaseDAO<Integer, MemberRankSetting> {
 
 	List<MemberRankSetting> queryListByIsDefault(@Param("isDefault") Boolean isDefault);
+
+    List<MemberRankSetting> selectBatchIds(@Param("ids") List<Integer> ids);
+
+    List<MemberRankSetting> getNotDelByParentIds(@Param("topIds") List<Integer> topIds);
+
+    void deleteById(@Param("id") Integer id);
+
+    List<MemberRankSetting> getNotDelByIds(@Param("ids") List<Integer> parentIds);
+
+    List<MemberRankSetting> getByIdsAndType(@Param("memberIds") List<Integer> memberIds, @Param("type") String type, @Param("typeId") Integer typeId);
 }

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderMemberDao.java

@@ -11,5 +11,11 @@ public interface MusicGroupPaymentCalenderMemberDao extends BaseDAO<Long, MusicG
 
     void deleteByCalenderId(@Param("calenderId") Long calenderId);
 
-    MusicGroupPaymentCalenderMember findByCalenderId(@Param("calenderId") Long calenderId);
+    List<MusicGroupPaymentCalenderMember> findByCalenderId(@Param("calenderId") Long calenderId);
+
+    void batchInsert(@Param("beans") List<MusicGroupPaymentCalenderMember> calenderMemberList);
+
+    void batchUpdate(@Param("beans") List<MusicGroupPaymentCalenderMember> calenderMemberList);
+
+    List<MusicGroupPaymentCalenderMember> findByIds(@Param("calenderMemberIds") List<Long> calenderMemberIds);
 }

+ 6 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -11,7 +11,10 @@ import com.ym.mec.biz.dal.vo.TempCampUserTrainingSequenceVo;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
 
@@ -161,8 +164,6 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      */
     void cleanExperienceStudentMember();
 
-    void cleanMember(Integer userId);
-
     /**
      * 修改学员会员试用
      * @param studentIds
@@ -318,15 +319,6 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      */
     void remarkCountFlag();
 
-    /**
-    * @description: 更新会员信息
-     * @param student
-    * @return void
-    * @author zx
-    * @date 2021/10/13 13:34
-    */
-    void updateStudentMember(@Param("student") Student student);
-
     int countStudent(Map<String, Object> params);
 
     List<Student> queryStudent(Map<String, Object> params);
@@ -409,4 +401,6 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
 
     //获取合作单位下学员列表
     List<Integer> queryByCoopIds(@Param("coopId") Integer coopId);
+
+    void updateCloudTeacherEndTime(@Param("studentId") Integer studentId);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonExaminationDao.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
 import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto1;
 import com.ym.mec.biz.dal.entity.StudentLessonExamination;
+import com.ym.mec.biz.dal.entity.StudentLessonExaminationDetail;
+import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -38,5 +40,8 @@ public interface StudentLessonExaminationDao extends BaseMapper<StudentLessonExa
     List<Map<Long, String>> getStudentName(@Param("examinationIds") List<Long> examinationIds);
 
     List<StudentLessonExamination> queryEndList(@Param("date") String date);
+
+    List<StudentLessonExaminationDetail> queryExpired();
+
 }
 

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentLessonTrainingDetailMapper.java

@@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ym.mec.biz.dal.entity.StudentLessonTrainingDetail;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 练习内容
  * 2023-03-31 14:18:47
  */
 @Repository
 public interface StudentLessonTrainingDetailMapper extends BaseMapper<StudentLessonTrainingDetail> {
-	
+
+    List<StudentLessonTrainingDetail> queryExpired();
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberTimeDao.java

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.StudentMemberTime;
+
+public interface StudentMemberTimeDao extends BaseMapper<StudentMemberTime> {
+
+}
+

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentMemberUpdateLogDao.java

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,6 +18,9 @@ import java.util.List;
 public interface StudentMemberUpdateLogDao extends BaseMapper<StudentMemberUpdateLog> {
 
    int insertBatch(@Param("entities") List<StudentMemberUpdateLog> entities);
-   
+
+    IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> selectPage(@Param("page") IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> page, @Param("param") StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query);
+
+    Date getActivationMaxTime(@Param("studentId") Integer studentId, @Param("level") Integer level);
 }
 

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

@@ -4,6 +4,7 @@ package com.ym.mec.biz.dal.dao;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApiWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendWrapper;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
+import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -32,4 +33,6 @@ public interface SysMusicScoreDao extends BaseDAO<Integer, SysMusicScore> {
     List<SysMusicScore> selectSyncPage();
 
     SysMusicScore getCbsId(@Param("cbsMusicSheetId") Long cbsMusicSheetId);
+
+    List<MusicSheetWrapper.CategoryMusicNumStat> getNumByCategoryIds(@Param("categoryIds") List<Integer> categoryIds);
 }

+ 3 - 153
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.util.Objects;
 
+@Data
 public class BasicUserDto {
 
     private Integer organId;
@@ -34,6 +36,7 @@ public class BasicUserDto {
     @ApiModelProperty(value = "加油包:0:默认不可用;1:可用;2:已使用;")
     private Integer comeOnPackage;
 
+    @ApiModelProperty(value = "是否会员")
     private Integer memberRankSettingId;
 
     private String subjectIdList;
@@ -49,143 +52,6 @@ public class BasicUserDto {
 
     @ApiModelProperty(value = "加入课程类型 PURCHASE:购买 SHARE:分享")
     private String joinCourseType;
-
-    public String getJoinCourseType() {
-        return joinCourseType;
-    }
-
-    public void setJoinCourseType(String joinCourseType) {
-        this.joinCourseType = joinCourseType;
-    }
-
-    public String getTeacherType() {
-        return teacherType;
-    }
-
-    public void setTeacherType(String teacherType) {
-        this.teacherType = teacherType;
-    }
-
-    public Boolean getRepairFlag() {
-        return repairFlag;
-    }
-
-    public void setRepairFlag(Boolean repairFlag) {
-        this.repairFlag = repairFlag;
-    }
-
-    public Integer getTenantId() {
-        return tenantId;
-    }
-
-    public void setTenantId(Integer tenantId) {
-        this.tenantId = tenantId;
-    }
-
-    public Integer getMemberRankSettingId() {
-        return memberRankSettingId;
-    }
-
-    public void setMemberRankSettingId(Integer memberRankSettingId) {
-        this.memberRankSettingId = memberRankSettingId;
-    }
-
-    public String getSubjectIdList() {
-        return subjectIdList;
-    }
-
-    public void setSubjectIdList(String subjectIdList) {
-        this.subjectIdList = subjectIdList;
-    }
-
-    public Integer getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(Integer organId) {
-        this.organId = organId;
-    }
-
-    public Integer getCarePackage() {
-        return carePackage;
-    }
-
-    public void setCarePackage(Integer carePackage) {
-        this.carePackage = carePackage;
-    }
-
-    public Integer getComeOnPackage() {
-        return comeOnPackage;
-    }
-
-    public void setComeOnPackage(Integer comeOnPackage) {
-        this.comeOnPackage = comeOnPackage;
-    }
-
-    public String getUserType() {
-        return userType;
-    }
-
-    public void setUserType(String userType) {
-        this.userType = userType;
-    }
-
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
-
-    public String getMusicGroupName() {
-        return musicGroupName;
-    }
-
-    public void setMusicGroupName(String musicGroupName) {
-        this.musicGroupName = musicGroupName;
-    }
-
-    public String getSubjectName() {
-        return subjectName;
-    }
-
-    public void setSubjectName(String subjectName) {
-        this.subjectName = subjectName;
-    }
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getHeadUrl() {
-        return headUrl;
-    }
-
-    public void setHeadUrl(String headUrl) {
-        this.headUrl = headUrl;
-    }
-
-    public Integer getGender() {
-        return gender;
-    }
-
-    public void setGender(Integer gender) {
-        this.gender = gender;
-    }
-
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
@@ -198,20 +64,4 @@ public class BasicUserDto {
     public int hashCode() {
         return Objects.hash(userId);
     }
-
-    public Integer getSubjectId() {
-        return subjectId;
-    }
-
-    public void setSubjectId(Integer subjectId) {
-        this.subjectId = subjectId;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
 }

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkWrapper.java

@@ -1,15 +1,20 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.enums.EHomeWorkStatus;
 import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
+import com.ym.mec.biz.dal.enums.StandardEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.validation.constraints.NotNull;
 import java.util.Date;
@@ -211,6 +216,15 @@ public class CourseHomeworkWrapper {
 
         private String studentIdList;
 
+        @ApiModelProperty("训练说明")
+        private String memo;
+
+
+        @ApiModelProperty(value = "文件过期天数")
+        private Integer fileExpireDay;
+
+        @ApiModelProperty(value = "0未达标、1达标、2优秀",required = true)
+        private StandardEnum standardFlag;
 
         @ApiModelProperty("练习内容")
         private List<StudentLessonTrainingDetailWrapper.StudentLessonTrainingDetail> trainingDetailList;
@@ -278,10 +292,32 @@ public class CourseHomeworkWrapper {
         @NotNull(message = "作业详情id不能为空")
         private Long id;
 
+        @ApiModelProperty("上传文件JSON")
+        private List<FileJson> fileJson;
     }
 
 
     @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class FileJson {
+
+        @ApiModelProperty("文件路径,如果是评测则为评测记录ID")
+        private String filePath;
+
+        @ApiModelProperty("文件类型:评测:EVALUATION,IMG:图片,SOUND:音频,VIDEO:视频")
+        private String fileType;
+
+        @ApiModelProperty("文件过期标志")
+        private Boolean expireFlag = false;
+
+        @ApiModelProperty("文件内容")
+        private String content;
+
+    }
+
+    @Data
     @ApiModel(value = "StudentCourseHomeworkDetail-学生课程作业详情")
     public static class StudentCourseHomeworkDetail {
 

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

@@ -30,5 +30,11 @@ public class LessonExaminationDetailDto{
 
     @ApiModelProperty("结束小节")
     private Integer end;
+
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    private String homeworkType;
+
+    @ApiModelProperty("作业描述")
+    private String desc;
 }
 

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto.java

@@ -61,5 +61,8 @@ public class LessonExaminationResultDto{
 
     @ApiModelProperty("作业分组")
     private Integer group;
+
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 }
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationResultDto1.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -54,5 +55,8 @@ public class LessonExaminationResultDto1 {
 
     @ApiModelProperty(value = "是否测评")
     private Boolean trainingFlag;
+
+    @TableField("memo_")
+    private String memo;
 }
 

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/LessonExaminationSubmitDto.java

@@ -4,6 +4,8 @@ package com.ym.mec.biz.dal.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  *
  * @author zx
@@ -16,5 +18,11 @@ public class LessonExaminationSubmitDto {
 
     @ApiModelProperty(value = "测评分数")
     private Integer score;
+
+    @ApiModelProperty(value = "评测记录ID")
+    private Long recordId;
+
+    @ApiModelProperty("上传文件JSON")
+    private List<CourseHomeworkWrapper.FileJson> fileJson;
 }
 

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

@@ -2,9 +2,12 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.io.Serializable;
 
+
+@Data
 public class MemberPayParamDto extends PayParamBasicDto implements Serializable {
 
     @ApiModelProperty(value = "用于后台创建的团练宝订单购买",required = false)
@@ -13,6 +16,9 @@ public class MemberPayParamDto extends PayParamBasicDto implements Serializable
     @ApiModelProperty(value = "购买数量",required = false)
     private Integer val;
 
+    @ApiModelProperty(value = "会员编号",required = false)
+    private Integer memberRankId;
+
     //如果isRepeatPay = true 则需要传入订单号
     private String orderNo;
 
@@ -26,52 +32,4 @@ public class MemberPayParamDto extends PayParamBasicDto implements Serializable
     //商品编号
     @ApiModelProperty(value = "直播间商品编号(用于直播间商品购买,目前只支持1和2,1代表免费的云课堂,2代表云教练(送网管课))",required = false)
     private Integer liveGoodsId;
-
-    public String getLiveId() {
-        return liveId;
-    }
-
-    public void setLiveId(String liveId) {
-        this.liveId = liveId;
-    }
-
-    public Integer getLiveGoodsId() {
-        return liveGoodsId;
-    }
-
-    public void setLiveGoodsId(Integer liveGoodsId) {
-        this.liveGoodsId = liveGoodsId;
-    }
-
-    public PeriodEnum getPeriodEnum() {
-        return periodEnum;
-    }
-
-    public void setPeriodEnum(PeriodEnum periodEnum) {
-        this.periodEnum = periodEnum;
-    }
-
-    public Long getPaymentId() {
-        return paymentId;
-    }
-
-    public void setPaymentId(Long paymentId) {
-        this.paymentId = paymentId;
-    }
-
-    public Integer getVal() {
-        return val;
-    }
-
-    public void setVal(Integer val) {
-        this.val = val;
-    }
-
-    public String getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
-    }
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentBaseCalender.java

@@ -49,7 +49,7 @@ public class MusicGroupPaymentBaseCalender {
 	private MusicGroupPaymentCalenderAddress calenderAddress;
 
 	@ApiModelProperty(value = "会员相关缴费信息", required = false)
-	private MusicGroupPaymentCalenderMember calenderMember;
+	private List<MusicGroupPaymentCalenderMember> calenderMemberList;
 
 	@ApiModelProperty(value = "乐保信息", required = false)
 	private MusicGroupPaymentCalenderRepair musicRepair;

+ 7 - 359
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java

@@ -1,13 +1,18 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.SubjectChange;
 import com.ym.mec.biz.dal.enums.PaymentFlagEnum;
 import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
+@Data
 public class MusicGroupStudentsDto{
 
     @ApiModelProperty(value = "学生乐团注册编号",required = false)
@@ -136,363 +141,6 @@ public class MusicGroupStudentsDto{
 
     private Integer memberRankSettingId;
 
-    public Integer getMusicMembershipDay1() {
-        return musicMembershipDay1;
-    }
-
-    public void setMusicMembershipDay1(Integer musicMembershipDay1) {
-        this.musicMembershipDay1 = musicMembershipDay1;
-    }
-
-    public Integer getMemberRankSettingId() {
-        return memberRankSettingId;
-    }
-
-    public void setMemberRankSettingId(Integer memberRankSettingId) {
-        this.memberRankSettingId = memberRankSettingId;
-    }
-
-    public Boolean getHasNoStartCloudTeacher() {
-        return hasNoStartCloudTeacher;
-    }
-
-    public void setHasNoStartCloudTeacher(Boolean hasNoStartCloudTeacher) {
-        this.hasNoStartCloudTeacher = hasNoStartCloudTeacher;
-    }
-
-    public Integer getExperienceMembershipDay() {
-        return experienceMembershipDay;
-    }
-
-    public void setExperienceMembershipDay(Integer experienceMembershipDay) {
-        this.experienceMembershipDay = experienceMembershipDay;
-    }
-
-    public Integer getMembershipDay() {
-        return membershipDay;
-    }
-
-    public void setMembershipDay(Integer membershipDay) {
-        this.membershipDay = membershipDay;
-    }
-
-    public Integer getMusicMembershipDay() {
-        return musicMembershipDay;
-    }
-
-    public void setMusicMembershipDay(Integer musicMembershipDay) {
-        this.musicMembershipDay = musicMembershipDay;
-    }
-
-    public Date getMusicMembershipEndTime() {
-        return musicMembershipEndTime;
-    }
-
-    public void setMusicMembershipEndTime(Date musicMembershipEndTime) {
-        this.musicMembershipEndTime = musicMembershipEndTime;
-    }
-
-    public Date getExperienceMembershipEndTime() {
-        return experienceMembershipEndTime;
-    }
-
-    public void setExperienceMembershipEndTime(Date experienceMembershipEndTime) {
-        this.experienceMembershipEndTime = experienceMembershipEndTime;
-    }
-
-    public Date getMembershipEndTime() {
-        return membershipEndTime;
-    }
-
-    public void setMembershipEndTime(Date membershipEndTime) {
-        this.membershipEndTime = membershipEndTime;
-    }
-
-    public String getCarePackageStr() {
-        return carePackageStr;
-    }
-
-    public void setCarePackageStr(String carePackageStr) {
-        this.carePackageStr = carePackageStr;
-    }
-
-    public String getComeOnPackageStr() {
-        return comeOnPackageStr;
-    }
-
-    public void setComeOnPackageStr(String comeOnPackageStr) {
-        this.comeOnPackageStr = comeOnPackageStr;
-    }
-
-    public Integer getCarePackage() {
-        return carePackage;
-    }
-
-    public void setCarePackage(Integer carePackage) {
-        this.carePackage = carePackage;
-    }
-
-    public Integer getComeOnPackage() {
-        return comeOnPackage;
-    }
-
-    public void setComeOnPackage(Integer comeOnPackage) {
-        this.comeOnPackage = comeOnPackage;
-    }
-
-    public Boolean getHasCourse() {
-        return hasCourse;
-    }
-
-    public void setHasCourse(Boolean hasCourse) {
-        this.hasCourse = hasCourse;
-    }
-
-    public BigDecimal getNoPaymentAmount() {
-        return noPaymentAmount;
-    }
-
-    public void setNoPaymentAmount(BigDecimal noPaymentAmount) {
-        this.noPaymentAmount = noPaymentAmount;
-    }
-
-    public BigDecimal getSubTotalCourseTime() {
-        return subTotalCourseTime;
-    }
-
-    public void setSubTotalCourseTime(BigDecimal subTotalCourseTime) {
-        this.subTotalCourseTime = subTotalCourseTime;
-    }
-
-    public String getPaymentPeriodList() {
-        return paymentPeriodList;
-    }
-
-    public void setPaymentPeriodList(String paymentPeriodList) {
-        this.paymentPeriodList = paymentPeriodList;
-    }
-
-    public Integer getIsLock() {
-        return isLock;
-    }
-
-    public void setIsLock(Integer isLock) {
-        this.isLock = isLock;
-    }
-
-    public Boolean getIsActive() {
-        return isActive;
-    }
-
-    public void setIsActive(Boolean active) {
-        isActive = active;
-    }
-
-    public Date getNextPaymentDate() {
-        return nextPaymentDate;
-    }
-
-    public void setNextPaymentDate(Date nextPaymentDate) {
-        this.nextPaymentDate = nextPaymentDate;
-    }
-
-    public BigDecimal getCourseFee() {
-        return courseFee;
-    }
-
-    public void setCourseFee(BigDecimal courseFee) {
-        this.courseFee = courseFee;
-    }
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    public String getGender() {
-        return gender;
-    }
-
-    public void setGender(String gender) {
-        this.gender = gender;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public String getCurrentGrade() {
-        return currentGrade;
-    }
-
-    public void setCurrentGrade(String currentGrade) {
-        this.currentGrade = currentGrade;
-    }
-
-    public String getCurrentClass() {
-        return currentClass;
-    }
-
-    public void setCurrentClass(String currentClass) {
-        this.currentClass = currentClass;
-    }
-
-    public String getSubjectName() {
-        return subjectName;
-    }
-
-    public void setSubjectName(String subjectName) {
-        this.subjectName = subjectName;
-    }
-
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
-
-    public String getStudentStatus() {
-        return studentStatus;
-    }
-
-    public void setStudentStatus(String studentStatus) {
-        this.studentStatus = studentStatus;
-    }
-
-    public PaymentStatusEnum getPaymentStatus() {
-        return paymentStatus;
-    }
-
-    public void setPaymentStatus(PaymentStatusEnum paymentStatus) {
-        this.paymentStatus = paymentStatus;
-    }
-
-    public Integer getIsNewStudent() {
-        return isNewStudent;
-    }
-
-    public void setIsNewStudent(Integer isNewStudent) {
-        this.isNewStudent = isNewStudent;
-    }
-
-    public String getActiveName() {
-        return activeName;
-    }
-
-    public void setActiveName(String activeName) {
-        this.activeName = activeName;
-    }
-
-    public String getIsNewStudentStr() {
-        return isNewStudentStr;
-    }
-
-    public void setIsNewStudentStr(String isNewStudentStr) {
-        this.isNewStudentStr = isNewStudentStr;
-    }
-
-    public String getNextPaymentDateStr() {
-        return nextPaymentDateStr;
-    }
-
-    public void setNextPaymentDateStr(String nextPaymentDateStr) {
-        this.nextPaymentDateStr = nextPaymentDateStr;
-    }
-
-    public String getQuitReason() {
-        return quitReason;
-    }
-
-    public void setQuitReason(String quitReason) {
-        this.quitReason = quitReason;
-    }
-
-    public Date getCurrentGradeDate() {
-        return currentGradeDate;
-    }
-
-    public void setCurrentGradeDate(Date currentGradeDate) {
-        this.currentGradeDate = currentGradeDate;
-    }
-
-    public Date getRegisterTime() {
-        return registerTime;
-    }
-
-    public void setRegisterTime(Date registerTime) {
-        this.registerTime = registerTime;
-    }
-
-    public String getRegSubjectName() {
-        return regSubjectName;
-    }
-
-    public void setRegSubjectName(String regSubjectName) {
-        this.regSubjectName = regSubjectName;
-    }
-
-    public Integer getSubjectId() {
-        return subjectId;
-    }
-
-    public void setSubjectId(Integer subjectId) {
-        this.subjectId = subjectId;
-    }
-
-    public Integer getRegSubjectId() {
-        return regSubjectId;
-    }
-
-    public void setRegSubjectId(Integer regSubjectId) {
-        this.regSubjectId = regSubjectId;
-    }
-
-    public String getRemark() {
-        return remark;
-    }
-
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
-
-    public SubjectChange getSubjectChange() {
-        return subjectChange;
-    }
-
-    public void setSubjectChange(SubjectChange subjectChange) {
-        this.subjectChange = subjectChange;
-    }
-
-    public Boolean getHasMaintenance() {
-        return hasMaintenance;
-    }
-
-    public void setHasMaintenance(Boolean hasMaintenance) {
-        this.hasMaintenance = hasMaintenance;
-    }
-
-    public BigDecimal getCloudTeacherAmount() {
-        return cloudTeacherAmount;
-    }
-
-    public void setCloudTeacherAmount(BigDecimal cloudTeacherAmount) {
-        this.cloudTeacherAmount = cloudTeacherAmount;
-    }
+    @ApiModelProperty(value = "学员生效中的云教练",required = false)
+    private List<CloudTeacherOrderWrapper.StudentMemberDetail> cloudTeacherOrderList;
 }

+ 11 - 16
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java

@@ -34,11 +34,14 @@ public class RegisterPayDto extends PayParamBasicDto{
     @ApiModelProperty(value = "购买乐器保养",required = false)
     private Boolean buyMaintenance = false;
 
-    @ApiModelProperty(value = "购买云教练",required = false)
-    private Boolean buyCloudTeacher= false;
+    @ApiModelProperty(value = "缴费项目关联会员Id",required = false)
+    private List<Long> buyCalenderMemberId;
 
-    @ApiModelProperty(value = "购买云教练+",required = false)
-    private Boolean buyCloudTeacherPlus= false;
+//    @ApiModelProperty(value = "购买云教练",required = false)
+//    private Boolean buyCloudTeacher= false;
+//
+//    @ApiModelProperty(value = "购买云教练+",required = false)
+//    private Boolean buyCloudTeacherPlus= false;
 
     public String getBatchNo() {
         return batchNo;
@@ -120,19 +123,11 @@ public class RegisterPayDto extends PayParamBasicDto{
         this.buyMaintenance = buyMaintenance;
     }
 
-    public Boolean getBuyCloudTeacher() {
-        return buyCloudTeacher;
+    public List<Long> getBuyCalenderMemberId() {
+        return buyCalenderMemberId;
     }
 
-    public void setBuyCloudTeacher(Boolean buyCloudTeacher) {
-        this.buyCloudTeacher = buyCloudTeacher;
-    }
-
-    public Boolean getBuyCloudTeacherPlus() {
-        return buyCloudTeacherPlus;
-    }
-
-    public void setBuyCloudTeacherPlus(Boolean buyCloudTeacherPlus) {
-        this.buyCloudTeacherPlus = buyCloudTeacherPlus;
+    public void setBuyCalenderMemberId(List<Long> buyCalenderMemberId) {
+        this.buyCalenderMemberId = buyCalenderMemberId;
     }
 }

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto.java

@@ -1,11 +1,12 @@
 package com.ym.mec.biz.dal.dto;
 
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.biz.dal.enums.HardLevelEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  *
  * @author zx
@@ -63,5 +64,20 @@ public class StudentLessonExaminationDetailDto {
     @ApiModelProperty("作业分组")
     private Integer group;
 
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    private String homeworkType;
+
+
+
+    @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+    private String useStatus;
+
+    @ApiModelProperty("作业描述")
+    private String desc;
+
+    private String fileJsons;
+
+    @ApiModelProperty("上传文件JSON")
+    private List<CourseHomeworkWrapper.FileJson> fileJson;
 }
 

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonExaminationDetailDto1.java

@@ -1,10 +1,13 @@
 package com.ym.mec.biz.dal.dto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.biz.dal.enums.HardLevelEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  *
  * @author zx
@@ -33,5 +36,18 @@ public class StudentLessonExaminationDetailDto1 {
 
     @ApiModelProperty(value = "训练说明")
     private String memo;
+
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    private String homeworkType;
+
+    @ApiModelProperty("作业描述")
+    private String desc;
+
+    @ApiModelProperty("上传文件JSON")
+    private String fileJsons;
+
+
+    @ApiModelProperty("上传文件JSON")
+    private List<CourseHomeworkWrapper.FileJson> fileJson;
 }
 

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

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  *
@@ -45,7 +46,11 @@ public class StudentLessonExaminationDto {
     @ApiModelProperty("作业分组")
     private Integer group;
 
+
+    @ApiModelProperty(value = "描述")
+    private String memo;
+
     @ApiModelProperty("作业详情")
-    private StudentLessonExaminationDetailDto studentLessonExaminationDetail;
+    private List<StudentLessonExaminationDetailDto> studentLessonExaminationDetailList;
 }
 

+ 30 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentLessonTrainingDetailWrapper.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
+import java.io.File;
 import java.util.List;
 
 /**
@@ -28,6 +29,9 @@ public class StudentLessonTrainingDetailWrapper {
         @ApiModelProperty("曲目id")
         private Long musicScoreId;
 
+        @ApiModelProperty("课件ID 布置课件视频作业时")
+        private String lessonCoursewareId;
+
         @ApiModelProperty("曲目名称")
         private String musicScoreName;
 
@@ -49,8 +53,13 @@ public class StudentLessonTrainingDetailWrapper {
         @ApiModelProperty("结束小节")
         private Integer end;
 
-        @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE")
+        @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE,DESCRIPTION:描述")
         private String homeworkType = "MUSIC_SCORE";
+
+
+        @ApiModelProperty("作业描述")
+        private String desc;
+
     }
 
     @Data
@@ -70,6 +79,10 @@ public class StudentLessonTrainingDetailWrapper {
         @ApiModelProperty("曲目id")
         private Long musicScoreId;
 
+
+        @ApiModelProperty("课件ID 布置课件视频作业时")
+        private String lessonCoursewareId;
+
         @ApiModelProperty("曲目名称")
         private String  musicScoreName;
 
@@ -113,6 +126,22 @@ public class StudentLessonTrainingDetailWrapper {
         private Boolean validFlag = false;
 
         private String memo;
+
+        @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
+
+
+
+        @ApiModelProperty("作业描述")
+        private String desc;
+
+        private String fileJsons;
+
+        @ApiModelProperty("上传文件JSON")
+        private List<CourseHomeworkWrapper.FileJson> fileJson;
+
+        @ApiModelProperty("上传作业文件失效删除标记")
+        private Boolean fileDelFlag;
         
         public String jsonString() {
             return JSON.toJSONString(this);

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageBaseInfoOfMusicGroupDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
@@ -54,6 +55,17 @@ public class StudentManageBaseInfoOfMusicGroupDto {
     @JsonInclude(JsonInclude.Include.NON_NULL)
     private BigDecimal depositFee;
 
+    @ApiModelProperty("会员信息")
+    private List<CloudTeacherOrderWrapper.StudentMemberDetail> studentMemberDetails;
+
+    public List<CloudTeacherOrderWrapper.StudentMemberDetail> getStudentMemberDetails() {
+        return studentMemberDetails;
+    }
+
+    public void setStudentMemberDetails(List<CloudTeacherOrderWrapper.StudentMemberDetail> studentMemberDetails) {
+        this.studentMemberDetails = studentMemberDetails;
+    }
+
     public List<UserGoodsDto> getUserGoodsDtos() {
         return userGoodsDtos;
     }

+ 7 - 428
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -2,17 +2,17 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.wrapper.CloudTeacherOrderWrapper;
 import com.ym.mec.common.enums.UserGenderEnum;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
-/**
- * @Author Joburgess
- * @Date 2019/9/19
- */
+@Data
 public class StudentManageListDto {
 
     @ApiModelProperty(value = "用户ID",required = false)
@@ -85,7 +85,7 @@ public class StudentManageListDto {
 
     private Integer isNewUser;
     
-    private boolean isSignedContract;
+    private Boolean isSignedContract;
 
     private String contractVersions;
 
@@ -135,433 +135,12 @@ public class StudentManageListDto {
 
     private String courseTeacherName;
 
-    public Integer getCourseTeacher() {
-        return courseTeacher;
-    }
-
-    public void setCourseTeacher(Integer courseTeacher) {
-        this.courseTeacher = courseTeacher;
-    }
-
-    public String getCourseTeacherName() {
-        return courseTeacherName;
-    }
-
-    public void setCourseTeacherName(String courseTeacherName) {
-        this.courseTeacherName = courseTeacherName;
-    }
-
-    public String getNormalTeacherName() {
-        return normalTeacherName;
-    }
-
-    public void setNormalTeacherName(String normalTeacherName) {
-        this.normalTeacherName = normalTeacherName;
-    }
-
-    public String getMixTeacherName() {
-        return mixTeacherName;
-    }
-
-    public void setMixTeacherName(String mixTeacherName) {
-        this.mixTeacherName = mixTeacherName;
-    }
-
-    public String getVipTeacherName() {
-        return vipTeacherName;
-    }
-
-    public void setVipTeacherName(String vipTeacherName) {
-        this.vipTeacherName = vipTeacherName;
-    }
-
-    public String getPracticeTeacherName() {
-        return practiceTeacherName;
-    }
-
-    public void setPracticeTeacherName(String practiceTeacherName) {
-        this.practiceTeacherName = practiceTeacherName;
-    }
-
-    public Boolean getRepairFlag() {
-        return repairFlag;
-    }
-
-    public void setRepairFlag(Boolean repairFlag) {
-        this.repairFlag = repairFlag;
-    }
-
-    public String getAvatar() {
-        return avatar;
-    }
-
-    public void setAvatar(String avatar) {
-        this.avatar = avatar;
-    }
-
-    public Integer getRecordUserId() {
-        return recordUserId;
-    }
-
-    public void setRecordUserId(Integer recordUserId) {
-        this.recordUserId = recordUserId;
-    }
-
-    public Boolean getHasNoStartCloudTeacher() {
-        return hasNoStartCloudTeacher;
-    }
-
-    public void setHasNoStartCloudTeacher(Boolean hasNoStartCloudTeacher) {
-        this.hasNoStartCloudTeacher = hasNoStartCloudTeacher;
-    }
-
-    public Integer getMembershipDay() {
-        return membershipDay;
-    }
-
-    public void setMembershipDay(Integer membershipDay) {
-        this.membershipDay = membershipDay;
-    }
-
-    public Integer getExperienceMembershipDay() {
-        return experienceMembershipDay;
-    }
-
-    public void setExperienceMembershipDay(Integer experienceMembershipDay) {
-        this.experienceMembershipDay = experienceMembershipDay;
-    }
-
-    public Date getExperienceMembershipEndTime() {
-        return experienceMembershipEndTime;
-    }
-
-    public void setExperienceMembershipEndTime(Date experienceMembershipEndTime) {
-        this.experienceMembershipEndTime = experienceMembershipEndTime;
-    }
-
-    public Integer getMemberRankSettingId() {
-        return memberRankSettingId;
-    }
-
-    public void setMemberRankSettingId(Integer memberRankSettingId) {
-        this.memberRankSettingId = memberRankSettingId;
-    }
-
-    public Integer getCooperationOrganId() {
-        return cooperationOrganId;
-    }
-
-    public void setCooperationOrganId(Integer cooperationOrganId) {
-        this.cooperationOrganId = cooperationOrganId;
-    }
-
-    public String getCooperationOrganName() {
-        return cooperationOrganName;
-    }
-
-    public void setCooperationOrganName(String cooperationOrganName) {
-        this.cooperationOrganName = cooperationOrganName;
-    }
-
     @ApiModelProperty(value = "剩余VIP课数")
     private Integer noStartVipCourseNum = 0;
 
     @ApiModelProperty(value = "剩余网管课数")
     private Integer noStartPracticeCourseNum = 0;
 
-    public String getActivityCourseDetail() {
-        return activityCourseDetail;
-    }
-
-    public void setActivityCourseDetail(String activityCourseDetail) {
-        this.activityCourseDetail = activityCourseDetail;
-    }
-
-    public String getContractVersions() {
-        return contractVersions;
-    }
-
-    public void setContractVersions(String contractVersions) {
-        this.contractVersions = contractVersions;
-    }
-
-    public Integer getCarePackage() {
-        return carePackage;
-    }
-
-    public void setCarePackage(Integer carePackage) {
-        this.carePackage = carePackage;
-    }
-
-    public Integer getComeOnPackage() {
-        return comeOnPackage;
-    }
-
-    public void setComeOnPackage(Integer comeOnPackage) {
-        this.comeOnPackage = comeOnPackage;
-    }
-
-    public Integer getIsNewUser() {
-        return isNewUser;
-    }
-
-    public void setIsNewUser(Integer isNewUser) {
-        this.isNewUser = isNewUser;
-    }
-
-    public BigDecimal getBalance() {
-        return balance;
-    }
-
-    public void setBalance(BigDecimal balance) {
-        this.balance = balance;
-    }
-
-    public YesOrNoEnum getServiceTag() {
-        return serviceTag;
-    }
-
-    public void setServiceTag(YesOrNoEnum serviceTag) {
-        this.serviceTag = serviceTag;
-    }
-
-    public YesOrNoEnum getOperatingTag() {
-        return operatingTag;
-    }
-
-    public void setOperatingTag(YesOrNoEnum operatingTag) {
-        this.operatingTag = operatingTag;
-    }
-
-    public Integer getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(Integer organId) {
-        this.organId = organId;
-    }
-
-    public String getMusicGroupName() {
-        return musicGroupName;
-    }
-
-    public void setMusicGroupName(String musicGroupName) {
-        this.musicGroupName = musicGroupName;
-    }
-
-    public String getOrganName() {
-        return organName;
-    }
-
-    public void setOrganName(String organName) {
-        this.organName = organName;
-    }
-
-    public String getSubjectName() {
-        return subjectName;
-    }
-
-    public void setSubjectName(String subjectName) {
-        this.subjectName = subjectName;
-    }
-
-    public String getMusicGroupStatus() {
-        return musicGroupStatus;
-    }
-
-    public void setMusicGroupStatus(String musicGroupStatus) {
-        this.musicGroupStatus = musicGroupStatus;
-    }
-
-    public String getVipGroupName() {
-        return vipGroupName;
-    }
-
-    public void setVipGroupName(String vipGroupName) {
-        this.vipGroupName = vipGroupName;
-    }
-
-    public String getVipGroupStatus() {
-        return vipGroupStatus;
-    }
-
-    public void setVipGroupStatus(String vipGroupStatus) {
-        this.vipGroupStatus = vipGroupStatus;
-    }
-
-    public YesOrNoEnum getHasPracticeCourse() {
-        return hasPracticeCourse;
-    }
-
-    public void setHasPracticeCourse(YesOrNoEnum hasPracticeCourse) {
-        this.hasPracticeCourse = hasPracticeCourse;
-    }
-
-    public YesOrNoEnum getHasCourse() {
-        return hasCourse;
-    }
-
-    public void setHasCourse(YesOrNoEnum hasCourse) {
-        this.hasCourse = hasCourse;
-    }
-
-    public String getNation() {
-        return nation;
-    }
-
-    public void setNation(String nation) {
-        this.nation = nation;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public BigDecimal getCourseBalance() {
-        return courseBalance;
-    }
-
-    public void setCourseBalance(BigDecimal courseBalance) {
-        this.courseBalance = courseBalance;
-    }
-
-    public String getCurrentClass() {
-        return currentClass;
-    }
-
-    public void setCurrentClass(String currentClass) {
-        this.currentClass = currentClass;
-    }
-
-    public String getCurrentGrade() {
-        return currentGrade;
-    }
-
-    public void setCurrentGrade(String currentGrade) {
-        this.currentGrade = currentGrade;
-    }
-
-    public Date getBirthdate() {
-        return birthdate;
-    }
-
-    public void setBirthdate(Date birthdate) {
-        this.birthdate = birthdate;
-    }
-
-    public UserGenderEnum getGender() {
-        return gender;
-    }
-
-    public void setGender(UserGenderEnum gender) {
-        this.gender = gender;
-    }
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    public String getParentsPhone() {
-        return parentsPhone;
-    }
-
-    public void setParentsPhone(String parentsPhone) {
-        this.parentsPhone = parentsPhone;
-    }
-
-    public String getParentsName() {
-        return parentsName;
-    }
-
-    public void setParentsName(String parentsName) {
-        this.parentsName = parentsName;
-    }
-
-	public YesOrNoEnum getIsActive() {
-		return isActive;
-	}
-
-	public void setIsActive(YesOrNoEnum isActive) {
-		this.isActive = isActive;
-	}
-
-	public String getSubjectIdList() {
-		return subjectIdList;
-	}
-
-	public void setSubjectIdList(String subjectIdList) {
-		this.subjectIdList = subjectIdList;
-	}
-
-	public boolean getIsSignedContract() {
-		return isSignedContract;
-	}
-
-	public void setIsSignedContract(boolean isSignedContract) {
-		this.isSignedContract = isSignedContract;
-	}
-
-    public Integer getCurrentGradeNum() {
-        return currentGradeNum;
-    }
-
-    public void setCurrentGradeNum(Integer currentGradeNum) {
-        this.currentGradeNum = currentGradeNum;
-    }
-
-    public GradeTypeEnum getGradeType() {
-        return gradeType;
-    }
-
-    public void setGradeType(GradeTypeEnum gradeType) {
-        this.gradeType = gradeType;
-    }
-
-    public Integer getNoStartVipCourseNum() {
-        return noStartVipCourseNum;
-    }
-
-    public void setNoStartVipCourseNum(Integer noStartVipCourseNum) {
-        this.noStartVipCourseNum = noStartVipCourseNum;
-    }
-
-    public Integer getNoStartPracticeCourseNum() {
-        return noStartPracticeCourseNum;
-    }
-
-    public void setNoStartPracticeCourseNum(Integer noStartPracticeCourseNum) {
-        this.noStartPracticeCourseNum = noStartPracticeCourseNum;
-    }
-
-	public Date getMembershipEndTime() {
-		return membershipEndTime;
-	}
-
-	public void setMembershipEndTime(Date membershipEndTime) {
-		this.membershipEndTime = membershipEndTime;
-	}
-
-	public String getExtSubjectIds() {
-		return extSubjectIds;
-	}
-
-	public void setExtSubjectIds(String extSubjectIds) {
-		this.extSubjectIds = extSubjectIds;
-	}
+    @ApiModelProperty(value = "学员生效中的云教练",required = false)
+    private List<CloudTeacherOrderWrapper.StudentMemberDetail> cloudTeacherOrderList;
 }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TenantInfoDto.java

@@ -1,10 +1,12 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.wrapper.TenantMemberRankSettingWrapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import javax.validation.constraints.*;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author hgw
@@ -107,6 +109,10 @@ public class TenantInfoDto implements Serializable {
     @ApiModelProperty(value = "机构配置参数")
     private TenantConfigDto config;
 
+    @ApiModelProperty("机构会员信息设置")
+    @NotNull(message = "请填写机构会员信息设置!")
+    private List<TenantMemberRankSettingWrapper.TenantMemberRankSettingAdd> memberInfos;
+
     @ApiModelProperty(value = "购买的服务名称")
     private String platformServeName;
 
@@ -116,6 +122,14 @@ public class TenantInfoDto implements Serializable {
     @ApiModelProperty(value = "推荐人")
     private Integer recommender;
 
+    public List<TenantMemberRankSettingWrapper.TenantMemberRankSettingAdd> getMemberInfos() {
+        return memberInfos;
+    }
+
+    public void setMemberInfos(List<TenantMemberRankSettingWrapper.TenantMemberRankSettingAdd> memberInfos) {
+        this.memberInfos = memberInfos;
+    }
+
     public Integer getId() {
         return id;
     }

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

@@ -23,6 +23,9 @@ public class CloudTeacherOrder {
     @ApiModelProperty(value = "学生id")
     private Integer studentId;
 
+    @ApiModelProperty(value = "会员卡ID")
+    private Integer memberRankSettingId;
+
     @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
     private PeriodEnum type;
 

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherStudent.java

@@ -19,6 +19,9 @@ public class CloudTeacherStudent {
     @ApiModelProperty(value = "团练宝订单Id")
     private Integer cloudTeacherOrderId;
 
+    @ApiModelProperty(value = "会员编号")
+    private Integer memberRankId;
+
     @ApiModelProperty(value = "姓名")
     private String name;
 
@@ -52,6 +55,9 @@ public class CloudTeacherStudent {
     @ApiModelProperty(value = "订单时间")
     private String orderTime;
 
+    @ApiModelProperty(value = "会员名称")
+    private String memberName;
+
     @ApiModelProperty(value = "金额")
     private BigDecimal amount;
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseHomework.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ym.mec.biz.dal.dto.LessonExaminationSaveDto;
 import com.ym.mec.biz.dal.dto.MusicScoreSubjectDto;
 import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
@@ -52,6 +53,9 @@ public class CourseHomework extends BaseEntity {
 	private String musicGroupId;
 
     private String versionTag;
+
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 	
 	private MusicGroup musicGroup = new MusicGroup();
 	

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ExtracurricularExercises.java

@@ -92,8 +92,11 @@ public class ExtracurricularExercises extends BaseEntity {
 	private int status;
 	
 	private String organName;
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 
-	private ImSendTypeEnum msgType = ImSendTypeEnum.TXT;
+
+    private ImSendTypeEnum msgType = ImSendTypeEnum.TXT;
 
 	/** 伴奏列表(多个用逗号分隔) */
 	@ApiModelProperty(value="伴奏列表(多个用逗号分隔)")

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/LessonExamination.java

@@ -71,5 +71,9 @@ public class LessonExamination{
 
     @TableField("tenant_id_")
     private Integer tenantId = TenantContextHolder.getTenantId();
+
+    @TableField("file_expire_day_")
+    @ApiModelProperty(value = "文件过期天数")
+    private Integer fileExpireDay;
 }
 

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankCategoryMapper.java

@@ -0,0 +1,35 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+
+/**
+ * 会员分类权限表
+ * 2024-10-22 14:51:51
+ */
+@Data
+@ApiModel(" MemberRankCategoryMapper-会员分类权限表")
+@TableName("member_rank_category_mapper")
+public class MemberRankCategoryMapper implements Serializable {
+
+	    @TableId(value = "id_", type = IdType.AUTO)
+        private Integer id;
+
+    @ApiModelProperty("分类编号") 
+	@TableField(value = "category_id_")
+    private Integer categoryId;
+
+    @ApiModelProperty("会员编号") 
+	@TableField(value = "rank_id_")
+    private Integer rankId;
+
+}

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankCourseTypeMapper.java

@@ -0,0 +1,35 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+
+/**
+ * 会员课程类型权限表
+ * 2024-10-22 14:51:51
+ */
+@Data
+@ApiModel(" MemberRankCourseTypeMapper-会员课程类型权限表")
+@TableName("member_rank_course_type_mapper")
+public class MemberRankCourseTypeMapper implements Serializable {
+
+	    @TableId(value = "id_", type = IdType.AUTO)
+        private Integer id;
+
+    @ApiModelProperty("课程类型") 
+	@TableField(value = "course_type_")
+    private String courseType;
+
+    @ApiModelProperty("会员编号") 
+	@TableField(value = "rank_id_")
+    private Integer rankId;
+
+}

+ 9 - 113
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.util.List;
@@ -7,6 +9,7 @@ import java.util.List;
 /**
  * 对应数据库表(member_rank_setting):
  */
+@Data
 public class MemberRankSetting {
 
 	/**  */
@@ -20,7 +23,10 @@ public class MemberRankSetting {
 
 	/**  */
 	private String name;
-	
+
+    private Integer parentId;
+    private Boolean delFlag;
+
 	/**  */
 	private String intro;
 	
@@ -34,6 +40,8 @@ public class MemberRankSetting {
 
 	/**  */
 	private List<Integer> memberPrivilegesItemIdList;
+
+	private List<MemberRankSetting> children;
 	
 	private List<MemberPrivilegesItem> memberPrivilegesItemList;
 	
@@ -47,118 +55,6 @@ public class MemberRankSetting {
 	
 	private MemberFeeSetting memberFeeSetting;
 
-	public String getExperienceIcon() {
-		return experienceIcon;
-	}
-
-	public void setExperienceIcon(String experienceIcon) {
-		this.experienceIcon = experienceIcon;
-	}
-
-	public Integer getOperator() {
-		return operator;
-	}
-
-	public void setOperator(Integer operator) {
-		this.operator = operator;
-	}
-
-	public String getOperatorName() {
-		return operatorName;
-	}
-
-	public void setOperatorName(String operatorName) {
-		this.operatorName = operatorName;
-	}
-
-	public List<MemberRankPrivileges> getMemberRankPrivileges() {
-		return memberRankPrivileges;
-	}
-
-	public void setMemberRankPrivileges(List<MemberRankPrivileges> memberRankPrivileges) {
-		this.memberRankPrivileges = memberRankPrivileges;
-	}
-
-	public void setId(Integer id){
-		this.id = id;
-	}
-	
-	public Integer getId(){
-		return this.id;
-	}
-			
-	public void setName(String name){
-		this.name = name;
-	}
-	
-	public String getName(){
-		return this.name;
-	}
-			
-	public void setIntro(String intro){
-		this.intro = intro;
-	}
-	
-	public String getIntro(){
-		return this.intro;
-	}
-			
-	public void setIcon(String icon){
-		this.icon = icon;
-	}
-	
-	public String getIcon(){
-		return this.icon;
-	}
-
-	public Boolean getIsDefault() {
-		return isDefault;
-	}
-
-	public void setIsDefault(Boolean isDefault) {
-		this.isDefault = isDefault;
-	}
-
-	public List<Integer> getMemberPrivilegesItemIdList() {
-		return memberPrivilegesItemIdList;
-	}
-
-	public void setMemberPrivilegesItemIdList(List<Integer> memberPrivilegesItemIdList) {
-		this.memberPrivilegesItemIdList = memberPrivilegesItemIdList;
-	}
-
-	public List<MemberPrivilegesItem> getMemberPrivilegesItemList() {
-		return memberPrivilegesItemList;
-	}
-
-	public void setMemberPrivilegesItemList(List<MemberPrivilegesItem> memberPrivilegesItemList) {
-		this.memberPrivilegesItemList = memberPrivilegesItemList;
-	}
-
-	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 MemberFeeSetting getMemberFeeSetting() {
-		return memberFeeSetting;
-	}
-
-	public void setMemberFeeSetting(MemberFeeSetting memberFeeSetting) {
-		this.memberFeeSetting = memberFeeSetting;
-	}
-
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderBase.java

@@ -9,7 +9,7 @@ import java.util.Date;
 
 @Data
 public class MusicGroupPaymentCalenderBase extends BaseEntity {
-    private long id;
+    private Long id;
 
     @ApiModelProperty(value = "数量", required = false)
     private BigDecimal num;

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

@@ -24,4 +24,7 @@ public class MusicGroupPaymentCalenderMember extends MusicGroupPaymentCalenderBa
 
     @ApiModelProperty(value = "团练宝收入实际收入,用于结算经营报表,actualAmount减去收入以及其他费用,剩下的就是课程费用", required = false)
     private BigDecimal income = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "会员说明", required = false)
+    private String intro;
 }

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonExaminationDetail.java

@@ -94,5 +94,26 @@ public class StudentLessonExaminationDetail implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 
+    @ApiModelProperty("作业类型,MUSIC_SCORE:曲目评测,DESCRIPTION:描述")
+    @TableField(value = "homework_type_")
+    private String homeworkType;
+
+
+    @ApiModelProperty("评测记录ID")
+    @TableField(value = "record_id_")
+    private Long recordId;
+
+
+    @ApiModelProperty("作业描述")
+    @TableField(value = "desc_")
+    private String desc;
+
+    @ApiModelProperty("上传文件JSON")
+    @TableField(value = "file_json_")
+    private String fileJson;
+
+    @ApiModelProperty("上传作业文件失效删除标记")
+    @TableField(value = "file_del_flag_")
+    private Boolean fileDelFlag;
 }
 

+ 21 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentLessonTrainingDetail.java

@@ -80,7 +80,7 @@ public class StudentLessonTrainingDetail implements Serializable {
 	@TableField(value = "times_")
     private Integer times;
 
-    @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE")
+    @ApiModelProperty("作业类型,VIDEO,MUSIC_SCORE,DESCRIPTION:描述")
     @TableField(value = "homework_type_")
     private String homeworkType = "MUSIC_SCORE";
 
@@ -100,4 +100,24 @@ public class StudentLessonTrainingDetail implements Serializable {
 	@TableField(value = "update_time_")
     private Date updateTime;
 
+
+    @ApiModelProperty("课件ID 布置课件视频作业时")
+    @TableField(value = "lesson_courseware_id_")
+    private String lessonCoursewareId;
+
+
+
+    @ApiModelProperty("作业描述")
+    @TableField(value = "desc_")
+    private String desc;
+
+    @ApiModelProperty("上传文件JSON")
+    @TableField(value = "file_json_")
+    private String fileJson;
+
+    @ApiModelProperty("上传作业文件失效删除标记")
+    @TableField(value = "file_del_flag_")
+    private Boolean fileDelFlag;
+
+
 }

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberTime.java

@@ -0,0 +1,34 @@
+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.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@ApiModel(value = "student_member_time")
+@Data
+public class StudentMemberTime implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "用户编号")
+    @TableField("student_id_")
+    private Integer studentId;
+
+    @ApiModelProperty(value = "会员编号")
+    @TableField("member_rank_id_")
+    private Integer memberRankId;
+
+    @TableField("end_time_")
+    @ApiModelProperty(value = "截止时间")
+    private Date endTime;
+}
+

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentMemberUpdateLog.java

@@ -4,6 +4,7 @@ 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 com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -31,6 +32,26 @@ public class StudentMemberUpdateLog implements Serializable {
     @ApiModelProperty(value = "操作人")
     private Integer operatorId;
 
+    @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
+    @TableField("type_")
+    private PeriodEnum type;
+
+    @ApiModelProperty(value = "会员等级")
+    @TableField("level_")
+    private Integer level;
+
+    @ApiModelProperty(value = "会员名称")
+    @TableField("name_")
+    private String name;
+
+    @ApiModelProperty(value = "购买时长")
+    @TableField("time_")
+    private Integer time;
+
+    @ApiModelProperty(value = "购买方式,1-自行购买 2-后台添加 3-后台扣减")
+    @TableField("buy_type_")
+    private Integer buyType;
+
     @TableField("old_start_time_")
     @ApiModelProperty(value = "原会员开始时间")
     private Date oldStartTime;

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

@@ -75,7 +75,7 @@ public class StudentPaymentOrderDetail extends BaseEntity {
 	@ApiModelProperty(value = "子商品列表",required = false)
 	private List<Goods> childGoodsList;
 	
-	private CloudTeacherOrderDto cloudTeacherOrderDto;
+	private List<CloudTeacherOrderDto> cloudTeacherOrderDto;
 
 	private Integer userId;
 	
@@ -224,11 +224,11 @@ public class StudentPaymentOrderDetail extends BaseEntity {
 		this.isRenew = isRenew;
 	}
 
-	public CloudTeacherOrderDto getCloudTeacherOrderDto() {
+	public List<CloudTeacherOrderDto> getCloudTeacherOrderDto() {
 		return cloudTeacherOrderDto;
 	}
 
-	public void setCloudTeacherOrderDto(CloudTeacherOrderDto cloudTeacherOrderDto) {
+	public void setCloudTeacherOrderDto(List<CloudTeacherOrderDto> cloudTeacherOrderDto) {
 		this.cloudTeacherOrderDto = cloudTeacherOrderDto;
 	}
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java

@@ -105,6 +105,8 @@ public class SysMusicCompareRecord extends BaseEntity {
 
     private Float playRate;
 
+    private Long lessonDetailId;
+
 	public SysMusicCompareRecord(FeatureType feature) {
 		this.feature = feature;
 	}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScore.java

@@ -178,6 +178,16 @@ public class SysMusicScore {
 	@ApiModelProperty("伴奏固定调PDF文件")
 	private String accJianPdfUrl;
 
+	@ApiModelProperty("五线谱图片")
+	private String musicImg;
+
+	@ApiModelProperty("首调图片")
+	private String musicFirstImg;
+
+	@ApiModelProperty("固定调图片")
+	private String musicJianImg;
+
+    @ApiModelProperty("曲目状态 ")
 	private List<SysMusicScoreAccompaniment> background;
 
     private String titleImg;
@@ -187,9 +197,21 @@ public class SysMusicScore {
 
     @ApiModelProperty("音频类型,SING:演唱,PLAY:演奏")
     private String audioPlayTypes;
+    @ApiModelProperty("使用状态 试用: FREE 锁定: LOCK 解锁:UNLOCK")
+    private String useStatus;
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public SysMusicScore musicFirstImg(String musicFirstImg) {
+		this.musicFirstImg = musicFirstImg;
+		return this;
+	}
+
+	public SysMusicScore musicImg(String musicImg) {
+		this.musicImg = musicImg;
+		return this;
+	}
 }

+ 23 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScoreAccompaniment.java

@@ -51,7 +51,8 @@ public class SysMusicScoreAccompaniment {
 
 	/**  */
 	private Integer categoriesId;
-	
+	private Integer cbsCategoriesId;
+
 	private Integer parentCategoriesId;
 
 	/**  */
@@ -143,9 +144,30 @@ public class SysMusicScoreAccompaniment {
 	@ApiModelProperty("伴奏固定调PDF文件")
 	private String accJianPdfUrl;
 
+	@ApiModelProperty("五线谱图片")
+	private String musicImg;
+
+	@ApiModelProperty("首调图片")
+	private String musicFirstImg;
+
+	@ApiModelProperty("固定调图片")
+	private String musicJianImg;
+
+	@ApiModelProperty("使用状态 试用: FREE 锁定: LOCK 解锁:UNLOCK")
+	private String useStatus;
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+	public SysMusicScoreAccompaniment musicJianImg(String musicJianImg) {
+		this.musicJianImg = musicJianImg;
+		return this;
+	}
+
+	public SysMusicScoreAccompaniment musicImg(String musicImg) {
+		this.musicImg = musicImg;
+		return this;
+	}
 }

+ 8 - 45
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TenantConfigDetail.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
+import lombok.Data;
+
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
@@ -22,52 +24,13 @@ public class TenantConfigDetail implements Serializable {
      */
     private CloudRoomRule cloud_room_rule;
 
+    @Data
     public static class MemberConfig implements Serializable {
-        private BigDecimal day_divide;
-        private BigDecimal month_divide;
-        private BigDecimal quarter_divide;
-        private BigDecimal half_year_divide;
-        private BigDecimal year_divide;
-
-        public BigDecimal getDay_divide() {
-            return day_divide;
-        }
-
-        public void setDay_divide(BigDecimal day_divide) {
-            this.day_divide = day_divide;
-        }
-
-        public BigDecimal getMonth_divide() {
-            return month_divide;
-        }
-
-        public void setMonth_divide(BigDecimal month_divide) {
-            this.month_divide = month_divide;
-        }
-
-        public BigDecimal getQuarter_divide() {
-            return quarter_divide;
-        }
-
-        public void setQuarter_divide(BigDecimal quarter_divide) {
-            this.quarter_divide = quarter_divide;
-        }
-
-        public BigDecimal getHalf_year_divide() {
-            return half_year_divide;
-        }
-
-        public void setHalf_year_divide(BigDecimal half_year_divide) {
-            this.half_year_divide = half_year_divide;
-        }
-
-        public BigDecimal getYear_divide() {
-            return year_divide;
-        }
-
-        public void setYear_divide(BigDecimal year_divide) {
-            this.year_divide = year_divide;
-        }
+        private BigDecimal dayDivide;
+        private BigDecimal monthDivide;
+        private BigDecimal quarterDivide;
+        private BigDecimal halfYearDivide;
+        private BigDecimal yearDivide;
     }
 
     public static class CloudRoomRule implements Serializable {

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TenantMemberRankSetting.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+
+/**
+ * 机构学练宝配置表
+ * 2024-10-23 10:48:21
+ */
+@Data
+@ApiModel(" TenantMemberRankSetting-机构学练宝配置表")
+@TableName("tenant_member_rank_setting")
+public class TenantMemberRankSetting implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("机构id") 
+	@TableField(value = "tenant_id_")
+    private Integer tenantId;
+
+    @ApiModelProperty("学练宝ID") 
+	@TableField(value = "member_rank_setting_id_")
+    private Integer memberRankSettingId;
+
+    @ApiModelProperty("机构配置:TENANT, 学生配置:STUDENT") 
+	@TableField(value = "type_")
+    private String type;
+
+    @ApiModelProperty("学练宝配置") 
+	@TableField(value = "member_config_")
+    private String memberConfig;
+
+}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -70,6 +70,12 @@ public class VipGroupActivity{
 	@ApiModelProperty(value = "赠课类型")
 	private String giveCourseType;
 
+	@ApiModelProperty(value = "赠课名称")
+	private String giveMemberRankName;
+
+	@ApiModelProperty(value = "课名称")
+	private String memberRankName;
+
 	@ApiModelProperty(value = "课类型")
 	private String courseType;
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CalenderBaseServiceEnum.java

@@ -3,7 +3,7 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum CalenderBaseServiceEnum implements BaseEnum<String, CalenderBaseServiceEnum> {
-	COURSE("课程"), MEMBER("会员"), MUSIC_REPAIR("乐保"), ACTIVITY("活动");
+	COURSE("课程"), MEMBER("学练宝"), MUSIC_REPAIR("乐保"), ACTIVITY("活动");
 
 	private String code;
 

+ 8 - 7
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -7,13 +7,14 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     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", "会员续费提醒"),
+    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", "学练宝续费提醒"),
+    PUSH_STUDENT_MEMBER_UPDATE_MESSAGE("PUSH_STUDENT_MEMBER_UPDATE_MESSAGE", "学练宝时长调整"),
+//    STUDENT_MEMBER_RENEW_QUIT_MESSAGE("STUDENT_MEMBER_RENEW_QUIT_MESSAGE", "学练宝续费提醒"),
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     SMS_VERIFY_CODE_DIRECTOR("SMS_VERIFY_CODE_DIRECTOR", "乐队指导特训营验证码"),
     KAPTCHA_SESSION_KEY("KAPTCHA_SESSION_KEY", "登录图形验证码"),

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java

@@ -28,8 +28,8 @@ public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum>
     CLASSROOM("CLASSROOM", "课堂课"),
 	DEGREE_REGISTRATION("DEGREE_REGISTRATION", "考级报名"),
     MAINTENANCE("MAINTENANCE","乐保服务"),
-    CLOUD_TEACHER("CLOUD_TEACHER","云教练"),
-    CLOUD_TEACHER_PLUS("CLOUD_TEACHER_PLUS","云教练"),
+    CLOUD_TEACHER("CLOUD_TEACHER","学练宝"),
+    CLOUD_TEACHER_PLUS("CLOUD_TEACHER_PLUS","学练宝"),
     THEORY_COURSE("THEORY_COURSE", "小组课"),
     REPAIR("REPAIR", "乐器维修"),
     DIRECTOR_TRAINING_CAMP("DIRECTOR_TRAINING_CAMP", "乐队指导训练营报名"),

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java

@@ -36,7 +36,7 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
     REPLACEMENT("REPLACEMENT", "乐器置换"),
     DEGREE("DEGREE", "6.1考级活动"),
     ACTIVITY("ACTIVITY", "活动购买"),
-    MEMBER("MEMBER", "会员购买"),
+    MEMBER("MEMBER", "学练宝购买"),
     LIVE_BUY("LIVE_BUY", "直播购物"),
     SCHOOL_GOODS_PURCHASE("SCHOOL_GOODS_PURCHASE","学校商品采购"),
     MALL_BUY("MALL_BUY", "商城购物"),

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/PeriodEnum.java

@@ -6,7 +6,7 @@ import com.ym.mec.common.enums.BaseEnum;
  * 周期
  */
 public enum PeriodEnum implements BaseEnum<String, PeriodEnum> {
-	DAY(""), MONTH("月"), QUARTERLY("季度"), YEAR_HALF("半年"), YEAR("年");
+	DAY(""), MONTH("月"), QUARTERLY("季度"), YEAR_HALF("半年"), YEAR("年");
 
 	private String msg;
 

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/MemberRankCategoryMapperMapper.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.MemberRankCategoryMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 会员分类权限表
+ * 2024-10-22 14:51:51
+ */
+@Repository
+public interface MemberRankCategoryMapperMapper extends BaseMapper<MemberRankCategoryMapper> {
+
+}

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/MemberRankCourseTypeMapperMapper.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.MemberRankCourseTypeMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 会员课程类型权限表
+ * 2024-10-22 14:51:51
+ */
+@Repository
+public interface MemberRankCourseTypeMapperMapper extends BaseMapper<MemberRankCourseTypeMapper> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.dal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.TenantMemberRankSetting;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 机构学练宝配置表
+ * 2024-10-23 10:48:21
+ */
+@Repository
+public interface TenantMemberRankSettingMapper extends BaseMapper<TenantMemberRankSetting> {
+
+
+}

+ 3 - 47
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudCoachPaymentProgramQueryInfo.java

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
+import lombok.Data;
 
+@Data
 public class CloudCoachPaymentProgramQueryInfo extends QueryInfo {
     private String organId;
 
@@ -15,51 +17,5 @@ public class CloudCoachPaymentProgramQueryInfo extends QueryInfo {
 
     private Integer audit;
 
-    public Integer getAudit() {
-        return audit;
-    }
-
-    public void setAudit(Integer audit) {
-        this.audit = audit;
-    }
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organId;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getPeriod() {
-        return period;
-    }
-
-    public void setPeriod(String period) {
-        this.period = period;
-    }
-
-    public String getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(String startTime) {
-        this.startTime = startTime;
-    }
-
-    public String getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(String endTime) {
-        this.endTime = endTime;
-    }
+    private Integer memberRankId;
 }

+ 4 - 96
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java

@@ -3,11 +3,13 @@ package com.ym.mec.biz.dal.page;
 import io.swagger.annotations.ApiModelProperty;
 
 import com.ym.mec.common.page.QueryInfo;
+import lombok.Data;
 import org.joda.time.DateTime;
 
 import java.util.Date;
 import java.util.List;
 
+@Data
 public class CloudTeacherOrderQueryInfo extends QueryInfo {
 
 	@ApiModelProperty(value = "乐团Id")
@@ -22,6 +24,8 @@ public class CloudTeacherOrderQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "学员姓名/编号/电话")
 	private String queryCondition;
 
+	@ApiModelProperty(value = "会员编号")
+	private Integer memberRankId;
 
 	@ApiModelProperty(value = "订单号")
 	private String orderNo;
@@ -44,102 +48,6 @@ public class CloudTeacherOrderQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "操作结束时间")
 	private Date operateEndTime;
 
-	public Date getStartTime() {
-		return startTime;
-	}
-
-	public void setStartTime(Date startTime) {
-		this.startTime = startTime;
-	}
-
-	public Date getEndTime() {
-		return endTime;
-	}
-
-	public void setEndTime(Date endTime) {
-		this.endTime = endTime;
-	}
-
 	@ApiModelProperty(value = "结束时间")
 	private Date endTime;
-
-	public String getStatus() {
-		return status;
-	}
-
-	public void setStatus(String status) {
-		this.status = status;
-	}
-
-	public Integer getStudentId() {
-		return studentId;
-	}
-
-	public void setStudentId(Integer studentId) {
-		this.studentId = studentId;
-	}
-
-	public String getQueryCondition() {
-		return queryCondition;
-	}
-
-	public void setQueryCondition(String queryCondition) {
-		this.queryCondition = queryCondition;
-	}
-
-	public Integer getSubjectId() {
-		return subjectId;
-	}
-
-	public void setSubjectId(Integer subjectId) {
-		this.subjectId = subjectId;
-	}
-
-	public String getOrderNo() {
-		return orderNo;
-	}
-
-	public void setOrderNo(String orderNo) {
-		this.orderNo = orderNo;
-	}
-
-	public String getMusicGroupId() {
-		return musicGroupId;
-	}
-
-	public void setMusicGroupId(String musicGroupId) {
-		this.musicGroupId = musicGroupId;
-	}
-
-	public String getOrganIds() {
-		return organIds;
-	}
-
-	public void setOrganIds(String organIds) {
-		this.organIds = organIds;
-	}
-
-	public String getOperatorName() {
-		return operatorName;
-	}
-
-	public void setOperatorName(String operatorName) {
-		this.operatorName = operatorName;
-	}
-
-	public Date getOperateStartTime() {
-		return operateStartTime;
-	}
-
-	public void setOperateStartTime(Date operateStartTime) {
-		this.operateStartTime = operateStartTime;
-	}
-
-	public Date getOperateEndTime() {
-		return operateEndTime;
-	}
-
-	public void setOperateEndTime(Date operateEndTime) {
-		this.operateEndTime = operateEndTime;
-	}
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MemberPrivilegesItemQueryInfo.java

@@ -7,6 +7,17 @@ public class MemberPrivilegesItemQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "父节点编号,默认0",required = false)
     private Integer parentId = 0;
 
+
+    private Integer parentMemberId;
+
+    public Integer getParentMemberId() {
+        return parentMemberId;
+    }
+
+    public void setParentMemberId(Integer parentMemberId) {
+        this.parentMemberId = parentMemberId;
+    }
+
     public Integer getParentId() {
         return parentId;
     }

+ 4 - 127
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.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 MusicGroupStudentQueryInfo extends QueryInfo {
 
   @ApiModelProperty(value = "科目编号")
@@ -52,131 +54,6 @@ public class MusicGroupStudentQueryInfo extends QueryInfo {
   @ApiModelProperty(value = "0否1是2未生效")
   private Integer hasMember;
 
-  public Integer getHasMember() {
-    return hasMember;
-  }
-
-  public void setHasMember(Integer hasMember) {
-    this.hasMember = hasMember;
-  }
-
-  public Boolean getOweFlag() {
-    return oweFlag;
-  }
-
-  public void setOweFlag(Boolean oweFlag) {
-    this.oweFlag = oweFlag;
-  }
-
-  public Integer getCarePackage() {
-    return carePackage;
-  }
-
-  public void setCarePackage(Integer carePackage) {
-    this.carePackage = carePackage;
-  }
-
-  public Integer getComeOnPackage() {
-    return comeOnPackage;
-  }
-
-  public void setComeOnPackage(Integer comeOnPackage) {
-    this.comeOnPackage = comeOnPackage;
-  }
-
-  public Boolean getHasCourse() {
-    return hasCourse;
-  }
-
-  public void setHasCourse(Boolean hasCourse) {
-    this.hasCourse = hasCourse;
-  }
-
-  public boolean getIsExport() {
-    return isExport;
-  }
-
-  public void setIsExport(boolean export) {
-    isExport = export;
-  }
-
-  public Integer getClassGroupId() {
-    return classGroupId;
-  }
-
-  public void setClassGroupId(Integer classGroupId) {
-    this.classGroupId = classGroupId;
-  }
-
-  public Integer getIsLock() {
-    return isLock;
-  }
-
-  public void setIsLock(Integer isLock) {
-    this.isLock = isLock;
-  }
-
-  public Boolean getIsActive() {
-    return isActive;
-  }
-
-  public void setIsActive(Boolean active) {
-    isActive = active;
-  }
-
-  public String getStudentName() {
-    return studentName;
-  }
-
-  public void setStudentName(String studentName) {
-    this.studentName = studentName;
-  }
-
-  public String getMusicGroupId() {
-    return musicGroupId;
-  }
-
-  public void setMusicGroupId(String musicGroupId) {
-    this.musicGroupId = musicGroupId;
-  }
-
-  public Integer getSubjectId() {
-    return subjectId;
-  }
-
-  public void setSubjectId(Integer subjectId) {
-    this.subjectId = subjectId;
-  }
-
-  public String getStudentStatus() {
-    return studentStatus;
-  }
-
-  public void setStudentStatus(String studentStatus) {
-    this.studentStatus = studentStatus;
-  }
-
-  public String getPaymentStatus() {
-    return paymentStatus;
-  }
-
-  public void setPaymentStatus(String paymentStatus) {
-    this.paymentStatus = paymentStatus;
-  }
-
-  public String getCurrentGrade() {
-    return currentGrade;
-  }
-
-  public void setCurrentGrade(String currentGrade) {
-    this.currentGrade = currentGrade;
-  }
-
-  public String getCreateYear() {
-    return createYear;
-  }
-
-  public void setCreateYear(String createYear) {
-    this.createYear = createYear;
-  }
+  @ApiModelProperty(value = "会员编号")
+  private Integer memberRankId;
 }

+ 5 - 160
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -3,13 +3,11 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.util.List;
 
-/**
- * @Author Joburgess
- * @Date 2019/9/19
- */
+@Data
 public class StudentManageQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "部门ID")
@@ -51,161 +49,8 @@ public class StudentManageQueryInfo extends QueryInfo {
     //是否使用过云教练
     private Integer isRecord;
 
-    private Boolean repairFlag;
-
-    public Boolean getRepairFlag() {
-        return repairFlag;
-    }
-
-    public void setRepairFlag(Boolean repairFlag) {
-        this.repairFlag = repairFlag;
-    }
-
-    public Integer getIsRecord() {
-        return isRecord;
-    }
-
-    public void setIsRecord(Integer isRecord) {
-        this.isRecord = isRecord;
-    }
-
-    public Integer getHasMember() {
-        return hasMember;
-    }
-
-    public void setHasMember(Integer hasMember) {
-        this.hasMember = hasMember;
-    }
-
-    private Integer subjectId;
-
-    private String activityCourseType;
-
-    public Integer getTeacherIdForOrgan() {
-        return teacherIdForOrgan;
-    }
-
-    public void setTeacherIdForOrgan(Integer teacherIdForOrgan) {
-        this.teacherIdForOrgan = teacherIdForOrgan;
-    }
-
-    public Integer getSubjectId() {
-        return subjectId;
-    }
-
-    public void setSubjectId(Integer subjectId) {
-        this.subjectId = subjectId;
-    }
-
-    public String getActivityCourseType() {
-        return activityCourseType;
-    }
-
-    public void setActivityCourseType(String activityCourseType) {
-        this.activityCourseType = activityCourseType;
-    }
-
-    public Integer getCarePackage() {
-        return carePackage;
-    }
-
-    public void setCarePackage(Integer carePackage) {
-        this.carePackage = carePackage;
-    }
-
-    public Integer getComeOnPackage() {
-        return comeOnPackage;
-    }
-
-    public void setComeOnPackage(Integer comeOnPackage) {
-        this.comeOnPackage = comeOnPackage;
-    }
-
-    public Integer getIsNewUser() {
-        return isNewUser;
-    }
-
-    public void setIsNewUser(Integer isNewUser) {
-        this.isNewUser = isNewUser;
-    }
+    //学练宝版本
+    private Integer memberRankId;
 
-    public Integer getServiceTag() {
-        return serviceTag;
-    }
-
-    public void setServiceTag(Integer serviceTag) {
-        this.serviceTag = serviceTag;
-    }
-
-    public Integer getOperatingTag() {
-        return operatingTag;
-    }
-
-    public void setOperatingTag(Integer operatingTag) {
-        this.operatingTag = operatingTag;
-    }
-
-    public Boolean getIsExport() {
-        return isExport;
-    }
-
-    public void setIsExport(Boolean export) {
-        isExport = export;
-    }
-
-    public List<Integer> getUserIds() {
-        return userIds;
-    }
-
-    public void setUserIds(List<Integer> userIds) {
-        this.userIds = userIds;
-    }
-
-    public String getStudentName() {
-        return studentName;
-    }
-
-    public void setStudentName(String studentName) {
-        this.studentName = studentName;
-    }
-
-    public ClassGroupStudentStatusEnum getStudentStatus() {
-        return studentStatus;
-    }
-
-    public void setStudentStatus(ClassGroupStudentStatusEnum studentStatus) {
-        this.studentStatus = studentStatus;
-    }
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organId;
-    }
-
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
-
-	public Boolean getIsActive() {
-		return isActive;
-	}
-
-	public void setIsActive(Boolean isActive) {
-		this.isActive = isActive;
-	}
-
-	public Integer getTeacherId() {
-		return teacherId;
-	}
-
-	public void setTeacherId(Integer teacherId) {
-		this.teacherId = teacherId;
-	}
+    private Boolean repairFlag;
 }

+ 2 - 56
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentSignQueryInfo.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 StudentSignQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "开始时间",required = false)
@@ -25,60 +27,4 @@ public class StudentSignQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "班级编号")
     private Integer classGroupId;
-
-    public Integer getClassGroupId() {
-        return classGroupId;
-    }
-
-    public void setClassGroupId(Integer classGroupId) {
-        this.classGroupId = classGroupId;
-    }
-
-    public String getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(String startTime) {
-        this.startTime = startTime;
-    }
-
-    public String getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(String endTime) {
-        this.endTime = endTime;
-    }
-
-    public String getCourseScheduleName() {
-        return courseScheduleName;
-    }
-
-    public void setCourseScheduleName(String courseScheduleName) {
-        this.courseScheduleName = courseScheduleName;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public String getSignStatus() {
-        return signStatus;
-    }
-
-    public void setSignStatus(String signStatus) {
-        this.signStatus = signStatus;
-    }
-
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов