|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|