Sfoglia il codice sorgente

线下票停售业务优化

MrWang 1 anno fa
parent
commit
b1d4c5d2c2

+ 39 - 39
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/TicketBoxMgrController.java

@@ -517,45 +517,45 @@ public class TicketBoxMgrController extends BaseApiController {
             if(ticketList == null || ticketList.size() == 0){
                 return AjaxResult.error("盲票不存在");
             }
-            //创建线程
-            int threadNumber = 5;//线程数量
-            long start = System.currentTimeMillis();//开始时间
-            long begin = start / 1000;
-            LogUtil.warn(logger,"开始时间{------------------------------} S",begin);
-            // 线程总数的基数处理数据的条数
-            int threadTotalStep = ticketList.size() / threadNumber;
-            // 数据余数
-            int remainderNumber = ticketList.size() % threadNumber;
-            // 创建线程池,实际使用推荐用自定义线程池
-            ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
-            CountDownLatch countDownLatch = new CountDownLatch(threadNumber);
-
-            for (int i = 0; i < threadNumber; i++) {
-                // 计算当前线程的总数
-                int threadTotal = threadTotalStep;
-                if (remainderNumber > 0 && i == threadNumber - 1) {
-                    threadTotal += remainderNumber;
-                }
-                executorService.execute(() -> {
-                    for(Ticket ticket : ticketList){
-                        try {
-                            Thread.sleep(1);
-                        } catch (InterruptedException e) {
-                            e.printStackTrace();
-                        }
-                        ticket.setStatus(TicketStatusEnum.STOP);
-                        ticketService.saveOrUpdate(ticket);
-                    }
-                    countDownLatch.countDown();
-                });
-            }
-            try {
-                countDownLatch.await();
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-            long end = (System.currentTimeMillis() - start) / 1000;
-            LogUtil.warn(logger,"总耗时间{------------------------------} S", end);
+//            //创建线程
+//            int threadNumber = 5;//线程数量
+//            long start = System.currentTimeMillis();//开始时间
+//            long begin = start / 1000;
+//            LogUtil.warn(logger,"开始时间{------------------------------} S",begin);
+//            // 线程总数的基数处理数据的条数
+//            int threadTotalStep = ticketList.size() / threadNumber;
+//            // 数据余数
+//            int remainderNumber = ticketList.size() % threadNumber;
+//            // 创建线程池,实际使用推荐用自定义线程池
+//            ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
+//            CountDownLatch countDownLatch = new CountDownLatch(threadNumber);
+
+//            for (int i = 0; i < threadNumber; i++) {
+//                // 计算当前线程的总数
+//                int threadTotal = threadTotalStep;
+//                if (remainderNumber > 0 && i == threadNumber - 1) {
+//                    threadTotal += remainderNumber;
+//                }
+//                executorService.execute(() -> {
+//                    for(Ticket ticket : ticketList){
+//                        try {
+//                            Thread.sleep(1);
+//                        } catch (InterruptedException e) {
+//                            e.printStackTrace();
+//                        }
+//                        ticket.setStatus(TicketStatusEnum.STOP);
+//                        ticketService.saveOrUpdate(ticket);
+//                    }
+//                    countDownLatch.countDown();
+//                });
+//            }
+//            try {
+//                countDownLatch.await();
+//            } catch (InterruptedException e) {
+//                e.printStackTrace();
+//            }
+//            long end = (System.currentTimeMillis() - start) / 1000;
+//            LogUtil.warn(logger,"总耗时间{------------------------------} S", end);
         }else {
             return AjaxResult.error("当前不是已上架或者已下架的线下盲票,不能进行停售操作");
         }

+ 42 - 7
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -424,22 +424,58 @@ public class UserTicketController extends BaseApiController {
         if (null == ticket) {
             return AjaxResult.error("参数异常,盲票不存在");
         }
-
         TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
         if (ticketBox.getIsEncrypt() == 1 && match) {
             LogUtil.error(logger, "非法访问,serialNo:{0},param:{1}", serialNo, param);
             return AjaxResult.error("非法访问!");
         }
-
-
-    /*if (ticket.getStatus() == TicketStatusEnum.CASHED) {
-      return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1017);
-    }*/
         TicketPackage ticketPackage = ticketPackageService.getById(ticket.getPkgId());
+        //盲票状态:2已激活、3已兑奖、4付款中'
+        //处理线下票停售(type线下票。status已上架或已下架)
+        //判断盲票是否付款
+        // 未付款
+        AjaxResult ajaxResult = null;
+        if(ticket.getStatus().equals(TicketStatusEnum.STOP)){
+            LogUtil.warn(logger, "该盲票已停售", new Object[]{ticket.getSerialNo(), ticket.getPkgId()});
+            return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1027);
+        }
+        //未激活
         if (ticketPackage.getStatus() == TicketPkgStatusEnum.FOR_SALE) {
             LogUtil.warn(logger, "盲票未激活。sn:{0},pkgId:{1}", new Object[]{ticket.getSerialNo(), ticket.getPkgId()});
+            if(ticketBox.getStatus().equals(TicketBoxStatusEnum.STOP)){
+                LogUtil.warn(logger, "该盲票已停售", new Object[]{ticket.getSerialNo(), ticket.getPkgId()});
+                return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1027);
+            }
             return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1023);
+        }else if(ticketPackage.getStatus() == TicketPkgStatusEnum.SOLD){
+            //盲票已激活
+            LogUtil.warn(logger, "盲票已激活", new Object[]{ticket.getSerialNo(), ticket.getPkgId()});
+            if(ticket.getStatus().equals(TicketStatusEnum.NOT_PAY)){
+                if(ticketBox.getStatus().equals(TicketBoxStatusEnum.STOP)){
+                    LogUtil.warn(logger, "该盲票已停售", new Object[]{ticket.getSerialNo(), ticket.getPkgId()});
+                    return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1027);
+                }
+                ajaxResult = queryLuckyNumTrue(ticketPackage, ticket, ticketBox);
+            }else if(ticket.getStatus().equals(TicketStatusEnum.STOP)){
+                return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1027);
+            }else{
+                ajaxResult = queryLuckyNumTrue(ticketPackage, ticket, ticketBox);
+            }
         }
+        return ajaxResult;
+    }
+
+    /**
+     * 正常查询幸运数字的逻辑
+     * @param ticketPackage
+     * @param ticket
+     * @param ticketBox
+     * @return
+     */
+    private AjaxResult queryLuckyNumTrue(TicketPackage ticketPackage,Ticket ticket,TicketBox ticketBox) {
+        /*if (ticket.getStatus() == TicketStatusEnum.CASHED) {
+          return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1017);
+        }*/
         ChannelOrderDetail channelOrderDetail = channelOrderDetailService.getOne(
             new LambdaQueryWrapper<ChannelOrderDetail>().eq(ChannelOrderDetail::getPkgId, ticketPackage.getPkgId()));
         TicketVO ticketVO = new TicketVO();
@@ -470,7 +506,6 @@ public class UserTicketController extends BaseApiController {
             // 预付票设置售价为0
             ticketVO.setSalePrice(0);
         }
-
         return AjaxResult.success(ticketVO);
     }