Explorar o código

Merge branch 'dev' of maopiao/mp-server into mp-server-test

盲票 hai 1 ano
pai
achega
6957e613e0

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

@@ -22,6 +22,7 @@ import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.*;
 import com.qs.mp.common.pulsar.PulsarClientService;
 import com.qs.mp.common.utils.AESUtil;
+import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.RSAUtil;
 import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
@@ -29,6 +30,9 @@ import io.swagger.annotations.*;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 import ma.glasnost.orika.MapperFacade;
 import org.apache.commons.lang3.StringUtils;
@@ -496,7 +500,7 @@ public class TicketBoxMgrController extends BaseApiController {
         }
         //更新盲票列表的状态
         List<Ticket> ticketList = ticketService
-            .list(new LambdaQueryWrapper<Ticket>().eq(Ticket::getBoxId, ticketBox.getBoxId()));
+            .list(new LambdaQueryWrapper<Ticket>().eq(Ticket::getBoxId, ticketBox.getBoxId()).eq(Ticket::getStatus,TicketStatusEnum.NOT_PAY));
         //更新盲票包的状态
         List<TicketPackage> ticketPackageList = ticketPackageService.list(new LambdaQueryWrapper<TicketPackage>()
             .eq(TicketPackage::getBoxId, ticketBox.getBoxId()));
@@ -504,18 +508,56 @@ public class TicketBoxMgrController extends BaseApiController {
             ticketBoxService.update(new LambdaUpdateWrapper<TicketBox>()
                 .set(TicketBox::getStatus, TicketBoxStatusEnum.STOP)
                 .eq(TicketBox::getBoxId, ticketBox.getBoxId()));
-            for(TicketPackage ticketPackage : ticketPackageList){
-                ticketPackage.setStatus(TicketPkgStatusEnum.STOP);
-                ticketPackageService.saveOrUpdate(ticketPackage);
+            if(ticketPackageList != null && ticketPackageList.size()>0){
+                for(TicketPackage ticketPackage : ticketPackageList){
+                    ticketPackage.setStatus(TicketPkgStatusEnum.STOP);
+                    ticketPackageService.saveOrUpdate(ticketPackage);
+                }
+            }
+            if(ticketList == null || ticketList.size() == 0){
+                return AjaxResult.error("盲票不存在");
             }
-            for(Ticket ticket : ticketList){
-                if(ticket.getStatus().equals(TicketStatusEnum.NOT_PAY)){
-                    ticket.setStatus(TicketStatusEnum.STOP);
-                    ticketService.saveOrUpdate(ticket);
+            //创建线程
+            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("当前不是已上架的线下盲票,不能进行停售操作");
+            return AjaxResult.error("当前不是已上架或者已下架的线下盲票,不能进行停售操作");
         }
         return AjaxResult.success("操作成功");
     }