瀏覽代碼

定时更新订单状态已核销

lchao 5 月之前
父節點
當前提交
9113d3facf

+ 4 - 0
qmjszx-business/src/main/java/beilv/bootacourse/mapper/BootACourseMapper.java

@@ -13,4 +13,8 @@ public interface BootACourseMapper {
     int updateCourse(BootACourse course);
 
     List<BootACourse> getCourseList(BootACourseBO courseBO);
+
+    List<BootACourse> selectPaidOrders();
+
+    void updateOrderStatusToVerification(List<String> orderIdsToUpdate);
 }

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

@@ -109,4 +109,22 @@
         </where>
         order by registration_time desc
     </select>
+
+    <select id="selectPaidOrders" parameterType="bootACourse" resultMap="BootACourseResult">
+        SELECT
+            *
+        FROM
+            beilv_book_a_course
+        WHERE
+            payment_status = 'payment_status_have_paid'
+    </select>
+
+    <update id="updateOrderStatusToVerification" parameterType="bootACourse">
+        UPDATE beilv_book_a_course
+        SET payment_status = 'payment_status_verification'
+        WHERE order_id IN
+        <foreach collection="list" item="orderId" open="(" separator="," close=")">
+            #{orderId}
+        </foreach>
+    </update>
 </mapper>

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

@@ -2,11 +2,15 @@ package beilv.quartz.task;
 
 import beilv.admissionticket.domain.AdmissionTicket;
 import beilv.admissionticket.service.IAdmissionTicketService;
+import beilv.bootacourse.domain.BootACourse;
+import beilv.bootacourse.mapper.BootACourseMapper;
 import beilv.common.utils.uuid.IdUtils;
 import beilv.session.domain.BeilvSession;
 import beilv.session.service.IBeilvSessionService;
 import beilv.site.domain.BeilvSite;
 import beilv.site.service.IBeilvSiteService;
+import beilv.stadium.domain.Stadium;
+import beilv.stadium.mapper.StadiumMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -16,6 +20,7 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Component("siteTask")
 public class SiteTask {
@@ -29,6 +34,9 @@ public class SiteTask {
     @Autowired
     private IAdmissionTicketService ticketService;
 
+    @Autowired
+    private BootACourseMapper courseMapper;
+
     /**
      * 门票定时任务
      * 定时将日期下的各类型场地+时段写入到数据表中
@@ -78,6 +86,7 @@ public class SiteTask {
     /**
      * 定时更新门票状态
      * 将超过当前时间的门票信息都更新为锁定状态
+     *
      * @param millisecond
      */
     public void updateTicketStatus(Long millisecond) {
@@ -118,7 +127,7 @@ public class SiteTask {
                 e.printStackTrace();
             }
         });
-        if(!ids.isEmpty()){
+        if (!ids.isEmpty()) {
             ticketService.updateTicketStatus(ids);
         }
     }
@@ -126,17 +135,24 @@ public class SiteTask {
     /**
      * 定时更新订单状态为已核销
      */
-    public void a(){
-        //查询支付成功状态的所有约场订单 表名: beilv_book_a_course
-        //判断 当前时间 大于等于 数据中的refund
-        //则将数据状态修改为已核销  payment_status_verification
-
+    public void updateOrderStatusToVerification() {
+        // 查询支付成功的订单
+        List<BootACourse> paidOrders = courseMapper.selectPaidOrders();
+        // 获取当前时间
+        Date now = new Date();
+        // 筛选出需要更新的订单
+        List<String> orderIdsToUpdate = paidOrders.stream()
+                .filter(order -> now.after(order.getRefund()))  // 当前时间大于refund时间
+                .map(BootACourse::getOrderId)  // 获取订单ID
+                .collect(Collectors.toList());
+
+        // 批量更新订单状态为已核销
+        if (!orderIdsToUpdate.isEmpty()) {
+            courseMapper.updateOrderStatusToVerification(orderIdsToUpdate);
+        }
     }
 
 
-
-
-
     // 将Date类型加上指定天数的方法
     private Date addDaysToDate(Date date, int days) {
         Calendar calendar = Calendar.getInstance();