|
|
@@ -3704,6 +3704,83 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ public OrderDon submitRenewUpgrade(OrderPayRequest payRequest) {
|
|
|
+ Long packageId = payRequest.getPackageId();
|
|
|
+ Long relationId = payRequest.getRelationId();
|
|
|
+ if (relationId == null) {
|
|
|
+ throw BusinessRuntimeException.getInstance("系统异常");
|
|
|
+ }
|
|
|
+ Long userId = payRequest.getUserId();
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
+ if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
|
|
|
+ if (user.getIsBlack()) throw BusinessRuntimeException.getInstance("系统检测操作异常,请稍后再试");
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
+ int noPayCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .in(OrderDon::getUserId, userIdList)
|
|
|
+ .eq(OrderDon::getRelationId, payRequest.getRelationId())
|
|
|
+ .eq(OrderDon::getStatus, OrderDon.Status.noPayment.toString()));
|
|
|
+ if (noPayCount > 0) {
|
|
|
+ throw new BusinessRuntimeException("您有未支付订单.");
|
|
|
+ }
|
|
|
+ GroupsRelation groupsRelation = getGroupsRelation(payRequest.getUserId(), payRequest.getRelationId());
|
|
|
+ GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
|
|
|
+ GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(groupsTrips.getSkuId());
|
|
|
+ GoodsDon goodsDon = goodsDonMapper.selectById(goodsDonSku.getGoodsId());
|
|
|
+ if (!goodsDonSku.getIsMirror()) {
|
|
|
+ throw BusinessRuntimeException.getInstance("系统异常");
|
|
|
+ }
|
|
|
+ Long renewSkuId = payRequest.getSkuId();
|
|
|
+ GoodsDonSku renewSku = goodsDonSkuMapper.selectById(renewSkuId);
|
|
|
+ //校验同规格
|
|
|
+ if (!ObjectUtil.equal(goodsDonSku.getGoodsId(), renewSku.getGoodsId())) {
|
|
|
+ throw BusinessRuntimeException.getInstance("系统异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ OrderDon orderDon = new OrderDon();
|
|
|
+ orderDon.setUserId(userId);
|
|
|
+ orderDon.setGoodsId(goodsDonSku.getGoodsId());
|
|
|
+ orderDon.setRelationId(relationId);
|
|
|
+ orderDon.setSkuId(renewSkuId);
|
|
|
+ //续费订单
|
|
|
+ orderDon.setOrderType(2);
|
|
|
+ RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
|
|
|
+ .eq(RenewUpgradePackage::getId, packageId)
|
|
|
+ .eq(RenewUpgradePackage::getStatus, 1)
|
|
|
+ .eq(RenewUpgradePackage::getDeleted, 1));
|
|
|
+ if (renewUpgradePackage == null) {
|
|
|
+ throw BusinessRuntimeException.getInstance("续费升级套餐不存在");
|
|
|
+ }
|
|
|
+ BigDecimal price = renewSku.getPrice();
|
|
|
+ orderDon.setOriMoney(price);
|
|
|
+ orderDon.setRealMoney(price);
|
|
|
+ BigDecimal discountPrice = price.multiply(renewUpgradePackage.getDiscount());
|
|
|
+ orderDon.setMoney(discountPrice);
|
|
|
+
|
|
|
+ StringBuilder payTitle = new StringBuilder();
|
|
|
+ payTitle.append(goodsDon.getTitle()).append(renewSku.getSpecVal());
|
|
|
+ orderDon.setPayTitle(payTitle.toString());
|
|
|
+ String donNo = SEQUENCE.nextId().toString();
|
|
|
+ orderDon.setOrderNo(donNo);
|
|
|
+ orderDon.setStatus(OrderDon.Status.noPayment);
|
|
|
+
|
|
|
+ //虚拟商品订单,是否是分销订单
|
|
|
+ setDistributeOrderMark(orderDon, goodsDon.getType(), user.getId());
|
|
|
+
|
|
|
+ //存在余额
|
|
|
+ deductBalancePayOrderMoney(orderDon, payRequest.getBalance(), user);
|
|
|
+
|
|
|
+ orderDonMapper.insert(orderDon);
|
|
|
+ //记录续费升级的规格
|
|
|
+ recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
|
|
|
+
|
|
|
+ jobManager.addJob(EXPIRY_TIME, () -> {
|
|
|
+ closeOrder(orderDon.getId(), null);
|
|
|
+ });
|
|
|
+ return orderDon;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public OrderDon submitRenewUpgrade(OrderPayRequest payRequest) {
|
|
|
Long packageId = payRequest.getPackageId();
|