刘俊驰 9 miesięcy temu
rodzic
commit
ab3c479ef4
28 zmienionych plików z 801 dodań i 88 usunięć
  1. 42 6
      mec-application/src/main/java/com/ym/mec/web/controller/MemberRankSettingController.java
  2. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/MusicSheetApplicationExtendController.java
  3. 1 1
      mec-application/src/main/java/com/ym/mec/web/controller/SysMusicScoreController.java
  4. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  5. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicScoreDao.java
  6. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java
  7. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankCategoryMapper.java
  8. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankCourseTypeMapper.java
  9. 21 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java
  10. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/MemberRankCategoryMapperMapper.java
  11. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/MemberRankCourseTypeMapperMapper.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MemberPrivilegesItemQueryInfo.java
  13. 136 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MemberRankSettingWrapper.java
  14. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicSheetWrapper.java
  15. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankCategoryMapperService.java
  16. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankCourseTypeMapperService.java
  17. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankSettingService.java
  18. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicScoreService.java
  19. 37 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberPrivilegesItemServiceImpl.java
  20. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankCategoryMapperServiceImpl.java
  21. 52 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankCourseTypeMapperServiceImpl.java
  22. 236 70
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  23. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java
  24. 7 2
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  25. 5 0
      mec-biz/src/main/resources/config/mybatis/MemberRankCategoryMapperMapper.xml
  26. 5 0
      mec-biz/src/main/resources/config/mybatis/MemberRankCourseTypeMapperMapper.xml
  27. 12 0
      mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml
  28. 9 0
      mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

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

@@ -1,18 +1,32 @@
 package com.ym.mec.web.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
+import com.ym.mec.biz.dal.entity.SysMusicScoreCategories;
+import com.ym.mec.biz.dal.entity.TenantConfig;
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
+import com.ym.mec.biz.service.CbsMusicScoreCategoriesService;
 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.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 
 @RequestMapping("${app-config.url.web:}/memberRankSetting")
 @Api(tags = "会员等级服务")
@@ -24,12 +38,15 @@ public class MemberRankSettingController extends BaseController {
     @Autowired
     private SysUserService sysUserService;
 
+
+
     @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,24 +55,43 @@ 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")
+    @PreAuthorize("@pcs.hasPermissions('memberRankSetting/del')")
+    @AuditLogAnnotation(operateName = "删除学练宝会员等级")
+    public HttpResponseResult<Object> update(@RequestParam 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<PageInfo<MemberRankSettingWrapper.MemberRankSetting>> queryPage(@RequestBody MemberRankSettingWrapper.MemberRankSettingQuery queryInfo) {
+        return succeed(memberRankSettingService.queryPage2(queryInfo));
+    }
+
+
+    @ApiOperation(value = "树状列表")
+    @GetMapping("/categoryTree")
+    public HttpResponseResult<List<SysMusicScoreCategories>> queryTree(@RequestParam(required = false) Integer parentId) {
+
+        return succeed(memberRankSettingService.getTree(parentId));
     }
 
     @ApiOperation(value = "获取所有会员列表")

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

@@ -1,7 +1,6 @@
 package com.ym.mec.web.controller;
 
 import com.alibaba.fastjson.JSONObject;
-import com.dayaedu.cbs.domain.wrapper.MusicSheetWrapper;
 import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
 import com.dayaedu.cbs.openfeign.properties.OpenFeignClientConfigProperties;
 import com.dayaedu.cbs.openfeign.service.CbsMusicSheetService;
@@ -13,6 +12,7 @@ import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.template.R;
 import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
+import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
 import com.ym.mec.biz.service.SysMusicScoreService;
 import com.ym.mec.vo.PageUtil;
 import io.swagger.annotations.Api;

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

@@ -1,11 +1,11 @@
 package com.ym.mec.web.controller;
 
-import com.dayaedu.cbs.domain.wrapper.MusicSheetWrapper;
 import com.ym.mec.biz.dal.dto.ReasonDto;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.enums.ClientTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 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.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;

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

@@ -130,4 +130,6 @@ 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 countByMemberRankSetttingId(@Param("memberRankSettingId") Integer memberRankSettingId);
 }

+ 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 - 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;
 

+ 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;
+
+}

+ 21 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MemberRankSetting.java

