Commit 75467fae by huluobin

update

parent 1d339356
...@@ -1085,73 +1085,7 @@ public class MarketServiceImpl implements MarketService { ...@@ -1085,73 +1085,7 @@ public class MarketServiceImpl implements MarketService {
couponOrderRelevanceService.remove(new LambdaQueryWrapper<CouponOrderRelevance>() couponOrderRelevanceService.remove(new LambdaQueryWrapper<CouponOrderRelevance>()
.eq(CouponOrderRelevance::getOrderId, orderId)); .eq(CouponOrderRelevance::getOrderId, orderId));
//3、外部券
if (ListUtil.isNotEmpty(outerCouponCustomerRelevanceServiceList)) {
//删除之前的外部券抵扣情况记录
couponOrderRelevanceService.remove(new LambdaQueryWrapper<CouponOrderRelevance>()
.eq(CouponOrderRelevance::getOrderId, orderId)
.in(CouponOrderRelevance::getCouponCustomerRelevanceId, outerCouponCustomerRelevanceServiceList.stream().map(CouponCustomerRelevance::getId).collect(Collectors.toList())));
outerCouponCustomerRelevanceServiceList
.stream()
.sorted(Comparator.comparing(CouponCustomerRelevance::getDiscountAmount).reversed())
.forEach(couponCustomerRelevance -> {
//外部券能用的服务id
List<Integer> serveIds = couponCustomerRelevanceMapper.queryCouponCustomerServeRelevance(couponCustomerRelevance.getCouponId());
//抵扣的服务为 作用范围内支付金额最高的服务
OrderServe orderServe = this.queryMaxPayPrice(orderManage, serveIds);
if (orderServe != null) {
BigDecimal discountAmount = couponCustomerRelevance.getDiscountAmount();
if (couponCustomerRelevance.getType() == 5) {
discountAmount = orderServe.getPrice().multiply(BigDecimal.ONE.subtract(couponCustomerRelevance.getDiscountPercent()));
}
BigDecimal actualDiscountAmount = orderServe.getPayPrice().min(discountAmount);
//新增外部券抵扣情况记录
CouponOrderRelevance couponOrderRelevance = CouponOrderRelevance.builder()
.couponCustomerRelevanceId(couponCustomerRelevance.getId())
.couponId(couponCustomerRelevance.getCouponId())
.couponName(couponCustomerRelevance.getCouponName())
.orderServeId(orderServe.getId())
.serveName(orderServe.getServeName())
.orderId(orderManage.getId())
//支付金额
.payForOrderServe(couponCustomerRelevance.getPayAmount())
//折扣金额
.discountAmount(actualDiscountAmount)
.createTime(new Date())
.confirmTime(new Date())
.message(orderServe.getServeName())
.customerId(orderManage.getOrderUser())
.status(2)
.build();
//如果计算业绩
if (couponCustomerRelevance.getIsCalcAchievement() == 1) {
couponOrderRelevance.setAchievement(couponCustomerRelevance.getPayAmount());
} else {
couponOrderRelevance.setAchievement(couponOrderRelevance.getDiscountAmount());
}
//业绩
orderServe.setAchievement(orderServe.getAchievement().subtract(actualDiscountAmount).add(couponCustomerRelevance.getPayAmount()));
orderServe.addDiscountPrice(actualDiscountAmount);
orderManage.addDiscountPrice(actualDiscountAmount);
orderServe.setBindOuterCoupon(1);
couponOrderRelevanceService.save(couponOrderRelevance);
} else {
throw new RRException("%s与其他卡券冲突", couponCustomerRelevance.getCouponName());
}
});
}
//4、内部券 //4、内部券
if (ListUtil.isNotEmpty(innerCouponCustomerRelevanceServiceList)) { if (ListUtil.isNotEmpty(innerCouponCustomerRelevanceServiceList)) {
...@@ -1351,6 +1285,76 @@ public class MarketServiceImpl implements MarketService { ...@@ -1351,6 +1285,76 @@ public class MarketServiceImpl implements MarketService {
}); });
} }
} }
//3、外部券
if (ListUtil.isNotEmpty(outerCouponCustomerRelevanceServiceList)) {
//删除之前的外部券抵扣情况记录
couponOrderRelevanceService.remove(new LambdaQueryWrapper<CouponOrderRelevance>()
.eq(CouponOrderRelevance::getOrderId, orderId)
.in(CouponOrderRelevance::getCouponCustomerRelevanceId, outerCouponCustomerRelevanceServiceList.stream().map(CouponCustomerRelevance::getId).collect(Collectors.toList())));
outerCouponCustomerRelevanceServiceList
.stream()
.sorted(Comparator.comparing(CouponCustomerRelevance::getDiscountAmount).reversed())
.forEach(couponCustomerRelevance -> {
//外部券能用的服务id
List<Integer> serveIds = couponCustomerRelevanceMapper.queryCouponCustomerServeRelevance(couponCustomerRelevance.getCouponId());
//抵扣的服务为 作用范围内支付金额最高的服务
OrderServe orderServe = this.queryMaxPayPrice(orderManage, serveIds);
if (orderServe != null) {
BigDecimal discountAmount = couponCustomerRelevance.getDiscountAmount();
if (couponCustomerRelevance.getType() == 5) {
discountAmount = orderServe.getPrice().multiply(BigDecimal.ONE.subtract(couponCustomerRelevance.getDiscountPercent()));
}
BigDecimal actualDiscountAmount = orderServe.getPayPrice().min(discountAmount);
//新增外部券抵扣情况记录
CouponOrderRelevance couponOrderRelevance = CouponOrderRelevance.builder()
.couponCustomerRelevanceId(couponCustomerRelevance.getId())
.couponId(couponCustomerRelevance.getCouponId())
.couponName(couponCustomerRelevance.getCouponName())
.orderServeId(orderServe.getId())
.serveName(orderServe.getServeName())
.orderId(orderManage.getId())
//支付金额
.payForOrderServe(couponCustomerRelevance.getPayAmount())
//折扣金额
.discountAmount(actualDiscountAmount)
.createTime(new Date())
.confirmTime(new Date())
.message(orderServe.getServeName())
.customerId(orderManage.getOrderUser())
.status(2)
.build();
//如果计算业绩
if (couponCustomerRelevance.getIsCalcAchievement() == 1) {
couponOrderRelevance.setAchievement(couponCustomerRelevance.getPayAmount());
} else {
couponOrderRelevance.setAchievement(couponOrderRelevance.getDiscountAmount());
}
//业绩
orderServe.setAchievement(orderServe.getAchievement().subtract(actualDiscountAmount).add(couponCustomerRelevance.getPayAmount()));
orderServe.addDiscountPrice(actualDiscountAmount);
orderManage.addDiscountPrice(actualDiscountAmount);
orderServe.setBindOuterCoupon(1);
couponOrderRelevanceService.save(couponOrderRelevance);
} else {
throw new RRException("%s与其他卡券冲突", couponCustomerRelevance.getCouponName());
}
});
}
orderManageMapper.updateById(orderManage); orderManageMapper.updateById(orderManage);
orderServeService.updateBatchById(orderServeList); orderServeService.updateBatchById(orderServeList);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment