Browse Source

Merge remote-tracking branch 'origin/master'

lchao 5 months ago
parent
commit
2c8fba5b5e
21 changed files with 189 additions and 93 deletions
  1. 18 8
      qmjszx-admin/src/main/java/beilv/web/controller/bootacourse/bootACourseController.java
  2. 4 0
      qmjszx-admin/src/main/resources/templates/card/card.html
  3. 20 1
      qmjszx-admin/src/main/resources/templates/card/stream.html
  4. 2 2
      qmjszx-admin/src/main/resources/templates/competition/add.html
  5. 2 2
      qmjszx-admin/src/main/resources/templates/competition/edit.html
  6. 1 1
      qmjszx-business/src/main/java/beilv/admissionticket/mapper/AdmissionTicketMapper.java
  7. 1 1
      qmjszx-business/src/main/java/beilv/admissionticket/service/IAdmissionTicketService.java
  8. 2 2
      qmjszx-business/src/main/java/beilv/admissionticket/service/impl/AdmissionTicketServiceImpl.java
  9. 4 1
      qmjszx-business/src/main/java/beilv/bootacourse/domain/BootACourseBO.java
  10. 4 1
      qmjszx-business/src/main/java/beilv/competition/mapper/CompetitionMapper.java
  11. 1 0
      qmjszx-business/src/main/java/beilv/competition/service/impl/CompetitionServiceImpl.java
  12. 3 0
      qmjszx-business/src/main/java/beilv/stadium/mapper/StadiumMapper.java
  13. 12 3
      qmjszx-business/src/main/java/beilv/stadium/service/impl/StadiumServiceImpl.java
  14. 63 41
      qmjszx-business/src/main/java/beilv/usermembershipcard/domain/UserMembershipCard.java
  15. 3 1
      qmjszx-business/src/main/java/beilv/usermembershipcard/service/impl/UserMembershipCardServiceImpl.java
  16. 3 3
      qmjszx-business/src/main/resources/mapper/admissionticket/AdmissionTicketMapper.xml
  17. 4 7
      qmjszx-business/src/main/resources/mapper/bootacourse/BootACourseMapper.xml
  18. 7 1
      qmjszx-business/src/main/resources/mapper/card/UserMembershipCardMapper.xml
  19. 5 0
      qmjszx-business/src/main/resources/mapper/competition/CompetitionMapper.xml
  20. 1 0
      qmjszx-business/src/main/resources/mapper/stadium/StadiumMapper.xml
  21. 29 18
      qmjszx-quartz/src/main/java/beilv/quartz/task/SiteTask.java

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

@@ -16,6 +16,7 @@ import beilv.common.utils.uuid.IdUtils;
 import beilv.site.domain.BeilvSite;
 import beilv.site.service.IBeilvSiteService;
 import beilv.usermembershipcard.domain.MemberStream;
+import beilv.usermembershipcard.domain.UserMembershipCard;
 import beilv.usermembershipcard.service.IUserMembershipCardService;
 import beilv.venue.domain.BeilvVenue;
 import beilv.venue.service.IBeilvVenueService;
