Skip to content

Commit 4b5575c

Browse files
committed
修复客服服务入口接口兼容性
1 parent f76b4db commit 4b5575c

2 files changed

Lines changed: 58 additions & 1 deletion

File tree

.superpowers/sdd/task-2-report.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Task 2 报告:商家客服服务入口与请求执行
2+
3+
## 修改
4+
5+
- 新增 `WxChannelKfService``WxChannelKfServiceImpl`
6+
- 新增客服接口常量,使用官方路径:
7+
- `/channels/ec/commkf/cosupload`
8+
- `/channels/ec/commkf/sendmsg`
9+
- `uploadMedia` 使用 multipart 字段 `file``open_id``msg_type`,并解析 `cos_url`
10+
- `sendMessage` 通过现有 `post(url, Object)` JSON 流程发送请求,并解析 `msg_id`
11+
-`WxChannelService` 增加懒加载、同步缓存的 `getKfService()` 入口。
12+
- 新增不依赖微信凭据的 TestNG 测试,已纳入模块 `src/test/resources/testng.xml`
13+
14+
## TDD 证据
15+
16+
- 红灯:先新增测试后执行
17+
`mvn -pl weixin-java-channel -Dtest=WxChannelKfServiceImplTest -DfailIfNoTests=false test`
18+
测试编译按预期失败,原因是 `WxChannelKfServiceImpl``getKfService()` 尚不存在。
19+
- 绿灯:实现后通过 TestNG CLI 实际执行
20+
`WxChannelKfServiceImplTest`:3 通过,0 失败,0 跳过。
21+
- 模块套件:通过 TestNG CLI 执行 `weixin-java-channel/src/test/resources/testng.xml`:18 通过,0 失败,0 跳过。
22+
- `git diff --check`:通过。
23+
24+
## 测试执行说明
25+
26+
父 POM 的 Surefire pluginManagement 默认配置 `skip=true`,故 Maven 可用于编译测试但会跳过执行;已以模块编译产物和 test scope 依赖运行 TestNG CLI,确保新增测试及模块 XML 套件均真实执行。
27+
28+
## 自审
29+
30+
- 上传和发送接口均使用官方 `commkf` URL,没有使用错误的 `/kf/` 路径。
31+
- 修改范围仅覆盖服务入口、请求执行、常量和离线测试;无新增依赖。
32+
- 保持 Java 8 兼容,沿用现有 `CommonUploadParam``ResponseUtils` 和服务缓存模式。
33+
34+
## Commit
35+
36+
`f76b4db00`(新增商家客服服务入口与请求执行)。
37+
38+
## 兼容性修复(Task 2 审查 P1)
39+
40+
- 根因:`WxChannelService#getKfService()` 原为抽象接口方法,会迫使既有下游实现重新编译,并可能使未实现新方法的旧实现运行时抛出 `AbstractMethodError`
41+
- 修复:改为 Java 8 `default` 方法;默认抛出 `UnsupportedOperationException("WxChannelService implementation does not support getKfService()")`
42+
- 保持 `BaseWxChannelServiceImpl``@Override synchronized getKfService()` 的懒加载缓存实现不变。
43+
- 检查结果:`WxChannelService` 接口目录未发现可复用的既有 default 方法风格;未修改其他实现或测试文件。
44+
45+
## 兼容性修复验证
46+
47+
- `git diff --check`:通过。
48+
- `mvn -pl weixin-java-channel -am -Dtest=me.chanjar.weixin.channel.api.impl.WxChannelKfServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test`:构建成功;父 POM Surefire 默认 `skip=true`,测试执行显示 `Tests are skipped`
49+
- `mvn -pl weixin-java-channel -Dsurefire.skip=false -DskipTests=false -Dmaven.test.skip=false -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml test`:构建成功,但仍受父 POM Surefire 配置影响而跳过测试。
50+
- `mvn -pl weixin-java-channel -Dskip=false -DskipTests=false -Dmaven.test.skip=false -Dsurefire.suiteXmlFiles=src/test/resources/testng.xml org.apache.maven.plugins:maven-surefire-plugin:2.17:test`:仍显示 `Tests are skipped`
51+
- `mvn -pl weixin-java-channel dependency:build-classpath -Dmdep.outputAbsoluteArtifactFilename=true -Dmdep.outputFile=/tmp/wxjava-channel-test-classpath -DincludeScope=test` 后,以 TestNG CLI 执行 `weixin-java-channel/src/test/resources/testng.xml`:18 通过,0 失败,0 跳过。
52+
53+
## 兼容性修复 Commit
54+
55+
待提交(仅包含接口变更与本报告;保留工作树中其他任务的未提交修改)。

weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ public interface WxChannelService extends BaseWxChannelService {
1212
*
1313
* @return 商家客服服务
1414
*/
15-
WxChannelKfService getKfService();
15+
default WxChannelKfService getKfService() {
16+
throw new UnsupportedOperationException("WxChannelService implementation does not support getKfService()");
17+
}
1618

1719
/**
1820
* 基础接口服务

0 commit comments

Comments
 (0)