|
@@ -87,10 +87,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
-import java.util.Date;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
-import java.util.Optional;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
|
|
import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_ALREADY_BE_USER;
|
|
import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_ALREADY_BE_USER;
|
|
|
import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_NOT_FIND;
|
|
import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_NOT_FIND;
|
|
@@ -202,6 +199,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
|
|
private final OrderDonPostService orderDonPostService;
|
|
private final OrderDonPostService orderDonPostService;
|
|
|
|
|
|
|
|
|
|
+ private final GoodsDiscountPlusPurchaseRelationMapper discountPlusPurchaseRelationMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final OrderDiscountPlusPurchaseTicketRelationMapper orderRelationTicketRelationMapper;
|
|
|
|
|
+
|
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
@@ -249,10 +250,29 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
}
|
|
|
orderDon.setOrderNo(donNo);
|
|
orderDon.setOrderNo(donNo);
|
|
|
orderDon.setOpenId(payOpenId);
|
|
orderDon.setOpenId(payOpenId);
|
|
|
- if (sku.getPrice() != null && payRequest.getDonMoney().compareTo(sku.getPrice()) < 0) {
|
|
|
|
|
|
|
+ if (sku.getPrice() == null || sku.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("下单商品价格异常");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (payRequest.getDonMoney().compareTo(sku.getPrice()) < 0) {
|
|
|
log.info("规格:{}支付金额:{}异常,调整用户userId:{}支付金额为:{}", sku.getSpecVal(), payRequest.getDonMoney(), user.getId(), sku.getPrice());
|
|
log.info("规格:{}支付金额:{}异常,调整用户userId:{}支付金额为:{}", sku.getSpecVal(), payRequest.getDonMoney(), user.getId(), sku.getPrice());
|
|
|
payRequest.setDonMoney(sku.getPrice());
|
|
payRequest.setDonMoney(sku.getPrice());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ List<Long> dpSIds = payRequest.getDpSIds();
|
|
|
|
|
+ if (CollUtil.isNotEmpty(dpSIds)) {
|
|
|
|
|
+ //是否满足关联
|
|
|
|
|
+ GoodsDiscountPlusPurchaseRelationDto purchaseRelationDto = discountPlusPurchaseRelationMapper.countDiscountGoodsRelation(dpSIds, sku.getId());
|
|
|
|
|
+ if (purchaseRelationDto.getCount() != dpSIds.size()) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("下单异常,请重新下单");
|
|
|
|
|
+ }
|
|
|
|
|
+ BigDecimal pay_money = sku.getPrice().add(purchaseRelationDto.getTotalMoney());
|
|
|
|
|
+ if (pay_money.compareTo(orderDon.getMoney()) < 0) {
|
|
|
|
|
+ orderDon.setMoney(pay_money);
|
|
|
|
|
+ }
|
|
|
|
|
+ orderDon.setIsDp(true);
|
|
|
|
|
+ orderDon.setDpSIds(dpSIds);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
orderDon.setMoney(payRequest.getDonMoney());
|
|
orderDon.setMoney(payRequest.getDonMoney());
|
|
|
orderDon.setRealMoney(payRequest.getDonMoney());
|
|
orderDon.setRealMoney(payRequest.getDonMoney());
|
|
|
|
|
|
|
@@ -1124,6 +1144,27 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
log.info("虚物订单orderNo:{}开始更新车票信息", order.getOrderNo());
|
|
log.info("虚物订单orderNo:{}开始更新车票信息", order.getOrderNo());
|
|
|
//修改车位状态
|
|
//修改车位状态
|
|
|
GroupsRelation relation = groupsRelationMapper.selectById(order.getRelationId());
|
|
GroupsRelation relation = groupsRelationMapper.selectById(order.getRelationId());
|
|
|
|
|
+ if (CollUtil.isNotEmpty(order.getDpSIds())) {
|
|
|
|
|
+ //是否已经发送优惠加购车票
|
|
|
|
|
+ Integer count = orderRelationTicketRelationMapper.selectCount(Wrappers.lambdaQuery(OrderDiscountPlusPurchaseTicketRelation.class)
|
|
|
|
|
+ .eq(OrderDiscountPlusPurchaseTicketRelation::getOrderId, order.getId()));
|
|
|
|
|
+ if (count > 0) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ //发送优惠加购 规格车票
|
|
|
|
|
+ List<GoodsDonSku> relationSkus = discountPlusPurchaseRelationMapper.selectRelationSkuByDpId(order.getDpSIds(), sku.getId());
|
|
|
|
|
+ List<Long> dis_relation_ids = new ArrayList<>();
|
|
|
|
|
+ relationSkus.forEach(reSku -> {
|
|
|
|
|
+ GroupsRelation relationNoOrder = exchangeCodeService.getRelationNoOrder(reSku, order.getUserId());
|
|
|
|
|
+ dis_relation_ids.add(relationNoOrder.getId());
|
|
|
|
|
+ });
|
|
|
|
|
+ //保存订单关联优惠加购车票
|
|
|
|
|
+ OrderDiscountPlusPurchaseTicketRelation purchaseTicketRelation = new OrderDiscountPlusPurchaseTicketRelation();
|
|
|
|
|
+ purchaseTicketRelation.setUserId(order.getUserId());
|
|
|
|
|
+ purchaseTicketRelation.setOrderId(order.getId());
|
|
|
|
|
+ purchaseTicketRelation.setRelationIds(dis_relation_ids);
|
|
|
|
|
+ orderRelationTicketRelationMapper.insert(purchaseTicketRelation);
|
|
|
|
|
+ }
|
|
|
if (order.getRelationId() != 0 && !relation.getUserId().equals(order.getUserId()) && order.getOrderType() == 1) {
|
|
if (order.getRelationId() != 0 && !relation.getUserId().equals(order.getUserId()) && order.getOrderType() == 1) {
|
|
|
GroupsRelation relationNoOrder = exchangeCodeService.getRelationNoOrder(sku, order.getUserId());
|
|
GroupsRelation relationNoOrder = exchangeCodeService.getRelationNoOrder(sku, order.getUserId());
|
|
|
if (relationNoOrder == null) {
|
|
if (relationNoOrder == null) {
|