@@ -20,7 +20,10 @@ public class MemberRankSetting {
 
 	/**  */
 	private String name;
-	
+
+    private Integer parentId;
+    private Boolean delFlag;
+
 	/**  */
 	private String intro;
 	
@@ -47,7 +50,23 @@ public class MemberRankSetting {
 	
 	private MemberFeeSetting memberFeeSetting;
 
-	public String getExperienceIcon() {
+    public Boolean getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Boolean delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Integer parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getExperienceIcon() {
 		return experienceIcon;
 	}
 

+ 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> {
+
+}

+ 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 memberRankSettingId;
+
+    public Integer getMemberRankSettingId() {
+        return memberRankSettingId;
+    }
+
+    public void setMemberRankSettingId(Integer memberRankSettingId) {
+        this.memberRankSettingId = memberRankSettingId;
+    }
+
     public Integer getParentId() {
         return parentId;
     }

+ 136 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MemberRankSettingWrapper.java

@@ -0,0 +1,136 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.constraints.NotNull;
+
+public class MemberRankSettingWrapper {
+
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" MemberRankSettingQuery-会员等级设置")
+    public static class MemberRankSettingQuery implements QueryInfo {
+
+
+        @ApiModelProperty("名称")
+        private String name;
+
+        @ApiModelProperty("更新开始时间")
+        private Date updateStartTime;
+
+        @ApiModelProperty("更新结束时间")
+        private Date updateEndTime;
+
+        @ApiModelProperty("更新人名称")
+        private String updateName;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static MemberRankSettingQuery from(String json) {
+            return JSON.parseObject(json, MemberRankSettingQuery.class);
+        }
+    }
+
+
+    @Data
+    @ApiModel(" MemberRankSettingAdd-会员等级设置")
+    public static class MemberRankSettingAdd {
+
+        private Integer id;
+
+        @ApiModelProperty("父级编号")
+        private Integer parentId;
+
+        @ApiModelProperty("名称")
+        @NotNull(message = "名称不能为空")
+        private String name;
+
+        @ApiModelProperty("介绍")
+        @NotNull(message = "介绍不能为空")
+        private String intro;
+
+        @ApiModelProperty("更新时间")
+        private Date updateTime;
+
+        @ApiModelProperty("更新人")
+        private Integer operator;
+
+        @ApiModelProperty("学练宝曲目分类内容")
+        private List<Integer> memberCategoryIdList;
+
+
+        @ApiModelProperty("学练宝云课堂内容")
+        private List<String> memberCourseTypeList;
+
+        @ApiModelProperty("学练宝功能")
+        private List<Integer> memberPrivilegesItemIdList;
+    }
+
+    @Data
+    @ApiModel(" MemberRankSetting-会员等级设置")
+    public static class MemberRankSetting {
+
+        private Integer id;
+
+        @ApiModelProperty("父级编号")
+        private Integer parentId;
+
+        @ApiModelProperty("名称")
+        private String name;
+
+        @ApiModelProperty("介绍")
+        private String intro;
+
+        @ApiModelProperty("曲目数量")
+        private Integer musicCount = 0;
+
+        @ApiModelProperty("更新时间")
+        private Date updateTime;
+
+        @ApiModelProperty("更新人")
+        private Integer operator;
+
+        @ApiModelProperty("是否已被购买")
+        private Boolean buyFlag = false;
+
+
+        @ApiModelProperty("更新人名称")
+        private String operatorName;
+
+        @ApiModelProperty("学练宝曲目分类内容 详情接口返回")
+        private List<Integer> memberCategoryIdList;
+
+
+        @ApiModelProperty("学练宝云课堂内容 详情接口返回")
+        private List<String> memberCourseTypeList;
+
+        @ApiModelProperty("学练宝功能 详情接口返回")
+        private List<Integer> memberPrivilegesItemIdList;
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static MemberRankSetting from(String json) {
+            return JSON.parseObject(json, MemberRankSetting.class);
+        }
+    }
+
+}

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicSheetWrapper.java

@@ -1,4 +1,4 @@
-package com.dayaedu.cbs.domain.wrapper;
+package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.dayaedu.cbs.common.enums.music.*;
@@ -455,4 +455,16 @@ public class MusicSheetWrapper {
 
     }
 
+    @Data
+    public static class CategoryMusicNumStat {
+
+        @ApiModelProperty("曲目分类ID")
+        private Integer categoryId;
+
+        @ApiModelProperty("曲目数量")
+        private Integer musicNum;
+
+
+    }
+
 }

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankCategoryMapperService.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.MemberRankCategoryMapper;
+
+import java.util.List;
+
+/**
+ * 会员分类权限表
+ * 2024-10-22 14:51:51
+ */
+public interface MemberRankCategoryMapperService extends IService<MemberRankCategoryMapper>  {
+
+    void batchInsert(Integer memberRankSettingId, List<Integer> memberCategoryIdList);
+
+    List<MemberRankCategoryMapper> getByMemberRankId(List<Integer> memberRankSettingId);
+
+    void deleteByRankSettingId(Integer memberRankSettingId);
+}

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankCourseTypeMapperService.java

@@ -0,0 +1,19 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.MemberRankCourseTypeMapper;
+
+import java.util.List;
+
+/**
+ * 会员课程类型权限表
+ * 2024-10-22 14:51:51
+ */
+public interface MemberRankCourseTypeMapperService extends IService<MemberRankCourseTypeMapper>  {
+
+    void batchInsert(Integer memberRankSettingId, List<String> memberCourseTypeList);
+
+    List<MemberRankCourseTypeMapper> getByMemberRankId(Integer memberRankSettingId);
+
+    void deleteByRankSettingId(Integer memberRankSettingId);
+}

+ 13 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankSettingService.java

@@ -3,18 +3,22 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.dto.MemberPayParamDto;
 import com.ym.mec.biz.dal.entity.MemberRankSetting;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.SysMusicScoreCategories;
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
 
 public interface MemberRankSettingService extends BaseService<Integer, MemberRankSetting> {
 
-    void add(MemberRankSetting memberRankSetting);
+    void add(MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting);
 
-    MemberRankSetting getDetail(Integer memberRankSettingId);
+    MemberRankSettingWrapper.MemberRankSetting getDetail(Integer memberRankSettingId);
 
-    void updateSetting(MemberRankSetting memberRankSetting);
+    void updateSetting(MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting);
 
     List<MemberRankSetting> queryListByIsDefault(Boolean isDefault);
 
@@ -47,4 +51,10 @@ public interface MemberRankSettingService extends BaseService<Integer, MemberRan
     HttpResponseResult activeBuy(MemberPayParamDto memberPayParamDto) throws Exception;
 
     HttpResponseResult<Integer> checkActiveBuy(MemberPayParamDto memberPayParamDto);
+
+    List<SysMusicScoreCategories> getTree(Integer parentId);
+
+    PageInfo<MemberRankSettingWrapper.MemberRankSetting> queryPage2(MemberRankSettingWrapper.MemberRankSettingQuery queryInfo);
+
+    void del(Integer id);
 }

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

@@ -4,7 +4,6 @@ package com.ym.mec.biz.service;
 import java.util.List;
 import java.util.Map;
 
-import com.dayaedu.cbs.domain.wrapper.MusicSheetWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.musicInstrument.CbsMusicalInstrumentWrapper;
 import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
@@ -12,6 +11,7 @@ import com.ym.mec.biz.dal.dto.MusicScoreDto;
 import com.ym.mec.biz.dal.dto.ReasonDto;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberPrivilegesItemServiceImpl.java

@@ -3,17 +3,22 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.biz.dal.dao.MemberPrivilegesItemDao;
 import com.ym.mec.biz.dal.dao.MemberRankPrivilegesDao;
 import com.ym.mec.biz.dal.entity.MemberPrivilegesItem;
+import com.ym.mec.biz.dal.entity.SysMusicScoreCategories;
 import com.ym.mec.biz.dal.page.MemberPrivilegesItemQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
 import com.ym.mec.biz.service.MemberPrivilegesItemService;
+import com.ym.mec.biz.service.MemberRankSettingService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.filters.TenantIdThreadLocal;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -25,6 +30,8 @@ public class MemberPrivilegesItemServiceImpl extends BaseServiceImpl<Integer, Me
 	@Autowired
 	private MemberRankPrivilegesDao memberRankPrivilegesDao;
 
+    @Autowired
+    private MemberRankSettingService memberRankSettingService;
 
 
 	@Override
@@ -43,6 +50,26 @@ public class MemberPrivilegesItemServiceImpl extends BaseServiceImpl<Integer, Me
 		return item;
 	}
 
