Explorar o código

kwai订单 添加当天定时逻辑

zhaoxian hai 7 meses
pai
achega
2b23104990

+ 34 - 9
ruixuan-common/src/main/java/com/ruixuan/common/utils/DateUtils.java

@@ -64,17 +64,30 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 
     /**
      * 获取当前日期, 默认格式为yyyy-MM-dd
-     *
-     * @return String
      */
     public static String getDate() {
         return dateTimeNow(YYYY_MM_DD);
     }
 
+    /**
+     * 获取当前日期, 默认格式为yyyy-MM-dd HH:mm:ss
+     */
     public static final String getTime() {
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
     }
 
+    /**
+     * 获取当前时间 前后几小时的精确时间 时分秒
+     */
+    public static final String getHourTime(int hour) {
+        Date date = new Date();
+        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar dar = Calendar.getInstance();
+        dar.setTime(date);
+        dar.add(Calendar.HOUR_OF_DAY, hour);
+        return dft.format(dar.getTime());
+    }
+
     public static final String dateTimeNow() {
         return dateTimeNow(YYYYMMDDHHMMSS);
     }
@@ -393,6 +406,19 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return 0;
     }
 
+    /**
+     * yyyy-MM-dd HH:mm:ss 格式时间戳
+     */
+    public static Long getTimeStamp(String date) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Long orderCreateTimeStart = null;
+        try {
+            orderCreateTimeStart = sdf.parse(date).getTime();
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return orderCreateTimeStart;
+    }
 
     public static Long getStartLongTime(String orderStartDate) {
         String date = orderStartDate + " 00:00:00";
@@ -406,13 +432,6 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return orderCreateTimeStart;
     }
 
-
-    public static Integer getIntegerTime(String date) {
-        String replace = date.replace("-", "");
-        return Integer.valueOf(replace);
-    }
-
-
     public static Long getEndLongTime(String orderEndDate) {
         String date = orderEndDate + " 23:59:59";
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -425,6 +444,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return orderCreateTimeEnd;
     }
 
+    public static Integer getIntegerTime(String date) {
+        String replace = date.replace("-", "");
+        return Integer.valueOf(replace);
+    }
+
+
     public static Integer getNowHour() {
         Calendar cal = Calendar.getInstance();
         Date date = new Date();

+ 26 - 9
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KwaixiaodianItemGetController.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -68,22 +69,38 @@ public class KwaixiaodianItemGetController extends BaseController {
         }
     }
 
