Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

Sheep 5 дней назад
Родитель
Сommit
5b8e93acc3

+ 2 - 0
yami-shop-platform/src/main/java/com/yami/shop/platform/PlatformApplication.java

@@ -16,10 +16,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * @author lgh
  */
+@EnableScheduling
 @SpringBootApplication
 @ComponentScan("com.yami.shop")
 public class PlatformApplication extends SpringBootServletInitializer{

+ 27 - 0
yami-shop-platform/src/main/java/com/yami/shop/platform/task/OrderPushTask.java

@@ -0,0 +1,27 @@
+package com.yami.shop.platform.task;
+
+import com.yami.shop.service.hb.IHBOrderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+
+@Component("OrderPushTask")
+public class OrderPushTask {
+
+    private Logger log = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private IHBOrderService hbOrderService;
+
+    @Scheduled(cron = "0 0 */1 * * ?")
+//    @Scheduled(cron = "0/2 * * * * ?")
+    public synchronized void syncHBOrder() {
+        log.info("海博订单同步定时任务开始");
+        hbOrderService.syncHBOrder();
+        log.info("海博订单同步定时任务结束");
+    }
+
+}

+ 7 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/OrderMapper.java

@@ -150,4 +150,11 @@ public interface OrderMapper extends BaseMapper<Order> {
 
     String getRiderInfo(String orderNumber);
 
+    void addOrderPushLog(@Param("orderNumber") String orderNumber, @Param("isSuccess") Integer isSuccess, @Param("result") String result);
+
+    List<String> syncOrderList();
+
+    Integer getOrderPushLog(String orderNumber);
+
+    void updateOrderPushLog(@Param("orderNumber") String orderNumber, @Param("isSuccess") Integer isSuccess, @Param("result") String result);
 }

+ 2 - 0
yami-shop-service/src/main/java/com/yami/shop/service/OrderService.java

@@ -219,4 +219,6 @@ public interface OrderService extends IService<Order> {
     String addSMOrder(SMOrderPo orderPo);
 
     void returnRefundCheck(String refundNumber);
+
+    List<String> syncOrderList();
 }

+ 2 - 0
yami-shop-service/src/main/java/com/yami/shop/service/hb/IHBOrderService.java

@@ -77,4 +77,6 @@ public interface IHBOrderService {
      * @param hBRequest 海博订单结果请求参数
      */
     void merchantToSelf(JSONObject hBRequest);
+
+    void syncHBOrder();
 }

+ 26 - 0
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java

@@ -135,6 +135,24 @@ public class HBOrderService implements IHBOrderService {
         log.info("post 创建订单推送单号参数:{}", JSON.toJSONString(build));
         String post = post(hbSignUtil.getHBHost() + "/api/order/createOrderAsync", build);
         log.info("post 创建订单推送结果:{}", post);
+
+        JSONObject jsonObject = JSONObject.parseObject(post);
+        if (jsonObject!=null){
+            Integer count = orderMapper.getOrderPushLog(channelOrderId);
+            if (count==0){
+                if (jsonObject.getBoolean("success")){
+                    orderMapper.addOrderPushLog(channelOrderId,1,post);
+                }else {
+                    orderMapper.addOrderPushLog(channelOrderId,0,post);
+                }
+            }else {
+                if (jsonObject.getBoolean("success")){
+                    orderMapper.updateOrderPushLog(channelOrderId,1,post);
+                }else {
+                    orderMapper.updateOrderPushLog(channelOrderId,0,post);
+                }
+            }
+        }
         return post;
     }
 
@@ -491,6 +509,14 @@ public class HBOrderService implements IHBOrderService {
         }
     }
 
+    @Override
+    public void syncHBOrder() {
+        List<String> orderList = orderMapper.syncOrderList();
+        if (!orderList.isEmpty()){
+            orderList.forEach(this::createOrderAsync);
+        }
+    }
+
 
     @Override
     public HBR details(JSONObject hbRequest) {

+ 6 - 0
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -121,6 +121,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private final TzSysUserMapper userMapper;
     @Autowired
     private ExportTaskService exportTaskService;
+
     //导出
     // 线程池配置
     private final ExecutorService exportExecutor = Executors.newFixedThreadPool(
@@ -1827,6 +1828,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
     }
 
+    @Override
+    public List<String> syncOrderList() {
+        return orderMapper.syncOrderList();
+    }
+
     /**
      * 退款成功后,修改订单状态
      *

+ 17 - 0
yami-shop-service/src/main/resources/mapper/OrderMapper.xml

@@ -238,6 +238,10 @@
         </collection>
     </resultMap>
 
+    <insert id="addOrderPushLog">
+        INSERT INTO tz_order_push_log(order_number,is_success,result,create_time) VALUES(#{orderNumber},#{isSuccess},#{result},NOW())
+    </insert>
+
     <select id="getOrderByOrderNumber" resultType="com.yami.shop.bean.model.Order">
         select *
         from tz_order o
@@ -777,6 +781,16 @@
                          LEFT JOIN tz_group_team gt ON gt.`group_team_id` = go.`group_team_id`
                      WHERE gt.`group_team_id` = #{groupTeamId}) temp)
     </update>
+    <select id="syncOrderList" resultType="string">
+        SELECT DISTINCT a.order_number FROM `tz_order` a
+        LEFT JOIN tz_order_push_log b on a.order_number=b.order_number
+        WHERE a.create_time &gt;'2026-05-13 00:00:00' and ((ISNULL(b.order_number)) or (b.is_success=0))
+        and a.hb_order_status not in(0,60)
+    </select>
+
+    <update id="updateOrderPushLog">
+        update tz_order_push_log set is_success=#{isSuccess},result=#{result} WHERE order_number=#{orderNumber}
+    </update>
 
     <select id="getOrderByOrderNumberAndUserId" resultType="com.yami.shop.bean.model.Order">
         select o.*
@@ -1372,4 +1386,7 @@
         SELECT CONCAT('骑手:',courier_name,',电话:', SUBSTRING_INDEX(courier_phone, ',', 1)) info
         FROM `tz_order_rider_location` WHERE order_number=#{orderNumber}
     </select>
+    <select id="getOrderPushLog" resultType="java.lang.Integer">
+        SELECT COUNT(1) FROM tz_order_push_log WHERE order_number=#{orderNumber}
+    </select>
 </mapper>