+
+    private List<MemberPrivilegesItem> getTreeByIds(List<MemberPrivilegesItem> memberPrivilegesItems, List<Integer> ids) {
+        if (CollectionUtils.isEmpty(memberPrivilegesItems)) {
+            return new ArrayList<>();
+        }
+        List<MemberPrivilegesItem> list = new ArrayList<>();
+        for (MemberPrivilegesItem memberPrivilegesItem : memberPrivilegesItems) {
+            if (ids.contains(memberPrivilegesItem.getId())) {
+                list.add(memberPrivilegesItem);
+            } else {
+                List<MemberPrivilegesItem> memberPrivilegesItemList = getTreeByIds(memberPrivilegesItem.getMemberPrivilegesItems(), ids);
+                if (CollectionUtils.isNotEmpty(memberPrivilegesItemList)) {
+                    memberPrivilegesItem.setMemberPrivilegesItems(memberPrivilegesItemList);
+                    list.add(memberPrivilegesItem);
+                }
+            }
+        }
+        return list;
+    }
+
     @Override
 	@Transactional(rollbackFor = Exception.class)
     public void recursiveDel(Integer memberPrivilegesItemId) {
@@ -90,6 +117,16 @@ public class MemberPrivilegesItemServiceImpl extends BaseServiceImpl<Integer, Me
 		for (MemberPrivilegesItem item : rows) {
 			item = getTree(item);
 		}
+
+        // 如果是有学练宝ID 只返回学练宝数据
+        if (queryInfo.getMemberRankSettingId() != null) {
+            MemberRankSettingWrapper.MemberRankSetting detail = memberRankSettingService.getDetail(queryInfo.getMemberRankSettingId());
+            if (detail != null && CollectionUtils.isNotEmpty(detail.getMemberPrivilegesItemIdList())) {
+                return getTreeByIds(rows, detail.getMemberPrivilegesItemIdList());
+
+            }
+
+        }
 		return rows;
 	}
 

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankCategoryMapperServiceImpl.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.entity.MemberRankCategoryMapper;
+import com.ym.mec.biz.dal.mapper.MemberRankCategoryMapperMapper;
+import com.ym.mec.biz.service.MemberRankCategoryMapperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * 会员分类权限表
+ * 2024-10-22 14:51:51
+ */
+@Slf4j
+@Service
+public class MemberRankCategoryMapperServiceImpl extends ServiceImpl<MemberRankCategoryMapperMapper, MemberRankCategoryMapper> implements MemberRankCategoryMapperService {
+
+    @Override
+    public void batchInsert(Integer memberRankSettingId, List<Integer> memberCategoryIdList) {
+        if (CollectionUtils.isNotEmpty(memberCategoryIdList)) {
+            List<MemberRankCategoryMapper> memberRankCategoryMappers = new ArrayList<>();
+            for (Integer i : new HashSet<>(memberCategoryIdList)) {
+                MemberRankCategoryMapper memberRankCategoryMapper = new MemberRankCategoryMapper();
+                memberRankCategoryMapper.setRankId(memberRankSettingId);
+                memberRankCategoryMapper.setCategoryId(i);
+                memberRankCategoryMappers.add(memberRankCategoryMapper);
+            }
+            this.saveBatch(memberRankCategoryMappers);
+        }
+    }
+
+    @Override
+    public List<MemberRankCategoryMapper> getByMemberRankId(List<Integer> memberRankSettingId) {
+        if (CollectionUtils.isEmpty(memberRankSettingId)) {
+            return new ArrayList<>();
+        }
+        return lambdaQuery()
+            .in(MemberRankCategoryMapper::getRankId, memberRankSettingId)
+            .list();
+
+    }
+
+    @Override
+    public void deleteByRankSettingId(Integer memberRankSettingId) {
+        lambdaUpdate()
+            .eq(MemberRankCategoryMapper::getRankId, memberRankSettingId)
+            .remove();
+    }
+}