+    @GetMapping("/queryNowdayKWaiOrderList")
+    @ApiOperation(value = "获当天kwai订单")
+    public void queryNowdayKWaiOrderList(
+            @ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId) {
+        try {
+            orderCursorListService.queryNowdayKWaiOrderList(shopId.trim(), "");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 获取订单列表(open.order.cursor.list)
      * https://open.kwaixiaodian.com/zone/new/docs/api?name=open.order.cursor.list&version=1
      */
-    @GetMapping("/querykwaiOrderList2")
-    @ApiOperation(value = "获kwai订单列表2")
-    public void querykwaiOrderList2(@ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId) {
-        List<String> allDatesOfTwoTimes = DateUtils.getAllDatesOfTwoTimes("2024-10-01", "2024-10-30");
+    @GetMapping("/querykwaiOrderListMonth")
+    @ApiOperation(value = "获kwai订单列表月度数据")
+    public void querykwaiOrderListMonth(@ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId) {
+        String date1 = DateUtils.getDate();
+        String date0 = DateUtils.getSubtractTime(new Date(),30);
+        List<String> allDatesOfTwoTimes = DateUtils.getAllDatesOfTwoTimes(date0, date1);
         for (String date : allDatesOfTwoTimes) {
             orderCursorListService.querykwaiOrderList(shopId.trim(), 1, date, date, "");
-            logger.info("shopID:{},日期:{} 执行-----ok", shopId, date);
+            logger.info("shopId:{},日期:{} 执行-----ok", shopId, date);
         }
-//            JSONObject eventJSon = new JSONObject();
-//            eventJSon.put("info", "{\"oid\":2429701614840853,\"sellerId\":3452197807,\"status\":50,\"updateTime\":1730269385968}");
-//            eventJSon.put("openId", "f1877fdf0495636114bf572414119bed");
-//            orderCursorListService.insertKWaiShopOrder(eventJSon);
     }
 
+    public static void main(String[] args) {
+        String date0 = DateUtils.getDate();
+        String date1 = DateUtils.getSubtractTime(new Date(),30);
+
+        System.out.println(date0);
+        System.out.println(date1);
+    }
 }

+ 3 - 1
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKwaixiaodianOrderCursorListService.java

@@ -9,7 +9,9 @@ import com.alibaba.fastjson.JSONObject;
  * @date 2024-10-28
  */
 public interface IKwaixiaodianOrderCursorListService {
-    void querykwaiOrderList(String shopId,Integer queryType, String beginDate, String endDate, String cursor);
+    void querykwaiOrderList(String shopId, Integer queryType, String beginDate, String endDate, String cursor);
+
+    void queryNowdayKWaiOrderList(String shopId, String cursor);
 
     /*新增kwaixiaodian_order_cursor_list*/
     void insertKWaiShopOrder(JSONObject eventJSon);

+ 66 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KwaixiaodianOrderCursorListServiceImpl.java

@@ -107,6 +107,72 @@ public class KwaixiaodianOrderCursorListServiceImpl implements IKwaixiaodianOrde
     }
 
     @Override
+    public void queryNowdayKWaiOrderList(String shopId, String cursor) {
+        try {
+            //2小时前 时间戳
+            Long beginTime = DateUtils.getTimeStamp(DateUtils.getHourTime(-2));
+            //当前时间
+            Long endTime = DateUtils.getTimeStamp(DateUtils.getTime());
+            KuaishouAccessToken token = accessTokenService.getKWaiAccessToken(shopId);
+            if (Check.isNull(token)) {
+                log.error("----kwaixiaodian当天获取订单列表,shopId:{} 没有token信息", shopId);
+            }
+
+            AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(KuaiShouConstants.KFX_URL, token.getAppKey(), token.getSignSecret());
+            OpenOrderCursorListRequest request = new OpenOrderCursorListRequest();
+            request.setAccessToken(token.getAccessToken());
+            request.setApiMethodVersion(1L);
+
+            //订单状态,0未知 1 全部 2 待付款 3 待发货 4 待收货(已发货)5 已收货 6 交易成功订单 7 已关闭订单。若此API返回超时,请传入1后重试
+            request.setOrderViewStatus(1);
+            //每页请求数量 最多一页50条
+            request.setPageSize(50);
+            //1时间降序 2时间升序 默认降序
+            request.setSort(1);
+            //1按创建时间查找 2按更新时间查找 ;默认创建时间,值为1时只允许获取创建时间90天内的订单数据,值为2时仅允许获取更新时间90天内且创建时间240天内的订单数据
+            request.setQueryType(1);
+            //订单生成时间的开始时间,单位毫秒, 不能小于90天前,且需要小于结束时间
+            request.setBeginTime(beginTime);
+            //订单生成时间的截止时间,单位毫秒,与开始时间的时间范围不大于7天
+            request.setEndTime(endTime);
+            //分销类型 0-全部 1-普通订单 2-分销订单
+            request.setCpsType(0);
+            //游标内容 第一次传空串,之后传上一次的cursor返回值,若返回“nomore”则标识到底
+            request.setCursor(cursor);
+            OpenOrderCursorListResponse response = null;
+            try {
+                response = client.execute(request);
+            } catch (KsMerchantApiException e) {
+                e.printStackTrace();
+            }
+            JSONObject jsonObject = JSONObject.parseObject(GsonUtils.toJSON(response));
+            String code = jsonObject.getString("code");
+            if ("1".equals(code)) {
+                JSONObject data = jsonObject.getJSONObject("data");
+                cursor = data.getString("cursor");
+                JSONArray orderList = data.getJSONArray("orderList");
+                List<KwaixiaodianOrderCursorList> orderCursorList = new ArrayList<>();
+                for (int i = 0; i < orderList.size(); i++) {
+                    JSONObject object = orderList.getJSONObject(i);
+                    KwaixiaodianOrderCursorList order = new KwaixiaodianOrderCursorList(token, object);
+                    orderCursorList.add(order);
+                }
+                if (Check.isNotNull(orderCursorList)) {
+                    mapper.replaceBatchKWaixiaodianOrderCursorList(orderCursorList);
+                }
+            } else {
+                log.error("===kwaixiaodian当天获取订单列表(open.order.cursor.list)失败,shopId:{},信息:{}", shopId, jsonObject.getString("error_msg"));
+            }
+            if (!"nomore".equals(cursor)) {
+                queryNowdayKWaiOrderList(shopId, cursor);
+            }
+        } catch (Exception e) {
+            log.error("===kwaixiaodian当天获取订单列表异常 querykwaiOrderList");
+            e.printStackTrace();
+        }
+    }
+
+    @Override
     public void insertKWaiShopOrder(JSONObject eventJSon) {
         JSONObject info = eventJSon.getJSONObject("info");
         String openId = eventJSon.getString("openId");