docs(memory): 补充分销佣金解冻任务分析与排查日志
- 新增 DealerCommissionUnfreeze10584Task 解冻规则详解 - 说明送水套餐与非送水套餐的不同解冻触发条件 - 解析“已送达”与“已完成”状态区别及影响 - 列出常见未解冻原因及排查优先级 - 增加长期记忆文件中分销佣金解冻相关业务规则和状态流转说明 - 添加2026-04-18排查解冻任务未触发的问题及可能原因 - 更新专家历史记录,新增高级开发工程师吴八哥信息 - 新增生产环境 application-test.yml 配置文件示例
This commit is contained in:
@@ -33,7 +33,18 @@
|
||||
"usedAt": 1776000797914,
|
||||
"industryId": "all"
|
||||
}
|
||||
],
|
||||
"d11a5ebd8e064cc19ff4a85b8d931dac": [
|
||||
{
|
||||
"expertId": "SeniorDeveloper",
|
||||
"name": "吴八哥",
|
||||
"profession": "高级开发工程师",
|
||||
"avatarUrl": "https://acc-1258344699.cos.accelerate.myqcloud.com/workbuddy/experts/avatars/02-Engineering/SeniorDeveloper/SeniorDeveloper.png",
|
||||
"promptUrl": "https://acc-1258344699.cos.accelerate.myqcloud.com/workbuddy/experts/experts/02-Engineering/SeniorDeveloper/SeniorDeveloper_zh.md",
|
||||
"usedAt": 1776443595917,
|
||||
"industryId": "02-Engineering"
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastUpdated": 1776017699886
|
||||
"lastUpdated": 1776444657438
|
||||
}
|
||||
@@ -50,6 +50,26 @@ import com.wechat.pay.java.service.payments.model.Transaction;
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 分销佣金解冻任务分析(DealerCommissionUnfreeze10584Task)
|
||||
|
||||
**订单号**:2038841514750459904
|
||||
|
||||
### 解冻规则
|
||||
- **送水套餐**(shop_order.form_id IN 水票模板的 goods_id):该订单关联的水票第一条送水订单 deliveryStatus=40(已完成)才触发解冻
|
||||
- **非送水套餐**(form_id 不在水票模板中):shop_order.order_status=1 即触发解冻
|
||||
|
||||
### "已送达"≠"已完成"的关键区别
|
||||
- deliveryStatus=30(送达待确认):配送员拍照确认送达,此时**不触发解冻**
|
||||
- deliveryStatus=40(已完成):需用户手动确认收货 OR 超时24h自动确认后才到达此状态
|
||||
|
||||
### 常见未解冻原因(按排查优先级)
|
||||
1. 送水订单停在 deliveryStatus=30(送达待确认),未到 40(已完成)
|
||||
2. shop_order.form_id 在水票模板里,走的是"送水套餐"逻辑,但没有找到对应的 glt_user_ticket 记录
|
||||
3. glt_user_ticket 记录缺失或 order_no 字段为空
|
||||
4. 已有 flowType=50 的解冻 marker(说明已解冻)
|
||||
|
||||
### 次要原因
|
||||
|
||||
`RSAAutoCertificateConfig` 每次回调都重新 `build()`,SDK 内部会发一次 `serial=test` 的探测验签,网络问题或并发场景下可能导致首次回调失败。**已优化**:添加 `notifyConfigCache`(ConcurrentHashMap)按 mchId 缓存 config,避免重复初始化。
|
||||
|
||||
13
.workbuddy/memory/2026-04-18.md
Normal file
13
.workbuddy/memory/2026-04-18.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# 2026-04-18 工作日志
|
||||
|
||||
## 排查解冻任务未触发问题
|
||||
- 用户反馈:GltTicketOrder订单已完成配送,但部分订单未触发解冻(freezeMoney未转到money)
|
||||
- 完整梳理了资金流转链路:结算→冻结→解冻
|
||||
- 识别出5个可能原因:
|
||||
1. GltTicketOrder.userTicketId为NULL(解冻任务硬性过滤条件)
|
||||
2. GltUserTicket.orderNo缺失导致关联断裂
|
||||
3. isFirstTicketOrderFinished()"第一条"逻辑阻断后续订单解冻
|
||||
4. loadWaterFormIds()返回空集导致整个解冻任务跳过
|
||||
5. 配送员提成orderNo格式不匹配(非bug,配送员提成本身不经过冻结)
|
||||
- 提供了5条排查SQL和修复建议
|
||||
- 关键文件:DealerCommissionUnfreeze10584Task.java、GltTicketOrderServiceImpl.java
|
||||
@@ -0,0 +1,32 @@
|
||||
# MEMORY.md - 长期记忆
|
||||
|
||||
## 项目概况
|
||||
- 后端:/Users/gxwebsoft/JAVA/java-10584(Spring Boot + MyBatis-Plus)
|
||||
- 后台管理:/Users/gxwebsoft/VUE/mp-10584
|
||||
- 小程序端:/Users/gxwebsoft/VUE/template-10584
|
||||
- 多租户架构(tenantId 隔离),主力租户 10584
|
||||
|
||||
## 技术栈
|
||||
- 后端:Spring Boot + MyBatis-Plus + FastJSON 2.x
|
||||
- 前端:Nuxt/Vue3 + TypeScript + Ant Design Vue4 + Tailwind
|
||||
- 小程序:Uni-app/Taro
|
||||
- 开发环境:Mac + Node.js v22 + JetBrains + Docker + pnpm
|
||||
|
||||
## 业务规则备忘
|
||||
|
||||
### 分销佣金解冻规则(10584)
|
||||
- 结算:DealerOrderSettlement10584Task 每10秒,佣金先入 freezeMoney
|
||||
- 解冻:DealerCommissionUnfreeze10584Task 每20秒,freezeMoney→money
|
||||
- 送水套餐解冻条件:同一userTicketId下第一条送水订单deliveryStatus=40
|
||||
- 非送水套餐解冻条件:ShopOrder.orderStatus=1 且 payStatus=true
|
||||
- 幂等标记:ShopDealerCapital(flowType=50, comments="佣金解冻(capitalId=xxx)")
|
||||
- 配送员提成:直接入money(不经过冻结),orderNo格式="gltTicketOrder:"+id
|
||||
|
||||
### 送水订单状态流转
|
||||
- 10(待配送)→20(配送中)→30(待客户确认)→40(已完成)
|
||||
- delivered()配送员确认送达时就会同步ShopOrder.orderStatus=1
|
||||
- confirmReceive()/autoConfirmTimeout()也会同步
|
||||
|
||||
### 已知排查问题
|
||||
- 解冻任务可能因 userTicketId为空、GltUserTicket.orderNo缺失、"第一条未完成"阻断等原因未触发
|
||||
- 解冻任务依赖 loadWaterFormIds() 不为空,否则整个任务跳过
|
||||
|
||||
85
src/main/resources/application-test.yml
Normal file
85
src/main/resources/application-test.yml
Normal file
@@ -0,0 +1,85 @@
|
||||
# 生产环境配置
|
||||
|
||||
# 数据源配置
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://47.107.249.41:13306/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
|
||||
username: modules
|
||||
password: tYmmMGh5wpwXR3ae
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
druid:
|
||||
remove-abandoned: true
|
||||
|
||||
# redis
|
||||
redis:
|
||||
database: 0
|
||||
host: 47.107.249.41
|
||||
port: 16379
|
||||
password: redis_t74P8C
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
file:
|
||||
name: websoft-modules.log
|
||||
level:
|
||||
root: WARN
|
||||
com.gxwebsoft: ERROR
|
||||
com.baomidou.mybatisplus: ERROR
|
||||
|
||||
socketio:
|
||||
host: 0.0.0.0 #IP地址
|
||||
|
||||
# MQTT配置
|
||||
mqtt:
|
||||
enabled: false # 启用MQTT服务
|
||||
host: tcp://132.232.214.96:1883
|
||||
username: swdev
|
||||
password: Sw20250523
|
||||
client-id-prefix: hjm_car_
|
||||
topic: /SW_GPS/#
|
||||
qos: 2
|
||||
connection-timeout: 10
|
||||
keep-alive-interval: 20
|
||||
auto-reconnect: true
|
||||
|
||||
# 框架配置
|
||||
config:
|
||||
# 文件服务器
|
||||
file-server: https://file-s209.shoplnk.cn
|
||||
# 生产环境接口
|
||||
server-url: https://glt-server.websoft.top/api
|
||||
# 业务模块接口
|
||||
api-url: https://glt-api.websoft.top/api
|
||||
upload-path: /www/wwwroot/file.ws
|
||||
|
||||
# 阿里云OSS云存储
|
||||
endpoint: https://oss-cn-shenzhen.aliyuncs.com
|
||||
accessKeyId: LTAI4GKGZ9Z2Z8JZ77c3GNZP
|
||||
accessKeySecret: BiDkpS7UXj72HWwDWaFZxiXjNFBNCM
|
||||
bucketName: oss-gxwebsoft
|
||||
bucketDomain: https://oss.wsdns.cn
|
||||
aliyunDomain: https://oss-gxwebsoft.oss-cn-shenzhen.aliyuncs.com
|
||||
|
||||
# 生产环境证书配置
|
||||
certificate:
|
||||
load-mode: VOLUME # 生产环境从Docker挂载卷加载
|
||||
cert-root-path: /www/wwwroot/file.ws
|
||||
|
||||
# 支付配置缓存
|
||||
payment:
|
||||
cache:
|
||||
# 支付配置缓存键前缀,生产环境使用 Payment:1* 格式
|
||||
key-prefix: "Payment:1"
|
||||
# 缓存过期时间(小时)
|
||||
expire-hours: 24
|
||||
# 阿里云翻译配置
|
||||
aliyun:
|
||||
translate:
|
||||
access-key-id: LTAI5tEsyhW4GCKbds1qsopg
|
||||
access-key-secret: zltFlQrYVAoq2KMFDWgLa3GhkMNeyO
|
||||
endpoint: mt.cn-hangzhou.aliyuncs.com
|
||||
wechatpay:
|
||||
transfer:
|
||||
scene-id: 1005
|
||||
scene-report-infos-json: '[{"info_type":"岗位类型","info_content":"配送员"},{"info_type":"报酬说明","info_content":"12月份配送费"}]'
|
||||
Reference in New Issue
Block a user