Bladeren bron

Merge remote-tracking branch 'origin/master'

bihuisong 4 maanden geleden
bovenliggende
commit
1b4e9535ac
26 gewijzigde bestanden met toevoegingen van 384 en 90 verwijderingen
  1. 14 14
      qmjszx-admin/src/main/java/beilv/web/controller/bootacourse/bootACourseController.java
  2. 1 1
      qmjszx-admin/src/main/java/beilv/web/controller/cardpurchaserecord/CardPurchaseRecordController.java
  3. 23 6
      qmjszx-admin/src/main/java/beilv/web/controller/carinformation/cardAppController.java
  4. 9 1
      qmjszx-admin/src/main/java/beilv/web/controller/stadium/StadiumController.java
  5. 48 1
      qmjszx-admin/src/main/resources/templates/competition/add.html
  6. 44 0
      qmjszx-admin/src/main/resources/templates/competition/edit.html
  7. 4 4
      qmjszx-admin/src/main/resources/templates/record/record.html
  8. 22 5
      qmjszx-business/src/main/java/beilv/bootacourse/domain/BootACourse.java
  9. 3 1
      qmjszx-business/src/main/java/beilv/bootacourse/mapper/BootACourseMapper.java
  10. 12 2
      qmjszx-business/src/main/java/beilv/cardpurchaserecord/domain/CardPurchaseRecord.java
  11. 8 0
      qmjszx-business/src/main/java/beilv/cardpurchaserecord/mapper/CardPurchaseRecordMapper.java
  12. 10 2
      qmjszx-business/src/main/java/beilv/cardpurchaserecord/service/ICardPurchaseRecordService.java
  13. 44 20
      qmjszx-business/src/main/java/beilv/cardpurchaserecord/service/impl/CardPurchaseRecordServiceImpl.java
  14. 5 0
      qmjszx-business/src/main/java/beilv/competition/domain/Competition.java
  15. 1 1
      qmjszx-business/src/main/java/beilv/competition/mapper/CompetitionMapper.java
  16. 10 3
      qmjszx-business/src/main/java/beilv/competition/service/impl/CompetitionServiceImpl.java
  17. 8 1
      qmjszx-business/src/main/java/beilv/competition/task/CloseReg.java
  18. 28 4
      qmjszx-business/src/main/java/beilv/stadium/domain/Stadium.java
  19. 5 5
      qmjszx-business/src/main/java/beilv/stadium/service/impl/StadiumServiceImpl.java
  20. 3 0
      qmjszx-business/src/main/java/beilv/usermembershipcard/service/impl/UserMembershipCardServiceImpl.java
  21. 18 8
      qmjszx-business/src/main/resources/mapper/bootacourse/BootACourseMapper.xml
  22. 23 0
      qmjszx-business/src/main/resources/mapper/card/CardPurchaseRecordMapper.xml
  23. 12 4
      qmjszx-business/src/main/resources/mapper/competition/CompetitionMapper.xml
  24. 15 6
      qmjszx-business/src/main/resources/mapper/stadium/StadiumMapper.xml
  25. 13 0
      qmjszx-common/src/main/java/beilv/common/utils/DictUtils.java
  26. 1 1
      qmjszx-quartz/src/main/java/beilv/quartz/task/SiteTask.java

+ 14 - 14
qmjszx-admin/src/main/java/beilv/web/controller/bootacourse/bootACourseController.java

@@ -23,10 +23,7 @@ import beilv.venue.domain.BeilvVenue;
 import beilv.venue.service.IBeilvVenueService;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