@@ -54,6 +55,9 @@ public class bootACourseController extends BaseController {
     @Autowired
     private IBootACourseService courseService;
 
+    @Autowired
+    private IUserMembershipCardService userMembershipCardService;
+
     /**
      * 查询基础信息
      */
@@ -100,11 +104,11 @@ public class bootACourseController extends BaseController {
      */
     @PostMapping("/hasClubCard")
     public AjaxResult hasClubCard(@RequestBody BootACourseBO course){
-        CardPurchaseRecord cardPurchaseRecord = new CardPurchaseRecord();
-        cardPurchaseRecord.setUserId(course.getUserId());
-        cardPurchaseRecord.setCardType(course.getTicketType());
-        cardPurchaseRecord.setType("1");
-        return AjaxResult.success(recordService.selectCardPurchaseRecordList(cardPurchaseRecord));
+        UserMembershipCard userMembershipCard = new UserMembershipCard();
+        userMembershipCard.setUserId(course.getUserId());
+        userMembershipCard.setCardType(course.getTicketType());
+        userMembershipCard.setState("3");
+        return AjaxResult.success(userMembershipCardService.selectUserMembershipCardList(userMembershipCard));
     }
 
     /**
@@ -198,13 +202,14 @@ public class bootACourseController extends BaseController {
         //通过orderId查询订单信息
         BootACourse course = courseService.getCourseInfo(courseBo);
 
-        //判断最晚退单时间是否大于当前时间, 大于返回true
-        if(course.getRefund().after(new Date())){
+        //判断最晚退单时间大于当前时间, 并且订单状态为已支付
+        if(course.getRefund().after(new Date()) && "payment_status_have_paid".equals(course.getPaymentStatus())){
             //根据订单信息中的会员卡退次数
             //调用会员卡接口减少次数
             MemberStream memberStream = new MemberStream();
             memberStream.setUserCardId(course.getClubCardId());
             memberStream.setType("1");
+            memberStream.setOrderId(course.getOrderId());
             cardService.addStream(memberStream);
 
 
@@ -221,7 +226,12 @@ public class bootACourseController extends BaseController {
             course.setPaymentStatus("payment_status_refunded");
             return toAjax(courseService.updateCourse(course));
         }else{
-            return AjaxResult.error("当前订单超过最晚退单时间, 不允许退单");
+            if(course.getRefund().after(new Date())){
+                return AjaxResult.error("当前订单超过最晚退单时间, 不允许退单");
+            }else if("payment_status_verification".equals(course.getPaymentStatus())){
+                return AjaxResult.error("订单已核销");
+            }
+            return AjaxResult.error("未知原因退款失败!");
         }
 
     }

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

@@ -93,6 +93,10 @@
                     title: '卡种名称'
                 },
                 {
+                    field: 'cardTypeLable',
+                    title: '卡种类型'
+                },
+                {
                     field: 'totalNumber',
                     title: '总次数'
                 },

+ 20 - 1
qmjszx-admin/src/main/resources/templates/card/stream.html

@@ -40,6 +40,7 @@
     <script th:inline="javascript">
         var editFlag = [[${@permission.hasPermi('system:stream:edit')}]];
         var removeFlag = [[${@permission.hasPermi('system:stream:remove')}]];
+        var cardType = [[${@dict.getType('site_type')}]];
         var prefix = ctx + "card";
 
         $(function() {
@@ -63,8 +64,26 @@
                     title: '卡种名称'
                 },
                 {
+                    field: 'cardType',
+                    title: '卡种类型',
+                    formatter: function (value, row, index) {
+                        return $.table.selectDictLabel(cardType, value);
+                    }
+                },
+                {
+                    field: 'type',
+                    title: '类型',
+                    formatter: function (value, row, index) {
+                        if (value ==='0'){
+                            return '约场';
+                        }else {
+                            return '退场'
+                        }
+                    }
+                },
+                {
                     field: 'createTime',
-                    title: '消费时间'
+                    title: '时间'
                 }]
             };
             $.table.init(options);

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

@@ -12,7 +12,7 @@
             <div class="form-group">
                 <label class="col-sm-2 control-label is-required">赛事标题:</label>
                 <div class="col-sm-4">
-                    <input name="competitionTitle" class="form-control" type="text" placeholder="请输入赛事标题"
+                    <input name="competitionTitle" class="form-control" type="text" placeholder="请输入赛事标题" maxlength="50"
                            required>
                 </div>
                 <label class="col-sm-2 control-label is-required">赛事类型:</label>
@@ -34,7 +34,7 @@
                 </div>
                 <label class="col-sm-2 control-label">场地:</label>
                 <div class="col-sm-4">
-                    <input name="competitionPlace" class="form-control" type="text" placeholder="请输入场地名称">
+                    <input name="competitionPlace" class="form-control" type="text" placeholder="请输入场地名称" maxlength="50">
                 </div>
             </div>
         </div>

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

@@ -13,7 +13,7 @@
                 <div class="form-group">
                     <label class="col-sm-2 control-label is-required">赛事标题:</label>
                     <div class="col-sm-4">
-                        <input name="competitionTitle" th:field="*{competitionTitle}" class="form-control" type="text" required>
+                        <input name="competitionTitle" th:field="*{competitionTitle}" class="form-control" type="text" maxlength="50" required>
                     </div>
                     <label class="col-sm-2 control-label is-required">赛事类型:</label>
                     <div class="col-sm-4">
@@ -31,7 +31,7 @@
                     </div>
                     <label class="col-sm-2 control-label">场地:</label>
                     <div class="col-sm-4">
-                        <input name="competitionPlace" th:field="*{competitionPlace}" class="form-control" type="text">
+                        <input name="competitionPlace" th:field="*{competitionPlace}" class="form-control" type="text" maxlength="50">
                     </div>
                 </div>
             </div>

+ 1 - 1
qmjszx-business/src/main/java/beilv/admissionticket/mapper/AdmissionTicketMapper.java

@@ -58,7 +58,7 @@ public interface AdmissionTicketMapper {
      */
     public int deleteBeilvAdmissionTicketByIds(String[] ids);
 
-    void updateTicketStatus(List<String> ids);
+    void updateTicketStatus(@Param("ids") List<String> ids, @Param("ticketStatus") String ticketStatus);
 
     boolean isOk(BootACourseBO course);
 

+ 1 - 1
qmjszx-business/src/main/java/beilv/admissionticket/service/IAdmissionTicketService.java

@@ -56,7 +56,7 @@ public interface IAdmissionTicketService {
      */
     public int deleteBeilvAdmissionTicketById(String id);
 
-    void updateTicketStatus(List<String> ids);
+    void updateTicketStatus(List<String> ids, String ticketStatus);
 
     Map<String, Object> getThresholdValue(String ticketId);
 }

+ 2 - 2
qmjszx-business/src/main/java/beilv/admissionticket/service/impl/AdmissionTicketServiceImpl.java

@@ -97,8 +97,8 @@ public class AdmissionTicketServiceImpl implements IAdmissionTicketService {
     }
 
     @Override
-    public void updateTicketStatus(List<String> ids) {
-        beilvAdmissionTicketMapper.updateTicketStatus(ids);
+    public void updateTicketStatus(List<String> ids, String ticketStatus) {
+        beilvAdmissionTicketMapper.updateTicketStatus(ids, ticketStatus);
     }
 
     @Override

+ 4 - 1
qmjszx-business/src/main/java/beilv/bootacourse/domain/BootACourseBO.java

@@ -40,5 +40,8 @@ public class BootACourseBO {
      * 退款说明
      */
     private String refundInstructions;
-
+    /**
+     * 支付状态
+     */
+    private String paymentStatus;
 }

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

@@ -2,6 +2,7 @@ package beilv.competition.mapper;
 
 import beilv.competition.domain.Competition;
 import beilv.stadium.domain.Stadium;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -66,5 +67,7 @@ public interface CompetitionMapper {
 
     boolean selectStadumIsOpenById(String id);
 
-    void updateBookARace(Integer id);
+    void updateBookARace(@Param("id") Integer id);
+
+    Competition getCompetitionInfo(@Param("orderId") String orderId);
 }

+ 1 - 0
qmjszx-business/src/main/java/beilv/competition/service/impl/CompetitionServiceImpl.java

@@ -42,6 +42,7 @@ public class CompetitionServiceImpl implements ICompetitionService {
             if (new Date().getTime() >= date.getTime()) {
                 item.setCompetitionState("competiton_state_3");
                 competitionMapper.updateCompetition(item);
+                competitionMapper.updateBookARace(item.getId());
             } else {
                 Timer timer = new Timer();
                 timer.schedule(new CloseReg(competitionMapper, item.getId()), date);

+ 3 - 0
qmjszx-business/src/main/java/beilv/stadium/mapper/StadiumMapper.java

@@ -1,5 +1,6 @@
 package beilv.stadium.mapper;
 
+import beilv.competition.domain.Competition;
 import beilv.stadium.domain.Stadium;
 import beilv.stadium.domain.StadiumBO;
 import org.apache.ibatis.annotations.Param;
@@ -20,5 +21,7 @@ public interface StadiumMapper {
 
     List<Stadium> getTakePartList(Stadium stadium);
 
+    Competition getCompetitionInfo(String orderId);
+
 //    int closeStadiumById(Stadium stadium);
 }

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

@@ -1,6 +1,7 @@
 package beilv.stadium.service.impl;
 
 import beilv.common.utils.uuid.IdUtils;
+import beilv.competition.domain.Competition;
 import beilv.competition.mapper.CompetitionMapper;
 import beilv.stadium.domain.Stadium;
 import beilv.stadium.domain.StadiumBO;
@@ -19,6 +20,9 @@ public class StadiumServiceImpl implements IStadiumService {
     @Autowired
     private StadiumMapper stadiumMapper;
 
+    @Autowired
+    private CompetitionMapper competitionMapper;
+
     private final static String DAI_ZHI_FU = "payment_status_to_be_paid";
     private final static String YI_ZHI_FU = "payment_status_have_paid";
     private final static String YI_QU_XIAO = "payment_status_cancelled";
@@ -53,13 +57,18 @@ public class StadiumServiceImpl implements IStadiumService {
 
     @Override
     public int havePaidStadium(Stadium stadium) {
-        //增加赛事退单时间验证,如果赛事报名已结束, 则直接设置支付状态为已核销
-
-
         //设置订单状态为已支付
         stadium.setPaymentStatus(YI_ZHI_FU);
         //设置支付时间
         stadium.setPaymentTime(simpleDateFormat.format(new Date()));
+
+        //增加赛事退单时间验证,如果赛事报名已结束, 则直接设置支付状态为已核销
+        Competition competition = competitionMapper.getCompetitionInfo(stadium.getOrderId());
+        Date applyStartTime = competition.getApplyStartTime();
+        System.out.println("applyStartTime = " + applyStartTime);
+        Double applyBeforeTime = competition.getApplyBeforeTime();
+        System.out.println("applyBeforeTime = " + applyBeforeTime);
+
         //更新订单信息
         return stadiumMapper.cancellStadium(stadium);
     }

+ 63 - 41
qmjszx-business/src/main/java/beilv/usermembershipcard/domain/UserMembershipCard.java

@@ -1,9 +1,9 @@
 package beilv.usermembershipcard.domain;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import beilv.common.annotation.Excel;
 import beilv.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 用户会员卡对象 user_membership_card
@@ -11,18 +11,23 @@ import beilv.common.core.domain.BaseEntity;
  * @author ruoyi
  * @date 2025-01-02
  */
-public class UserMembershipCard extends BaseEntity
-{
+public class UserMembershipCard extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 主键 */
+    /**
+     * 主键
+     */
     private Long id;
 
-    /** 用户id */
+    /**
+     * 用户id
+     */
 //    @Excel(name = "用户id")
     private String userId;
 
-    /** 卡种id */
+    /**
+     * 卡种id
+     */
 //    @Excel(name = "卡种id")
     private String recordId;
 
@@ -38,23 +43,50 @@ public class UserMembershipCard extends BaseEntity
     @Excel(name = "卡种名称")
     private String cardName;
 
-    /** 总次数 */
+    /**
+     * 总次数
+     */
     @Excel(name = "总次数")
     private Integer totalNumber;
 
-    /** 剩余次数 */
+    /**
+     * 剩余次数
+     */
     @Excel(name = "剩余次数")
     private Integer remainingNumber;
 
-    /** 版本 */
+    /**
+     * 版本
+     */
 //    @Excel(name = "版本")
     private String version;
 
+    private String cardType;
+
+    //卡种类型
+    private String cardTypeLable;
+
     private String state;
 
     @Excel(name = "状态")
     private String stateLabel;
 
+    public String getCardType() {
+        return cardType;
+    }
+
+    public void setCardType(String cardType) {
+        this.cardType = cardType;
+    }
+
+    public String getCardTypeLable() {
+        return cardTypeLable;
+    }
+
+    public void setCardTypeLable(String cardTypeLable) {
+        this.cardTypeLable = cardTypeLable;
+    }
+
     public String getStateLabel() {
 
         return stateLabel;
@@ -112,68 +144,58 @@ public class UserMembershipCard extends BaseEntity
         this.cardName = cardName;
     }
 
-    public void setId(Long id)
-    {
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId()
-    {
+    public Long getId() {
         return id;
     }
 
-    public void setUserId(String userId)
-    {
+    public void setUserId(String userId) {
         this.userId = userId;
     }
 
-    public String getUserId()
-    {
+    public String getUserId() {
         return userId;
     }
 
-    public void setTotalNumber(Integer totalNumber)
-    {
+    public void setTotalNumber(Integer totalNumber) {
         this.totalNumber = totalNumber;
     }
 
-    public Integer getTotalNumber()
-    {
+    public Integer getTotalNumber() {
         return totalNumber;
     }
 
-    public void setRemainingNumber(Integer remainingNumber)
-    {
+    public void setRemainingNumber(Integer remainingNumber) {
         this.remainingNumber = remainingNumber;
     }
 
-    public Integer getRemainingNumber()
-    {
+    public Integer getRemainingNumber() {
         return remainingNumber;
     }
 
-    public void setVersion(String version)
-    {
+    public void setVersion(String version) {
         this.version = version;
     }
 
-    public String getVersion()
-    {
+    public String getVersion() {
         return version;
     }
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("userId", getUserId())
-            .append("totalNumber", getTotalNumber())
-            .append("remainingNumber", getRemainingNumber())
-            .append("version", getVersion())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("userId", getUserId())
+                .append("totalNumber", getTotalNumber())
+                .append("remainingNumber", getRemainingNumber())
+                .append("version", getVersion())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .toString();
     }
 }

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

@@ -58,6 +58,7 @@ public class UserMembershipCardServiceImpl implements IUserMembershipCardService
         List<UserMembershipCard> userMembershipCards = userMembershipCardMapper.selectUserMembershipCardList(userMembershipCard);
         for (UserMembershipCard userMembershipCard1 : userMembershipCards) {
             userMembershipCard1.setStateLabel(dictDataService.selectDictLabel("card_status",userMembershipCard1.getState()));
+            userMembershipCard1.setCardTypeLable(dictDataService.selectDictLabel("site_type",userMembershipCard1.getCardType()));
         }
         return userMembershipCards;
     }
@@ -127,11 +128,12 @@ public class UserMembershipCardServiceImpl implements IUserMembershipCardService
     */
     @Override
     public int addStream(MemberStream memberStream) {
-        //扣除会员卡剩余次数
+        //增加/扣除会员卡剩余次数(约场-1;退场+1)
         UserMembershipCard userMembershipCard = new UserMembershipCard();
         userMembershipCard.setId(Long.valueOf(memberStream.getUserCardId()));
         userMembershipCard.setRemainingNumber(Integer.valueOf(memberStream.getType()));
         userMembershipCardMapper.updateRemainingNumber(userMembershipCard);
+        //增加流水
         memberStream.setCreateBy(ShiroUtils.getUserId().toString());
         memberStream.setCreateTime(DateUtils.getNowDate());
         return userMembershipCardMapper.addStream(memberStream);

+ 3 - 3
qmjszx-business/src/main/resources/mapper/admissionticket/AdmissionTicketMapper.xml

@@ -141,10 +141,10 @@
         </foreach>
     </delete>
 
-    <update id="updateTicketStatus" parameterType="list">
-        update beilv_admission_ticket set admission_ticket_status = '3'
+    <update id="updateTicketStatus">
+        update beilv_admission_ticket set admission_ticket_status = #{ticketStatus}
         where id in
-        <foreach item="id" collection="list" open="(" close=")" separator=",">
+        <foreach item="id" collection="ids" open="(" close=")" separator=",">
             #{id}
         </foreach>
     </update>

+ 4 - 7
qmjszx-business/src/main/resources/mapper/bootacourse/BootACourseMapper.xml

@@ -87,9 +87,6 @@
             <if test="userId != null and userId != ''">
                 and user_id = #{userId}
             </if>
-            <if test="orderType != null and orderType != ''">
-                and order_type = #{orderType}
-            </if>
             <if test="paymentStatus != null and paymentStatus != ''">
                 and paymen_status = #{paymentStatus}
             </if>
@@ -100,11 +97,11 @@
     <select id="getCourseInfo" parameterType="bootACourseBO" resultMap="BootACourseResult">
         select * from beilv_book_a_course
         <where>
-            <if test="competitionId != null and competitionId != ''">
-                and ticket_id = #{ticketId}
+            <if test="userId != null and userId != ''">
+                and user_id = #{userId}
             </if>
-            <if test="orderType != null and orderType != ''">
-                and order_type = #{orderType}
+            <if test="orderId != null and orderId != ''">
+                and order_id = #{orderId}
             </if>
         </where>
         order by registration_time desc

+ 7 - 1
qmjszx-business/src/main/resources/mapper/card/UserMembershipCardMapper.xml

@@ -20,6 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="mobile"    column="mobile"    />
         <result property="cardName"    column="cardName"    />
         <result property="state"    column="state"    />
+        <result property="cardType"    column="card_type"    />
     </resultMap>
 
     <sql id="selectUserMembershipCardVo">
@@ -37,7 +38,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             c.card_name cardName,
             c.total_number,
             a.remaining_number,
-            a.state
+            a.state,
+            c.card_type
         FROM
             user_membership_card a
             left join sys_member b on a.user_id = b.id
@@ -51,6 +53,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="realName != null  and realName != ''"> and b.real_name like concat('%', #{realName}, '%')</if>
             <if test="mobile != null  and mobile != ''"> and b.mobile like concat('%', #{mobile}, '%')</if>
             <if test="cardName != null  and cardName != ''"> and c.name like concat('%', #{cardName}, '%')</if>
+            <if test="cardType != null  and cardType != ''"> and c.card_type = #{cardType}</if>
+            <if test="state != null  and state != ''"> and a.state = #{state}</if>
         </where>
         order by a.create_time desc
     </select>
@@ -121,10 +125,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getStream" parameterType="Long" resultType="java.util.Map">
         SELECT
             a.id,
+            a.type,
             d.username,
             d.real_name realName,
             d.mobile,
             c.card_name cardName,
+            c.card_type cardType,
             DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%i:%s') createTime
         FROM
             member_stream a

+ 5 - 0
qmjszx-business/src/main/resources/mapper/competition/CompetitionMapper.xml

@@ -178,4 +178,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where competition_id = #{id} and payment_status = 'payment_status_have_paid'
     </update>
 
+    <select id="getCompetitionInfo" parameterType="string" resultMap="CompetitionResult">
+        select bc.* from beilv_book_a_race bar left join beilv_competition bc on bar.competition_id = bc.id
+        where bar.order_id = #{orderId}
+    </select>
+
 </mapper>

+ 1 - 0
qmjszx-business/src/main/resources/mapper/stadium/StadiumMapper.xml

@@ -113,4 +113,5 @@
         </where>
         order by registration_time desc
     </select>
+
 </mapper>

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

@@ -16,10 +16,7 @@ import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Component("siteTask")
@@ -100,19 +97,16 @@ public class SiteTask {
         // 获取当前日期和时间
         Date currentDate = new Date();
 
-        admissionTickets.forEach(ticket -> {
-            String session = ticket.getSession();//8:00-10:00
-            Date ticketDate = ticket.getTicketDate();//2024-01-07
-
-            try {
-                // 解析ticketDate
-                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        // 解析ticketDate
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 
-                // 解析session的开始时间
-                SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
+        // 解析session的开始时间
+        SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
 
+        admissionTickets.forEach(ticket -> {
+            try {
                 // 将ticketDate和startTime合并为一个Date对象
-                Date ticketDateTime = combineDateAndTime(dateFormat.parse(dateFormat.format(ticketDate)), timeFormat.parse(session.split("-")[0]));
+                Date ticketDateTime = combineDateAndTime(dateFormat.parse(dateFormat.format(ticket.getTicketDate())), timeFormat.parse(ticket.getSession().split("-")[0]));
 
 //                long tenMinutesInMillis = 10 * 60 * 1000;
                 if (ticketDateTime != null) {
@@ -128,7 +122,7 @@ public class SiteTask {
             }
         });
         if (!ids.isEmpty()) {
-            ticketService.updateTicketStatus(ids);
+            ticketService.updateTicketStatus(ids, "3");
         }
     }
 
@@ -141,15 +135,32 @@ public class SiteTask {
         // 获取当前时间
         Date now = new Date();
         // 筛选出需要更新的订单
-        List<String> orderIdsToUpdate = paidOrders.stream()
-                .filter(order -> now.after(order.getRefund()))  // 当前时间大于refund时间
-                .map(BootACourse::getOrderId)  // 获取订单ID
+//        List<String> orderIdsToUpdate = paidOrders.stream()
+//                .filter(order -> now.after(order.getRefund()))  // 当前时间大于refund时间
+//                .map(BootACourse::getOrderId)  // 获取订单ID
+//                .collect(Collectors.toList());
+
+
+        Map<Boolean, List<BootACourse>> partitionedOrders = paidOrders.stream()
+                .collect(Collectors.partitioningBy(order -> now.after(order.getRefund())));
+
+        List<String> orderIdsToUpdate = partitionedOrders.get(true).stream()
+                .map(BootACourse::getOrderId)
+                .collect(Collectors.toList());
+
+        List<String> ticketIdsToUpdate = partitionedOrders.get(true).stream()
+                .map(BootACourse::getTicketId)
                 .collect(Collectors.toList());
 
         // 批量更新订单状态为已核销
         if (!orderIdsToUpdate.isEmpty()) {
             courseMapper.updateOrderStatusToVerification(orderIdsToUpdate);
         }
+        // 批量更新门票状态为已核销
+        if (!orderIdsToUpdate.isEmpty()) {
+            //核销订单的同时, 更新门票信息状态
+            ticketService.updateTicketStatus(ticketIdsToUpdate, "4");
+        }
     }