Эх сурвалжийг харах

盲票增加券和券包的关联发放

cup 2 жил өмнө
parent
commit
8668db0372

+ 18 - 0
mp-admin/src/test/java/com/qs/mp/task/MyTest.java

@@ -33,10 +33,12 @@ import com.qs.mp.framework.service.IWxSubscribeMessage;
 import com.qs.mp.pay.service.IWalletService;
 import com.qs.mp.quartz.task.DayStatTask;
 import com.qs.mp.quartz.task.MarketingTask;
+import com.qs.mp.quartz.task.TicketOrderTask;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.user.domain.MarketingUserCode;
 import com.qs.mp.user.service.IMarketingUserCodeService;
 import com.qs.mp.utils.SecurityUtils;
+import java.util.concurrent.TimeUnit;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.Test;
@@ -90,6 +92,12 @@ public class MyTest {
     @Autowired
     private IGoodsCardService goodsCardService;
 
+    @Autowired
+    private DistributedLocker distributedLocker;
+
+    @Autowired
+    private TicketOrderTask ticketOrderTask;
+
     public static void main(String[] args) {
         WebhookService.sendAlertDing("mayday,mayday,上上下下,左右左右,BABA");
 
@@ -98,6 +106,16 @@ public class MyTest {
 
     }
 
+    @Test
+    void test15() {
+        ticketOrderTask.cancel();
+
+    }
+
+    @Test
+    void test14() {
+        distributedLocker.tryLock("goods_card_lock_key_466",0,-1, TimeUnit.SECONDS);
+    }
 
     @Test
     void test13() {

+ 2 - 2
mp-quartz/src/main/java/com/qs/mp/quartz/task/TicketOrderTask.java

@@ -43,7 +43,7 @@ public class TicketOrderTask {
               .lambda()
               .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY)
               .lt(UserTicketOrder::getCreatedTime,
-                  DateUtils.addMinutes(DateUtils.getNowDate(), -30))
+                  DateUtils.addMinutes(DateUtils.getNowDate(), -1))
               .last("limit " + PAGE_SIZE));
       total = ticketOrderList.size();
       // 按票组分批次取消
@@ -56,7 +56,7 @@ public class TicketOrderTask {
                   .lambda().eq(UserTicketOrder::getBoxId, ticketOrder.getBoxId())
                   .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY)
                   .lt(UserTicketOrder::getCreatedTime,
-                      DateUtils.addMinutes(DateUtils.getNowDate(), -30))
+                      DateUtils.addMinutes(DateUtils.getNowDate(), -1))
                   .last("limit " + 10));
           boxTotal = orderList.size();
           try {

+ 22 - 10
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -16,6 +16,8 @@ import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
 import com.qs.mp.admin.domain.param.IndexTicketSiteTopQueryParam;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.*;
+import com.qs.mp.admin.service.ICouponPkgService;
+import com.qs.mp.admin.service.ICouponService;
 import com.qs.mp.admin.service.IGoodsService;
 import com.qs.mp.admin.service.ITicketBoxGoodsService;
 import com.qs.mp.admin.service.ITicketBoxService;
@@ -142,6 +144,12 @@ public class UserTicketOrderServiceImpl extends
     @Autowired
     private IGoodsService goodsService;
 
+    @Autowired
+    private ICouponService couponService;
+
+    @Autowired
+    private ICouponPkgService couponPkgService;
+
     @Override
     public String submitOrder(Long userId, TicketOrderSettleVO orderSettleVO,
         UserShareVO userShareVO) {
@@ -360,7 +368,7 @@ public class UserTicketOrderServiceImpl extends
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public boolean batchCancelOrder(String boxId, List<String> orderIds) {
         int sumTicket = 0;
         for (String orderId : orderIds) {
@@ -384,6 +392,7 @@ public class UserTicketOrderServiceImpl extends
                     ticketBox.getSaleQty() - qty)
                 .set(
                     ticketBox.getStatus() == TicketBoxStatusEnum.PUT_OFF
+                        && TicketTypeEnum.ONLINE.equals(ticketBox.getType())
                         && ticketBox.getManualOff() != 1,
                     TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON)
                 .eq(TicketBox::getBoxId, ticketBox.getBoxId())
@@ -498,18 +507,21 @@ public class UserTicketOrderServiceImpl extends
             Assert.isTrue(rtn, "支付回调用户购票订单处理,更新盲票状态失败,ticketId:" + ticket.getTicketId());
 
 
-            // 如果为线上票则发送关联商品到用户仓库
-            TicketBox ticketBox = ticketBoxService.getById(ticketOrder.getBoxId());
-            if (TicketTypeEnum.ONLINE.equals(ticketBox.getType())) {
-                List<TicketBoxGoods> ticketBoxGoodsList = ticketBoxGoodsService.list(new LambdaQueryWrapper<TicketBoxGoods>()
-                    .eq(TicketBoxGoods::getBoxId, ticketBox.getBoxId()));
-                if (CollectionUtils.isNotEmpty(ticketBoxGoodsList)) {
-                    for (TicketBoxGoods ticketBoxGoods : ticketBoxGoodsList) {
-                        Goods goods = goodsService.getById(Long.valueOf(ticketBoxGoods.getRefId()));
+            // TODO: 线上和线下票如果有关联商品,都要发送关联商品到用户的仓库中
+            List<TicketBoxGoods> ticketBoxGoodsList = ticketBoxGoodsService.list(new LambdaQueryWrapper<TicketBoxGoods>()
+                .eq(TicketBoxGoods::getBoxId, ticketOrder.getBoxId()));
+            if (CollectionUtils.isNotEmpty(ticketBoxGoodsList)) {
+                // 发送关联商品
+                for (TicketBoxGoods ticketBoxGoods : ticketBoxGoodsList) {
 
+                    if (TicketBoxGoodsTypeEnum.GOODS.equals(ticketBoxGoods.getType())) {
+                        Goods goods = goodsService.getById(Long.valueOf(ticketBoxGoods.getRefId()));
                         userPrizeStorageService.takeInStorage(orderItem.getUserId(),goods.getTitle(),goods.getPicUrl(),
                             ticketBoxGoods.getRefId(),PrizeStorageInTypeEnum.TICKET_GOODS,orderItem.getItemId());
-
+                    } else if (TicketBoxGoodsTypeEnum.COUPON.equals(ticketBoxGoods.getType())) {
+                        couponService.distribute(ticket, orderItem.getUserId(), ticketBoxGoods.getRefId());
+                    } else if (TicketBoxGoodsTypeEnum.COUPON_PKG.equals(ticketBoxGoods.getType())) {
+                        couponPkgService.distribute(ticket, orderItem.getUserId(), ticketBoxGoods.getRefId());
                     }
                 }
             }