+ 52 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankCourseTypeMapperServiceImpl.java

@@ -0,0 +1,52 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.entity.MemberRankCourseTypeMapper;
+import com.ym.mec.biz.dal.mapper.MemberRankCourseTypeMapperMapper;
+import com.ym.mec.biz.service.MemberRankCourseTypeMapperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * 会员课程类型权限表
+ * 2024-10-22 14:51:51
+ */
+@Slf4j
+@Service
+public class MemberRankCourseTypeMapperServiceImpl extends ServiceImpl<MemberRankCourseTypeMapperMapper, MemberRankCourseTypeMapper> implements MemberRankCourseTypeMapperService {
+
+    @Override
+    public void batchInsert(Integer memberRankSettingId, List<String> memberCourseTypeList) {
+        if (CollectionUtils.isEmpty(memberCourseTypeList)) {
+            return;
+        }
+
+        List<MemberRankCourseTypeMapper> memberRankCourseTypeMappers = new ArrayList<>();
+        for (String s : new HashSet<>(memberCourseTypeList)) {
+            MemberRankCourseTypeMapper memberRankCourseTypeMapper = new MemberRankCourseTypeMapper();
+            memberRankCourseTypeMapper.setCourseType(s);
+            memberRankCourseTypeMapper.setRankId(memberRankSettingId);
+            memberRankCourseTypeMappers.add(memberRankCourseTypeMapper);
+        }
+        this.saveBatch(memberRankCourseTypeMappers);
+    }
+
+    @Override
+    public List<MemberRankCourseTypeMapper> getByMemberRankId(Integer memberRankSettingId) {
+        return lambdaQuery()
+            .eq(MemberRankCourseTypeMapper::getRankId,memberRankSettingId)
+            .list();
+    }
+
+    @Override
+    public void deleteByRankSettingId(Integer memberRankSettingId) {
+        lambdaUpdate()
+            .eq(MemberRankCourseTypeMapper::getRankId,memberRankSettingId)
+            .remove();
+    }
+}

+ 236 - 70
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -1,74 +1,26 @@
 package com.ym.mec.biz.service.impl;
 
