/manage/exchange/code/** 增加类级后台登录校验;保留各接口权限。/createAndExport 路径,但必须同时具有
exchangeCode:add 和 exchangeCode:export。后续前端联动再迁移为 POST。goodsId、skuId、code、userId、useStatus、
codeType、start、limit;不再接收客户端 condition、操作符、逻辑分组及动态排序。
code 改为精确匹配。分页大小最多 100;导出最多 10000 条,且只导出平台类型码。/external/app/get/mirror 和 /external/app/refund/{id} 仅允许后台 root,
分别要求 exchangeCode:view、exchangeCode:refund。禁止匿名第三方调用;
暂不支持第三方独立凭证或租户范围,接入方需迁移,不能恢复匿名访问。运行 docs/sql/20261021-coupon-exchange-permissions.sql 补齐 9 个权限码,
包含新增的 exchangeCode:refund。只自动授予 root,其他角色显式授权。
后台重新保存角色权限刷新缓存,重新登录验证。代码必须构建、发布才会生效。
回归测试命令(先修复现有腾讯云依赖缺失):
& 'D:\IntelliJ IDEA 2025.2.3\plugins\maven\lib\maven3\bin\mvn.cmd' -pl netflix-web -am test '-Dtest=ExchangeCodeSecurityTest,CouponWriteSecurityTest' '-Dsurefire.failIfNoSpecifiedTests=false'
GET /applets/user/get/ticket/code/detail 只接受完整 code,缺失、空串、空白、非法字符和超过 256 字符均拒绝。兼容字母数字、下划线和连字符。按用户要求,GET /external/app/get/mirror 恢复公开查询,移除该查询的后台登录/root/兑换码查询权限限制。固定规格、参数白名单和分页上限保留。
PUT /external/app/refund/{id} 仍要求后台登录、root 和 exchangeCode:refund;类级权限移至退款方法,未取消退款授权。
此为公开访问策略,不代表返回的完整镜像兑换码属于保密数据;未修改用户端兑换码详情的精确码校验。