[2025-05-13] 完善电商订单发布文档
All checks were successful
Publish to Confluence / confluence (push) Successful in 1m20s

This commit is contained in:
liuxiaohua 2025-05-15 11:49:15 +08:00
parent 47ab6e13b1
commit 9241c01127
5 changed files with 434 additions and 13 deletions

View File

@ -25,13 +25,26 @@
## 发布说明
### RocketMQ配置
#### RocketMQ Topic 创建
- EG_ORDER_SPI_TOPIC
- EG_WEWORK_EVENT_WEBHOOK_TOPIC
#### RocketMQ ConsumerGroup 创建
- egOrderSpiConsumerGroup
- egWeworkEventWebhookConsumerGroup
### 涉及项目
| 项目 | 分支 | 发布顺序 | 数据库变更 | 配置变更 | 负责人 | 备注 |
|-----------------|---------------------------|------|-----------------------|-------------------------|-----|----------------------------|
| yuanmeng-engine | feat/20250429-web-satrter | 1 | | | 刘晓华 | 升级 1.0.14 |
| yuanmeng-parent | feat/20250429-web-satrter | 2 | | | 刘晓华 | 升级 1.0.14 |
| qifu-saas-eg | feat/20250304-e-commerce | 3 | [数据库脚本DDL](#数据库脚本DDL) | [Nacos配置文件](#Nacos配置文件) | 刘晓华 | 注意配置文件中需要修改的部分需要修改为对应环境的数据 |
| 项目 | 分支 | 发布顺序 | 数据库变更 | 配置变更 | 负责人 | 备注 |
|-----------------|-----------------------------|------|-----------------------|-------------------------|-----|----------------------------|
| yuanmeng-engine | feat/20250429-web-satrter | 1 | | | 刘晓华 | 升级 1.1.0 |
| yuanmeng-parent | feat/20250429-web-satrter | 2 | | | 刘晓华 | 升级 1.1.0 |
| qifu-saas-eg | feat/20250304-e-commerce | 3 | [数据库脚本DDL](#数据库脚本DDL) | [Nacos配置文件](#Nacos配置文件) | 刘晓华 | 注意配置文件中需要修改的部分需要修改为对应环境的数据 |
| pm | feature/20250428-wework-tzk | 4 | [数据库脚本DDL](#数据库脚本DDL) | [Nacos配置文件](#Nacos配置文件) | 刘晓华 | 注意配置文件中需要修改的部分需要修改为对应环境的数据 |
### 附件
@ -67,6 +80,7 @@ CREATE TABLE `eg_order_app`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`channel` int(4) NOT NULL COMMENT '渠道1=eBay',
`app_name` varchar(50) NOT NULL DEFAULT '' COMMENT '渠道1=eBay',
`client_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '客户端id',
`client_secret` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '客户端secret',
`dev_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '开发者id',
@ -254,6 +268,142 @@ CREATE TABLE `eg_spi`
COLLATE = utf8mb4_general_ci COMMENT = 'SPI服务信息表'
ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for eg_wework_event_member
-- ----------------------------
DROP TABLE IF EXISTS `eg_wework_event_member`;
CREATE TABLE `eg_wework_event_member`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`suite_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方应用ID',
`auth_corp_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '授权企业的CorpID',
`info_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'change_contact' COMMENT '固定为change_contact',
`timestamp` bigint(20) NOT NULL COMMENT '时间戳',
`change_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'create_user' COMMENT '固定为create_user',
`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '成员UserID',
`open_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '全局唯一,对于同一个服务商不同应用获取到企业内同一个成员的OpenUserID是相同的',
`new_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '新的UserID变更时推送userid由系统生成时可更改一次',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '成员名称',
`department` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '成员所在部门列表(逗号分隔)',
`main_department` int(11) NOT NULL DEFAULT 1 COMMENT '主部门',
`is_leader_in_dept` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表示所在部门是否为上级(逗号分隔)0-否1-是',
`direct_leader` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '直属上级UserID(逗号分隔)',
`mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码',
`position` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '职位信息',
`gender` tinyint(4) NOT NULL DEFAULT 0 COMMENT '性别。0表示未定义1表示男性2表示女性。',
`email` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`biz_mail` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业邮箱',
`status` tinyint(4) NOT NULL DEFAULT 4 COMMENT '激活状态: 1=已激活2=已禁用4=未激活5=退出企业。',
`avatar` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像url',
`alias` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '成员别名',
`telephone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '座机',
`mem_change_cnt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '成员变更消息',
`create_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人ID',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人名称',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新人id',
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '更新人名称',
`update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '是否删除0=否id=是',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id` (`user_id`) USING BTREE,
INDEX `idx_auth_corp_id` (`auth_corp_id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 23105705
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '成员事件表'
ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for eg_wework_member
-- ----------------------------
DROP TABLE IF EXISTS `eg_wework_member`;
CREATE TABLE `eg_wework_member`
(
`id` bigint(20) NOT NULL COMMENT '自增id',
`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户唯一标识',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户姓名',
`alias` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户别名',
`mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码(带国际区号)',
`position` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '职务信息',
`gender` tinyint(4) NULL DEFAULT NULL COMMENT '性别1-男2-女)',
`email` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业邮箱',
`biz_mail` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '腾讯企业邮箱',
`telephone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '座机号码',
`direct_leader` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '直属上级UserID',
`enable` tinyint(1) NULL DEFAULT 1 COMMENT '启用状态1-启用0-禁用)',
`avatar_mediaid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像媒体ID',
`address` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '办公地址',
`main_department` bigint(20) NULL DEFAULT NULL COMMENT '主部门ID',
`to_invite` tinyint(1) NULL DEFAULT 1 COMMENT '是否发送邀请',
`external_position` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '对外职务',
`create_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人ID',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人名称',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新人id',
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '更新人名称',
`update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '是否删除0=否id=是',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id` (`user_id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '企业微信成员表'
ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for eg_wework_member_dept
-- ----------------------------
DROP TABLE IF EXISTS `eg_wework_member_dept`;
CREATE TABLE `eg_wework_member_dept`
(
`id` bigint(20) NOT NULL COMMENT '自增id',
`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户唯一标识',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户姓名',
`dept_id` bigint(20) NOT NULL COMMENT '部门id',
`create_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人ID',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人名称',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新人id',
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '更新人名称',
`update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '是否删除0=否id=是',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_user_dept` (`user_id`, `dept_id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '成员部门关联表'
ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for eg_wework_department
-- ----------------------------
DROP TABLE IF EXISTS `eg_wework_department`;
CREATE TABLE `eg_wework_department`
(
`id` bigint(20) NOT NULL COMMENT '自增id',
`dept_id` bigint(20) NOT NULL COMMENT '部门id',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门名称',
`name_en` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '英文部门名称',
`parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父部门id',
`create_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建人ID',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人名称',
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新人id',
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '更新人名称',
`update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '是否删除0=否id=是',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_dept_id` (`dept_id`) USING BTREE,
INDEX `idx_dept_parent_id` (`dept_id`, `parent_id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '企业微信部门表'
ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
```
@ -302,9 +452,13 @@ rocketmq:
producer:
group: qifu-saas-eg
namespace: dev
# 发送消息超时时间默认3000
sendMessageTimeout: 10000
consumer:
group: qifu-saas-eg
namespace: dev
# 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值
pull-batch-size: 10
qifu:
eg:
@ -315,7 +469,19 @@ qifu:
shipping-fulfillment-url: https://api.sandbox.ebay.com/sell/fulfillment/v1/order/{orderId}/shipping_fulfillment
challenge-verification-token: 'dfcDlKJ35c693cFi90Mc3CCiu776fsfgs'
notification-endpoint: 'https://wxwork.texous.cn/open/order/callback/1'
spi-consumer-group: qifuEgSpiConsumerGroup
consumer-group:
order-spi: egOrderSpiConsumerGroup
wework-event-webhook: egWeworkEventWebhookConsumerGroup
wework-map:
keyfil:
webhooks:
#- 生产
#- - url: http://172.17.229.30:18088/api/pssystem/event/changeContact
#- 测试
- url: http://172.17.229.30:18080/api/pssystem/event/changeContact
timeout: 6000
events:
- change_contact
yuanmeng:
redis:

View File

@ -22,6 +22,16 @@
<!-- :toc: -->
# 电商应用发布材料
- 授权回调链接URLhttps://#{host}/qifu-saas-eg/open/order/oauth/callback/#{channel}/#{appName}
- Webhook链接URLhttps://#{host}/qifu-saas-eg/open/order/callback/#{channel}/#{appName}
- #{host}: 对应环境的域名
- #{channel}:电商渠道
- 1: eBay
- 2: TikTok
- 3: Amazon
- 4: Lazada
- 5: Shopee
- #{appName}: 应用名称,需要是英文,因为单个渠道可能会有多个应用,所以这边做兼容
## 材料准备
### eBay
@ -32,10 +42,21 @@
- 配置 endpoint: 例如 `https://xxxxx.keyfil.com/qifu-saas-eg/open/order/callback/1``xxx.keyfil.com` 改为对应的环境
- 保存即可
### Lazada
### Tiktok
- 需要先注册账号https://partner-sso.tiktok.com/account/login?from=ttspc_no_login&redirectURL=%2F%2Fpartner.tiktokshop.com%2Fapproval%2Fprofile&lang=zh-CN&local_id=localID_Portal_50688815_1742884012545&userID=46044724&is_through_login=1
- 操作界面https://partner.tiktokshop.com/approval/profile
- 成为合作者文档https://partner.tiktokshop.com/doc/page/63fd7443715d622a338c507f
- 创建和发布服务文档https://partner.tiktokshop.com/doc/page/63fd7445715d622a338c509d#%E5%9B%9E%E5%88%B0%E9%A1%B6%E9%83%A8
### Shopee
### Lazada
- 发布教程https://www.yuque.com/lazadasellerservicemarket/hoafmn/qyldgaxgtfsm5om6?singleDoc#%20%E3%80%8A%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0%E5%95%86%E7%94%A8APPKEY%E5%8F%91%E5%B8%83%E8%87%B3%E6%9C%8D%E5%8A%A1%E5%B8%82%E5%9C%BA%E6%95%99%E7%A8%8B%E3%80%8B
- 如果需要解密敏感信息需要做如下操作
- 解密信息申请https://eco.lazada.com/service/project?id=7377
- 第一步需要产品介入
- 第三步需要开发介入
### Amazon
### Shopee

View File

@ -0,0 +1,200 @@
<!-- Space: qifu -->
<!-- Parent: 后端技术&知识&规范 -->
<!-- Parent: 技术方案 -->
<!-- Parent: 基建 -->
<!-- Parent: 03-接入指南 -->
<!-- Parent: 0301-电商接入指南 -->
<!-- Title: 20250515-电商订单对接指南 -->
<!-- Macro: :anchor\((.*)\):
Template: ac:anchor
Anchor: ${1} -->
<!-- Macro: \!\[.*\]\((.+)\)\<\!\-\- width=(.*) \-\-\>
Template: ac:image
Url: ${1}
Width: ${2} -->
<!-- Macro: \<\!\-\- :toc: \-\-\>
Template: ac:toc
Printable: 'false'
MinLevel: 2
MaxLevel: 4 -->
<!-- Include: 杂项/声明文件.md -->
<!-- :toc: -->
# 电商订单对接指南
- eBay 接入指南可以查看http://confluence.qifu.com/pages/viewpage.action?pageId=38511846
- TikTok 接入指南可以查看http://confluence.qifu.com/pages/viewpage.action?pageId=38512736
- Amazon 接入指南可以查看http://confluence.qifu.com/pages/viewpage.action?pageId=38512738
- Lazada 接入指南可以查看http://confluence.qifu.com/pages/viewpage.action?pageId=38512740
## 使用南北流量网关对接电商平台
### 接口交互流程
#### 电商用户授权流程
![](https://picture.texous.cn/blog/20250310161855028.png)
#### 接口交互流程
![](https://picture.texous.cn/blog/20250310164117594.png)
### 添加依赖
```xml
<dependencys>
<!-- RPC接口 -->
<dependency>
<groupId>com.yuanmeng.qifu</groupId>
<artifactId>qifu-saas-eg-client</artifactId>
<version>1.0.13</version>
</dependency>
<!-- SPI接收订单同步信息 -->
<dependency>
<groupId>com.yuanmeng.qifu</groupId>
<artifactId>qifu-saas-eg-spi</artifactId>
<version>1.0.13</version>
</dependency>
</dependencys>
```
### 注册SPI服务注册之后才会有 webhook 请求)
#### spi包中包含的自动注册
- qifu-saas-eg-spi 已经整合了自动注册功能。
- 默认以 spring.application.name 作为服务名在程序启动时发起注册
- 可以做特殊配置:
- ```yaml
qifu:
eg:
spi:
enable: true
enable-spi-register: true
spi-infos:
- type: 1
server-code: ${spring.application.name}
server-name: ${spring.application.name}
server-description: '测试服务'
```
- type1=订单同步SPI
- server-code唯一标识卖家授权的时候使用
- server-name服务名称SPI feign调用服务名
#### 手动注册
- 使用 `RemoteSpiService.addSpi` 来进行注册
- 可以关闭自动注册
- ```yaml
qifu:
eg:
spi:
enable-spi-register: false
```
### 卖家授权(必须)
#### 第一步:关联卖家授权应用(必须)
- `RemoteOrderService.linkApp(channel, sellerId, region, orderAppId, spiServerCodes)`
- channel`(required)`: 渠道,参考 `OrderChannelEnum` code字段
- sellerId`(required)`卖家id卖家唯一标识业务自定义
- region`(required)`:所属区域,请看 `RemoteOrderService.linkApp()` 接口文档注释
- orderAppId`(optional)`:关联的授权应用,没传由系统负载获取
- spiServerCodes`(optional)`spi回调应用编码多个用, 分割,没有时不会做 webhook
- **示例:**
- ```shell
curl -X POST --location "http://localhost:8933/order/app/link?channel=4&sellerId=keyfil001&region=Vietnam" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE3MzEzODIxNzksInRlbmFudElkIjo3LCJuaWNrbmFtZSI6IuWImOaZk-WNjiIsImV4cCI6MTczMTQyNTM3OSwiaWF0IjoxNzMxMzgyMTc5LCJ1c2VySWQiOjEzODM3MjksImp0aSI6ImYyMzQ1NDgxNWQ0NTRkNzk4MGQ2ZjQwMGQ2NWFlMzBkIn0.QjFcqlGACbR9VZXEyQhmuP-JTJTT7ILmP8FeNdGJcJI"
```
#### 获取授权链接(必须)
- `RemoteOrderService.authAuthorizeUrl(Integer channel, String sellerId)`
- **示例:**
- ```shell
curl -X GET --location "http://localhost:8933/order/oauth/authorize?channel=4&sellerId=keyfil001" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE3MzEzODIxNzksInRlbmFudElkIjo3LCJuaWNrbmFtZSI6IuWImOaZk-WNjiIsImV4cCI6MTczMTQyNTM3OSwiaWF0IjoxNzMxMzgyMTc5LCJ1c2VySWQiOjEzODM3MjksImp0aSI6ImYyMzQ1NDgxNWQ0NTRkNzk4MGQ2ZjQwMGQ2NWFlMzBkIn0.QjFcqlGACbR9VZXEyQhmuP-JTJTT7ILmP8FeNdGJcJI"
```
#### 获取accessToken回调链接为业务链接时必须
-
`RemoteOrderService.authAccessToken(Integer channel, String appName, String code, String spapiOauthCode, String shopId, String mainAccountId, String state)`
- **示例:**
- ```shell
curl -X GET --location "http://localhost:8933/open/order/oauth/callback/4?code=0_132783_8fmfr7mGBVhjyFt7aycC8R784464&state=1922598474703364098"
```
#### 授权状态(必须)(快过期时提醒用户重新授权)
- **在授权后需要查询授权状态,授权状态快过期时需要提醒用户重新授权**
- `RemoteOrderService.oauthStatus(Integer channel, String sellerId)`
- **示例:**
- ```shell
curl -X GET --location "http://localhost:8933/order/oauth/status?channel=4&sellerId=keyfil001"
```
#### 手动同步(可选)
- 手动触发订单同步操作
- `RemoteOrderService.syncOrder(OrderSyncReq req)`
- **示例:**
- ```shell
curl -X POST --location "http://localhost:8933/order/sync" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE3MzEzODIxNzksInRlbmFudElkIjo3LCJuaWNrbmFtZSI6IuWImOaZk-WNjiIsImV4cCI6MTczMTQyNTM3OSwiaWF0IjoxNzMxMzgyMTc5LCJ1c2VySWQiOjEzODM3MjksImp0aSI6ImYyMzQ1NDgxNWQ0NTRkNzk4MGQ2ZjQwMGQ2NWFlMzBkIn0.QjFcqlGACbR9VZXEyQhmuP-JTJTT7ILmP8FeNdGJcJI" \
-d '{
"channel": 4,
"sellerId": "keyfil001",
"startTimeMillis": 1742529814000
}'
```
#### 自动同步
- 每一个小时会进行一次订单同步。cron`0 0 0/1 * * ?`
### 编写SPI处理逻辑
#### 开放接口
- SPI通过自动注册接口 `/sync/order/change` 来实现 webhook 请求接收
- 需要程序开放 `/sync/order/change` 接口供 `qifu-saas-eg` 回调使用
#### 编写回调信息处理逻辑
- 实现 `OrderSyncHandler`
- **示例:**
- ```java
@Slf4j
@Component
public class OrderSyncHandlerImpl implements OrderSyncHandler {
@Override
public Boolean handle(SpiOrderReq req) {
log.info("channel: {}", req.getChannel());
log.info("sellerId: {}", req.getSellerId());
log.info("orders: {}", req.getSpiOrders());
for (SpiOrderReq.SpiOrder spiOrder : req.getSpiOrders()) {
if (spiOrder.getOldOrder() == null) {
// TODO 新订单处理逻辑
log.info("new order handler: order info: {}", spiOrder.getNewOrder());
} else {
// TODO 更新订单逻辑
log.info("update order handler: old order info: {}", spiOrder.getOldOrder());
log.info("update order handler: new order info: {}", spiOrder.getNewOrder());
}
}
return Boolean.TRUE;
}
}
```

View File

@ -0,0 +1,34 @@
# IDEA优化配置
## Terminal修改为GitBash
- 配置路径:`Settings > Tools > Terminal`
- ![](https://picture.texous.cn/blog/20250514173518633.png)
- 支持中文显示
- 修改 git bash 配置:`Git安装目录 > etc > bash.bashrc`
- ![](https://picture.texous.cn/blog/20250514173728719.png)
## 通用注释模板配置
- 配置路径 `Settings > File and Code Templates > includes > File Header`
- ![](https://picture.texous.cn/blog/20250514174200628.png)
- ```java
/**
* insert description here
*
* @author liuxiaohua
* @since ${DATE}
*/
```
## 常用插件列表
![](https://picture.texous.cn/blog/20250514174512217.png)
## 自定义快捷键配置
### Git Merge
- 配置路径 `Settings > Keymap`
- ![](https://picture.texous.cn/blog/20250514174814281.png)
- `Ctrl + ,`
### 界面配置
- 配置路径 `右上角空白处 > 右键 > Customize Toolbar...`
- ![](https://picture.texous.cn/blog/20250514175118678.png)
- ![](https://picture.texous.cn/blog/20250514175230706.png)

View File

@ -3,23 +3,23 @@
#### 查看集群信息
```shell
#- 查看集群信息
C:\Programs\Developer\ktctl_0.3.7\kubectl.exe cluster-info
C:/Programs/Developer/ktctl_0.3.7/kubectl.exe cluster-info
```
#### 启动Connect
```shell
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe connect --namespace qifu-develop --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
C:/Programs/Developer/ktctl_0.3.7/ktctl.exe connect --namespace qifu-develop --kubeconfig C:/Documents/Workspace/Env/.kube/kubeconfig.yaml
```
#### 启动mesh服务
```shell
#- 启动mesh
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe mesh qifu-saas-eg --namespace qifu-develop --expose 8933:8933 --versionMark ym-version:liuxiaohua --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
C:/Programs/Developer/ktctl_0.3.7/ktctl.exe mesh qifu-saas-eg --namespace qifu-develop --expose 8933:8933 --versionMark ym-version:liuxiaohua --kubeconfig C:/Documents/Workspace/Env/.kube/kubeconfig.yaml
```
#### 资源清理
```shell
C:\Programs\Developer\ktctl_0.3.7\ktctl.exe clean --namespace qifu-develop --kubeconfig C:\Documents\Workspace\Env\.kube\kubeconfig.yaml
C:/Programs/Developer/ktctl_0.3.7/ktctl.exe clean --namespace qifu-develop --kubeconfig C:/Documents/Workspace/Env/.kube/kubeconfig.yaml
#- --dryRun 只打印要删除的Kubernetes资源名称不删除资源
#- --thresholdInMinus value 清理至少已失联超过多长时间的Kubernetes资源 (单位分钟默认值15)