|
|
@@ -57,6 +57,7 @@ import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubRewardsMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubWaitingMapper;
|
|
|
import com.cyksj.mapper.market.task.TaskTypeMapper;
|
|
|
import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
|
+import com.cyksj.mapper.renew.RenewUpgradePackageMapper;
|
|
|
import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
|
|
|
import com.cyksj.model.dto.*;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
@@ -317,6 +318,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final DistributeGeneralSkuRateMapper distributeGeneralSkuRateMapper;
|
|
|
|
|
|
+ private final RenewUpgradePackageMapper renewUpgradePackageMapper;
|
|
|
+
|
|
|
+ private final OrderDonRenewRecordMapper orderDonRenewRecordMapper;
|
|
|
+
|
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@@ -1460,6 +1465,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
relation.setExpiryTime(newDate);
|
|
|
relation.setStartTime(relation.getStartTime() == null ? new Date() : null);
|
|
|
+
|
|
|
+ //镜像续费升级
|
|
|
+ handleMirrorRenew(sku, order, groupsTrips, relation.getId(), newDate);
|
|
|
} else if (GroupsTrips.Status.waiting.equals(groupsTrips.getStatus())) {
|
|
|
log.info("车位groupsId:{}未发车,修改订单号orderNo:{}订单为已付款状态:{}", groupsTrips.getId(), order.getOrderNo());
|
|
|
order.setStatus(OrderDon.Status.hasPayment);
|
|
|
@@ -1502,31 +1510,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// //新订单产生 发送模板消息给用户、客服
|
|
|
-// User user = userMapper.selectById(order.getUserId());
|
|
|
-// if (user != null) {
|
|
|
-// THREAD_POOL_TASK_EXECUTOR.execute(() -> {
|
|
|
-// try {
|
|
|
-// //发送至用户消息
|
|
|
-// templateCommonService.newOderSendMsgByType(order, goodsDon, user, user.getOpenId(), false);
|
|
|
-// } catch (Exception e) {
|
|
|
-// log.error("向用户发送新订单{}通知消息失败:{}", order.getOrderNo(), e);
|
|
|
-// }
|
|
|
-// });
|
|
|
-// }
|
|
|
-// THREAD_POOL_TASK_EXECUTOR.execute(() -> {
|
|
|
-// try {
|
|
|
-// //发送至客服消息
|
|
|
-// List<CustomerService> customerServices = customerServiceMapper.selectList(null);
|
|
|
-// for (CustomerService customerService : customerServices) {
|
|
|
-// log.info("向客服{}发送新订单消息通知..", customerService.getNickName());
|
|
|
-// templateCommonService.newOderSendMsgByType(order, goodsDon, user, customerService.getOpenId(), true);
|
|
|
-// }
|
|
|
-// } catch (Exception e) {
|
|
|
-// log.error("向客服发送新订单{}通知消息失败:{}", order.getOrderNo(), e);
|
|
|
-// }
|
|
|
-// });
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -3701,6 +3684,83 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
return beanSearcher.searchFirst(UpgradeOrderDetailView.class, builder.build());
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @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;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 试用车票跳转购买正式车票订单记录
|
|
|
*/
|
|
|
@@ -3711,4 +3771,45 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
userTrialTicketJumpPayRecordMapper.insert(userTrialTicketJumpPayRecord);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 记录续费升级的规格
|
|
|
+ */
|
|
|
+ private void recordRenewOrderDon(OrderDon orderDon, RenewUpgradePackage renewUpgradePackage, GroupsTrips groupsTrips) {
|
|
|
+ OrderDonRenewRecord orderDonRenewRecord = new OrderDonRenewRecord();
|
|
|
+ orderDonRenewRecord.setOrderId(orderDon.getId());
|
|
|
+ orderDonRenewRecord.setUserId(orderDon.getUserId());
|
|
|
+ orderDonRenewRecord.setPackageId(renewUpgradePackage.getId());
|
|
|
+ orderDonRenewRecord.setDiscount(renewUpgradePackage.getDiscount());
|
|
|
+ orderDonRenewRecord.setOriSkuId(groupsTrips.getSkuId());
|
|
|
+ orderDonRenewRecordMapper.insert(orderDonRenewRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+ //镜像续费升级
|
|
|
+ private void handleMirrorRenew(GoodsDonSku sku, OrderDon order, GroupsTrips groupsTrips, Long relationId, Date newDate) {
|
|
|
+ if (sku.getIsMirror() && order.getOrderType() == 2) {
|
|
|
+ OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
|
|
|
+ .eq(OrderDonRenewRecord::getOrderId, order.getId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (orderDonRenewRecord != null) {
|
|
|
+ orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
|
|
|
+ //同规格续费无需更新
|
|
|
+ if (!ObjectUtil.equal(groupsTrips.getSkuId(), order.getSkuId())) {
|
|
|
+ //升级gptUser次数
|
|
|
+ ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
|
|
|
+ .eq(ChatgptUser::getRelationId, relationId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (chatgptUser != null) {
|
|
|
+ chatgptUser.setLimitTime(sku.getGptLimitTime());
|
|
|
+ chatgptUser.setLimitNum(sku.getGptLimitNum());
|
|
|
+ //记录续费升级过期的时间
|
|
|
+ chatgptUser.setRenewExpiryTime(newDate);
|
|
|
+ chatgptUser.setRenewOrderId(order.getId());
|
|
|
+ chatgptUser.setRenewSkuId(order.getSkuId());
|
|
|
+ chatgptUserMapper.updateById(chatgptUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|