Procházet zdrojové kódy

add 6.1考级增加支付接口

周箭河 před 4 roky
rodič
revize
d7f1aedc90

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ChildrenDayDegreeDetailDao.java

@@ -15,4 +15,12 @@ public interface ChildrenDayDegreeDetailDao extends BaseDAO<Integer, ChildrenDay
      * @return
      */
     List<ChildrenDayDegreeDetail> getByUserIdAndStatus(@Param("userId") Integer userId, @Param("status") Integer status);
+
+    /**
+     * 批量插入购买详情
+     *
+     * @param details
+     * @return
+     */
+    int batchAdd(@Param("details") List<ChildrenDayDegreeDetail> details);
 }

+ 22 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/DegreePayDto.java

@@ -20,10 +20,10 @@ public class DegreePayDto {
     private Integer theoryLevel;
 
     @ApiModelProperty(value = "vip 1v1")
-    private boolean vip1v1=false;
+    private boolean vip1v1 = false;
 
     @ApiModelProperty(value = "vip 1v2")
-    private Boolean vip1v2=false;
+    private Boolean vip1v2 = false;
 
     @ApiModelProperty(value = "乐理课程")
     private Boolean theoryCourse = false;
@@ -39,6 +39,10 @@ public class DegreePayDto {
 
     private SysUser user;
 
+    private Long orderId;
+
+    private Integer reserveId;
+
     public Integer getSubject() {
         return subject;
     }
@@ -134,4 +138,20 @@ public class DegreePayDto {
     public void setUser(SysUser user) {
         this.user = user;
     }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getReserveId() {
+        return reserveId;
+    }
+
+    public void setReserveId(Integer reserveId) {
+        this.reserveId = reserveId;
+    }
 }

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ChildrenDayDegreeDetailService.java

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.service;
 
 
+import com.ym.mec.biz.dal.dto.DegreePayDto;
 import com.ym.mec.biz.dal.entity.ChildrenDayDegreeDetail;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.common.service.BaseService;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public interface ChildrenDayDegreeDetailService extends BaseService<Integer, ChildrenDayDegreeDetail> {
@@ -16,4 +19,28 @@ public interface ChildrenDayDegreeDetailService extends BaseService<Integer, Chi
      */
     List<ChildrenDayDegreeDetail> getByUserIdAndStatus(Integer userId, Integer status);
 
+    /**
+     * 增加考级支付详情
+     * @param degreePayDto
+     * @param gradeFee
+     * @param theoryLevelFee
+     * @param vip1v1Fee
+     * @param vip1v2Fee
+     * @param theoryCourseFee
+     * @return
+     */
+    List<ChildrenDayDegreeDetail> addDegreeDetails(DegreePayDto degreePayDto, BigDecimal gradeFee,BigDecimal theoryLevelFee,BigDecimal vip1v1Fee,BigDecimal vip1v2Fee,BigDecimal theoryCourseFee);
+
+    /**
+     * 增加考级订单详情
+     * @param degreePayDto
+     * @param gradeFee
+     * @param theoryLevelFee
+     * @param vip1v1Fee
+     * @param vip1v2Fee
+     * @param theoryCourseFee
+     * @return
+     */
+    List<StudentPaymentOrderDetail> addOrderDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee);
+
 }

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

@@ -1,13 +1,20 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.DegreePayDto;
 import com.ym.mec.biz.dal.entity.ChildrenDayDegreeDetail;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.ChildrenDayDegreeDetailService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -21,7 +28,135 @@ public class ChildrenDayDegreeDetailServiceImpl extends BaseServiceImpl<Integer,
     }
 
     @Override