@@ -142,20 +139,17 @@ public class bootACourseController extends BaseController {
         //生成订单编号
         String orderId = IdUtils.fastSimpleUUID();
         //生成订单信息
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         BootACourse bootACourse = new BootACourse(
                 course.getUserId(), //用户id
                 course.getContactPeople(), //联系人
                 course.getContactNumber(), //联系电话
-                simpleDateFormat.format(new Date()), //下单时间
+                new Date(), //下单时间
                 "payment_status_to_be_paid", //支付状态
                 orderId, //订单比那好
                 course.getTicketId(), //场次id
                 course.getTicketType(), //场地类型
                 course.getClubCardId(), //会员卡号
                 refund); //最晚退单时间
-
-
         //验证场次是否可用
         if (courseService.isOk(course)) {
             //调用会员卡接口减少次数
@@ -168,7 +162,7 @@ public class bootACourseController extends BaseController {
             cardService.addStream(memberStream);
 
             //扣除成功后, 修改订单状态为已付款.
-            bootACourse.setPaymentTime(simpleDateFormat.format(new Date()));
+            bootACourse.setPaymentTime(new Date());
             bootACourse.setPaymentStatus("payment_status_have_paid");
 
             //将门票信息修改为2: 线上预约的时段;
@@ -186,10 +180,16 @@ public class bootACourseController extends BaseController {
     /**
      * 查询订单
      */
-    @PostMapping("/getCourseList")
-    public AjaxResult getCourseList(@RequestBody BootACourseBO courseBO) {
-        courseBO.setUserId(courseBO.getUserId());
-        return AjaxResult.success(courseService.getCourseList(courseBO));
+    @GetMapping("/getCourseList")
+    public AjaxResult getCourseList(BootACourseBO courseBO) {
+        startPage();
+        List<BootACourse> courseList = courseService.getCourseList(courseBO);
+        Map<String, String> paymentStatus = DictUtils.getDictCacheToMap("payment_status");
+        courseList.forEach(course->{
+            course.setPaymentStatusLabel(paymentStatus.get(course.getPaymentStatus()));
+            course.setCoverList(course.getCover().split(","));
+        });
+        return AjaxResult.success(courseList);
     }
 
 
@@ -225,7 +225,7 @@ public class bootACourseController extends BaseController {
 
             //修改订单信息状态为退款,
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            course.setRefundTime(simpleDateFormat.format(new Date()));
+            course.setRefundTime(new Date());
             course.setRefundInstructions(courseBo.getRefundInstructions());
             course.setPaymentStatus("payment_status_refunded");
             return toAjax(courseService.updateCourse(course));

+ 1 - 1
qmjszx-admin/src/main/java/beilv/web/controller/cardpurchaserecord/CardPurchaseRecordController.java

@@ -78,7 +78,7 @@ public class CardPurchaseRecordController extends BaseController {
     @PostMapping("/add")
     @ResponseBody
     public AjaxResult addSave(CardPurchaseRecord cardPurchaseRecord) {
-        return toAjax(cardPurchaseRecordService.insertCardPurchaseRecord(cardPurchaseRecord));
+        return AjaxResult.success(cardPurchaseRecordService.insertCardPurchaseRecord(cardPurchaseRecord));
     }
 
     /**

+ 23 - 6
qmjszx-admin/src/main/java/beilv/web/controller/carinformation/cardAppController.java

@@ -6,7 +6,6 @@ import beilv.carinformation.domain.CarInformation;
 import beilv.carinformation.service.ICarInformationService;
 import beilv.common.core.controller.BaseController;
 import beilv.common.core.domain.AjaxResult;
-import beilv.system.service.ISysMemberService;
 import beilv.usermembershipcard.domain.UserMembershipCard;
 import beilv.usermembershipcard.service.IUserMembershipCardService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import java.util.List;
+
 /**
  * 会员卡AppController
  *
@@ -34,9 +35,6 @@ public class cardAppController extends BaseController {
 
     @Autowired
     private IUserMembershipCardService userMembershipCardService;
-
-    @Autowired
-    private ISysMemberService iSysMemberService;
     /**
      * 查询卡种信息列表
      */
@@ -47,12 +45,31 @@ public class cardAppController extends BaseController {
     }
 
     /**
-     * 新增保存购卡记录
+     * 购卡生成订单
      */
     @PostMapping("/addCard")
     @ResponseBody
     public AjaxResult addCard(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
-        return toAjax(cardPurchaseRecordService.insertCardPurchaseRecord(cardPurchaseRecord));
+        return AjaxResult.success(cardPurchaseRecordService.insertCardPurchaseRecord(cardPurchaseRecord));
+    }
+
+    /**
+     * 查询购卡记录列表
+     */
+    @PostMapping("/getRecordlist")
+    @ResponseBody
+    public AjaxResult list(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
+        List<CardPurchaseRecord> list = cardPurchaseRecordService.selectCardPurchaseRecordList(cardPurchaseRecord);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 购卡回调
+     */
+    @PostMapping("/addCardCallback")
+    @ResponseBody
+    public AjaxResult addCardCallback(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
+        return toAjax(cardPurchaseRecordService.addCardCallback(cardPurchaseRecord));
     }
 
     /**

+ 9 - 1
qmjszx-admin/src/main/java/beilv/web/controller/stadium/StadiumController.java

@@ -2,7 +2,9 @@ package beilv.web.controller.stadium;
 
 import beilv.common.core.controller.BaseController;
 import beilv.common.core.domain.AjaxResult;
+import beilv.common.core.domain.entity.SysDictData;
 import beilv.common.core.page.TableDataInfo;
+import beilv.common.utils.DictUtils;
 import beilv.common.utils.StringUtils;
 import beilv.common.utils.uuid.IdUtils;
 import beilv.competition.domain.Competition;
@@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/app-api/stadium")
@@ -74,7 +77,12 @@ public class StadiumController extends BaseController {
     @GetMapping("/getStadiumList")
     public AjaxResult getStadiumList(StadiumBO stadiumBO) {
         startPage();
-        return AjaxResult.success(stadiumService.getStadiumList(stadiumBO));
+        Map<String, String> paymentStatus = DictUtils.getDictCacheToMap("payment_status");
+        List<Stadium> stadiumList = stadiumService.getStadiumList(stadiumBO);
+        stadiumList.forEach(stadium -> {
+            stadium.setPaymentStatusLabel(paymentStatus.get(stadium.getPaymentStatus()));
+        });
+        return AjaxResult.success(getDataTable(stadiumList));
     }
 
     /**

+ 48 - 1
qmjszx-admin/src/main/resources/templates/competition/add.html

@@ -4,6 +4,7 @@
     <th:block th:include="include :: header('新增赛事发布')"/>
     <th:block th:include="include :: datetimepicker-css"/>
     <th:block th:include="include :: summernote-css"/>
+    <th:block th:include="include :: bootstrap-fileinput-css"/>
 </head>
 <body class="white-bg">
 <div class="wrapper wrapper-content animated fadeInRight ibox-content" >
@@ -111,11 +112,21 @@
 
             </div>
         </div>
+        <div class="form-group">
+            <label class="col-sm-2 control-label">封面:</label>
+            <div class="col-sm-10">
+                <input type="hidden" name="competitionImg">
+                <div class="file-loading">
+                    <input class="form-control file-upload" id="competitionImg" name="file" type="file">
+                </div>
+            </div>
+        </div>
     </form>
 </div>
 <th:block th:include="include :: footer"/>
 <th:block th:include="include :: datetimepicker-js"/>
 <th:block th:include="include :: summernote-js"/>
+<th:block th:include="include :: bootstrap-fileinput-js"/>
 <script th:inline="javascript">
     var prefix = ctx + "competition"
     $("#form-competition-add").validate({
@@ -133,6 +144,42 @@
         },
     });
 
+
+
+    $(".file-upload").each(function (i) {
+        var inputName = this.id;
+        var val = $("input[name='" + inputName + "']").val();
+        // 将已上传的图片路径分割成数组
+        var initialPreview = val ? val.split(',') : [];
+
+        $(this).fileinput({
+            uploadUrl: ctx + 'common/upload',
+            initialPreviewAsData: true,
+            initialPreview: initialPreview,
+            maxFileCount: 1,
+            allowedFileExtensions: ['jpg', 'png'],
+            maxFileSize: 10240,
+            multiple: false,
+            // required: true
+        }).on('fileuploaded', function (event, data, previewId, index) {
+            var inputName = event.currentTarget.id;
+            var fullUrl = data.response.url; // 获取完整的URL
+            var urlObject = new URL(fullUrl);
+            var relativePath = urlObject.pathname; // 获取路径部分
+            var newBaseUrl = "http://localhost"; // 新的URL
+            var absoluteUrl = newBaseUrl + relativePath; // 拼接完整的URL
+
+            // 直接设置输入框的值为新上传的图片URL
+            $("input[name='" + inputName + "']").val(absoluteUrl);
+        }).on('fileremoved', function (event, key, jqXHR, pd) {
+            var inputName = event.currentTarget.id;
+            // 移除文件后,清空输入框的值
+            $("input[name='" + inputName + "']").val('');
+        });
+
+        $(this).fileinput('_initFileActions');
+    });
+
     function submitHandler() {
         var applyStartTime = $('#applyStartTime').val()
         var applyEndTime = $('#applyEndTime').val()
@@ -171,7 +218,7 @@
         $('.summernote').summernote({
             lang: 'zh-CN',
             dialogsInBody: true,
-            height: 400,
+            height: 300,
             callbacks: {
                 onChange: function (contents, $edittable) {
                     $("input[name='" + this.id + "']").val(contents);

+ 44 - 0
qmjszx-admin/src/main/resources/templates/competition/edit.html

@@ -4,6 +4,7 @@
     <th:block th:include="include :: header('修改赛事发布')" />
     <th:block th:include="include :: datetimepicker-css" />
     <th:block th:include="include :: summernote-css" />
+    <th:block th:include="include :: bootstrap-fileinput-css"/>
 </head>
 <body class="white-bg">
     <div class="wrapper wrapper-content animated fadeInRight ibox-content">
@@ -96,11 +97,21 @@
                     </div>
                 </div>
             </div>
+            <div class="form-group">
+                <label class="col-sm-2 control-label">图片:</label>
+                <div class="col-sm-10">
+                    <input type="hidden" name="noticeImg" th:field="*{competitionImg}">
+                    <div class="file-loading">
+                        <input class="form-control file-upload" id="competitionImg" name="file" type="file" >
+                    </div>
+                </div>
+            </div>
         </form>
     </div>
     <th:block th:include="include :: footer" />
     <th:block th:include="include :: datetimepicker-js" />
     <th:block th:include="include :: summernote-js" />
+    <th:block th:include="include :: bootstrap-fileinput-js"/>
     <script th:inline="javascript">
         var prefix = ctx + "competition";
         $("#form-competition-edit").validate({
@@ -165,6 +176,39 @@
                 $('#' + this.id).summernote('code', content);
             })
         });
+
+        $(".file-upload").each(function (i) {
+            var inputName = this.id;
+            var val = $("input[name='" + inputName + "']").val();
+            // 将已上传的图片路径分割成数组
+            var initialPreview = val ? val.split(',') : [];
+            $(this).fileinput({
+                uploadUrl: ctx + 'common/upload',
+                initialPreviewAsData: true,
+                initialPreview: initialPreview,
+                maxFileCount: 1,
+                allowedFileExtensions: ['jpg', 'png'],
+                maxFileSize: 10240,
+                multiple: false,
+            }).on('fileuploaded', function (event, data, previewId, index) {
+                var inputName = event.currentTarget.id;
+                var existingValue = $("input[name='" + inputName + "']").val();
+                var fullUrl = data.response.url; // 获取完整的URL
+                var urlObject = new URL(fullUrl);
+                var relativePath = urlObject.pathname; // 获取路径部分
+                // var newBaseUrl = "http://192.168.4.27"; // 新的基URL
+                var newBaseUrl = "http://localhost"; // 新的基URL
+                var absoluteUrl = newBaseUrl + relativePath; // 拼接完整的URL
+
+                // 如果已经存在值,则替换为新值
+                $("input[name='" + inputName + "']").val(absoluteUrl);
+            }).on('fileremoved', function (event, id, index) {
+                var inputName = event.currentTarget.id;
+                $("input[name='" + inputName + "']").val(''); // 移除后清空输入框
+            });
+
+            $(this).fileinput('_initFileActions');
+        });
     </script>
 </body>
 </html>

+ 4 - 4
qmjszx-admin/src/main/resources/templates/record/record.html

@@ -20,7 +20,7 @@
                         </li>
                         <li>
                             <label>状态:</label>
-                            <select name="state" th:with="state=${@dict.getType('card_status')}">
+                            <select name="state" th:with="state=${@dict.getType('payment_status')}">
                                 <option value="">所有</option>
                                 <option th:each="dict : ${state}" th:text="${dict.dictLabel}"
                                         th:value="${dict.dictValue}"></option>
@@ -38,9 +38,9 @@
         </div>
 
         <div class="btn-group-sm" id="toolbar" role="group">
-            <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:record:add">
-                <i class="fa fa-plus"></i> 添加
-            </a>
+<!--            <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:record:add">-->
+<!--                <i class="fa fa-plus"></i> 添加-->
+<!--            </a>-->
 <!--            <a class="btn btn-primary single disabled" onclick="$.operate.edit()"-->
 <!--               shiro:hasPermission="system:record:edit">-->
 <!--                <i class="fa fa-edit"></i> 修改-->

+ 22 - 5
qmjszx-business/src/main/java/beilv/bootacourse/domain/BootACourse.java

@@ -30,23 +30,28 @@ public class BootACourse {
     /**
      * 下单时间
      */
-    private String registrationTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date registrationTime;
     /**
      * 支付时间
      */
-    private String paymentTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date paymentTime;
     /**
      * 取消时间
      */
-    private String cancellationTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date cancellationTime;
     /**
      * 退款时间
      */
-    private String refundTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date refundTime;
     /**
      * 支付状态
      */
     private String paymentStatus;
+    private String paymentStatusLabel;
     /**
      * 订单编号
      */
@@ -72,10 +77,22 @@ public class BootACourse {
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
     private Date refund;
+    /**
+     * 核验时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date verificationTime;
+
+
+    private String session;
+    private String ticketDate;
+    private String siteName;
+    private String cover;
+    private String[] coverList;
 
 
 
-    public BootACourse(String userId, String contactPeople, String contactNumber, String registrationTime, String paymentStatus, String orderId, String ticketId, String orderType, String clubCardId, Date refund) {
+    public BootACourse(String userId, String contactPeople, String contactNumber, Date registrationTime, String paymentStatus, String orderId, String ticketId, String orderType, String clubCardId, Date refund) {
         this.userId = userId;
         this.contactPeople = contactPeople;
         this.contactNumber = contactNumber;

+ 3 - 1
qmjszx-business/src/main/java/beilv/bootacourse/mapper/BootACourseMapper.java

@@ -2,7 +2,9 @@ package beilv.bootacourse.mapper;
 
 import beilv.bootacourse.domain.BootACourse;
 import beilv.bootacourse.domain.BootACourseBO;
+import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 public interface BootACourseMapper {
@@ -16,5 +18,5 @@ public interface BootACourseMapper {
 
     List<BootACourse> selectPaidOrders();
 
-    void updateOrderStatusToVerification(List<String> orderIdsToUpdate);
+    void updateOrderStatusToVerification(@Param("orderIds") List<String> orderIdsToUpdate, @Param("verificationTime") String verificationTime);
 }

+ 12 - 2
qmjszx-business/src/main/java/beilv/cardpurchaserecord/domain/CardPurchaseRecord.java

@@ -66,8 +66,7 @@ public class CardPurchaseRecord extends BaseEntity
     @Excel(name = "支付方式")
     private String paymentWay;
 
-    /** 状态(1:购卡:退卡) */
-//    @Excel(name = "状态", readConverterExp = "待=使用、已使用、已退款")
+    /** 状态(待支付:payment_status_to_be_paid、已支付:payment_status_have_paid、已取消:payment_status_cancelled、已退款:payment_status_refunded) */
     private String type;
 
     @Excel(name = "状态")
@@ -81,6 +80,17 @@ public class CardPurchaseRecord extends BaseEntity
 //    @Excel(name = "版本")
     private String version;
 
+    //订单号
+    private String orderId;
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
     public String getCardTypeLabel() {
         return cardTypeLabel;
     }

+ 8 - 0
qmjszx-business/src/main/java/beilv/cardpurchaserecord/mapper/CardPurchaseRecordMapper.java

@@ -59,4 +59,12 @@ public interface CardPurchaseRecordMapper {
      * @return 结果
      */
     public int deleteCardPurchaseRecordByIds(String[] ids);
+
+    /*
+    * 按订单号修改
+    *
+    * @author 韩福成
+    * @date 2025/1/16 下午2:39
+    */
+    public int updateRecord(CardPurchaseRecord cardPurchaseRecord);
 }

+ 10 - 2
qmjszx-business/src/main/java/beilv/cardpurchaserecord/service/ICardPurchaseRecordService.java

@@ -28,12 +28,20 @@ public interface ICardPurchaseRecordService {
     public List<CardPurchaseRecord> selectCardPurchaseRecordList(CardPurchaseRecord cardPurchaseRecord);
 
     /**
-     * 新增购卡记录
+     * 购卡生成订单
      *
      * @param cardPurchaseRecord 购卡记录
      * @return 结果
      */
-    public int insertCardPurchaseRecord(CardPurchaseRecord cardPurchaseRecord);
+    public String insertCardPurchaseRecord(CardPurchaseRecord cardPurchaseRecord);
+
+    /*
+    * 购卡回调
+    *
+    * @author 韩福成
+    * @date 2025/1/16 下午2:25
+    */
+    public int addCardCallback(CardPurchaseRecord cardPurchaseRecord);
 
     /**
      * 修改购卡记录

+ 44 - 20
qmjszx-business/src/main/java/beilv/cardpurchaserecord/service/impl/CardPurchaseRecordServiceImpl.java

@@ -12,8 +12,10 @@ import beilv.usermembershipcard.domain.UserMembershipCard;
 import beilv.usermembershipcard.mapper.UserMembershipCardMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.UUID;
 
 /**
  * 购卡记录Service业务层处理
@@ -52,41 +54,63 @@ public class CardPurchaseRecordServiceImpl implements ICardPurchaseRecordService
     public List<CardPurchaseRecord> selectCardPurchaseRecordList(CardPurchaseRecord cardPurchaseRecord) {
         List<CardPurchaseRecord> cardPurchaseRecords = cardPurchaseRecordMapper.selectCardPurchaseRecordList(cardPurchaseRecord);
         for (CardPurchaseRecord cardPurchaseRecord2 : cardPurchaseRecords) {
-            cardPurchaseRecord2.setTypeLabel(dictDataService.selectDictLabel("card_status",cardPurchaseRecord2.getType()));
+            cardPurchaseRecord2.setTypeLabel(dictDataService.selectDictLabel("payment_status",cardPurchaseRecord2.getType()));
             cardPurchaseRecord2.setCardTypeLabel(dictDataService.selectDictLabel("site_type",cardPurchaseRecord2.getCardType()));
         }
         return cardPurchaseRecords;
     }
 
-    /**
-     * 新增购卡记录
-     *
-     * @param cardPurchaseRecord 购卡记录
-     * @return 结果
-     */
+    /*
+    * 购卡生成订单
+    *
+    * @author 韩福成
+    * @date 2025/1/16 下午2:20
+    */
     @Override
-    public int insertCardPurchaseRecord(CardPurchaseRecord cardPurchaseRecord) {
+    public String insertCardPurchaseRecord(CardPurchaseRecord cardPurchaseRecord) {
         //新增购卡记录
         if (StringUtils.isEmpty(cardPurchaseRecord.getCreateBy())) {
             cardPurchaseRecord.setCreateBy(ShiroUtils.getUserId().toString());
         }
         cardPurchaseRecord.setCreateTime(DateUtils.getNowDate());
-        cardPurchaseRecord.setType("1");
+        cardPurchaseRecord.setType("payment_status_to_be_paid");
         cardPurchaseRecord.setTime(DateUtils.getNowDate());
         cardPurchaseRecord.setVersion("0");
+        cardPurchaseRecord.setOrderId(UUID.randomUUID().toString());
         cardPurchaseRecordMapper.insertCardPurchaseRecord(cardPurchaseRecord);
-        //新增会员管理
-        UserMembershipCard userMembershipCard = new UserMembershipCard();
-        userMembershipCard.setUserId(cardPurchaseRecord.getUserId());
-        userMembershipCard.setRecordId(cardPurchaseRecord.getId().toString());
-        userMembershipCard.setRemainingNumber(cardPurchaseRecord.getTotalNumber());
-        if (StringUtils.isEmpty(cardPurchaseRecord.getCreateBy())) {
-            userMembershipCard.setCreateBy(ShiroUtils.getUserId().toString());
+        return cardPurchaseRecord.getOrderId();
+    }
+
+    /**
+     * 购卡回调
+     *
+     * @param cardPurchaseRecord 购卡记录
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int addCardCallback(CardPurchaseRecord cardPurchaseRecord) {
+        //已支付状态新增会员管理
+        if (cardPurchaseRecord.getType().equals("payment_status_have_paid")){
+            UserMembershipCard userMembershipCard = new UserMembershipCard();
+            userMembershipCard.setUserId(cardPurchaseRecord.getUserId());
+            userMembershipCard.setRecordId(cardPurchaseRecord.getId().toString());
+            userMembershipCard.setRemainingNumber(cardPurchaseRecord.getTotalNumber());
+            if (StringUtils.isEmpty(cardPurchaseRecord.getCreateBy())) {
+                userMembershipCard.setCreateBy(ShiroUtils.getUserId().toString());
+            }
+            userMembershipCard.setCreateTime(DateUtils.getNowDate());
+            userMembershipCard.setState("3");
+            userMembershipCard.setVersion("0");
+            userMembershipCardMapper.insertUserMembershipCard(userMembershipCard);
+        }
+        //修改购卡记录状态
+        if (StringUtils.isEmpty(cardPurchaseRecord.getUpdateBy())) {
+            cardPurchaseRecord.setUpdateBy(ShiroUtils.getUserId().toString());
         }
-        userMembershipCard.setCreateTime(DateUtils.getNowDate());
-        userMembershipCard.setState("3");
-        userMembershipCard.setVersion("0");
-        return userMembershipCardMapper.insertUserMembershipCard(userMembershipCard);
+        cardPurchaseRecord.setTime(DateUtils.getNowDate());
+        cardPurchaseRecord.setUpdateTime(DateUtils.getNowDate());
+        return cardPurchaseRecordMapper.updateRecord(cardPurchaseRecord);
     }
 
     /**

+ 5 - 0
qmjszx-business/src/main/java/beilv/competition/domain/Competition.java

@@ -130,11 +130,16 @@ public class Competition extends BaseEntity {
      * 发布人id
      */
     private String publishBy;
+
     /**
      * 发布时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date publishTime;
+    /**
+     * 封面
+     */
+    private String competitionImg;
 
     @Override
     public String toString() {

+ 1 - 1
qmjszx-business/src/main/java/beilv/competition/mapper/CompetitionMapper.java

@@ -67,7 +67,7 @@ public interface CompetitionMapper {
 
     boolean selectStadumIsOpenById(String id);
 
-    void updateBookARace(@Param("id") Integer id);
+    void updateBookARace(Stadium stadium);
 
     Competition getCompetitionInfo(@Param("orderId") String orderId);
 }

+ 10 - 3
qmjszx-business/src/main/java/beilv/competition/service/impl/CompetitionServiceImpl.java

@@ -6,6 +6,7 @@ import beilv.competition.domain.Competition;
 import beilv.competition.mapper.CompetitionMapper;
 import beilv.competition.service.ICompetitionService;
 import beilv.competition.task.CloseReg;
+import beilv.stadium.domain.Stadium;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -35,14 +36,20 @@ public class CompetitionServiceImpl implements ICompetitionService {
     public void init() {
         // 找到所有报名中的赛事
         Competition competition = new Competition();
-        competition.setCompetitionState("competiton_state_2");
+        competition.setCompetitionState(BAO_MING_ZHONG);
         List<Competition> competitionList = this.selectCompetitionList(competition);
         competitionList.forEach(item -> {
             Date date = new Date(item.getApplyStartTime().getTime() - (long) (item.getApplyBeforeTime() * 60 * 60 * 1000));
             if (new Date().getTime() >= date.getTime()) {
-                item.setCompetitionState("competiton_state_3");
+                item.setCompetitionState(BAO_MING_JIE_SHU);
                 competitionMapper.updateCompetition(item);
-                competitionMapper.updateBookARace(item.getId());
+
+                Stadium stadium = new Stadium();
+                stadium.setCompetitionId(String.valueOf(item.getId()));
+                stadium.setPaymentStatus("payment_status_verification");
+                stadium.setVerificationTime(new Date());
+
+                competitionMapper.updateBookARace(stadium);
             } else {
                 Timer timer = new Timer();
                 timer.schedule(new CloseReg(competitionMapper, item.getId()), date);

+ 8 - 1
qmjszx-business/src/main/java/beilv/competition/task/CloseReg.java

@@ -2,7 +2,9 @@ package beilv.competition.task;
 
 import beilv.competition.domain.Competition;
 import beilv.competition.mapper.CompetitionMapper;
+import beilv.stadium.domain.Stadium;
 
+import java.util.Date;
 import java.util.TimerTask;
 
 public class CloseReg extends TimerTask {
@@ -23,6 +25,11 @@ public class CloseReg extends TimerTask {
         competition.setCompetitionState("competiton_state_3");
         this.competitionMapper.updateCompetition(competition);
 
-        this.competitionMapper.updateBookARace(id);
+        //核验当前赛事下已支付的订单
+        Stadium stadium = new Stadium();
+        stadium.setCompetitionId(String.valueOf(id));
+        stadium.setPaymentStatus("payment_status_verification");
+        stadium.setVerificationTime(new Date());
+        this.competitionMapper.updateBookARace(stadium);
     }
 }

+ 28 - 4
qmjszx-business/src/main/java/beilv/stadium/domain/Stadium.java

@@ -1,7 +1,10 @@
 package beilv.stadium.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.*;
 
+import java.util.Date;
+
 @Getter
 @Setter
 @ToString
@@ -27,19 +30,23 @@ public class Stadium {
     /**
      * 下单时间
      */
-    private String registrationTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date registrationTime;
     /**
      * 支付时间
      */
-    private String paymentTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date paymentTime;
     /**
      * 取消时间
      */
-    private String cancellationTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date cancellationTime;
     /**
      * 退款时间
      */
-    private String refundTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date refundTime;
     /**
      * 支付状态
      */
@@ -61,4 +68,21 @@ public class Stadium {
      */
     private String refundInstructions;
 
+    /**
+     * 核验时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date verificationTime;
+    /**
+     * 实付金额
+     */
+    private Double amountActuallyPaid;
+
+
+    private String competitionTitle;
+    private String competitionExpense;
+    private String viewingTicket;
+    private String competitionImg;
+    private String paymentStatusLabel;
+
 }

+ 5 - 5
qmjszx-business/src/main/java/beilv/stadium/service/impl/StadiumServiceImpl.java

@@ -37,7 +37,7 @@ public class StadiumServiceImpl implements IStadiumService {
             //设置订单状态为 待支付
             stadium.setPaymentStatus(DAI_ZHI_FU);
             //设置下单时间为当前时间
-            stadium.setRegistrationTime(simpleDateFormat.format(new Date()));
+            stadium.setRegistrationTime(new Date());
             //生成订单编号
             stadium.setOrderId(orderId);
             stadiumMapper.toBeStadium(stadium);
@@ -53,7 +53,7 @@ public class StadiumServiceImpl implements IStadiumService {
         //设置订单状态为取消
         stadium.setPaymentStatus(YI_QU_XIAO);
         //设置取消时间为当前时间
-        stadium.setCancellationTime(simpleDateFormat.format(new Date()));
+        stadium.setCancellationTime(new Date());
         return stadiumMapper.cancellStadium(stadium);
     }
 
@@ -67,7 +67,7 @@ public class StadiumServiceImpl implements IStadiumService {
         //设置订单状态为已支付
         stadium.setPaymentStatus(YI_ZHI_FU);
         //设置支付时间
-        stadium.setPaymentTime(simpleDateFormat.format(new Date()));
+        stadium.setPaymentTime(new Date());
 
         //增加赛事退单时间验证,如果赛事报名已结束, 则直接设置支付状态为已核销
         Competition competition = competitionMapper.getCompetitionInfo(stadium.getOrderId());
@@ -85,7 +85,7 @@ public class StadiumServiceImpl implements IStadiumService {
         //设置订单状态为取消
         stadium.setPaymentStatus(YI_TUI_KUAN);
         //设置取消时间为当前时间
-        stadium.setRefundTime(simpleDateFormat.format(new Date()));
+        stadium.setRefundTime(new Date());
         //修改订单状态为退款
         return stadiumMapper.cancellStadium(stadium);
     }
@@ -117,7 +117,7 @@ public class StadiumServiceImpl implements IStadiumService {
         //设置订单状态
         stadium.setPaymentStatus("payment_status_refunded");
         //设置退款时间
-        stadium.setRefundTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+        stadium.setRefundTime(new Date());
         return stadiumMapper.cancellStadium(stadium);
     }
 }

+ 3 - 0
qmjszx-business/src/main/java/beilv/usermembershipcard/service/impl/UserMembershipCardServiceImpl.java

@@ -13,6 +13,7 @@ import beilv.usermembershipcard.service.IUserMembershipCardService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -127,6 +128,7 @@ public class UserMembershipCardServiceImpl implements IUserMembershipCardService
     * @date 2025/1/8 上午9:29
     */
     @Override
+    @Transactional
     public int addStream(MemberStream memberStream) {
         //增加/扣除会员卡剩余次数(约场-1;退场+1)
         UserMembershipCard userMembershipCard = new UserMembershipCard();
@@ -145,6 +147,7 @@ public class UserMembershipCardServiceImpl implements IUserMembershipCardService
      * @date 2025/1/7 上午10:50
      */
     @Override
+    @Transactional
     public int refundCard(UserMembershipCard userMembershipCard) {
         CardPurchaseRecord cardPurchaseRecord = cardPurchaseRecordMapper.selectCardPurchaseRecordById(Long.parseLong(userMembershipCard.getRecordId()));
         /*退款*/

+ 18 - 8
qmjszx-business/src/main/resources/mapper/bootacourse/BootACourseMapper.xml

@@ -20,6 +20,12 @@
         <result property="refundInstructions" column="refund_instructions"/>
         <result property="clubCardId" column="club_card_id"/>
         <result property="refund" column="refund"/>
+        <result property="verificationTime" column="verification_time"/>
+
+        <result property="session" column="session"/>
+        <result property="ticketDate" column="ticket_date"/>
+        <result property="siteName" column="site_name"/>
+        <result property="cover" column="cover"/>
     </resultMap>
 
 
@@ -80,18 +86,21 @@
 
     <select id="getCourseList" parameterType="bootACourseBO" resultMap="BootACourseResult">
         select
-            user_id, contact_people, contact_number, registration_time, payment_time, cancellation_time, refund_time,
-            payment_status, order_id, ticket_id, order_type, refund_instructions, club_card_id, refund
-        from beilv_book_a_course
+        bbac.user_id, bbac.contact_people, bbac.contact_number, bbac.registration_time, bbac.payment_time, bbac.cancellation_time, bbac.refund_time,
+        bbac.payment_status, bbac.order_id, bbac.ticket_id, bbac.order_type, bbac.refund_instructions, bbac.club_card_id, bbac.refund, bbac.verification_time,
+        bat.session, bat.ticket_date, bs.name as site_name, bs.cover
+        from beilv_book_a_course bbac
+        left join beilv_admission_ticket bat on bbac.ticket_id = bat.id
+        left join beilv_site bs on bat.site_id = bs.id
         <where>
             <if test="userId != null and userId != ''">
-                and user_id = #{userId}
+                and bbac.user_id = #{userId}
             </if>
             <if test="paymentStatus != null and paymentStatus != ''">
-                and paymen_status = #{paymentStatus}
+                and bbac.paymen_status = #{paymentStatus}
             </if>
         </where>
-        order by registration_time desc
+        order by bbac.registration_time desc
     </select>
 
     <select id="getCourseInfo" parameterType="bootACourseBO" resultMap="BootACourseResult">
@@ -118,9 +127,10 @@
 
     <update id="updateOrderStatusToVerification" parameterType="bootACourse">
         UPDATE beilv_book_a_course
-        SET payment_status = 'payment_status_verification'
+        SET payment_status = 'payment_status_verification',
+        verification_time = #{verificationTime}
         WHERE order_id IN
-        <foreach collection="list" item="orderId" open="(" separator="," close=")">
+        <foreach collection="orderIds" item="orderId" open="(" separator="," close=")">
             #{orderId}
         </foreach>
     </update>

+ 23 - 0
qmjszx-business/src/main/resources/mapper/card/CardPurchaseRecordMapper.xml

@@ -76,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
+            <if test="orderId != null">order_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -96,6 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
+            <if test="orderId != null">#{orderId},</if>
          </trim>
     </insert>
 
@@ -132,4 +134,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
+    <update id="updateRecord" parameterType="CardPurchaseRecord">
+        update card_purchase_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="cardId != null">card_id = #{cardId},</if>
+            <if test="cardName != null">card_name = #{cardName},</if>
+            <if test="cardType != null">card_type = #{cardType},</if>
+            <if test="totalNumber != null">total_number = #{totalNumber},</if>
+            <if test="memberPrice != null">member_price = #{memberPrice},</if>
+            <if test="time != null">time = #{time},</if>
+            <if test="paymentWay != null">payment_way = #{paymentWay},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="notes != null">notes = #{notes},</if>
+            <if test="version != null">version = #{version},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where order_id = #{orderId}
+    </update>
 </mapper>

+ 12 - 4
qmjszx-business/src/main/resources/mapper/competition/CompetitionMapper.xml

@@ -29,6 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="publishTime"    column="publish_time"    />
         <result property="publishBy"    column="publish_by"    />
         <result property="publishName"    column="publish_name"    />
+        <result property="competitionImg"    column="competition_img"    />
     </resultMap>
 
     <sql id="selectCompetitionVo">
@@ -36,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                competition_place, apply_start_time, apply_end_time, apply_before_time,
                competition_maximum, competition_expense, viewing_ticket,
                competition_details, registration_notes, competition_state,
-               create_time, create_by, create_name, update_time, update_by, update_name, publish_time, publish_by, publish_name
+               create_time, create_by, create_name, update_time, update_by, update_name, publish_time, publish_by, publish_name,competition_img
         from beilv_competition
     </sql>
 
@@ -83,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createName != null">create_name,</if>
             <if test="updateName != null">update_name,</if>
             <if test="publishName != null">publish_name,</if>
+            <if test="competitionImg != null">competition_img,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="competitionTitle != null">#{competitionTitle},</if>
@@ -108,6 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createName != null">#{createName},</if>
             <if test="updateName != null">#{updateName},</if>
             <if test="publishName != null">#{publishName},</if>
+            <if test="competitionImg != null">#{competitionImg},</if>
          </trim>
     </insert>
 
@@ -131,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateName != null">update_name = #{updateName},</if>
+            <if test="competitionImg != null">competition_img = #{competitionImg},</if>
         </trim>
         where id = #{id}
     </update>
@@ -172,10 +176,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND competition_id = #{id}
     </select>
 
-    <update id="updateBookARace" parameterType="int">
+    <update id="updateBookARace" parameterType="Stadium">
         update beilv_book_a_race
-        set payment_status = 'payment_status_verification'
-        where competition_id = #{id} and payment_status = 'payment_status_have_paid'
+            set payment_status = #{paymentStatus},
+                verification_time = #{verificationTime}
+        where
+                competition_id = #{competitionId}
+            and
+                payment_status = 'payment_status_have_paid'
     </update>
 
     <select id="getCompetitionInfo" parameterType="string" resultMap="CompetitionResult">

+ 15 - 6
qmjszx-business/src/main/resources/mapper/stadium/StadiumMapper.xml

@@ -18,6 +18,12 @@
         <result property="competitionId" column="competition_id"/>
         <result property="orderType" column="order_type"/>
         <result property="refundInstructions" column="refund_instructions"/>
+        <result property="verificationTime" column="verification_time"/>
+        <result property="amountActuallyPaid" column="amount_actually_paid"/>
+        <result property="competitionTitle" column="competition_title"/>
+        <result property="competitionExpense" column="competition_expense"/>
+        <result property="viewingTicket" column="viewing_ticket"/>
+        <result property="competitionImg" column="competition_img"/>
     </resultMap>
 
 
@@ -59,6 +65,7 @@
             <if test="paymentTime != null">payment_time = #{paymentTime},</if>
             <if test="cancellationTime != null">cancellation_time = #{cancellationTime},</if>
             <if test="refundTime != null">refund_time = #{refundTime},</if>
+            <if test="verificationTime != null">verification_time = #{verificationTime},</if>
             <if test="paymentStatus != null">payment_status = #{paymentStatus},</if>
             <if test="refundInstructions != null">refund_instructions = #{refundInstructions},</if>
         </trim>
@@ -74,18 +81,20 @@
 
     <select id="getStadimList" parameterType="stadiumBO" resultMap="StadiumResult">
         select
-            id, user_id, contact_people, contact_number, registration_time, payment_time,
-            cancellation_time, refund_time, payment_status, order_id, competition_id, order_type, refund_instructions
-        from beilv_book_a_race
+        ar.id, ar.user_id, ar.contact_people, ar.contact_number, ar.registration_time, ar.payment_time,
+        ar.cancellation_time, ar.refund_time, ar.payment_status, ar.order_id, ar.competition_id, ar.order_type, ar.refund_instructions,
+        ar.verification_time, ar.amount_actually_paid ,bc.competition_title, bc.competition_expense, bc.viewing_ticket, bc.competition_img
+        from beilv_book_a_race ar
+        left join beilv_competition bc on ar.competition_id = bc.id
         <where>
             <if test="userId != null and userId != ''">
-                and user_id = #{userId}
+                and ar.user_id = #{userId}
             </if>
             <if test="orderType != null and orderType != ''">
-                and order_type = #{orderType}
+                and ar.order_type = #{orderType}
             </if>
             <if test="paymentStatus != null and paymentStatus != ''">
-                and payment_status = #{paymentStatus}
+                and ar.payment_status = #{paymentStatus}
             </if>
         </where>
     </select>

+ 13 - 0
qmjszx-common/src/main/java/beilv/common/utils/DictUtils.java

@@ -1,6 +1,9 @@
 package beilv.common.utils;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import org.springframework.stereotype.Component;
 import beilv.common.constant.Constants;
 import beilv.common.core.domain.entity.SysDictData;
@@ -45,6 +48,16 @@ public class DictUtils
         return null;
     }
 
+    public static Map<String, String> getDictCacheToMap(String key){
+        List<SysDictData> dictCache = getDictCache(key);
+        Map<String, String> result = new HashMap<>();
+
+        dictCache.forEach(sysdictData->{
+            result.put(sysdictData.getDictValue(), sysdictData.getDictLabel());
+        });
+        return result;
+    }
+
     /**
      * 根据字典类型和字典值获取字典标签
      * 

+ 1 - 1
qmjszx-quartz/src/main/java/beilv/quartz/task/SiteTask.java

@@ -154,7 +154,7 @@ public class SiteTask {
 
         // 批量更新订单状态为已核销
         if (!orderIdsToUpdate.isEmpty()) {
-            courseMapper.updateOrderStatusToVerification(orderIdsToUpdate);
+            courseMapper.updateOrderStatusToVerification(orderIdsToUpdate, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
         }
         // 批量更新门票状态为已核销
         if (!orderIdsToUpdate.isEmpty()) {