Browse Source

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

zouxuan 2 years ago
parent
commit
03835e6be3

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/DegreeWrapper.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.enums.EDegreeStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -13,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -146,4 +148,65 @@ public class DegreeWrapper {
         private BigDecimal courseIncome;
 
     }
+
+    @Data
+    @ApiModel(" Degree-考级信息")
+    public static class StudentDegreeInfo {
+
+
+        @ApiModelProperty("主键ID")
+        private Long id;
+
+        @ApiModelProperty("机构ID")
+        private Integer tenantId;
+
+        @ApiModelProperty(value = "分部ID")
+        private String organIds;
+
+        @ApiModelProperty("分部名称")
+        private List<Organization> organs;
+
+        @ApiModelProperty(value = "考级名称")
+        private String name;
+
+        @ApiModelProperty(value = "报名开始时间")
+        private Date startTime;
+
+        @ApiModelProperty(value = "报名结束时间")
+        private Date endTime;
+
+        @ApiModelProperty(value = "登记时间")
+        private Date registrationTime;
+
+        @ApiModelProperty("报名状态 NOT_START:未开始,START:报名中,END:报名结束")
+        private EDegreeStatus status;
+
+        @ApiModelProperty("考级城市分部")
+        private List<DegreeCity> degreeCities;
+
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static StudentDegreeInfo from(String json) {
+            return JSON.parseObject(json, StudentDegreeInfo.class);
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("考级城市分部")
+    public static class DegreeCity implements Serializable {
+
+        @ApiModelProperty("主键ID")
+        private Integer id;
+
+        @ApiModelProperty(value = "机构名称")
+        private String name;
+
+        @ApiModelProperty(value = "区域编码")
+        private Integer areaId;
+    }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/DegreeService.java

@@ -45,4 +45,11 @@ public interface DegreeService extends IService<Degree>  {
      * @param id 详情ID
      */
     DegreeWrapper.DegreeStatistical statistic(Long id);
+
+    /**
+     * 学生考级信息查询
+     * @param id 考级ID
+     * @return DegreeWrapper.StudentDegreeInfo
+     */
+    DegreeWrapper.StudentDegreeInfo studentDegreeInfoById(Long id);
 }

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

@@ -4,14 +4,17 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.EDegreeStatus;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.lang3.StringUtils;
+import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
@@ -47,6 +50,9 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
     @Autowired
     private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
 
+    @Autowired
+    private OrganizationDao organizationDao;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -204,4 +210,46 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
 
         return statistical;
     }
+
+    /**
+     * 学生考级信息查询
+     *
+     * @param id 考级ID
+     * @return DegreeWrapper.StudentDegreeInfo
+     */
+    @Override
+    public DegreeWrapper.StudentDegreeInfo studentDegreeInfoById(Long id) {
+
+        Degree degree = getById(id);
+        // 考级信息不存在
+        if (Objects.isNull(degree)) {
+            throw new BizException("考级信息不存在");
+        }
+
+        Date currentDate = DateTime.now().toDate();
+        // 考级时间不匹配
+        if (degree.getStartTime().after(currentDate) || degree.getEndTime().before(currentDate)) {
+            throw new BizException("考级报名已经结束");
+        }
+
+        // 考级分部信息
+        DegreeWrapper.StudentDegreeInfo wrapper = DegreeWrapper.StudentDegreeInfo.from(JSON.toJSONString(degree));
+
+        // 分部信息
+        if(StringUtils.isNotEmpty(wrapper.getOrganIds())){
+
+            // 考级分部ID
+            List<Integer> collect = Arrays.stream(wrapper.getOrganIds().split(","))
+                    .mapToInt(Integer::valueOf).boxed()
+                    .collect(Collectors.toList());
+
+            List<Organization> organs = organizationDao.findOrgans(collect);
+
+            if (org.apache.commons.collections.CollectionUtils.isNotEmpty(organs)) {
+                wrapper.setDegreeCities(JSON.parseArray(JSON.toJSONString(organs), DegreeWrapper.DegreeCity.class));
+            }
+        }
+
+        return wrapper;
+    }
 }

+ 80 - 0
mec-student/src/main/java/com/ym/mec/student/controller/degree/DegreeInfoController.java

