Jelajahi Sumber

Merge remote-tracking branch 'origin/feature/0406-degree' into feature/0406-degree

zouxuan 2 tahun lalu
induk
melakukan
95a8cdfa85

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

@@ -1,11 +1,13 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum DegreeTypeEnum implements BaseEnum<String, ComplaintsStatusEnum> {
     GRADE("GRADE", "乐器考级"),
     THEORY("THEORY", "乐理考级");
 
+    @EnumValue
     private String code;
 
     private String msg;

+ 49 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/DegreeLevelFeeWrapper.java

@@ -3,9 +3,14 @@ package com.ym.mec.biz.dal.wrapper;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.degree.EDegreeFeeType;
 import com.ym.mec.biz.dal.enums.DegreeTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
 import java.util.Optional;
 
 import lombok.AllArgsConstructor;
@@ -48,7 +53,7 @@ public class DegreeLevelFeeWrapper {
 
         @ApiModelProperty("是否上传证件")
         private Boolean credentials;
-        
+
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
         }
@@ -62,9 +67,19 @@ public class DegreeLevelFeeWrapper {
         }
     }  
 
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
 	@ApiModel(" DegreeLevelFee-考级等级费用配置")
     public static class DegreeLevelFee {
-        
+
+        @ApiModelProperty("考级费用配置")
+        private List<LevelFeeConfig> gradeFeeConfigs;
+
+        @ApiModelProperty("乐理费用配置")
+        private List<LevelFeeConfig> theoryFeeConfigs;
+
         public String jsonString() {
             return JSON.toJSONString(this);
         }
@@ -74,4 +89,36 @@ public class DegreeLevelFeeWrapper {
         }
 	}
 
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" LevelFeeConfig-考级等级费用配置")
+    public static class LevelFeeConfig implements Serializable {
+
+        @ApiModelProperty("主键ID")
+        private Integer id;
+
+        @ApiModelProperty("声部ID")
+        private Integer subjectId;
+
+        @ApiModelProperty("声部名称")
+        private String subjectName;
+
+        @ApiModelProperty("等级")
+        private Integer level;
+
+        @ApiModelProperty("费用")
+        private BigDecimal fee;
+
+        @ApiModelProperty("考级分类, GRADE,THEORY")
+        private EDegreeFeeType degreeType;
+
+        @ApiModelProperty("上传证书")
+        private Boolean credentials;
+
+        @ApiModelProperty("声部价格配置")
+        private List<LevelFeeConfig> subjectFeeConfigs;
+    }
+
 }

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

@@ -41,5 +41,11 @@ public interface DegreeLevelFeeService extends IService<DegreeLevelFeeNew>  {
      * @return Boolean
      */
      Boolean update(DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee);
-     
+
+    /**
+     * 机构考级价格配置
+     * @param tenantId 机构ID
+     * @return DegreeLevelFeeWrapper.DegreeLevelFee
+     */
+    DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFeeConfig(Integer tenantId);
 }

+ 95 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeLevelFeeServiceImpl.java

@@ -3,17 +3,25 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.entity.DegreeLevelFeeNew;
-import com.ym.mec.biz.dal.vo.DegreeLevelFeeNewVo;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.enums.DegreeTypeEnum;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.biz.dal.vo.DegreeLevelFeeNewVo;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
-import com.ym.mec.biz.dal.entity.DegreeLevelFee;
 import com.ym.mec.biz.dal.wrapper.DegreeLevelFeeWrapper;
 import com.ym.mec.biz.dal.mapper.DegreeLevelFeeMapper;
 import com.ym.mec.biz.service.DegreeLevelFeeService;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 
 /**
  * 考级等级费用配置
@@ -23,12 +31,15 @@ import java.util.List;
 @Service
 public class DegreeLevelFeeServiceImpl extends ServiceImpl<DegreeLevelFeeMapper, DegreeLevelFeeNew> implements DegreeLevelFeeService {
 
-	/**
+    @Autowired
+    private SubjectDao subjectDao;
+
+    /**
      * 查询详情
      * @param id 详情ID
      * @return DegreeLevelFee
      */
