Explorar o código

Merge remote-tracking branch 'origin/feature/1022_vip' into feature/1022_vip

zouxuan hai 8 meses
pai
achega
cf46cd1ad1

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

@@ -89,9 +89,9 @@ public class MemberRankSettingController extends BaseController {
 
     @ApiOperation(value = "树状列表")
     @GetMapping("/categoryTree")
-    public HttpResponseResult<MemberRankSettingWrapper.Category> queryTree(@RequestParam(required = false) Integer parentId) {
+    public HttpResponseResult<MemberRankSettingWrapper.Category> queryTree(@RequestParam(required = false) Integer parentMemberId) {
 
-        return succeed(memberRankSettingService.getTree(parentId));
+        return succeed(memberRankSettingService.getTree(parentMemberId));
     }
 
     @ApiOperation(value = "获取所有会员列表")

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

@@ -131,7 +131,7 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
 
     List<CloudCoachActivationDetailsDto> exportMusicGroupNoCourse(@Param("organId") String organId);
 
-    int countByMemberRankSetttingId(@Param("memberRankSettingId") Integer memberRankSettingId);
+    int countByMemberRankSettingId(@Param("memberRankSettingId") Integer memberRankSettingId);
 
     Date getActivationMaxTime(@Param("studentId") Integer studentId, @Param("level") Integer level);
 

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

@@ -8,14 +8,14 @@ public class MemberPrivilegesItemQueryInfo extends QueryInfo {
     private Integer parentId = 0;
 
 
-    private Integer memberRankSettingId;
+    private Integer parentMemberId;
 
-    public Integer getMemberRankSettingId() {
-        return memberRankSettingId;
+    public Integer getParentMemberId() {
+        return parentMemberId;
     }
 
-    public void setMemberRankSettingId(Integer memberRankSettingId) {
-        this.memberRankSettingId = memberRankSettingId;
+    public void setParentMemberId(Integer parentMemberId) {
+        this.parentMemberId = parentMemberId;
     }
 
     public Integer getParentId() {

+ 19 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberPrivilegesItemServiceImpl.java

@@ -3,14 +3,12 @@ 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;
@@ -51,23 +49,20 @@ public class MemberPrivilegesItemServiceImpl extends BaseServiceImpl<Integer, Me
 	}
 
 
-    private List<MemberPrivilegesItem> getTreeByIds(List<MemberPrivilegesItem> memberPrivilegesItems, List<Integer> ids) {
+    private void getTreeByIds(List<MemberPrivilegesItem> memberPrivilegesItems, List<Integer> ids) {
         if (CollectionUtils.isEmpty(memberPrivilegesItems)) {
-            return new ArrayList<>();
+            return ;
         }
-        List<MemberPrivilegesItem> list = new ArrayList<>();
-        for (MemberPrivilegesItem memberPrivilegesItem : memberPrivilegesItems) {
-            if (ids.contains(memberPrivilegesItem.getId())) {
-                list.add(memberPrivilegesItem);
+        for (int i = 0; i < memberPrivilegesItems.size(); i++) {
+            MemberPrivilegesItem memberPrivilegesItem = memberPrivilegesItems.get(i);
+            if (!ids.contains(memberPrivilegesItem.getId())) {
+                memberPrivilegesItems.remove(i);
+                i--;
             } else {
-                List<MemberPrivilegesItem> memberPrivilegesItemList = getTreeByIds(memberPrivilegesItem.getMemberPrivilegesItems(), ids);
-                if (CollectionUtils.isNotEmpty(memberPrivilegesItemList)) {
-                    memberPrivilegesItem.setMemberPrivilegesItems(memberPrivilegesItemList);
-                    list.add(memberPrivilegesItem);
-                }
+                getTreeByIds(memberPrivilegesItem.getMemberPrivilegesItems(), ids);
+
             }
         }
-        return list;
     }
 
     @Override
@@ -111,19 +106,18 @@ public class MemberPrivilegesItemServiceImpl extends BaseServiceImpl<Integer, Me
 	@Override
 	public List<MemberPrivilegesItem> findAllItem(MemberPrivilegesItemQueryInfo queryInfo) {
 		List<MemberPrivilegesItem> rows = memberPrivilegesItemDao.findList(queryInfo.getParentId());
-		if(rows == null || rows.size() == 0){
-			return rows;
-		}
-		for (MemberPrivilegesItem item : rows) {
-			item = getTree(item);
-		}
-
+        if(rows == null || rows.size() == 0){
+            return rows;
+        }
+        for (MemberPrivilegesItem item : rows) {
+            item = getTree(item);
+        }
         // 如果是有学练宝ID 只返回学练宝数据
-        if (queryInfo.getMemberRankSettingId() != null) {
-            MemberRankSettingWrapper.MemberRankSetting detail = memberRankSettingService.getDetail(queryInfo.getMemberRankSettingId());
+        if (queryInfo.getParentMemberId() != null) {
+            MemberRankSettingWrapper.MemberRankSetting detail = memberRankSettingService.getDetail(queryInfo.getParentMemberId());
             if (detail != null && CollectionUtils.isNotEmpty(detail.getMemberPrivilegesItemIdList())) {
-                return getTreeByIds(rows, detail.getMemberPrivilegesItemIdList());
-
+                getTreeByIds(rows, detail.getMemberPrivilegesItemIdList());
+                return rows;
             }
 
         }

+ 60 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -20,7 +20,6 @@ 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;
@@ -189,7 +188,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         }
 
         // 是否已被购买
-        int count = cloudTeacherOrderDao.countByMemberRankSetttingId(memberRankSettingId);
+        int count = cloudTeacherOrderDao.countByMemberRankSettingId(memberRankSettingId);
         result.setBuyFlag(count > 0);
 
         // 查询上级
@@ -205,6 +204,47 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
     @Transactional(rollbackFor = Exception.class)
     public void updateSetting(MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting) {
 
+        // 是否已被购买
+        int count = cloudTeacherOrderDao.countByMemberRankSettingId(memberRankSetting.getId());
+        if (count >0) {
+            // 不能修改权益内容
+            List<MemberRankPrivileges> privilegesList = memberRankPrivilegesDao.findByRankSettingId(memberRankSetting.getId());
+            if (CollectionUtils.isNotEmpty(privilegesList)) {
+                List<Integer> privilegesIds = privilegesList.stream().map(MemberRankPrivileges::getMemberPrivilegesId).collect(Collectors.toList());
+                List<Integer> memberPrivilegesItemIdList = memberRankSetting.getMemberPrivilegesItemIdList();
+                if (CollectionUtils.isEmpty(memberPrivilegesItemIdList)) {
+                    memberPrivilegesItemIdList = new ArrayList<>();
+                }
+                if (!new HashSet<>(privilegesIds).containsAll(memberPrivilegesItemIdList) || !new HashSet<>(memberPrivilegesItemIdList).containsAll(privilegesIds)) {
+                    throw new BizException("已被购买的会员等级不能修改权益内容");
+                }
+            }
+            // 不能修改曲目分类内容
+            List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(Lists.newArrayList(memberRankSetting.getId()));
+            if (CollectionUtils.isNotEmpty(categoryMapperList)) {
+                List<Integer> categoryIdList = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).collect(Collectors.toList());
+                List<Integer> memberCategoryIdList = memberRankSetting.getMemberCategoryIdList();
+                if (CollectionUtils.isEmpty(memberCategoryIdList)) {
+                    memberCategoryIdList = new ArrayList<>();
+                }
+                if (!new HashSet<>(categoryIdList).containsAll(memberCategoryIdList) || !new HashSet<>(memberCategoryIdList).containsAll(categoryIdList)) {
+                    throw new BizException("已被购买的会员等级不能修改权益内容");
+                }
+            }
+            // 不能修改云课堂内容
+            List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(memberRankSetting.getId());
+            if (CollectionUtils.isNotEmpty(courseTypeMapperList)) {
+                List<String> courseTypeList = courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType).collect(Collectors.toList());
+                List<String> memberCourseTypeList = memberRankSetting.getMemberCourseTypeList();
+                if (CollectionUtils.isEmpty(memberCourseTypeList)) {
+                    memberCourseTypeList = new ArrayList<>();
+                }
+                if (!new HashSet<>(courseTypeList).containsAll(memberCourseTypeList) || !new HashSet<>(memberCourseTypeList).containsAll(courseTypeList)) {
+                    throw new BizException("已被购买的会员等级不能修改权益内容");
+                }
+            }
+
+        }
 
 
         memberRankSettingDao.update(JSON.parseObject(JSON.toJSONString(memberRankSetting),MemberRankSetting.class));
@@ -505,7 +545,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 sysMusicScoreCategories = new ArrayList<>();
             }
             // 将被使用过的选出来
-            sysMusicScoreCategories = getCategoryTreeByIds(sysMusicScoreCategories,memberCategoryIdList);
+            getCategoryTreeByIds(sysMusicScoreCategories,memberCategoryIdList);
             category.setMusicScoreCategories(sysMusicScoreCategories);
 
             List<String> memberCourseTypeList = detail.getMemberCourseTypeList();
@@ -540,23 +580,19 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 
     }
 
-    private List<SysMusicScoreCategories> getCategoryTreeByIds(List<SysMusicScoreCategories> sysMusicScoreCategories, List<Integer> memberCategoryIdList) {
+    private void getCategoryTreeByIds(List<SysMusicScoreCategories> sysMusicScoreCategories, List<Integer> memberCategoryIdList) {
         if (CollectionUtils.isEmpty(sysMusicScoreCategories)) {
-            return new ArrayList<>();
+            return ;
         }
-        List<SysMusicScoreCategories> list = new ArrayList<>();
-        for (SysMusicScoreCategories sysMusicScoreCategory : sysMusicScoreCategories) {
-            if (memberCategoryIdList.contains(sysMusicScoreCategory.getId())) {
-                list.add(sysMusicScoreCategory);
+        for (int i = 0; i < sysMusicScoreCategories.size(); i++) {
+            SysMusicScoreCategories sysMusicScoreCategory = sysMusicScoreCategories.get(i);
+            if (!memberCategoryIdList.contains(sysMusicScoreCategory.getId())) {
+                sysMusicScoreCategories.remove(i);
+                i--;
             } else {
-                List<SysMusicScoreCategories> sysMusicScoreCategories1 = getCategoryTreeByIds(sysMusicScoreCategory.getSysMusicScoreCategoriesList(), memberCategoryIdList);
-                if (CollectionUtils.isNotEmpty(sysMusicScoreCategories1)) {
-                    sysMusicScoreCategory.setSysMusicScoreCategoriesList(sysMusicScoreCategories1);
-                    list.add(sysMusicScoreCategory);
-                }
+                getCategoryTreeByIds(sysMusicScoreCategory.getSysMusicScoreCategoriesList(), memberCategoryIdList);
             }
         }
-        return list;
     }
 
 
@@ -1124,6 +1160,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             // 转tree
             memberRankSettings = tree(memberRankSettings);
 
+            // ID 倒序
+            memberRankSettings.sort(Comparator.comparing(MemberRankSettingWrapper.MemberRankSetting::getId).reversed());
         }
         return memberRankSettings;
     }
@@ -1159,7 +1197,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         // 判断是否买过
 
         // 是否已被购买
-        int count = cloudTeacherOrderDao.countByMemberRankSetttingId(id);
+        int count = cloudTeacherOrderDao.countByMemberRankSettingId(id);
         if (count > 0) {
             throw new BizException("存在学员使用、或销售,不可删除");
         }
@@ -1169,6 +1207,12 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         if (count1 > 0) {
             throw new BizException("存在学员使用、或销售,不可删除");
         }
+        // 判断是否存在子集
+        List<MemberRankSetting> memberRankSettings = memberRankSettingDao.selectBatchIdsByParentIds(Lists.newArrayList(id));
+        memberRankSettings = memberRankSettings.stream().filter(o -> !o.getDelFlag()).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(memberRankSettings)) {
+            throw new BizException("存在子级,不可删除");
+        }
         memberRankSettingDao.deleteById(id);
     }
 

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

@@ -621,8 +621,8 @@
         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 id="countByMemberRankSettingId" resultType="int">
+        select count(1) from cloud_teacher_order where level_ = #{memberRankSettingId}
     </select>
     <select id="getActivationMaxTime" resultType="java.util.Date">
         select max(end_time_) from cloud_teacher_order where student_id_ = #{studentId} and level_ = #{level} and status_ = 2