@@ -0,0 +1,80 @@
+package com.ym.mec.student.controller.degree;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.wrapper.DegreeWrapper;
+import com.ym.mec.biz.service.DegreeService;
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+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.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.RestController;
+
+import java.util.Objects;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/degree")
+@Api(tags = "考级信息")
+public class DegreeInfoController extends BaseController {
+
+    @Autowired
+    private DegreeService degreeService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "详情", notes = "考级信息-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<DegreeWrapper.StudentDegreeInfo> detail(@PathVariable("id") Long id) {
+
+        // 登录用户信息
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(user) || Objects.isNull(user.getId())){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+
+        // 考级信息
+        DegreeWrapper.StudentDegreeInfo wrapper = degreeService.studentDegreeInfoById(id);
+
+        // 机构ID不匹配
+        if (!user.getTenantId().equals(wrapper.getTenantId())) {
+            throw new BizException("暂未开放此活动");
+        }
+
+        // 分部城市未开放活动
+
+
+        // 查询机构信息
+        return succeed(wrapper);
+    }
+    
+    @ApiOperation(value = "查询分页", notes = "考级信息- 传入 DegreeWrapper.DegreeQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<DegreeWrapper.Degree>> page(@RequestBody DegreeWrapper.DegreeQuery query) {
+
+        // 登录用户信息
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(user) || Objects.isNull(user.getId())) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        IPage<DegreeWrapper.Degree> pages = degreeService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+}

+ 74 - 0
mec-student/src/main/java/com/ym/mec/student/controller/degree/DegreeLevelFeeController.java

@@ -0,0 +1,74 @@
+package com.ym.mec.student.controller.degree;
+
+import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+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.biz.dal.wrapper.DegreeLevelFeeWrapper;
+import com.ym.mec.biz.service.DegreeLevelFeeService;
+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.http.HttpStatus;
+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 java.util.List;
+import java.util.Objects;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/degreeLevelFee")
+@Api(tags = "考级等级费用配置")
+public class DegreeLevelFeeController extends BaseController {
+
+    @Autowired
+    private DegreeLevelFeeService degreeLevelFeeService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation(value = "详情", notes = "考级等级费用配置-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<DegreeLevelFeeNew> detail(@PathVariable("id") Long id) {
+
+        DegreeLevelFeeNew wrapper = degreeLevelFeeService.detail(id);
+        
+        return succeed(wrapper);
+	}
+    
+    @ApiOperation(value = "查询分页", notes = "考级等级费用配置- 传入 DegreeLevelFeeWrapper.DegreeLevelFeeQuery") 
+    @PreAuthorize("@pcs.hasPermissions('degreeLevelFee/page')")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<DegreeLevelFeeNewVo>> page(@RequestBody DegreeLevelFeeWrapper.DegreeLevelFeeQuery query) {
+        
+        return succeed(QueryInfo.pageInfo(degreeLevelFeeService.selectPage(QueryInfo.getPage(query), query)));
+	}
+    
+    @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()));
+    }
+}

+ 52 - 0
mec-student/src/main/java/com/ym/mec/student/controller/degree/DegreeNewsController.java

@@ -0,0 +1,52 @@
+package com.ym.mec.student.controller.degree;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.DegreeNews;
+import com.ym.mec.biz.dal.vo.DegreeNewsVo;
+import com.ym.mec.biz.dal.wrapper.DegreeNewsWrapper;
+import com.ym.mec.biz.service.DegreeNewsService;
+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.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.RestController;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/degreeNews")
+@Api(tags = "考级资讯表")
+public class DegreeNewsController extends BaseController {
+
+    @Autowired
+    private DegreeNewsService degreeNewsService;
+
+	@ApiOperation(value = "详情", notes = "考级资讯表-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<DegreeNews> detail(@PathVariable("id") Long id) {
+    
+    	DegreeNews wrapper = degreeNewsService.detail(id);
+        
+        return succeed(wrapper);
+	}
+    
+    @ApiOperation(value = "查询分页", notes = "考级资讯表- 传入 DegreeNewsWrapper.DegreeNewsQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<DegreeNewsVo>> page(@RequestBody DegreeNewsWrapper.DegreeNewsQuery query) {
+        
+        IPage<DegreeNewsVo> pages = degreeNewsService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+	}
+    
+}