| 
					
				 | 
			
			
				@@ -17,6 +17,7 @@ import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.constant.SysConfigConstant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.enums.ActivityResourceEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.CacheNameEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.PostStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.service.IdGeneratorService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -85,6 +86,12 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private PaymentProperties paymentProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ActivityEvaluationRecordService activityEvaluationRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ActivityRegistrationService activityRegistrationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ActivityPlanService activityPlanService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //验证订单是否可以下单,获取订单金额信息 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -297,12 +304,19 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             createRes.setGoodType(info.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //todo 优惠券优惠金额,暂时为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal couponAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (createRes.getCouponAmount() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                couponAmount = createRes.getCouponAmount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (couponAmount.compareTo(createRes.getExpectPrice()) > 0 ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                couponAmount = createRes.getActualPrice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             createRes.setActualPrice(createRes.getExpectPrice().subtract(couponAmount).setScale(2, RoundingMode.HALF_UP)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             createRes.setCouponAmount(couponAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //累计实际支付金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             actualPrice = actualPrice.add(createRes.getActualPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             info.setCreateRes(createRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderReq.setActivityId(createRes.getActivityId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //验证金额 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -532,6 +546,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private UserOrderVo insertOrder(OrderReq orderReq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrder userOrder = new UserOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setActivityId(orderReq.getActivityId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderNo(orderReq.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setUserId(orderReq.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderName(orderReq.getOrderName()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -601,10 +616,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             userOrder.setPlantformFee(userOrder.getPlantformFee().add(orderDetail.getPlantformFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //todo 优惠券优惠金额,暂时为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal couponAmount = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setActualPrice(userOrder.getActualPrice().subtract(couponAmount)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setCouponAmount(userOrder.getCouponAmount().add(couponAmount)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setActualPrice(userOrder.getActualPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setCouponAmount(userOrder.getCouponAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (userOrder.getActualPrice().subtract(orderReq.getActualPrice()).abs() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .compareTo(new BigDecimal("0.01")) > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -774,6 +787,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderDetailVo.setUserId(detail.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderDetailVo.setOrderId(detail.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderDetailVo.setRecomUserId(detail.getRecomUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setActivityId(detail.getActivityId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //调用业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Consumer<UserOrderDetailVo> userOrderVoConsumer = orderSuccess.get(orderDetailVo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!Objects.isNull(userOrderVoConsumer)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -786,6 +801,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (merchId != null && merchId != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(merchId)).delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 记录活动参与 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveActivityRecord(orderDetailVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //清除买家统计缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ClientEnum.STUDENT.getCode().equals(detail.getPaymentClient())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -795,6 +813,21 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void saveActivityRecord(UserOrderDetailVo orderDetailVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (orderDetailVo.getActivityId() == null || orderDetailVo.getActivityId() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ActivityRegistration activityRegistration = new ActivityRegistration(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityRegistration.setActivityId(orderDetailVo.getActivityId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityRegistration.setOrderNo(orderDetailVo.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityRegistration.setSubOrderNo(orderDetailVo.getSubOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityRegistration.setUserId(orderDetailVo.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityRegistration.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityRegistrationService.save(activityRegistration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        activityEvaluationRecordService.saveActivityRecord(orderDetailVo.getActivityId(), orderDetailVo.getUserId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                           orderDetailVo.getRecomUserId(), ActivityResourceEnum.TEACHER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 记录平台收入和用户分润收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -817,6 +850,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             platformFeeRate = BigDecimal.ONE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal platformFee = expectPrice.multiply(platformFeeRate).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        platformFee = platformFee.subtract(orderDetailVo.getCouponAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (platformFee.compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             PlatformCashAccountRecord platformCashAccountRecord; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -831,31 +865,32 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             platformCashAccountRecordService.save(platformCashAccountRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //卖家不能分润自己 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (null != orderDetailVo.getRecomUserId() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                && !orderDetailVo.getRecomUserId().equals(orderDetailVo.getMerchId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取分润收益费率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    , orderDetailVo.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //入老师账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (shareFee.compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (null != bizTypeEnum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //插入分润老师账户变更记录-分润老师预收 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            new UserAccountRecordDto(orderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    bizTypeEnum, orderDetailVo.getBizId(), bizTypeEnum.getMsg(), orderDetailVo.getOrderNo(), orderDetailVo.getUserId(), accountPeriodTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (recomRecordRes.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //插入平台预支 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getRecomUserId(), shareFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        platformCashAccountRecordService.save(platformCashAccountRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //卖家不能分润自己 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (null != orderDetailVo.getRecomUserId() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && !orderDetailVo.getRecomUserId().equals(orderDetailVo.getMerchId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //获取分润收益费率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        , orderDetailVo.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //入老师账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal shareFee = platformFee.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (shareFee.compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode() + "_SHARE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (null != bizTypeEnum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //插入分润老师账户变更记录-分润老师预收 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        HttpResponseResult<UserAccountRecord> recomRecordRes = userAccountService.accountRecord( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                new UserAccountRecordDto(orderDetailVo.getRecomUserId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        bizTypeEnum, orderDetailVo.getBizId(), bizTypeEnum.getMsg(), orderDetailVo.getOrderNo(), orderDetailVo.getUserId(), accountPeriodTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (recomRecordRes.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            //插入平台预支 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getRecomUserId(), shareFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    InOrOutEnum.OUT, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            platformCashAccountRecordService.save(platformCashAccountRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |