Explorar o código

Merge branch 'codex_discount' into pre

zoujiajian hai 2 días
pai
achega
059ff31b73

+ 35 - 3
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -5464,8 +5464,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			BigDecimal price = upgradeSku.getPrice();
 			orderDon.setOriMoney(price);
 			orderDon.setRealMoney(price);
-			BigDecimal discountPrice = price.subtract(deductMoney);
-			orderDon.setMoney(discountPrice.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : discountPrice);
+			BigDecimal discountPrice = getCodexDeductUpgradeDiscountPrice(relationId, userIdList, upgradeSku, price);
+			BigDecimal payMoney = discountPrice.subtract(deductMoney);
+			orderDon.setMoney(payMoney.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : payMoney);
 			orderDon.setPayTitle(goodsDon.getTitle() + upgradeSku.getSpecVal());
 			orderDon.setType(OrderDon.Type.ALI_PAY);
 			orderDon.setOrderNo(SEQUENCE.nextId().toString());
@@ -5473,7 +5474,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			//虚拟商品订单,是否是分销订单
 			setDistributeOrderMark(orderDon, goodsDon.getType(), userId);
 			//存在银河币
-			deductGalaxyCoinPayOrderMoney(orderDon, discountPrice, payReq.getGalaxyCoin(), user);
+			deductGalaxyCoinPayOrderMoney(orderDon, orderDon.getMoney(), payReq.getGalaxyCoin(), user);
 			//存在余额
 			deductBalancePayOrderMoney(orderDon, payReq.getBalance(), user);
 			GroupsRelation relation = codexService.getClaudeCodeRelation(userId, upgradeSku);
@@ -5506,6 +5507,37 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		return orderDon;
 	}
 
+	private BigDecimal getCodexDeductUpgradeDiscountPrice(Long relationId, List<Long> userIdList, GoodsDonSku upgradeSku, BigDecimal price) {
+		GroupsRelation relation = groupsRelationMapper.selectById(relationId);
+		if (relation == null) {
+			return price;
+		}
+		GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
+		if (groupsTrips == null) {
+			return price;
+		}
+		Long presentSkuId = groupsTrips.getSkuId();
+		CodexUser codexUser = codexUserMapper.selectOne(Wrappers.lambdaQuery(CodexUser.class)
+				.eq(CodexUser::getRelationId, relationId)
+				.in(CodexUser::getUserId, userIdList)
+				.last("limit 1"));
+		if (codexUser != null && codexUser.getRenewSkuId() != null && codexUser.getRenewSkuId() > 0) {
+			presentSkuId = codexUser.getRenewSkuId();
+		}
+		RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
+				.eq(RenewUpgradePackage::getGoodsId, Constant.CODEX_GOODS_ID)
+				.eq(RenewUpgradePackage::getSkuId, presentSkuId)
+				.apply("JSON_CONTAINS(upgrade_sku_ids,'\"" + upgradeSku.getId() + "\"')")
+				.eq(RenewUpgradePackage::getStatus, 1)
+				.eq(RenewUpgradePackage::getDeleted, 1)
+				.orderByAsc(RenewUpgradePackage::getDiscount)
+				.last("limit 1"));
+		if (renewUpgradePackage == null || renewUpgradePackage.getDiscount() == null) {
+			return price;
+		}
+		return price.multiply(renewUpgradePackage.getDiscount());
+	}
+
 	@Override
 	public OrderDon userBenefitsSubmit(OrderPayRequest orderPayRequest) throws Exception {
 		Long userId = orderPayRequest.getUserId();