浏览代码

kwai订单 状态回调更新

zhaoxian 11 月之前
父节点
当前提交
dc5b8fdb92

+ 10 - 11
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KwaixiaodianItemGetController.java

@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -53,7 +52,7 @@ public class KwaixiaodianItemGetController extends BaseController {
      * 获取订单列表(open.order.cursor.list)
      * https://open.kwaixiaodian.com/zone/new/docs/api?name=open.order.cursor.list&version=1
      */
-    @GetMapping("/querykwaiOrderList")
+    @GetMapping("/querykwaiOrderList2")
     @ApiOperation(value = "获kwai订单列表")
     public void querykwaiOrderList(@ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId
             , @ApiParam("开始日期") @RequestParam(value = "beginDate", required = false) String beginDate
@@ -71,18 +70,18 @@ public class KwaixiaodianItemGetController extends BaseController {
      * 获取订单列表(open.order.cursor.list)
      * https://open.kwaixiaodian.com/zone/new/docs/api?name=open.order.cursor.list&version=1
      */
-    @GetMapping("/querykwaiOrderList2")
+    @GetMapping("/querykwaiOrderList")
     @ApiOperation(value = "获kwai订单列表2")
     public void querykwaiOrderList2(@ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId) {
-        try {
-            List<String> allDatesOfTwoTimes = DateUtils.getAllDatesOfTwoTimes("2024-10-01", "2024-10-30");
-            for (String date : allDatesOfTwoTimes) {
-                orderCursorListService.querykwaiOrderList(shopId.trim(), date, date, "");
-                logger.info(date + "-----ok");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
+        List<String> allDatesOfTwoTimes = DateUtils.getAllDatesOfTwoTimes("2024-10-01", "2024-10-30");
+        for (String date : allDatesOfTwoTimes) {
+            orderCursorListService.querykwaiOrderList(shopId.trim(), date, 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);
     }
 
 }

+ 27 - 31
ruixuan-live/src/main/java/com/ruixuan/isc/controller/SupplyChainController.java

@@ -2193,38 +2193,34 @@ public class SupplyChainController extends BaseController {
     public Map<String, Object> ruixuanKWaiShopOrderAccept(@RequestBody String eventsEncoded) {
         Map<String, Object> result = new HashMap<>();
         try {
-            logger.info("-KWaiShop-订单-消息-订阅-");
             String events = PlatformEventSecurityUtil.decode(eventsEncoded, "xjX0jX828wWrnnwt26UYDA==");
-            System.out.println(events);
-//            JSONObject eventJSon = JSONObject.parseObject(events);
-//            List<String> list = new ArrayList<>();
-//            list.add("kwaishop_order_deliverySuccess");//已收货消息
-//            list.add("kwaishop_order_paySuccess");//已支付消息
-//            list.add("kwaishop_order_delivering");//已发货消息
-//            list.add("kwaishop_order_orderFail");//交易失败消息
-//            list.add("kwaishop_order_orderSuccess");//交易成功消息
-//
-//            orderNewsService.submit(new Runnable() {
-//                @Override
-//                public void run() {
-//                    try {
-//                        if (!Check.isNull(eventJSon)) {
-//                            String event = eventJSon.getString("event");
-//                            if ("kwaishop_order_addOrder".equals(event)) {
-//                                //订单新增消息
-//                                orderCursorListService.insertKWaiShopOrder(eventJSon);
-//                            } else if (list.contains(event)) {
-//                                //状态变更 kwaixiaodian_order_cursor_list
-//                                orderCursorListService.updateKWaiShopOrder(eventJSon);
-//                            }
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                }
-//            });
-            result.put("result", 1);
-            result.put("data", events);
+            logger.info("-KWaiShop-订单-消息-订阅- 消息体:\n{}", events);
+            JSONObject eventJSon = JSONObject.parseObject(events);
+            List<String> list = new ArrayList<>();
+            list.add("kwaishop_order_deliverySuccess");//已收货消息
+            list.add("kwaishop_order_paySuccess");//已支付消息
+            list.add("kwaishop_order_delivering");//已发货消息
+            list.add("kwaishop_order_orderFail");//交易失败消息
+            list.add("kwaishop_order_orderSuccess");//交易成功消息
+            orderNewsService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        if (!Check.isNull(eventJSon)) {
+                            String event = eventJSon.getString("event");
+                            //订单新增消息
+                            if ("kwaishop_order_addOrder".equals(event)) {
+                                orderCursorListService.insertKWaiShopOrder(eventJSon);
+                            } else if (list.contains(event)) {
+                                //状态变更 kwaixiaodian_order_cursor_list
+                                orderCursorListService.updateKWaiShopOrderStatus(eventJSon);
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            });
         } catch (KsMerchantApiException e) {
             e.printStackTrace();
         }

+ 3 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/AccessTokenMapper.java

@@ -13,6 +13,8 @@ public interface AccessTokenMapper {
 
     KuaishouAccessToken getKWaiAccessToken(String id);
 
+    KuaishouAccessToken getKWaiAccessTokenByOpenId(@Param("openId") String openId);
+
     List<KuaishouAccessToken> getTokenInfos();
 
     void update(KuaishouAccessToken updateToken);
@@ -40,4 +42,5 @@ public interface AccessTokenMapper {
     List<JSONObject> getKwaixiaodianTokens();
 
     void updateKwaixiaodianAccessToken(@Param("id") String id, @Param("updateAccessToken") String updateAccessToken, @Param("updateRefreshToken") String updateRefreshToken);
+
 }

+ 5 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KwaixiaodianOrderCursorListMapper.java

@@ -14,4 +14,9 @@ import java.util.List;
 public interface KwaixiaodianOrderCursorListMapper {
 
     void replaceBatchKWaixiaodianOrderCursorList(@Param("list") List<KwaixiaodianOrderCursorList> orderCursorList);
+
+    void insertKWaixiaodianOrderCursorList(@Param("order") KwaixiaodianOrderCursorList order);
+
+    int updateKWaiShopOrderStatus(@Param("oid") Long oid, @Param("status") Integer status);
+
 }

+ 3 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IAccessTokenService.java

@@ -10,6 +10,9 @@ public interface IAccessTokenService {
 
     KuaishouAccessToken getKWaiAccessToken(String id);
 
+    KuaishouAccessToken getKWaiAccessTokenByOpenId(String openId);
+
+
     void refreshAccessToken();
 
     void refreshJYAccessToken();

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

@@ -13,7 +13,8 @@ public interface IKwaixiaodianOrderCursorListService {
 
     /*新增kwaixiaodian_order_cursor_list*/
     void insertKWaiShopOrder(JSONObject eventJSon);
+
     /*修改 新增kwaixiaodian_order_cursor_list status*/
-    void updateKWaiShopOrder(JSONObject eventJSon);
+    void updateKWaiShopOrderStatus(JSONObject eventJSon);
 
 }

+ 6 - 1
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/AccessTokenServiceImpl.java

@@ -37,11 +37,16 @@ public class AccessTokenServiceImpl implements IAccessTokenService {
     }
 
     @Override
-    public KuaishouAccessToken getKWaiAccessToken(String  id) {
+    public KuaishouAccessToken getKWaiAccessToken(String id) {
         return accessTokenMapper.getKWaiAccessToken(id);
     }
 
     @Override
+    public KuaishouAccessToken getKWaiAccessTokenByOpenId(String openId) {
+        return accessTokenMapper.getKWaiAccessTokenByOpenId(openId);
+    }
+
+    @Override
     public void refreshAccessToken() {
         refreshKuaiShouAccessToken();
         refreshByteDanceAccessToken();

+ 37 - 19
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KwaixiaodianOrderCursorListServiceImpl.java

@@ -6,7 +6,9 @@ import com.kuaishou.merchant.open.api.KsMerchantApiException;
 import com.kuaishou.merchant.open.api.client.AccessTokenKsMerchantClient;
 import com.kuaishou.merchant.open.api.common.utils.GsonUtils;
 import com.kuaishou.merchant.open.api.request.order.OpenOrderCursorListRequest;
+import com.kuaishou.merchant.open.api.request.order.OpenOrderDetailRequest;
 import com.kuaishou.merchant.open.api.response.order.OpenOrderCursorListResponse;
+import com.kuaishou.merchant.open.api.response.order.OpenOrderDetailResponse;
 import com.ruixuan.common.utils.Check;
 import com.ruixuan.common.utils.DateUtils;
 import com.ruixuan.isc.constants.KuaiShouConstants;
@@ -106,36 +108,52 @@ public class KwaixiaodianOrderCursorListServiceImpl implements IKwaixiaodianOrde
 
     @Override
     public void insertKWaiShopOrder(JSONObject eventJSon) {
+        log.info("新增kwaixiaodian订单,消息体:{}", eventJSon);
+        JSONObject info = eventJSon.getJSONObject("info");
+        String openId = eventJSon.getString("openId");
+        Long oid = null;
+        if (!Check.isNull(info)) {
+            oid = info.getLong("oid");
+            KuaishouAccessToken token = accessTokenService.getKWaiAccessTokenByOpenId(openId);
+            AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(KuaiShouConstants.KFX_URL, token.getAppKey(), token.getSignSecret());
 
+            OpenOrderDetailRequest request = new OpenOrderDetailRequest();
+            request.setAccessToken(token.getAccessToken());
+            request.setApiMethodVersion(1L);
+            request.setOid(oid);
+            OpenOrderDetailResponse 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");
+                KwaixiaodianOrderCursorList order = new KwaixiaodianOrderCursorList(token, data);
+                mapper.insertKWaixiaodianOrderCursorList(order);
+            } else {
+                log.error("===kwaixiaodian新增订单(open.order.detail)失败,oid:{},信息:{}", oid, jsonObject.getString("error_msg"));
+            }
+        }
     }
 
     @Override
-    public void updateKWaiShopOrder(JSONObject eventJSon) {
-      /*  try {
+    public void updateKWaiShopOrderStatus(JSONObject eventJSon) {
+        try {
             JSONObject info = eventJSon.getJSONObject("info");
             if (!Check.isNull(info)) {
                 Long oid = info.getLong("oid");
-                Integer cpsOrderStatus = info.getInteger("status");
-                if (cpsOrderStatus == 60) {
-                    Integer i = updateOrderRegimentalSettleAmount(oid, cpsOrderStatus);
-                    if (i > 0) {
-                        log.info("订单ID:{},状态:{} 修改成功", oid, cpsOrderStatus);
-                    } else {
-                        log.error("订单ID:{},状态:{} 修改失败", oid, cpsOrderStatus);
-                    }
-                } else {
-                    Integer i = this.updateOrderStatus(oid, cpsOrderStatus);
-                    if (i > 0) {
-                        log.info("订单ID:{},状态:{} 修改成功", oid, cpsOrderStatus);
-                    } else {
-                        log.error("订单ID:{},状态:{} 修改失败", oid, cpsOrderStatus);
-                    }
+                Integer status = info.getInteger("status");
+                int i = mapper.updateKWaiShopOrderStatus(oid, status);
+                if (i <= 0) {
+                    log.error("KWai_订单ID:{},状态:{} 修改失败", oid, status);
                 }
             }
         } catch (Exception e) {
             e.printStackTrace();
-
-        }*/
+        }
     }
 
 }

+ 8 - 7
ruixuan-live/src/main/resources/mapper/isc/AccessTokenMapper.xml

@@ -40,10 +40,16 @@
 
     <select id="getKWaiAccessToken" resultType="com.ruixuan.isc.entity.KuaishouAccessToken">
         select *
-        from kwaixiaodian_access_token
+        from ruixuan.kwaixiaodian_access_token
         where id = #{id} limit 1
     </select>
 
+    <select id="getKWaiAccessTokenByOpenId" resultType="com.ruixuan.isc.entity.KuaishouAccessToken">
+        select *
+        from ruixuan.kwaixiaodian_access_token
+        where open_id = #{openId} limit 1
+    </select>
+
     <select id="getTokenInfos" resultType="com.ruixuan.isc.entity.KuaishouAccessToken">
         select *
         from kuaishou_access_token
@@ -91,12 +97,7 @@
 
     </select>
     <select id="getKwaixiaodianTokens" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT  id AS 'id',
-                access_token AS 'accessToken',
-                refresh_token AS 'refreshToken',
-                app_key AS 'appKey',
-                app_secret AS 'appSecret',
-                sign_secret AS 'signSecret'
+        SELECT id AS 'id', access_token AS 'accessToken', refresh_token AS 'refreshToken', app_key AS 'appKey', app_secret AS 'appSecret', sign_secret AS 'signSecret'
         FROM kwaixiaodian_access_token
     </select>
 

+ 211 - 0
ruixuan-live/src/main/resources/mapper/isc/KwaixiaodianOrderCursorListMapper.xml

@@ -210,4 +210,215 @@
         </foreach>
     </insert>
 
+    <insert id="insertKWaixiaodianOrderCursorList">
+        replace
+        into `ruixuan`.kwaixiaodian_order_cursor_list(
+        company_id,
+        company_name,
+        shop_id,
+        shop_name,
+        oid,
+        pay_time,
+        buyer_image,
+        buyer_open_id,
+        buyer_nick,
+        seller_open_id,
+        seller_nick,
+        express_fee,
+        discount_fee,
+        total_fee,
+        status,
+        send_time,
+        refund_time,
+        create_time,
+        update_time,
+        remark,
+        the_day_of_deliver_goods_time,
+        promise_time_stamp_of_delivery,
+        cps_type,
+        valid_promise_shipment_time_stamp,
+        pre_sale,
+        recv_time,
+        co_type,
+        comment_status,
+        pay_type,
+        risk_code,
+        pay_channel,
+        seller_delay_promise_time_stamp,
+        priority_delivery,
+        remind_shipment_sign,
+        remind_shipment_time,
+        order_seller_role_info,
+        disable_delivery_reason_code,
+        multiple_pieces_no,
+        all_activity_type,
+        order_labels,
+        enable_split_delivery_order,
+        allowance_express_fee,
+        pay_channel_discount,
+        trade_in_pay_after_promo_amount,
+        government_discount,
+        sku_id,
+        rel_sku_id,
+        sku_desc,
+        sku_nick,
+        item_id,
+        rel_item_id,
+        item_title,
+        item_link_url,
+        item_pic_url,
+        num,
+        original_price,
+        item_discount_fee,
+        price,
+        item_type,
+        item_prev_info,
+        goods_code,
+        warehouse_code,
+        good_store_code,
+        service_rule,
+        freight,
+        freight_provider_type,
+        first_order_guarantee,
+        instant_delivery,
+        instant_refund,
+        compensate_fake,
+        service_rule_info,
+        category_info,
+        order_refund_list,
+        order_logistics_info,
+        order_note,
+        encrypted_consignee,
+        desensitise_consignee,
+        encrypted_mobile,
+        desensitise_mobile,
+        province_code,
+        province,
+        city_code,
+        city,
+        district_code,
+        district,
+        town_code,
+        town,
+        encrypted_address,
+        desensitise_address,
+        recharge_account,
+        coordinate_info,
+        order_step_info,
+        distributor_id,
+        distributor_name,
+        order_delivery_info,
+        sub_order_info,
+        stat_date,
+        stat_hour
+        )
+        values
+            (
+        #{order.companyId},
+        #{order.companyName},
+        #{order.shopId},
+        #{order.shopName},
+        #{order.oid},
+        #{order.payTime},
+        #{order.buyerImage},
+        #{order.buyerOpenId},
+        #{order.buyerNick},
+        #{order.sellerOpenId},
+        #{order.sellerNick},
+        #{order.expressFee},
+        #{order.discountFee},
+        #{order.totalFee},
+        #{order.status},
+        #{order.sendTime},
+        #{order.refundTime},
+        #{order.createTime},
+        #{order.updateTime},
+        #{order.remark},
+        #{order.theDayOfDeliverGoodsTime},
+        #{order.promiseTimeStampOfDelivery},
+        #{order.cpsType},
+        #{order.validPromiseShipmentTimeStamp},
+        #{order.preSale},
+        #{order.recvTime},
+        #{order.coType},
+        #{order.commentStatus},
+        #{order.payType},
+        #{order.riskCode},
+        #{order.payChannel},
+        #{order.sellerDelayPromiseTimeStamp},
+        #{order.priorityDelivery},
+        #{order.remindShipmentSign},
+        #{order.remindShipmentTime},
+        #{order.orderSellerRoleInfo},
+        #{order.disableDeliveryReasonCode},
+        #{order.multiplePiecesNo},
+        #{order.allActivityType},
+        #{order.orderLabels},
+        #{order.enableSplitDeliveryOrderb},
+        #{order.allowanceExpressFee},
+        #{order.payChannelDiscount},
+        #{order.tradeInPayAfterPromoAmount},
+        #{order.governmentDiscount},
+        #{order.skuId},
+        #{order.relSkuId},
+        #{order.skuDesc},
+        #{order.skuNick},
+        #{order.itemId},
+        #{order.relItemId},
+        #{order.itemTitle},
+        #{order.itemLinkUrl},
+        #{order.itemPicUrl},
+        #{order.num},
+        #{order.originalPrice},
+        #{order.itemDiscountFee},
+        #{order.price},
+        #{order.itemType},
+        #{order.itemPrevInfo},
+        #{order.goodsCode},
+        #{order.warehouseCode},
+        #{order.goodStoreCode},
+        #{order.serviceRule},
+        #{order.freight},
+        #{order.freightProviderType},
+        #{order.firstOrderGuarantee},
+        #{order.instantDelivery},
+        #{order.instantRefund},
+        #{order.compensateFake},
+        #{order.serviceRuleInfo},
+        #{order.categoryInfo},
+        #{order.orderRefundList},
+        #{order.orderLogisticsInfo},
+        #{order.orderNote},
+        #{order.encryptedConsignee},
+        #{order.desensitiseConsignee},
+        #{order.encryptedMobile},
+        #{order.desensitiseMobile},
+        #{order.provinceCode},
+        #{order.province},
+        #{order.cityCode},
+        #{order.city},
+        #{order.districtCode},
+        #{order.district},
+        #{order.townCode},
+        #{order.town},
+        #{order.encryptedAddress},
+        #{order.desensitiseAddress},
+        #{order.rechargeAccount},
+        #{order.coordinateInfo},
+        #{order.orderStepInfo},
+        #{order.distributorId},
+        #{order.distributorName},
+        #{order.orderDeliveryInfo},
+        #{order.subOrderInfo},
+        #{order.statDate},
+        #{order.statHour}
+        )
+    </insert>
+
+    <update id="updateKWaiShopOrderStatus">
+        UPDATE `ruixuan`.kwaixiaodian_order_cursor_list
+        SET status = #{status}
+        WHERE oid = #{oid}
+    </update>
+
 </mapper>