-	@Override
+    @Override
     public DegreeLevelFeeNew detail(Long id) {
         
         return baseMapper.selectById(id);
@@ -44,15 +55,15 @@ public class DegreeLevelFeeServiceImpl extends ServiceImpl<DegreeLevelFeeMapper,
     public IPage<DegreeLevelFeeNewVo> selectPage(IPage<DegreeLevelFeeNewVo> page, DegreeLevelFeeWrapper.DegreeLevelFeeQuery query) {
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
     /**
      * 添加
      * @param degreeLevelFee DegreeLevelFeeWrapper.DegreeLevelFee
      * @return Boolean
      */
     @Override
-    public Boolean add(DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee) {    	
-        
+    public Boolean add(DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee) {
+
         return this.save(JSON.parseObject(degreeLevelFee.jsonString(), DegreeLevelFeeNew.class));
     }
 
@@ -66,4 +77,81 @@ public class DegreeLevelFeeServiceImpl extends ServiceImpl<DegreeLevelFeeMapper,
 
         return this.updateById(JSON.parseObject(degreeLevelFee.jsonString(), DegreeLevelFeeNew.class));
     }
+
+    /**
+     * 机构考级价格配置
+     *
+     * @param tenantId 机构ID
+     * @return DegreeLevelFeeWrapper.DegreeLevelFee
+     */
+    @Override
+    public DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFeeConfig(Integer tenantId) {
+
+        // 根据机构ID查询考级价格配置
+        Map<DegreeTypeEnum, List<DegreeLevelFeeNew>> collect = lambdaQuery().eq(DegreeLevelFeeNew::getTenantId, tenantId).list().stream()
+                .collect(Collectors.groupingBy(DegreeLevelFeeNew::getDegreeType));
+
+        // 考级价格信息
+        DegreeLevelFeeWrapper.DegreeLevelFee degreeLevelFee = DegreeLevelFeeWrapper.DegreeLevelFee
+                .builder()
+                .gradeFeeConfigs(Lists.newArrayList())
+                .theoryFeeConfigs(Lists.newArrayList())
+                .build();
+
+        // 考级价格配置
+        for (Map.Entry<DegreeTypeEnum, List<DegreeLevelFeeNew>> entry : collect.entrySet()) {
+
+            switch (entry.getKey()) {
+                case GRADE: // 考级
+                {
+                    // 查询声部信息
+                    String subjectIds = entry.getValue().stream()
+                            .map(DegreeLevelFeeNew::getSubjectId)
+                            .filter(Objects::nonNull)
+                            .map(String::valueOf)
+                            .distinct().collect(Collectors.joining(","));
+
+                    Map<Integer, String> subjectMap = subjectDao.findBySubjectByIdList(subjectIds).stream()
+                            .collect(Collectors.toMap(Subject::getId, Subject::getName));
+
+                    // 设置声部名称
+                    List<DegreeLevelFeeWrapper.LevelFeeConfig> levelFeeConfigs = JSON.parseArray(JSON.toJSONString(entry.getValue()),
+                            DegreeLevelFeeWrapper.LevelFeeConfig.class);
+
+                    for (DegreeLevelFeeWrapper.LevelFeeConfig item : levelFeeConfigs) {
+                        item.setSubjectName(subjectMap.getOrDefault(item.getSubjectId(), ""));
+                    }
+
+                    // 按声部分类聚合
+                    Map<Integer, List<DegreeLevelFeeWrapper.LevelFeeConfig>> subjectFeeConfigMap = levelFeeConfigs.stream()
+                            .collect(Collectors.groupingBy(DegreeLevelFeeWrapper.LevelFeeConfig::getSubjectId));
+
+                    for (Map.Entry<Integer, List<DegreeLevelFeeWrapper.LevelFeeConfig>> item : subjectFeeConfigMap.entrySet()) {
+
+                        degreeLevelFee.getGradeFeeConfigs().add(DegreeLevelFeeWrapper.LevelFeeConfig
+                                .builder()
+                                .subjectId(item.getKey())
+                                .subjectName(subjectMap.getOrDefault(item.getKey(), ""))
+                                .subjectFeeConfigs(item.getValue())
+                                .build());
+                    }
+
+                    break;
+                }
+                case THEORY: // 乐理
+                {
+                    List<DegreeLevelFeeWrapper.LevelFeeConfig> levelFeeConfigs = JSON.parseArray(JSON.toJSONString(entry.getValue()),
+                            DegreeLevelFeeWrapper.LevelFeeConfig.class);
+                    if (CollectionUtils.isNotEmpty(levelFeeConfigs)) {
+                        degreeLevelFee.setTheoryFeeConfigs(levelFeeConfigs);
+                    }
+                    break;
+                }
+                default:
+                    break;
+            }
+        }
+
+        return degreeLevelFee;
+    }
 }

+ 21 - 0
mec-web/src/main/java/com/ym/mec/web/controller/degree/DegreeLevelFeeController.java

@@ -4,6 +4,8 @@ import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.DegreeLevelFeeNew;
 import com.ym.mec.biz.dal.vo.DegreeLevelFeeNewVo;
 import com.ym.mec.common.controller.BaseController;
@@ -12,6 +14,7 @@ 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.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -28,6 +31,8 @@ import com.ym.mec.biz.dal.wrapper.DegreeLevelFeeWrapper;
 
 import java.util.List;
 
+import java.util.Objects;
+
 @Slf4j
 @Validated
 @RestController
@@ -37,6 +42,8 @@ public class DegreeLevelFeeController extends BaseController {
 
     @Autowired
     private DegreeLevelFeeService degreeLevelFeeService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation(value = "详情", notes = "考级等级费用配置-根据详情ID查询单条, 传入id")
     @GetMapping("/detail/{id}")
@@ -77,4 +84,18 @@ public class DegreeLevelFeeController extends BaseController {
 	public HttpResponseResult<Boolean> remove(@RequestParam Long id) {
 		return succeed(degreeLevelFeeService.removeById(id));
 	}
+
+    @ApiOperation(value = "考级费用配置", notes = "考级费用配置查询")
+    @GetMapping("/degreeLevelFeeConfig")
+    public HttpResponseResult<DegreeLevelFeeWrapper.DegreeLevelFee> degreeLevelFeeConfig() {
+
+        // 登录用户信息
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)||Objects.isNull(user.getId())){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+
+        // 根据用户机构ID,查询对应考级配置
+        return succeed(degreeLevelFeeService.degreeLevelFeeConfig(user.getTenantId()));
+    }
 }