-    public List<ChildrenDayDegreeDetail> getByUserIdAndStatus(Integer userId,Integer status) {
+    public List<ChildrenDayDegreeDetail> getByUserIdAndStatus(Integer userId, Integer status) {
         return childrenDayDegreeDetailDao.getByUserIdAndStatus(userId, status);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<ChildrenDayDegreeDetail> addDegreeDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee) {
+        List<ChildrenDayDegreeDetail> childrenDayDegreeDetails = new ArrayList<>();
+        if (degreePayDto.getMusicGradeLevel() != null) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(1);
+            childrenDayDegreeDetail.setSubjectId(degreePayDto.getSubject());
+            childrenDayDegreeDetail.setLevel(degreePayDto.getMusicGradeLevel());
+            childrenDayDegreeDetail.setPrice(gradeFee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getTheoryLevel() != null) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(2);
+            childrenDayDegreeDetail.setLevel(degreePayDto.getTheoryLevel());
+            childrenDayDegreeDetail.setPrice(theoryLevelFee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getVip1v1()) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(3);
+            childrenDayDegreeDetail.setPrice(vip1v1Fee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getVip1v2()) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(4);
+            childrenDayDegreeDetail.setPrice(vip1v2Fee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        if (degreePayDto.getTheoryCourse()) {
+            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+            childrenDayDegreeDetail.setType(5);
+            childrenDayDegreeDetail.setPrice(theoryCourseFee);
+            childrenDayDegreeDetail.setStatus(1);
+            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+        }
+        childrenDayDegreeDetailDao.batchAdd(childrenDayDegreeDetails);
+        return childrenDayDegreeDetails;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<StudentPaymentOrderDetail> addOrderDetails(DegreePayDto degreePayDto, BigDecimal gradeFee, BigDecimal theoryLevelFee, BigDecimal vip1v1Fee, BigDecimal vip1v2Fee, BigDecimal theoryCourseFee) {
+
+//        Date nowDate = new Date();
+//        List<StudentPaymentOrderDetail> orderDetails = new ArrayList<>();
+//        if (degreePayDto.getMusicGradeLevel() != null) {
+//            StudentPaymentOrderDetail detail = new StudentPaymentOrderDetail();
+//            detail.setType(OrderDetailTypeEnum.CLOUD_TEACHER);
+//            detail.setPrice(cloudTeacherPrice);
+//            detail.setRemitFee(BigDecimal.ZERO);
+//            detail.setCreateTime(nowDate);
+//            detail.setUpdateTime(nowDate);
+//            detail.setPaymentOrderId(degreePayDto.getOrderId());
+//            detail.setIsRenew(0);
+//            orderDetails.add(detail);
+//        }
+//        if (degreePayDto.getTheoryLevel() != null) {
+//            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+//            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+//            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+//            childrenDayDegreeDetail.setType(2);
+//            childrenDayDegreeDetail.setLevel(degreePayDto.getTheoryLevel());
+//            childrenDayDegreeDetail.setPrice(theoryLevelFee);
+//            childrenDayDegreeDetail.setStatus(1);
+//            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+//            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+//        }
+//        if (degreePayDto.getVip1v1()) {
+//            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+//            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+//            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+//            childrenDayDegreeDetail.setType(3);
+//            childrenDayDegreeDetail.setPrice(vip1v1Fee);
+//            childrenDayDegreeDetail.setStatus(1);
+//            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+//            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+//        }
+//        if (degreePayDto.getVip1v2()) {
+//            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+//            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+//            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+//            childrenDayDegreeDetail.setType(4);
+//            childrenDayDegreeDetail.setPrice(vip1v2Fee);
+//            childrenDayDegreeDetail.setStatus(1);
+//            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+//            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+//        }
+//        if (degreePayDto.getTheoryCourse()) {
+//            ChildrenDayDegreeDetail childrenDayDegreeDetail = new ChildrenDayDegreeDetail();
+//            childrenDayDegreeDetail.setReserveId(degreePayDto.getReserveId());
+//            childrenDayDegreeDetail.setUserId(degreePayDto.getUserId());
+//            childrenDayDegreeDetail.setType(5);
+//            childrenDayDegreeDetail.setPrice(theoryCourseFee);
+//            childrenDayDegreeDetail.setStatus(1);
+//            childrenDayDegreeDetail.setOrderId(degreePayDto.getOrderId());
+//            childrenDayDegreeDetails.add(childrenDayDegreeDetail);
+//        }
+//        childrenDayDegreeDetailDao.batchAdd(childrenDayDegreeDetails);
+//        return childrenDayDegreeDetails;
+//
+//
+//        StudentPaymentOrderDetail cloudTeacherOrderDetail = new StudentPaymentOrderDetail();
+        return null;
+
+    }
 }

+ 23 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ChildrenDayReserveServiceImpl.java

@@ -203,44 +203,55 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         ChildrenDayReserve userReserve = this.getUserReserve(degreePayDto.getUserId());
 
         if (userReserve == null) {
-            this.addReserve(degreePayDto.getUser(), YesOrNoEnum.NO);
+            userReserve = this.addReserve(degreePayDto.getUser(), YesOrNoEnum.NO);
         }
+        degreePayDto.setReserveId(userReserve.getId());
 
         //获取课程的价格
         OrganizationDegreeCourseFee courseFee = organizationDegreeCourseFeeDao.getByOrganId(degreePayDto.getOrganId());
+
+        if (courseFee == null) {
+            throw new BizException("刚前分部不参与,谢谢关注");
+        }
+
         List<DegreeLevelFee> degreeLevelFees = degreeLevelFeeDao.getAll();
 
         //订单总金额
         BigDecimal orderAmount = BigDecimal.ZERO;
 
         //器乐考级费用
+        BigDecimal gradeFee = BigDecimal.ZERO;
         if (degreePayDto.getMusicGradeLevel() != null) {
-            BigDecimal gradeFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getMusicGradeLevel())).map(DegreeLevelFee::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add);
+            gradeFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getMusicGradeLevel())).map(DegreeLevelFee::getGrade).reduce(BigDecimal.ZERO, BigDecimal::add);
             orderAmount = orderAmount.add(gradeFee);
         }
 
         //乐理考级费用
