|
|
@@ -327,6 +327,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final UserIpRecordMapper userIpRecordMapper;
|
|
|
|
|
|
+ private final OrderDonUserDiscountPopularizeRecordMapper orderDonUserDiscountPopularizeRecordMapper;
|
|
|
+
|
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@@ -591,6 +593,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
if (orderDon.getIsDp() && payRequest.getAddressId() != null) {
|
|
|
redisService.set(RedisService.key.PLUS_GOODS_ADDRESS_KEY.getName() + orderDon.getId(), payRequest.getAddressId(), RedisService.key.PLUS_GOODS_ADDRESS_KEY.getTimeout());
|
|
|
}
|
|
|
+ if (orderDon.getDiscountPopularizeRecord() != null) {
|
|
|
+ OrderDonUserDiscountPopularizeRecord discountPopularizeRecord = orderDon.getDiscountPopularizeRecord();
|
|
|
+ discountPopularizeRecord.setOrderId(orderDon.getId());
|
|
|
+ discountPopularizeRecord.setIp(payRequest.getIp());
|
|
|
+ orderDonUserDiscountPopularizeRecordMapper.insert(discountPopularizeRecord);
|
|
|
+ }
|
|
|
if (orderDon.getStatus() == OrderDon.Status.noPayment) {
|
|
|
jobManager.addJob(EXPIRY_TIME, () -> {
|
|
|
closeOrder(orderDon.getId(), null);
|
|
|
@@ -2263,7 +2271,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
/**
|
|
|
* 使用优惠营销 订单金额抵扣
|
|
|
*/
|
|
|
- public void deductOrderMoney(OrderDon orderDon, CouponUser couponUser, BigDecimal balance, User user, BigDecimal skuMoney, Integer goodsType, BigDecimal gcCash, List<Long> gcpIds, Boolean isAcReduce, Long subsidyId) {
|
|
|
+ public void deductOrderMoney(OrderDon orderDon, CouponUser couponUser, BigDecimal balance, User user, BigDecimal skuMoney, Integer goodsType, BigDecimal gcCash, List<Long> gcpIds, Boolean isAcReduce, Long subsidyId) throws Exception {
|
|
|
if (gcCash != null && gcCash.compareTo(BigDecimal.ZERO) > 0 && couponUser != null) {
|
|
|
throw BusinessRuntimeException.getInstance("现金卡不能与其他优惠叠加使用");
|
|
|
}
|
|
|
@@ -2391,21 +2399,45 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
orderDon.setMoney(discountMoney);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ SysConfig discountPopularizeConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
+ .eq(SysConfig::getSysKey, Constant.DISCOUNT_POPULARIZE_KEY).last("limit 1"));
|
|
|
+ if (discountPopularizeConfig != null) {
|
|
|
+ String sysValue = discountPopularizeConfig.getSysValue();
|
|
|
+ if (StrUtil.isNotBlank(sysValue)) {
|
|
|
+ if (user == null) {
|
|
|
+ throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
|
|
|
+ }
|
|
|
+ DiscountPopularizeDto discountPopularizeDto = Jsons.parseObject(sysValue, DiscountPopularizeDto.class);
|
|
|
+ List<Long> popularizeIds = discountPopularizeDto.getPopularizeIds();
|
|
|
+ if (CollUtil.isNotEmpty(popularizeIds) && popularizeIds.contains(orderDon.getPopularizeId())) {
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(user.getId(), user);
|
|
|
+ Integer count = orderDonUserDiscountPopularizeRecordMapper.selectUserPopularzieDiscountRecordByUidAndPid(userIdList, orderDon.getPopularizeId());
|
|
|
+ if (count == 0) {
|
|
|
+ log.info("用户:{}首次使用折扣特殊链接:{} 折扣:{},修改支付金额", user.getId(), orderDon.getPopularizeId(), discountPopularizeDto.getDiscount());
|
|
|
+ BigDecimal discountMoney = orderDon.getMoney().multiply(discountPopularizeDto.getDiscount());
|
|
|
+ orderDon.setMoney(discountMoney);
|
|
|
+
|
|
|
+ //记录用户使用折扣链接
|
|
|
+ orderDon.setDiscountPopularizeRecord(createPopularizeDiscountRecord(orderDon, discountPopularizeDto.getDiscount()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
//360
|
|
|
- if (Constant.CHANNEL_NAME_360.equals(name)) {
|
|
|
- SysConfig sysConfig = sysConfigService.getBaseMapper().selectOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, Constant.CHANNEL_360_DISCOUNT));
|
|
|
- if (sysConfig != null) {
|
|
|
- BigDecimal discountMoney = orderDon.getMoney().multiply(BigDecimal.valueOf(Double.valueOf(sysConfig.getSysValue())));
|
|
|
- orderDon.setMoney(discountMoney);
|
|
|
- }
|
|
|
- }
|
|
|
+// if (Constant.CHANNEL_NAME_360.equals(name)) {
|
|
|
+// SysConfig sysConfig = sysConfigService.getBaseMapper().selectOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, Constant.CHANNEL_360_DISCOUNT));
|
|
|
+// if (sysConfig != null) {
|
|
|
+// BigDecimal discountMoney = orderDon.getMoney().multiply(BigDecimal.valueOf(Double.valueOf(sysConfig.getSysValue())));
|
|
|
+// orderDon.setMoney(discountMoney);
|
|
|
+// }
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2413,6 +2445,17 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
deductBalancePayOrderMoney(orderDon, balance, user);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成用户使用折扣链接记录
|
|
|
+ */
|
|
|
+ private OrderDonUserDiscountPopularizeRecord createPopularizeDiscountRecord(OrderDon orderDon, BigDecimal discount) {
|
|
|
+ OrderDonUserDiscountPopularizeRecord discountPopularizeRecord = new OrderDonUserDiscountPopularizeRecord();
|
|
|
+ discountPopularizeRecord.setDiscount(discount);
|
|
|
+ discountPopularizeRecord.setUserId(orderDon.getUserId());
|
|
|
+ discountPopularizeRecord.setPopularizeId(orderDon.getPopularizeId());
|
|
|
+ return discountPopularizeRecord;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 更新车票状态
|
|
|
*/
|