-import static com.ym.mec.biz.dal.enums.CouponDetailTypeEnum.MEMBER;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-import java.util.function.BiPredicate;
-import java.util.stream.Collectors;
-
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.service.*;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.LocalDate;
-import org.redisson.api.RBucket;
-import org.redisson.api.RedissonClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.MemberRankPrivilegesDao;
-import com.ym.mec.biz.dal.dao.MemberRankSettingDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dao.TempBuyFreeLiveTheoryCourseDao;
-import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampUserRelationDao;
-import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.Cloud2022ActivityDto;
 import com.ym.mec.biz.dal.dto.MemberPayParamDto;
-import com.ym.mec.biz.dal.entity.ActivityUserMapper;
-import com.ym.mec.biz.dal.entity.CloudCoachPaymentProgram;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
-import com.ym.mec.biz.dal.entity.MemberRankPrivileges;
-import com.ym.mec.biz.dal.entity.MemberRankSetting;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentCloudCoachPaymentDetails;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.TempBuyFreeLiveTheoryCourse;
-import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
-import com.ym.mec.biz.dal.entity.VipGroupActivity;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PeriodEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
+import com.ym.mec.biz.dal.wrapper.MemberRankSettingWrapper;
+import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 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.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.adapay.Payment;
@@ -77,6 +29,28 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.joda.time.LocalDate;
+import org.redisson.api.RBucket;
+import org.redisson.api.RedissonClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.function.BiPredicate;
+import java.util.stream.Collectors;
+
+import static com.ym.mec.biz.dal.enums.CouponDetailTypeEnum.MEMBER;
 
 @Service
 public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, MemberRankSetting> implements MemberRankSettingService {
@@ -94,6 +68,11 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
     @Autowired
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
 
+    @Autowired
+    private LessonCoursewareService lessonCoursewareService;
+
+    @Resource
+    private CbsMusicScoreCategoriesService cbsMusicScoreCategoriesService;
     @Lazy
     @Autowired
     private ContractService contractService;
@@ -133,10 +112,22 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
     private TempLittleArtistTrainingCampUserRelationDao tempLittleArtistTrainingCampUserRelationDao;
     @Autowired
     private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+
+    @Autowired
+    private MemberRankCategoryMapperService memberRankCategoryMapperService;
+
+    @Autowired
+    private MemberRankCourseTypeMapperService memberRankCourseTypeMapperService;
     
     @Autowired
     private HfMerchantConfigService hfMerchantConfigService;
 
+    @Autowired
+    private SysMusicScoreDao sysMusicScoreDao;
+
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @Override
@@ -146,35 +137,74 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void add(MemberRankSetting memberRankSetting) {
-        memberRankSettingDao.insert(memberRankSetting);
+    public void add(MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting) {
+        MemberRankSetting object = JSON.parseObject(JSON.toJSONString(memberRankSetting), MemberRankSetting.class);
+        memberRankSettingDao.insert(object);
         List<Integer> memberPrivilegesItemIdList = memberRankSetting.getMemberPrivilegesItemIdList();
-        if (memberPrivilegesItemIdList == null || memberPrivilegesItemIdList.size() == 0) {
+        if (CollectionUtils.isEmpty(memberPrivilegesItemIdList)) {
             throw new BizException("操作失败:请配置会员权益");
         }
-        memberRankPrivilegesDao.batchInsert(memberRankSetting.getId(), memberPrivilegesItemIdList);
+        memberRankPrivilegesDao.batchInsert(object.getId(), memberPrivilegesItemIdList);
+        // 设置学练宝曲目分类内容
+        if (CollectionUtils.isNotEmpty( memberRankSetting.getMemberCategoryIdList())) {
+            memberRankCategoryMapperService.batchInsert(object.getId(), memberRankSetting.getMemberCategoryIdList());
+        }
+        // 设置云课堂曲目分类内容
+        if (CollectionUtils.isNotEmpty( memberRankSetting.getMemberCourseTypeList())) {
+            memberRankCourseTypeMapperService.batchInsert(object.getId(), memberRankSetting.getMemberCourseTypeList());
+        }
     }
 
     @Override
-    public MemberRankSetting getDetail(Integer memberRankSettingId) {
+    public MemberRankSettingWrapper.MemberRankSetting getDetail(Integer memberRankSettingId) {
         MemberRankSetting memberRankSetting = memberRankSettingDao.get(memberRankSettingId);
+        MemberRankSettingWrapper.MemberRankSetting result = JSON
+            .parseObject(JSON.toJSONString(memberRankSetting), MemberRankSettingWrapper.MemberRankSetting.class);
         List<MemberRankPrivileges> byRankSettingId = memberRankPrivilegesDao.findByRankSettingId(memberRankSettingId);
-        if (byRankSettingId != null && byRankSettingId.size() > 0) {
-            memberRankSetting.setMemberRankPrivileges(byRankSettingId);
-            memberRankSetting.setMemberPrivilegesItemIdList(byRankSettingId.stream().map(e -> e.getMemberPrivilegesId()).collect(Collectors.toList()));
+        if (CollectionUtils.isNotEmpty(byRankSettingId)) {
+            result.setMemberPrivilegesItemIdList(byRankSettingId.stream().map(e -> e.getMemberPrivilegesId()).collect(Collectors.toList()));
+        }
+        // 分类ID集合
+        List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(Lists.newArrayList(memberRankSetting.getId()));
+        if (CollectionUtils.isNotEmpty(categoryMapperList)) {
+            result.setMemberCategoryIdList(categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).collect(Collectors.toList()));
         }
-        return memberRankSetting;
+
+        // 云课堂集合
+        List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(memberRankSetting.getId());
+        if (CollectionUtils.isNotEmpty(courseTypeMapperList)) {
+            result.setMemberCourseTypeList(courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType).collect(Collectors.toList()));
+        }
+
+        // 是否已被购买
+        int count = cloudTeacherOrderDao.countByMemberRankSetttingId(memberRankSettingId);
+        result.setBuyFlag(count > 0);
+
+        return result;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateSetting(MemberRankSetting memberRankSetting) {
-        memberRankSettingDao.update(memberRankSetting);
+    public void updateSetting(MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting) {
+
+
+
+        memberRankSettingDao.update(JSON.parseObject(JSON.toJSONString(memberRankSetting),MemberRankSetting.class));
         memberRankPrivilegesDao.deleteByRankSettingId(memberRankSetting.getId());
+        memberRankCourseTypeMapperService.deleteByRankSettingId(memberRankSetting.getId());
+        memberRankCategoryMapperService.deleteByRankSettingId(memberRankSetting.getId());
         List<Integer> memberPrivilegesItemIdList = memberRankSetting.getMemberPrivilegesItemIdList();
         if (memberPrivilegesItemIdList != null && memberPrivilegesItemIdList.size() > 0) {
             memberRankPrivilegesDao.batchInsert(memberRankSetting.getId(), memberPrivilegesItemIdList);
         }
+        // 设置学练宝曲目分类内容
+        if (CollectionUtils.isNotEmpty( memberRankSetting.getMemberCategoryIdList())) {
+            memberRankCategoryMapperService.batchInsert(memberRankSetting.getId(), memberRankSetting.getMemberCategoryIdList());
+        }
+        // 设置云课堂曲目分类内容
+        if (CollectionUtils.isNotEmpty( memberRankSetting.getMemberCourseTypeList())) {
+            memberRankCourseTypeMapperService.batchInsert(memberRankSetting.getId(), memberRankSetting.getMemberCourseTypeList());
+        }
     }
 
     @Override
@@ -434,6 +464,81 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         return BaseController.succeed(1);
     }
 
+    @Override
+    public List<SysMusicScoreCategories> getTree(Integer parentId) {
+        // 分类
+        List<SysMusicScoreCategories> sysMusicScoreCategories = cbsMusicScoreCategoriesService.queryTreeByAppId();
+
+        // 课件
+        IPage<LessonCoursewareWrapper.LessonCoursewareDto> lessonCoursewareDtoIPage = lessonCoursewareService.selectPage(new Page<>(1, -1), new LessonCoursewareWrapper.LessonCoursewareQuery());
+        List<LessonCoursewareWrapper.LessonCoursewareDto> records = lessonCoursewareDtoIPage.getRecords();
+        SysMusicScoreCategories course =null;
+        if (CollectionUtils.isNotEmpty(records)) {
+            course = new SysMusicScoreCategories();
+            course.setId(-1);
+            course.setName("云课堂");
+            course.setSysMusicScoreCategoriesList(new ArrayList<>());
+        }
+        if (parentId != null) {
+            MemberRankSettingWrapper.MemberRankSetting detail = getDetail(parentId);
+            List<Integer> memberCategoryIdList = detail.getMemberCategoryIdList();
+            if (CollectionUtils.isEmpty(memberCategoryIdList)) {
+                sysMusicScoreCategories = new ArrayList<>();
+            }
+            // 将被使用过的选出来
+            sysMusicScoreCategories = getCategoryTreeByIds(sysMusicScoreCategories,memberCategoryIdList);
+
+            List<String> memberCourseTypeList = detail.getMemberCourseTypeList();
+            if (CollectionUtils.isNotEmpty(memberCourseTypeList) && course !=null) {
+                for (LessonCoursewareWrapper.LessonCoursewareDto record : records) {
+                    if (memberCourseTypeList.contains(record.getId().toString())) {
+                        SysMusicScoreCategories lesson = new SysMusicScoreCategories();
+                        lesson.setId(record.getId());
+                        lesson.setName(record.getName());
+                        course.getSysMusicScoreCategoriesList().add(lesson);
+                    }
+                }
+                if (CollectionUtils.isNotEmpty(course.getSysMusicScoreCategoriesList())) {
+                    sysMusicScoreCategories.add(course);
+                }
+            }
+        } else {
+            for (LessonCoursewareWrapper.LessonCoursewareDto record : records) {
+                SysMusicScoreCategories lesson = new SysMusicScoreCategories();
+                lesson.setId(record.getId());
+                lesson.setName(record.getName());
+                course.getSysMusicScoreCategoriesList().add(lesson);
+            }
+            if (CollectionUtils.isNotEmpty(course.getSysMusicScoreCategoriesList())) {
+                sysMusicScoreCategories.add(course);
+            }
+        }
+
+
+        return sysMusicScoreCategories;
+
+    }
+
+    private List<SysMusicScoreCategories> getCategoryTreeByIds(List<SysMusicScoreCategories> sysMusicScoreCategories, List<Integer> memberCategoryIdList) {
+        if (CollectionUtils.isEmpty(sysMusicScoreCategories)) {
+            return new ArrayList<>();
+        }
+        List<SysMusicScoreCategories> list = new ArrayList<>();
+        for (SysMusicScoreCategories sysMusicScoreCategory : sysMusicScoreCategories) {
+            if (memberCategoryIdList.contains(sysMusicScoreCategory.getId())) {
+                list.add(sysMusicScoreCategory);
+            } else {
+                List<SysMusicScoreCategories> sysMusicScoreCategories1 = getCategoryTreeByIds(sysMusicScoreCategory.getSysMusicScoreCategoriesList(), memberCategoryIdList);
+                if (CollectionUtils.isNotEmpty(sysMusicScoreCategories1)) {
+                    sysMusicScoreCategory.setSysMusicScoreCategoriesList(sysMusicScoreCategories1);
+                    list.add(sysMusicScoreCategory);
+                }
+            }
+        }
+        return list;
+    }
+
+
     public static final String BUY_2_QQHE_LOCK = "BUY_2_QQHE_LOCK:";
 
     @Override
@@ -912,4 +1017,65 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         userPhones.put(sysUser.getId(), sysUser.getPhone());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.CLOUD_TEACHER_ORDER_SUCCESS, userPhones, null, 0, null, null);
     }
+
+
+    /**
+     * 通过参数查找结果集,适合分页场景
+     *
+     * @param queryInfo
+     * @return
+     */
+    @Override
+    public PageInfo<MemberRankSettingWrapper.MemberRankSetting> queryPage2(MemberRankSettingWrapper.MemberRankSettingQuery queryInfo) {
+        PageInfo<MemberRankSettingWrapper.MemberRankSetting> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MemberRankSetting> dataList = null;
+        int count = this.findCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = this.getDAO().queryPage(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        List<MemberRankSettingWrapper.MemberRankSetting> memberRankSettings = JSON.parseArray(JSON.toJSONString(dataList), MemberRankSettingWrapper.MemberRankSetting.class);
+
+        // 设置曲目数量
+        // 查询曲目ID分类
+        // 分类去重
+        // 曲目表汇总曲目数量
+        if (CollectionUtils.isNotEmpty(memberRankSettings)) {
+            List<Integer> memberRankSettingIds = memberRankSettings.stream().map(MemberRankSettingWrapper.MemberRankSetting::getId).collect(Collectors.toList());
+            List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(memberRankSettingIds);
+            // 分组
+            Map<Integer, List<Integer>> map = categoryMapperList.stream()
+                .collect(Collectors.groupingBy(MemberRankCategoryMapper::getRankId,
+                    Collectors.mapping(MemberRankCategoryMapper::getCategoryId, Collectors.toList())));
+
+
+            List<Integer> categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).distinct().collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(categoryIds)) {
+                List<MusicSheetWrapper.CategoryMusicNumStat> statList = sysMusicScoreDao.getNumByCategoryIds(categoryIds);
+                Map<Integer, Integer> statMap = statList.stream()
+                    .collect(Collectors.toMap(MusicSheetWrapper.CategoryMusicNumStat::getCategoryId, MusicSheetWrapper.CategoryMusicNumStat::getMusicNum));
+
+                memberRankSettings.forEach(e -> {
+                    List<Integer> categoryList = map.get(e.getId());
+                    if (CollectionUtils.isNotEmpty(categoryList)) {
+                        e.setMusicCount(categoryList.stream().map(statMap::get).filter(Objects::nonNull).reduce(Integer::sum).orElse(0));
+                    }
+                });
+            }
+        }
+        pageInfo.setRows(memberRankSettings);
+        return pageInfo;
+    }
+
+    @Override
+    public void del(Integer id) {
+
+    }
 }

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

