فهرست منبع

Merge branch 'feature/1113-vipCourse' of http://git.dayaedu.com/yonge/cooleshow into test

zouxuan 9 ماه پیش
والد
کامیت
e6f7a39d03

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java

@@ -959,13 +959,13 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         List<UserAccountRecordDto> userAccountRecordDtos = new ArrayList<>();
         List<PlatformCashAccountRecord> platformCashAccountRecords = new ArrayList<>();
         UserAccountRecordDto dto = new UserAccountRecordDto(userPaymentOrder.getMerchId(), PostStatusEnum.WAIT, amount,
-                InOrOutEnum.IN, AccountBizTypeEnum.valueOf(userPaymentOrder.getOrderType().getCode()), bizId, userPaymentOrder.getGoodName(), userPaymentOrder.getOrderNo(),
+                InOrOutEnum.IN, AccountBizTypeEnum.valueOf(userPaymentOrder.getGoodType().getCode()), bizId, userPaymentOrder.getGoodName(), userPaymentOrder.getOrderNo(),
                 userPaymentOrder.getUserId(), accountPeriodTime);
         userAccountRecordDtos.add(dto);
 
         // 插入平台账户 支出
         PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(userPaymentOrder.getUserId(), amount,
-                InOrOutEnum.OUT, PostStatusEnum.WAIT, AccountBizTypeEnum.valueOf(userPaymentOrder.getOrderType().getCode()), bizId,
+                InOrOutEnum.OUT, PostStatusEnum.WAIT, AccountBizTypeEnum.valueOf(userPaymentOrder.getGoodType().getCode()), bizId,
                 userPaymentOrder.getOrderNo(), accountPeriodTime);
         platformCashAccountRecords.add(platformCashAccountRecord);
 

+ 17 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -840,10 +840,14 @@ DISCOUNT("畅学卡")
         }
         // 判断满减
         if (couponInfo.getUseLimit() != null && amount.compareTo(BigDecimal
-                .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0) {
+                .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0
+                && !couponAmountMap.isEmpty()) {
             throw new BizException("优惠券不可用");
         }
 
+        // 总金额扣除优惠金额
+        amount = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
+
         // 根据商品金额比例分摊优惠金额
         // 剩余金额
         BigDecimal remainAmount = BigDecimal.valueOf(couponInfo.getDiscountPrice());
@@ -851,18 +855,24 @@ DISCOUNT("畅学卡")
             UserPaymentOrderWrapper.OrderGoodsInfo goodsInfo = goodsInfos.get(entry.getKey());
             UserOrderDetail userOrderDetail = goodsInfo.getUserOrderDetail();
             BigDecimal actualPrice = entry.getValue();
-            BigDecimal couponAmount = BigDecimal.valueOf(couponInfo.getDiscountPrice())
-                    .multiply(userOrderDetail.getActualPrice()).divide(amount, 2, RoundingMode.HALF_DOWN);
+            BigDecimal couponAmount;
+
+            if (amount.compareTo(BigDecimal.ZERO) >0) {
+                couponAmount = BigDecimal.valueOf(couponInfo.getDiscountPrice())
+                        .multiply(userOrderDetail.getActualPrice()).divide(amount, 2, RoundingMode.HALF_DOWN);
+            } else {
+                couponAmount = userOrderDetail.getActualPrice();
+            }
             remainAmount = remainAmount.subtract(couponAmount);
             userOrderDetail.setCouponAmount(couponAmount.add(userOrderDetail.getCouponAmount()));
 
             userOrderDetail.setDiscountJson(userOrderService.discountJson(EDiscountType.COUPON,
                     couponAmount,userOrderDetail.getDiscountJson()));
-            userOrderDetail.setActualPrice(actualPrice.subtract(couponAmount).setScale(2, RoundingMode.HALF_UP));
+            userOrderDetail.setActualPrice(actualPrice.subtract(couponAmount));
         }
-        if (remainAmount.compareTo(BigDecimal.ZERO) > 0) {
-            UserOrderDetail userOrderDetail = goodsInfos.get(0).getUserOrderDetail();
-            userOrderDetail.setActualPrice(userOrderDetail.getActualPrice().add(remainAmount));
+        if (remainAmount.compareTo(BigDecimal.ZERO) > 0&& amount.compareTo(BigDecimal.ZERO) >0) {
+            UserOrderDetail userOrderDetail = goodsInfos.get(couponAmountMap.keySet().stream().findFirst().get()).getUserOrderDetail();
+            userOrderDetail.setActualPrice(userOrderDetail.getActualPrice().subtract(remainAmount));
 
             userOrderDetail.setDiscountJson(userOrderService.discountJson(EDiscountType.COUPON,
                     remainAmount,userOrderDetail.getDiscountJson()));

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRepliedMapper.xml

@@ -141,7 +141,7 @@
         LEFT JOIN `subject` sb ON sb.id_ = g.subject_id_
         LEFT JOIN course_schedule s ON s.id_ = r.course_schedule_id_
         LEFT JOIN sys_user u ON u.id_ = r.student_id_
-        WHERE r.course_group_type_ = #{param.courseGroupType}
+        WHERE r.course_group_type_ = #{param.courseType}
         AND r.student_replied_ != ""
         AND s.teacher_id_ = #{param.teacherId}
         <if test="param.studentName !=null and param.studentName !=''">