+        BigDecimal theoryLevelFee = BigDecimal.ZERO;
         if (degreePayDto.getTheoryLevel() != null) {
-            BigDecimal theoryLevelFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getTheoryLevel())).map(DegreeLevelFee::getTheory).reduce(BigDecimal.ZERO, BigDecimal::add);
+            theoryLevelFee = degreeLevelFees.stream().filter(e -> e.getLevel().equals(degreePayDto.getTheoryLevel())).map(DegreeLevelFee::getTheory).reduce(BigDecimal.ZERO, BigDecimal::add);
             orderAmount = orderAmount.add(theoryLevelFee);
         }
 
         //VIP 1v1 1v2费用
+        BigDecimal vip1v1Fee = BigDecimal.ZERO;
         if (degreePayDto.getVip1v1()) {
-            BigDecimal vip1v1Fee = courseFee.getVip1v1();
+            vip1v1Fee = courseFee.getVip1v1();
             orderAmount = orderAmount.add(vip1v1Fee);
         }
 
         //VIP 1v2费用
+        BigDecimal vip1v2Fee = BigDecimal.ZERO;
         if (degreePayDto.getVip1v2()) {
-            BigDecimal vip1v2Fee = courseFee.getVip1v2();
+            vip1v2Fee = courseFee.getVip1v2();
             orderAmount = orderAmount.add(vip1v2Fee);
         }
 
-        //VIP 乐理课费用
+        //乐理课费用
+        BigDecimal theoryCourseFee = BigDecimal.ZERO;
         if (degreePayDto.getTheoryCourse()) {
-            BigDecimal theoryFee = courseFee.getTheory();
-            orderAmount = orderAmount.add(theoryFee);
+            theoryCourseFee = courseFee.getTheory();
+            orderAmount = orderAmount.add(theoryCourseFee);
         }
 
         if (orderAmount.compareTo(degreePayDto.getAmount()) != 0) {
@@ -273,6 +284,10 @@ public class ChildrenDayReserveServiceImpl extends BaseServiceImpl<Integer, Chil
         studentPaymentOrder.setUpdateTime(nowDate);
         studentPaymentOrderService.insert(studentPaymentOrder);
 
+        //添加购买详情
+        degreePayDto.setOrderId(studentPaymentOrder.getId());
+        childrenDayDegreeDetailService.addDegreeDetails(degreePayDto, gradeFee, theoryLevelFee, vip1v1Fee, vip1v2Fee, theoryCourseFee);
+
         studentPaymentOrder.setVersion(0);
         if (orderAmount.compareTo(BigDecimal.ZERO) == 0) {
             studentPaymentRouteOrderService.addRouteOrder(orderNo, degreePayDto.getOrganId(), balance);

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/ChildrenDayDegreeDetailDao.xml

@@ -79,4 +79,15 @@
         WHERE user_id_ = #{userId}
           AND status_ = #{status}
     </select>
+
+    <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+        INSERT INTO children_day_degree_detail
+        (reserve_id_, user_id_, type_, subject_id_, level_, price_,status_,order_id_,create_time_,update_time)
+        VALUE
+        <foreach collection="details" item="detail" separator=",">
+            (#{detail.reserveId}, #{detail.userId}, #{detail.type}, #{detail.subjectId}, #{detail.level},
+            #{detail.price}, #{detail.status},#{detail.orderId},
+            now(),now())
+        </foreach>
+    </insert>
 </mapper>