@@ -9,7 +9,6 @@ import com.dayaedu.cbs.common.enums.music.EMusicAvailableType;
 import com.dayaedu.cbs.common.enums.music.EMusicPlayMode;
 import com.dayaedu.cbs.common.enums.music.EMusicSourceType;
 import com.dayaedu.cbs.common.enums.school.EMusicSheetType;
-import com.dayaedu.cbs.domain.wrapper.MusicSheetWrapper;
 import com.dayaedu.cbs.openfeign.client.MusicFeignClientService;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendClientWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
@@ -22,6 +21,7 @@ import com.ym.mec.biz.dal.dto.ReasonDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;

+ 7 - 2
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -6,6 +6,7 @@
         <!--@Table cloud_teacher_order-->
         <id column="id_" property="id"/>
         <result column="organ_id_" property="organId"/>
+        <result column="member_rank_setting_id_" property="memberRankSettingId"/>
         <result column="student_id_" property="studentId"/>
         <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="level_" property="level"/>
@@ -61,9 +62,9 @@
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrder"
             useGeneratedKeys="true">
         INSERT INTO cloud_teacher_order (organ_id_,student_id_, type_, level_, time_, amount_, operating_amount_, refund_amount_, status_,
-        order_id_,platform_order_id_,start_time_,end_time_,remark_, create_time_, update_time_,music_group_id_,active_remark_,tenant_id_)
+        order_id_,platform_order_id_,start_time_,end_time_,remark_, create_time_, update_time_,music_group_id_,active_remark_,tenant_id_,member_rank_setting_id_)
         VALUES (#{organId},#{studentId}, #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{level}, #{time}, #{amount}, #{operatingAmount}, #{refundAmount},
-        #{status},#{orderId},#{platformOrderId},#{startTime},#{endTime}, #{remark}, NOW(), NOW(),#{musicGroupId},#{activeRemark},#{tenantId})
+        #{status},#{orderId},#{platformOrderId},#{startTime},#{endTime}, #{remark}, NOW(), NOW(),#{musicGroupId},#{activeRemark},#{tenantId},#{memberRankSettingId})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrder">
         <!--@mbg.generated-->
@@ -610,4 +611,8 @@
         </if>
         group by mgpscd.music_group_id_,mgpscd.user_id_ order by mg.organ_id_,mg.id_
     </select>
+
+    <select id="countByMemberRankSetttingId" resultType="int">
+        select count(1) from cloud_teacher_order where member_rank_setting_id_ = #{memberRankSettingId}
+    </select>
 </mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/MemberRankCategoryMapperMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.MemberRankCategoryMapperMapper">
+
+</mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/MemberRankCourseTypeMapperMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.MemberRankCourseTypeMapperMapper">
+
+</mapper>

+ 12 - 0
mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml

@@ -8,6 +8,7 @@
 	
 	<resultMap type="com.ym.mec.biz.dal.entity.MemberRankSetting" id="MemberRankSetting">
 		<result column="id_" property="id" />
+		<result column="parent_id_" property="parentId" />
 		<result column="name_" property="name" />
 		<result column="intro_" property="intro" />
 		<result column="icon_" property="icon" />
@@ -74,15 +75,26 @@
 
 	<sql id="queryPageSql">
 		<where>
+            mrs.del_flag_ = 0
 			<if test="search != null and search != ''">
 				AND (mrs.name_ LIKE CONCAT('%',#{search},'%') OR mrs.id_ = #{search})
 			</if>
+            <if test="updateStartTime !=null">
+                AND mrs.update_time_ &gt;= #{updateStartTime}
+            </if>
+            <if test="updateEndTime !=null">
+                AND mrs.update_time_ &lt;= #{updateEndTime}
+            </if>
+            <if test="updateName !=null and updateName !=''">
+                AND su.real_name_ LIKE CONCAT('%',#{updateName},'%')
+            </if>
 		</where>
 	</sql>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(mrs.id_) FROM member_rank_setting mrs
+        LEFT JOIN sys_user su ON su.id_ = mrs.operator_
 		<include refid="queryPageSql"/>
 	</select>
 	

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

@@ -322,4 +322,13 @@
 			</if>
 		</where>
 	</sql>
+
+	<select id="getNumByCategoryIds" resultType="com.ym.mec.biz.dal.wrapper.MusicSheetWrapper$CategoryMusicNumStat">
+        SELECT cbs_music_categories_id_ categoryId,COUNT(0) musicNum FROM sys_music_score WHERE cbs_music_categories_id_ in
+        <foreach collection="categoryIds" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        and del_flag_ = 0 and cbs_music_sheet_id_ is not null GROUP BY cbs_music_categories_id_
+
+    </select>
 </mapper>