Bläddra i källkod

Merge remote-tracking branch 'origin/saas' into saas

yanite 3 år sedan
förälder
incheckning
0c8df57d48

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2437,6 +2437,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
 
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
+            List<ClassGroupTeacherMapper> teacherMappers = classGroup4MixDto.getClassGroupTeacherMapperList();
+            Set<Integer> collect = teacherMappers.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            if(teacherMappers.size() != collect.size()){
+                throw new BizException("主教与助教存在冲突");
+            }
             //3、插入班级排课信息
             LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
 

+ 7 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -597,15 +597,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrder.setVersion(0);
         studentPaymentOrder.setCalenderId(calenderId);
         studentPaymentOrderService.insert(studentPaymentOrder);
-        // 订单详情
+
+        // 拆分各商品,如果有优惠券则计算使用券后的金额,并写入订单详情
         studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, studentPaymentOrder, goodsDto, renewParamDto, couponPayParam);
-        //goodsDto.getOrderAmount 真实的原价  -  优惠的钱 = 本次订单应付的钱
-        BigDecimal actualAmount = goodsDto.getOrderAmount().subtract(studentPaymentOrder.getCouponRemitFee());
-        //+ 课程优惠的钱(如果课程是送的那么加上)
-        if (Objects.nonNull(goodsDto.getCourseRemitFee())) {
-            actualAmount = actualAmount.add(goodsDto.getCourseRemitFee());
-        }
-        
+
+        //goodsDto.getOrderAmount 真实的原价(已经扣减了送课的钱)  -  优惠券的钱 = 本次订单应付的钱
+        BigDecimal actualAmount = goodsDto.getOrderAmount()
+                .subtract(studentPaymentOrder.getCouponRemitFee());
         //前端获取的价格
         BigDecimal amount = renewParamDto.getAmount();
         //校验 页面传入的价格 和 (本次原价-优惠价后的价格) 是否一致
@@ -837,13 +835,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         // 拆分各商品,如果有优惠券则计算使用券后的金额,并写入订单详情
         studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, studentPaymentOrder, goodsDto, registerPayDto, couponPayParam);
-        //goodsDto.getOrderAmount 真实的原价  -  优惠的钱 = 本次订单应付的钱
+        //goodsDto.getOrderAmount 真实的原价(已经扣减了送课的钱)  -  优惠的钱 = 本次订单应付的钱
         BigDecimal actualAmount = goodsDto.getOrderAmount()
                 .subtract(studentPaymentOrder.getCouponRemitFee());
-        //+ 课程优惠的钱(如果课程是送的那么加上)
-        if (Objects.nonNull(goodsDto.getCourseRemitFee())) {
-            actualAmount = actualAmount.add(goodsDto.getCourseRemitFee());
-        }
 
         //前端获取的价格
         BigDecimal amount = registerPayDto.getAmount();

+ 31 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -662,16 +662,44 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         //开始计算商品的优惠券
         if (Objects.nonNull(couponPayParam) && Objects.nonNull(couponPayParam.getCouponTypeInfo())) {
+            //如果买乐器送课,那么就是0元买课,那么就先剔除送的课程再算优惠券,但是写入数据流水要加上
+            List<StudentPaymentOrderDetail> collect = new ArrayList<>();
             //按OrderDetailTypeEnum类型 进行聚合分组
-            Map<OrderDetailTypeEnum, List<StudentPaymentOrderDetail>> orderDetailGroupList =
-                    WrapperUtil.groupList(studentPaymentOrderDetailList, StudentPaymentOrderDetail::getType);
+            Map<OrderDetailTypeEnum, List<StudentPaymentOrderDetail>> orderDetailGroupList;
+            BigDecimal freeNewCourse = BigDecimal.ZERO;
+            //如果送课 并且 课程不为空,那么就是0元买课
+            if (goodsDto.isRemitCourseRFeeFlag() && CollectionUtils.isNotEmpty(newCourses)) {
+                List<String> newCourseType = newCourses.stream().map(a -> a.getCourseType().getCode()).collect(Collectors.toList());
+                //获取剔除送的课程的订单明细
+                collect = studentPaymentOrderDetailList.stream()
+                        .filter(a -> !newCourseType.contains(a.getType().getCode()))
+                        .collect(Collectors.toList());
+                //得到送课的减免的总额
+                freeNewCourse = studentPaymentOrderDetailList.stream()
+                        .filter(a -> newCourseType.contains(a.getType().getCode()))
+                        .map(StudentPaymentOrderDetail::getRemitFee)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                orderDetailGroupList =
+                        WrapperUtil.groupList(collect, StudentPaymentOrderDetail::getType);
+            } else {
+                orderDetailGroupList =
+                        WrapperUtil.groupList(studentPaymentOrderDetailList, StudentPaymentOrderDetail::getType);
+            }
+
             //获取本次交易中各优惠券的使用信息
             Map<String, CouponPayTypeInfo> couponParam = couponPayParam.getCouponTypeInfo();
             //计算使用优惠券后的对应的商品应该均摊的金额
             calculateCoupon(couponParam, orderDetailGroupList);
             //获取使用了优惠券之后的总金额
             BigDecimal useCouponAmount = WrapperUtil.sumList(studentPaymentOrderDetailList, StudentPaymentOrderDetail::getRemitFee);
-            studentPaymentOrder.setCouponRemitFee(useCouponAmount);
+            //赋值
+            if (Objects.isNull(studentPaymentOrder.getRemitFee())) {
+                studentPaymentOrder.setRemitFee(freeNewCourse);
+            } else {
+                studentPaymentOrder.setRemitFee(studentPaymentOrder.getRemitFee().add(freeNewCourse));
+            }
+            //优惠券减免金额应该是要减去 送课金额
+            studentPaymentOrder.setCouponRemitFee(useCouponAmount.subtract(freeNewCourse));
             //核销优惠券
             sysCouponCodeService.useCoupon(registerPayDto.getCouponIdList());
         }

+ 5 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoServiceImpl.java

@@ -478,6 +478,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
             result.put("payMap", payMap);
         }
         result.put("amount", productInfo.getPayAmount());
+        result.put("orderNo", orderNo);
         createOrderRecord(tenantId, productInfo.getPayAmount(), orderNo, tenantEnum, orderState, WrapperUtil.toStr(result, "routingMerNos"));
         log.info("tenant pay >>>>> {} ", result);
         return result;
@@ -527,6 +528,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
             orderState = 1;
         }
         result.put("amount", amount);
+        result.put("orderNo", orderNo);
         createOrderRecord(tenantId, amount, orderNo, tenantEnum, orderState, WrapperUtil.toStr(result, "routingMerNos"));
         log.info("tenant pay >>>>> {} ", result);
         return result;
@@ -638,10 +640,8 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
                 .map(sysUserFeignService::queryUserByMobile)
                 .orElse(null);
         if (Objects.nonNull(sysUser)) {
-            if (sysUser.getUserType().contains(SysUserType.SYSTEM.getCode())) {
-                bucket.delete();
-                throw new BizException("该手机号已被注册!");
-            }
+            bucket.delete();
+            throw new BizException("该手机号已被注册!");
         }
         return bucket;
     }
@@ -735,6 +735,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
             orderState = 1;
         }
         result.put("amount", amount);
+        result.put("orderNo", orderNo);
         createOrderRecord(tenantId, amount, orderNo, tenantEnum, orderState, WrapperUtil.toStr(result, "routingMerNos"));
         log.info("tenant pay >>>>> {} ", result);
         return result;