feat(mp-java): hjc 小程序接入链、微信接入自检、首页轮播与一站式出向推送
hjc 包的进展(按 AGENTS.md 约定,改动集中在 hjc 包内):
- HjcWechatController 新增三接口:
- GET /api/hjc/wechat/readiness 管理员自检,逐项报告小程序/公众号/支付/serverUrl
是否配好、支付 appId 与小程序 appId 是否一致;?probe=true 实调微信验证 appSecret
(失败只记日志、不抛异常)。appId 与商户号在 detail 里打码,appSecret 永不输出。
- GET /api/hjc/wechat/mp-appid 只回 appId,供 H5 渲染开放标签(不含密钥)。
- POST /api/hjc/wechat/mp-login uni.login 的 code 换小程序 openid/unionid;匿名放行,
租户取 HjcAuthProperties 的配置值而非可伪造的请求头。
配套 HjcWechatReadinessUtil(含单测)与 HjcWechatController 的两套配置读取:
公众号 cache{t}:setting:wx-official、小程序 mp-weixin:{t} → setting:mp-weixin:{t} →
跨库回源 gxwebsoft_core.sys_setting。
- HjcBannerController / Service / ServiceImpl / Mapper(+XML) / HjcBannerVo:只读
GET /api/hjc/banner/list,按租户 + position + 启用状态 + 生效时间窗口过滤 CMS
轮播组并扁平化;租户隔离交给 MyBatis-Plus 租户拦截器,不改 cms 及其他项目代码。
配套 HjcBannerApiTest(最小上下文 MockMvc,含不串租户与位置过滤)。
- 一站式出向推送:CreatePurchaseDetails 补退款字段,HjcOrder 补 refund_time /
refund_reason(配套 hjc_order_add_refund.sql 与 hjc_init.sql),HjcBizServiceImpl
在 REFUNDED 时把退款时间与原因一并推送;配套推送报文单测。
- 共享文件 SecurityConfig.java 仅追加一行:匿名放行 /api/hjc/wechat/mp-login
(注册页证件上传与 OCR 早先已放行)。这是本包唯一改到 common 的地方。
- 文档:CONTEXT.md、docs/一站式平台对接-接口文档.md。
**不含** scripts/hjc_test_push_out.py:该联调探针脚本内含与 HjcOneStopAuthUtil.java
相同的 APP_KEY / PASSWORD 明文,按此前排查记录「不得提交」处理,保留在工作区未跟踪。
This commit is contained in:
+36
-1
@@ -112,7 +112,10 @@ POST {一站式BaseUrl}/api/biz/createPurchaseDetails
|
||||
### 3.2 触发时机
|
||||
|
||||
- **支付成功后**(官方网 `PUT /api/hjc/order/mark-paid` 置已付)自动推送,请求状态 `status=PAID`。
|
||||
- **退款时**(官方网 `POST /api/hjc/order/refund` 置已退款)推送,请求状态 `status=REFUNDED`。
|
||||
- **退款时**(官方网 `POST /api/hjc/order/refund` 置已退款)推送,请求状态 `status=REFUNDED`,**必须**携带 `refundTime`(退款时间)与 `refundReason`(退款原因)。
|
||||
- `refundTime`:官方网记录退款动作发生时间(服务器时间),落库 `hjc_order.refund_time`。
|
||||
- `refundReason`:后台退款弹窗填写(≤200 字),落库 `hjc_order.refund_reason`;未填写时取默认「管理员操作退款」。
|
||||
- 推送失败进重试队列后,重试报文的退款时间/原因按订单落库值重建,不会丢失。
|
||||
|
||||
### 3.3 请求头
|
||||
|
||||
@@ -144,6 +147,8 @@ POST {一站式BaseUrl}/api/biz/createPurchaseDetails
|
||||
| `paidAt` | string | 支付时间 `yyyy-MM-dd HH:mm:ss` |
|
||||
| `payMethod` | string | `WECHAT_NATIVE` / `ALIPAY` |
|
||||
| `status` | string | `PAID`(已支付)/ `REFUNDED`(已退款) |
|
||||
| `refundTime` | string | **退款时必传**,退款时间 `yyyy-MM-dd HH:mm:ss`(`status=REFUNDED` 时推送,其余状态不出现在报文中) |
|
||||
| `refundReason` | string | **退款时必传**,退款原因(≤255 字符;后台未填写时取默认「管理员操作退款」) |
|
||||
| `invoiceStatus` | string | `NONE` / `APPLIED` / `ISSUED` |
|
||||
|
||||
请求体示例:
|
||||
@@ -171,6 +176,33 @@ POST {一站式BaseUrl}/api/biz/createPurchaseDetails
|
||||
}
|
||||
```
|
||||
|
||||
退款推送请求体示例(`status=REFUNDED`,多出 `refundTime`/`refundReason`):
|
||||
|
||||
```json
|
||||
{
|
||||
"idempotencyKey": "HJC_ORD_HJC2026080101ABCD",
|
||||
"orderNo": "HJC2026080101ABCD",
|
||||
"projectNo": "ZB-2026-0001",
|
||||
"projectName": "xxx采购项目",
|
||||
"tenderPrice": 500.00,
|
||||
"quantity": 1,
|
||||
"totalAmount": 500.00,
|
||||
"buyer": {
|
||||
"enterpriseName": "某某科技有限公司",
|
||||
"creditCode": "91110XXXX",
|
||||
"contactName": "张三",
|
||||
"contactPhone": "13800000000",
|
||||
"contactEmail": "a@b.com"
|
||||
},
|
||||
"paidAt": "2026-08-01 10:30:00",
|
||||
"payMethod": "WECHAT_NATIVE",
|
||||
"status": "REFUNDED",
|
||||
"refundTime": "2026-08-03 09:15:00",
|
||||
"refundReason": "项目终止,客户申请退款",
|
||||
"invoiceStatus": "NONE"
|
||||
}
|
||||
```
|
||||
|
||||
### 3.5 响应约定
|
||||
|
||||
- 一站式按自身 `API` 返回;官方网侧把 `HTTP 2xx` 视为成功,否则记入推送日志(`hjc_order_push_log`)待重试。
|
||||
@@ -201,6 +233,8 @@ POST {一站式BaseUrl}/api/biz/createPurchaseDetails
|
||||
| `fileList` | 公告附件 | `bulletin_file_list` |
|
||||
| `needSellTender` | 是否卖标书 | `need_sell` |
|
||||
| `sellingMethod` | 售卖方式 | `selling_method` |
|
||||
| `refundTime` | 退款时间(出向) | `hjc_order.refund_time` |
|
||||
| `refundReason` | 退款原因(出向) | `hjc_order.refund_reason` |
|
||||
|
||||
---
|
||||
|
||||
@@ -223,3 +257,4 @@ POST {一站式BaseUrl}/api/biz/createPurchaseDetails
|
||||
2. `timestamp` 格式、时区、±10min 窗口是否认可。
|
||||
3. `createPurchaseDetails` 字段名是否需与一站式现网入参完全一致(现按本表定义);如需调整字段名请给出一站式入参清单。
|
||||
4. 入向:一站式调用官方网 `/api/hjc/push/project` 时是否也按同一套 `appKey/timestamp/sign` 鉴权(本表默认对称鉴权)。
|
||||
5. 退款字段名 `refundTime` / `refundReason` 与一站式现网入参是否一致;格式默认 `yyyy-MM-dd HH:mm:ss`,如一站式要求其他命名或时间格式请同步调整 `CreatePurchaseDetails`。
|
||||
|
||||
Reference in New Issue
Block a user