feat: 新增积分外部页面(免认证三页 + 配套基础设施)

前端:
- 新增 EmptyLayout 空壳布局(无侧边栏/导航)
- 新增 requestNoAuth Axios 实例(不注入 token)
- 新增 integralExternal 路由模块(/integral-external/*)
- permission.js 加入 whiteListPrefixes 前缀白名单跳过登录
- 新增 phoneDesensitize 手机号脱敏过滤器
- 新增三个免认证页面:
  · 积分订单页(/integral-external/order)
  · 用户积分页(/integral-external/user,手机号脱敏)
  · 用户积分明细子页(/integral-external/user/integral-detail)

后端:
- 新增 ExternalIntegralController(无 @PreAuthorize)
  · GET  /api/external/integral/order/list
  · GET  /api/external/integral/user/list
  · POST /api/external/integral/log/list
- WebSecurityConfig 加入 /api/external/integral/** permitAll

文档与工具:
- 新增 coding plan、schedule、测试报告
- 新增 start-backend.sh / start-frontend.sh 本地启动脚本
- 新增 .mvn/wrapper/maven-wrapper.properties

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
scott
2026-03-31 10:41:30 +08:00
parent fe9e1916fa
commit ee0886b800
25 changed files with 4360 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
/**
* 积分外部页面 API免认证
* 使用 requestNoAuth 实例,不注入 token不拦截 401。
* 对应后端ExternalIntegralController → api/external/integral/*
*/
import requestNoAuth from '@/utils/requestNoAuth';
/**
* 积分订单列表
*/
export function getExternalOrderList(params) {
return requestNoAuth({
url: 'external/integral/order/list',
method: 'get',
params,
});
}
/**
* 用户积分列表(含 eb_user 积分字段)
*/
export function getExternalUserList(params) {
return requestNoAuth({
url: 'external/integral/user/list',
method: 'get',
params,
});
}
/**
* 用户积分明细分页列表
*/
export function getExternalIntegralLog(data) {
return requestNoAuth({
url: 'external/integral/log/list',
method: 'post',
data,
});
}