Selaa lähdekoodia

会员管理代码

wwh 1 viikko sitten
vanhempi
commit
c962c555ef

+ 3 - 1
doc/平台后台/会员管理/会员管理技术方案.md

@@ -334,7 +334,9 @@ CREATE TABLE `biz_member` (
334 334
 > **C 端专册:** 注册/登录见 **[《会员注册登录技术方案》](../../../消费者APP/会员注册登录/会员注册登录技术方案.md) v1.2**;本节保留摘要。
335 335
 
336 336
 **基路径:** `/api/member`  
337
-**鉴权:** `MemberWebConfig` 拦截;`register`/`login`/`sms/send`/`serviceAgreement/**` 匿名;其余须会员 Token(`MemberContext`)。
337
+**鉴权:** `MemberWebConfig` + `MemberAuthInterceptor`;`register`/`login`/`sms/send`/`serviceAgreement/**` **匿名且不经拦截器**;其余须会员 Token → `MemberContext.getMemberId()`。
338
+
339
+**`MemberWebConfig`:** 拦截 `/api/member/**`(排除 login/register 等)、`/api/merchant/entry/**`(排除 agreement/status)、购物车/结算/订单等;详见 C 端《会员注册登录技术方案》§3.1。
338 340
 
339 341
 | 方法 | 路径 | 说明 |
340 342
 |------|------|------|

+ 1 - 1
doc/平台后台/组织管理/入驻审核/商户入驻审核技术方案.md

@@ -203,7 +203,7 @@ biz_member
203 203
 
204 204
 | 项 | 说明 |
205 205
 |----|------|
206
-| 鉴权 | 会员 Token |
206
+| 鉴权 | 会员 Token(`MemberAuthInterceptor` → `MemberContext`;`/api/merchant/entry/**` 已纳入 `MemberWebConfig`,排除 agreement/status) |
207 207
 | 用途 | 进入申请页前判断是否 **仅开店铺** 模式 |
208 208
 
209 209
 **响应 `EntryApplyContextVO`:**

+ 23 - 2
doc/消费者APP/会员注册登录/会员注册登录技术方案.md

@@ -95,10 +95,29 @@ content 模块:
95 95
 
96 96
 | 路径 | 鉴权 |
97 97
 |------|------|
98
-| `POST /register`、`POST /login` | **`@Anonymous`** |
98
+| `POST /register`、`POST /login` | **`@Anonymous`**;**不** 经过 `MemberAuthInterceptor`,**不** 写入 `MemberContext` |
99 99
 | `GET /serviceAgreement`、`/serviceAgreement/status` | **`@Anonymous`** |
100 100
 | `/profile`、`/address/**` | 须 Token(**非本文**) |
101 101
 
102
+**`MemberContext` 约定(v1.4):**
103
+
104
+```text
105
+POST /login  → 仅返回 token + memberId;不在本请求内 MemberContext.setMemberId
106
+后续请求     → MemberAuthInterceptor 解析 Token → MemberContext.setMemberId(userId)
107
+请求结束     → afterCompletion → MemberContext.clear()
108
+```
109
+
110
+**`MemberWebConfig`(与实现对齐):**
111
+
112
+```java
113
+registry.addInterceptor(memberAuthInterceptor)
114
+    .addPathPatterns("/api/member/**", "/api/merchant/entry/**",
115
+            "/api/shop/*/follow", "/api/cart/**", "/api/checkout/**", "/api/order/**")
116
+    .excludePathPatterns("/api/member/register", "/api/member/login", "/api/member/sms/send",
117
+            "/api/member/serviceAgreement", "/api/member/serviceAgreement/**",
118
+            "/api/merchant/entry/agreement", "/api/merchant/entry/status");
119
+```
120
+
102 121
 ### 3.2 接口一览(注册/登录)
103 122
 
104 123
 | 方法 | 路径 | 说明 | 状态 |
@@ -187,6 +206,7 @@ trim(account)
187 206
     → resolveMemberByAccount
188 207
     → status=0;matchesPassword
189 208
     → createToken
209
+    → 返回根级 token + memberId(不写 MemberContext;见 §3.1)
190 210
 ```
191 211
 
192 212
 **成功响应(与平台 `/login` 一致,`token` 在根级):**
@@ -335,7 +355,8 @@ MemberAppServiceImpl.login
335 355
 | **v1.1** | 取消短信验证码;注册 confirmPassword;登录 account |
336 356
 | **v1.2** | **会员 ID = 会员名称**(`user_name`);登录 `selectByMemberCode`;**非** 数字 member_id |
337 357
 | **v1.3** | Token 与平台一致:`TokenService` + `LoginUser`;响应根级 `token` |
358
+| **v1.4** | 明确:`/login` **不** 设置 `MemberContext`;`MemberWebConfig` 拦截 `/api/merchant/entry/**`(排除 agreement/status) |
338 359
 
339 360
 ---
340 361
 
341
-*文档版本:v1.3 · MySQL 5.7.39 · RuoYi v3.9.2-springboot2*
362
+*文档版本:v1.4 · MySQL 5.7.39 · RuoYi v3.9.2-springboot2*

+ 15 - 2
doc/消费者APP/我的服务/我的服务技术方案.md

@@ -86,7 +86,19 @@ GET /api/merchant/entry/context(会员 · 是否仅开店铺)
86 86
 | `/api/member/profile`、`/address/**` | **会员 Token** |
87 87
 | `/api/member/password`(建议) | **会员 Token** |
88 88
 | `/api/merchant/entry/agreement`、`/status` | **`@Anonymous`** |
89
-| `/api/merchant/entry/context`、`/apply`、`/my` | **会员 Token**(`MemberWebConfig` 拦截) |
89
+| `/api/merchant/entry/context`、`/apply`、`/my` | **会员 Token**(`MemberWebConfig` → `/api/merchant/entry/**`,排除 agreement/status) |
90
+
91
+**`MemberWebConfig` 拦截范围(摘要):**
92
+
93
+```java
94
+.addPathPatterns("/api/member/**", "/api/merchant/entry/**",
95
+        "/api/shop/*/follow", "/api/cart/**", "/api/checkout/**", "/api/order/**")
96
+.excludePathPatterns("/api/member/register", "/api/member/login", "/api/member/sms/send",
97
+        "/api/member/serviceAgreement", "/api/member/serviceAgreement/**",
98
+        "/api/merchant/entry/agreement", "/api/merchant/entry/status");
99
+```
100
+
101
+> **`/api/member/login` 不在拦截器内**;登录成功后客户端 **带 Token** 访问 `/context` 等接口,由 `MemberAuthInterceptor` 注入 `MemberContext`。
90 102
 
91 103
 Header:`Authorization: Bearer {token}`(与平台 `TokenService` 一致)。
92 104
 
@@ -499,6 +511,7 @@ submitApply(memberId, dto)
499 511
 
500 512
 | 版本 | 说明 |
501 513
 |------|------|
514
+| **v1.4.1** | `MemberWebConfig` 统一拦截 `/api/merchant/entry/**`;`/login` 不设置 `MemberContext` |
502 515
 | **v1.4** | 入驻 **仅开店铺**:`GET /context`;`validateShopOnlySubmit`;`form_json.shopOnlyMode` |
503 516
 | **v1.3** | `biz_member_address`:`province/city/district` → **`region_code`/`region_name`** |
504 517
 | **v1.2** | 移除 **birthday**(个人资料不含出生日期) |
@@ -507,4 +520,4 @@ submitApply(memberId, dto)
507 520
 
508 521
 ---
509 522
 
510
-*文档版本:v1.4 · MySQL 5.7.39 · RuoYi v3.9.2-springboot2 · 关联《我的服务功能需求.md》v1.2*
523
+*文档版本:v1.4.1 · MySQL 5.7.39 · RuoYi v3.9.2-springboot2 · 关联《我的服务功能需求.md》v1.2*

+ 6 - 2
doc/消费者APP/购物车/购物车技术方案.md

@@ -448,10 +448,14 @@ CartAppMapper
448 448
 **MemberWebConfig 变更:**
449 449
 
450 450
 ```java
451
-.addPathPatterns("/api/member/**", "/api/merchant/entry/apply", "/api/merchant/entry/my",
452
-        "/api/shop/*/follow", "/api/cart/**")
451
+.addPathPatterns("/api/member/**", "/api/merchant/entry/**",
452
+        "/api/shop/*/follow", "/api/cart/**", "/api/checkout/**", "/api/order/**")
453
+.excludePathPatterns("/api/member/register", "/api/member/login", ...,
454
+        "/api/merchant/entry/agreement", "/api/merchant/entry/status");
453 455
 ```
454 456
 
457
+> 完整 exclude 列表见《会员注册登录技术方案》§3.1。
458
+
455 459
 ---
456 460
 
457 461
 ## 7. 业务规则映射