Bladeren bron

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

zouxuan 2 jaren geleden
bovenliggende
commit
df9677c65d

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DegreeRegistrationDao.java

@@ -33,4 +33,11 @@ public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistrati
     List<DegreeRegistration> getLockByOrderId(@Param("orderNo") String orderNo);
 
     List<DegreeRegistration> findByByOrderId(@Param("orderNo") String orderNo);
+
+    /**
+     * 根据考级ID查询考级报名信息
+     *
+     * @param degreeId 考级ID
+     */
+    List<DegreeRegistration> selectByDegreeId(@Param("degreeId") Long degreeId);
 }

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

@@ -176,4 +176,13 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
     List<StudentPaymentOrderDetail> findByCalenderId(Long calenderId);
     
     List<StudentPaymentOrderDetail> querySubjectChangeByMusicGroupId(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 根据订单id和类型获取订单详情
+     *
+     * @param orderIds            订单id
+     * @param orderDetailTypeEnum 订单类型
+     */
+    List<StudentPaymentOrderDetail> getByOrderIdAndType(@Param("orderIds") List<Long> orderIds,
+                                                        @Param("type") OrderDetailTypeEnum orderDetailTypeEnum);
 }

+ 28 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/DegreeWrapper.java

@@ -1,27 +1,22 @@
 package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.enums.EDegreeStatus;
 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 org.hibernate.validator.cfg.defs.EANDef;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
 
 /**
  * 考级信息
@@ -127,4 +122,28 @@ public class DegreeWrapper {
         }
 	}
 
+    @Data
+    @ApiModel(" DegreeStatistical-考级信息统计")
+    public static class DegreeStatistical {
+
+        @ApiModelProperty("id")
+        private Long id;
+
+        @ApiModelProperty("报名人次")
+        private Integer registerTotal;
+
+        @ApiModelProperty("购课人次")
+        private Integer purchaseCourse;
+
+        @ApiModelProperty("实收金额")
+        private BigDecimal actualAmount;
+
+        @ApiModelProperty("考级收入")
+        private BigDecimal degreeIncome;
+
+
+        @ApiModelProperty("课程收入")
+        private BigDecimal courseIncome;
+
+    }
 }

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

@@ -39,5 +39,10 @@ public interface DegreeService extends IService<Degree>  {
      * @return Boolean
      */
      Boolean update(DegreeWrapper.Degree degree);
-     
+
+    /**
+     * 统计
+     * @param id 详情ID
+     */
+    DegreeWrapper.DegreeStatistical statistic(Long id);
 }

+ 73 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeServiceImpl.java

@@ -3,19 +3,24 @@ 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.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
+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.tenant.TenantContextHolder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
-import com.ym.mec.biz.dal.entity.Degree;
 import com.ym.mec.biz.dal.wrapper.DegreeWrapper;
 import com.ym.mec.biz.dal.mapper.DegreeMapper;
 import com.ym.mec.biz.service.DegreeService;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -33,6 +38,15 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
     @Autowired
     private OrganizationService organizationService;
 
+    @Autowired
+    private DegreeRegistrationDao degreeRegistrationDao;
+
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+
+    @Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+
 	/**
      * 查询详情
      * @param id 详情ID
@@ -133,4 +147,61 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
 
         return this.updateById(JSON.parseObject(degree.jsonString(), Degree.class));       
     }
+
+    @Override
+    public DegreeWrapper.DegreeStatistical statistic(Long id) {
+        Degree degree = getById(id);
+        if (Objects.isNull(degree)) {
+            return null;
+        }
+        DegreeWrapper.DegreeStatistical statistical = new DegreeWrapper.DegreeStatistical();
+        statistical.setId(id);
+        statistical.setRegisterTotal(degree.getRegisterTotal());
+        statistical.setPurchaseCourse(degree.getPurchaseCourse());
+        statistical.setActualAmount(BigDecimal.ZERO);
+        statistical.setDegreeIncome(BigDecimal.ZERO);
+        statistical.setCourseIncome(BigDecimal.ZERO);
+
+        // 查询考级报名的订单
+        List<DegreeRegistration> registrations = degreeRegistrationDao.selectByDegreeId(id);
+
+        if (CollectionUtils.isEmpty(registrations)) {
+            return statistical;
+        }
+
+        // 过滤出支付的订单
+        registrations = registrations.stream().filter(o -> o.getStatus().equals(2)).collect(Collectors.toList());
+
+
+        if (CollectionUtils.isEmpty(registrations)) {
+            return statistical;
+        }
+
+        // 订单号集合
+        List<String> orderNos = registrations.stream().map(DegreeRegistration::getOrderNo).collect(Collectors.toList());
+
+        // 通过订单号查询订单
+        List<StudentPaymentOrder> orderByOrderNos = studentPaymentOrderService.findOrderByOrderNos(orderNos);
+        if (CollectionUtils.isEmpty(orderByOrderNos)) {
+            return statistical;
+        }
+
+        // 订单ID集合
+        List<Long> orderIds = orderByOrderNos.stream().map(StudentPaymentOrder::getId).collect(Collectors.toList());
+
+        List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getByOrderIdAndType(orderIds, OrderDetailTypeEnum.DEGREE_REGISTRATION);
+
+        if (CollectionUtils.isEmpty(orderDetailList)) {
+            return statistical;
+        }
+
+        // 总金额
+        BigDecimal totalAmount = orderDetailList.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        statistical.setActualAmount(statistical.getActualAmount().add(totalAmount));
+
+        statistical.setDegreeIncome(statistical.getDegreeIncome().add(totalAmount));
+
+        return statistical;
+    }
 }

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml

@@ -26,6 +26,7 @@
         <result column="status_" jdbcType="TINYINT" property="status"/>
         <result column="certificate_type_" property="certificateType"/>
 		<result column="tenant_id_" property="tenantId" />
+		<result column="type_" property="type" />
 		<result column="type_" property="type"  typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml

@@ -432,4 +432,12 @@
         WHERE sc.music_group_id_ = #{musicGroupId}
         AND spo.type_ = 'SUBJECT_CHANGE' and spo.status_ = 'SUCCESS' and spod.delivery_batch_no_ is NULL
     </select>
+
+    <select id="getByOrderIdAndType" resultMap="StudentPaymentOrderDetail">
+        SELECT * FROM student_payment_order_detail WHERE payment_order_id_ in
+        <foreach collection="orderIds" item="orderId" open="(" close=")" separator=",">
+            #{orderId}
+        </foreach>
+        AND type_ = #{type}
+    </select>
 </mapper>

+ 10 - 0
mec-web/src/main/java/com/ym/mec/web/controller/degree/DegreeInfoController.java

@@ -4,6 +4,7 @@ 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.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
@@ -87,4 +88,13 @@ public class DegreeInfoController extends BaseController {
     
 		return succeed(degreeService.removeById(id));
 	}
+
+
+    @ApiOperation(value = "详情统计", notes = "考级信息- 传入id")
+//    @PreAuthorize("@pcs.hasPermissions('degree/statistic')")
+	@GetMapping("/statistic")
+    public HttpResponseResult<DegreeWrapper.DegreeStatistical> statistic(@RequestParam Long id) {
+
+        return succeed(degreeService.statistic(id));
+    }
 }