Răsfoiți Sursa

fix 加购车票更换

zoujiajian 3 ani în urmă
părinte
comite
c5a419f55b

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderDiscountPlusPurchaseSkuRelationMapper.java

@@ -2,6 +2,9 @@ package com.cyksj.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.OrderDiscountPlusPurchaseSkuRelation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /*
  *项目名: netflix
@@ -10,4 +13,5 @@ import com.cyksj.model.entity.OrderDiscountPlusPurchaseSkuRelation;
  *创建时间:2023/7/21 9:56
  */
 public interface OrderDiscountPlusPurchaseSkuRelationMapper extends BaseMapper<OrderDiscountPlusPurchaseSkuRelation> {
+	List<OrderDiscountPlusPurchaseSkuRelation> selectPlusRelationByIdAndUserId(@Param("relationId") Long relationId, @Param("userId") Long userId);
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDiscountPlusPurchaseSkuRelation.java

@@ -14,6 +14,8 @@ import lombok.Setter;
 public class OrderDiscountPlusPurchaseSkuRelation extends BaseEntity{
 	private Long orderId;
 
+	private Long userId;
+
 	/**
 	 * 优惠加购规格id
 	 */

+ 13 - 0
netflix-dao/src/main/resources/mapper/OrderDiscountPlusPurchaseSkuRelationMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.OrderDiscountPlusPurchaseSkuRelationMapper">
+
+    <select id="selectPlusRelationByIdAndUserId"
+            resultType="com.cyksj.model.entity.OrderDiscountPlusPurchaseSkuRelation">
+        select id, relation_ids
+        from order_discount_plus_purchase_sku_relation
+        where user_id = #{userId}
+          and relation_ids like concat('%',#{relationId},'%')
+    </select>
+</mapper>

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/mange/CmsOrderDonService.java

@@ -41,7 +41,7 @@ public interface CmsOrderDonService extends IService<OrderDon> {
 	/**
 	 * 更换车票
 	 */
-	void changeRelation(ChangeRelationReq req);
+	void changeRelation(ChangeRelationReq req) throws Exception;
 
 	/**
 	 * 退款记录

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/mange/group/CmsGroupServiceImpl.java

@@ -70,6 +70,8 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
 
     private final GroupsMapper groupsMapper;
 
+    private final OrderDiscountPlusPurchaseSkuRelationMapper discountPlusPurchaseSkuRelationMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 

+ 43 - 1
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -34,6 +34,7 @@ import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelOrderDonInfo;
 import com.cyksj.model.manage.request.ReqSetLogisticsPost;
+import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.request.ChangeRelationReq;
 import com.cyksj.model.request.ClickOutReq;
 import com.cyksj.model.request.OrderRefundReq;
@@ -50,6 +51,8 @@ import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.stripe.StripeService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.wechat.WeChatService;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.dao.DuplicateKeyException;
@@ -136,6 +139,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final EquipmentUserDistributeTransportBenefitsMapper transportBenefitsMapper;
 
+    private final BeanSearcher beanSearcher;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -355,7 +360,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     @Override
     @Transactional(rollbackFor = Throwable.class)
-    public void changeRelation(ChangeRelationReq req) {
+    public void changeRelation(ChangeRelationReq req) throws Exception {
         Long relationId = req.getRelationId();
         Long groupId = req.getGroupsId();
         UserTicketClearedRecord.Source source = req.getSource();
@@ -371,6 +376,37 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 .eq(OrderDon::getRelationId, relationId)
                 .notIn(OrderDon::getStatus, Constant.noOrderStatus)
                 .last("limit 1"));
+        OrderDiscountPlusPurchaseSkuRelation plusPurchaseSkuRelation = null;
+        List<Long> plus_relationList = null;
+        if (orderDon == null) {
+            List<OrderDiscountPlusPurchaseSkuRelation> plusPurchaseSkuRelations = orderDiscountPlusPurchaseSkuRelationMapper.selectPlusRelationByIdAndUserId(relation.getId(), relation.getUserId());
+            for (OrderDiscountPlusPurchaseSkuRelation data : plusPurchaseSkuRelations) {
+                String relationIds = data.getRelationIds();
+                if (StrUtil.isEmpty(relationIds)) {
+                    return;
+                }
+                List<Long> relationList = Jsons.parseList(relationIds, Long.class);
+                if (relationList.contains(relationId)) {
+                    plusPurchaseSkuRelation = data;
+                    break;
+                }
+            }
+            if (plusPurchaseSkuRelation != null) {
+                String relationIds = plusPurchaseSkuRelation.getRelationIds();
+                if (StrUtil.isNotEmpty(relationIds)) {
+                    plus_relationList = Jsons.parseList(relationIds, Long.class);
+                    if (plus_relationList.contains(relationId)) {
+                        orderDon = new OrderDon();
+                        GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder().field(GroupsRelationView::getId, relationId).build());
+                        Assert.notNull(groupsRelationView, "车票已不存在");
+                        orderDon.setUserId(groupsRelationView.getUserId());
+                        orderDon.setSkuId(groupsRelationView.getSkuId());
+                        orderDon.setGoodsId(groupsRelationView.getGoodsId());
+                        orderDon.setStatus(OrderDon.Status.complete);
+                    }
+                }
+            }
+        }
         Assert.notNull(orderDon, "订单不存在");
         if (orderDon.getStatus() == OrderDon.Status.refund) {
             throw BusinessRuntimeException.getInstance("订单已退款");
@@ -441,6 +477,12 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             });
             return;
         }
+        if (plusPurchaseSkuRelation != null && plus_relationList != null) {
+            plus_relationList.remove(relationId);
+            plus_relationList.add(newRelation.getId());
+            plusPurchaseSkuRelation.setRelationIds(plus_relationList.toString());
+            orderDiscountPlusPurchaseSkuRelationMapper.updateById(plusPurchaseSkuRelation);
+        }
         List<OrderDon> orderDonList = orderDonMapper.selectList(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getUserId, userId).eq(OrderDon::getRelationId, relationId).eq(OrderDon::getStatus, OrderDon.Status.complete));
         orderDonList.forEach(completeOrder->{
             completeOrder.setRelationId(newRelation.getId());

+ 1 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -355,6 +355,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			OrderDiscountPlusPurchaseSkuRelation orderDiscountPlusPurchaseSkuRelation = new OrderDiscountPlusPurchaseSkuRelation();
 			orderDiscountPlusPurchaseSkuRelation.setOrderId(orderDon.getId());
 			orderDiscountPlusPurchaseSkuRelation.setPlusSkuIds(dpSkuIds.toString());
+			orderDiscountPlusPurchaseSkuRelation.setUserId(orderDon.getUserId());
 			orderDiscountPlusPurchaseSkuRelationMapper.insert(orderDiscountPlusPurchaseSkuRelation);
 		}
 

+ 1 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -563,7 +563,7 @@ public class CmsOrderController {
 	 * 更换用户车票
 	 */
 	@PutMapping("/put/sameSpec/empty/relation")
-	public Result<String> changeRelation(@RequestBody @Validated ChangeRelationReq req) {
+	public Result<String> changeRelation(@RequestBody @Validated ChangeRelationReq req) throws Exception {
 		cmsOrderDonService.changeRelation(req);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}