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,89 @@
# Phase 4 检查点报告 — 18:50 自动检查
> 生成时间2026-03-30 18:50
> 检查范围:`backend-adminend/src`
---
## 检查结果汇总
| # | 检查项 | 状态 | 说明 |
|---|--------|------|------|
| 1 | 积分明细页面(从 `user/integral/index.vue` 复制并修改) | ❌ **未完成** | `views/integral/external/detail/` 目录不存在,未创建任何外部页面 |
| 2 | URL query 参数 `uid` 自动注入搜索参数 | ❌ **未完成** | 外部积分明细页面未创建,无法验证 uid 参数读取 |
| 3 | 顶部概览卡片(`eb_user.integral` + `wa_users.selfBonus` | ❌ **未完成** | 无新增页面,概览卡片不存在 |
| 4 | 返回按钮跳回用户积分列表 | ❌ **未完成** | 页面未创建 |
| 5 | 分页和时间筛选 | ❌ **未完成** | 页面未创建 |
---
## ⚠️ 根因分析
**Phase 4 的全部 5 项检查均未通过,根本原因是 Phase 1 基础设施仍未搭建。**
截至本次检查,以下前置依赖均不存在:
| 前置项 | 状态 |
|--------|------|
| `src/layout/EmptyLayout.vue` | ❌ 未创建 |
| `src/utils/requestNoAuth.js` | ❌ 未创建 |
| `src/router/modules/integralExternal.js` | ❌ 未创建 |
| `src/api/integralExternal.js` | ❌ 未创建 |
| `permission.js` 白名单前缀匹配改造 | ❌ 未修改 |
| `router/index.js` 注册 constantRoutes | ❌ 未修改 |
Phase 1 → Phase 2 → Phase 3 → Phase 4 均为顺序依赖,无法跳过。
---
## 源文件就绪情况
积分明细源页面 `src/views/user/integral/index.vue` 存在242 行),结构清晰:
- ✅ 已有 `searchForm.uid` 字段 — 可直接从 `$route.query.uid` 注入
- ✅ 已有时间选择器 `daterange` — 分页和时间筛选逻辑可复用
- ✅ 已有 `integralListApi` 数据请求 — 需替换为 `requestNoAuth` 版本
- ⬜ 需新增:顶部概览卡片(调用用户详情接口获取 `integral``selfBonus`
- ⬜ 需新增:返回按钮(`this.$router.push('/integral-external/user')`
改造量确实很小(~50 行修改),**确认源页面仅 242 行,风险最低**。
---
## 能否进入 Phase 5
**❌ 不能进入 Phase 5联调验证 + 提交)。**
Phase 5 的前提是 Phase 1~4 全部完成。当前连 Phase 1 都未完成。
---
## 建议行动
### 方案 A快速补救推荐
如果用户仍有时间,建议按以下**压缩顺序**一次性完成 Phase 1 + Phase 4
1. **创建 `EmptyLayout.vue`**1 分钟)
2. **创建 `requestNoAuth.js`**2 分钟)
3. **修改 `permission.js` 白名单**2 分钟)
4. **创建路由模块 + 注册 constantRoutes**3 分钟)
5. **复制 `user/integral/index.vue` → 外部积分明细页面**5 分钟)
- 注入 `$route.query.uid`
- 替换 API 为免认证版本
- 添加概览卡片和返回按钮
6. **冒烟测试**5 分钟)
预计总耗时:~18 分钟
### 方案 B仅完成基础设施
如果时间紧张,优先完成 Phase 1 基础设施确保免登录链路畅通Phase 4 积分明细页面留到下次。
---
## 参考文档
- 开发计划:`docs/integral-pages-schedule.md`
- 技术方案:`docs/integral-pages-coding-plan.md`
- Phase 1 检查报告:`docs/phase1-checkpoint-report.md`17:30 生成,全部未通过)