Bläddra i källkod

会员管理代码

wwh 1 vecka sedan
förälder
incheckning
c962c555ef

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

@@ -334,7 +334,9 @@ CREATE TABLE `biz_member` (
334
 > **C 端专册:** 注册/登录见 **[《会员注册登录技术方案》](../../../消费者APP/会员注册登录/会员注册登录技术方案.md) v1.2**;本节保留摘要。
334
 > **C 端专册:** 注册/登录见 **[《会员注册登录技术方案》](../../../消费者APP/会员注册登录/会员注册登录技术方案.md) v1.2**;本节保留摘要。
335
 
335
 
336
 **基路径:** `/api/member`  
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
 **响应 `EntryApplyContextVO`:**
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
 | `GET /serviceAgreement`、`/serviceAgreement/status` | **`@Anonymous`** |
99
 | `GET /serviceAgreement`、`/serviceAgreement/status` | **`@Anonymous`** |
100
 | `/profile`、`/address/**` | 须 Token(**非本文**) |
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
 ### 3.2 接口一览(注册/登录)
121
 ### 3.2 接口一览(注册/登录)
103
 
122
 
104
 | 方法 | 路径 | 说明 | 状态 |
123
 | 方法 | 路径 | 说明 | 状态 |
@@ -187,6 +206,7 @@ trim(account)
187
     → resolveMemberByAccount
206
     → resolveMemberByAccount
188
     → status=0;matchesPassword
207
     → status=0;matchesPassword
189
     → createToken
208
     → createToken
209
+    → 返回根级 token + memberId(不写 MemberContext;见 §3.1)
190
 ```
210
 ```
191
 
211
 
192
 **成功响应(与平台 `/login` 一致,`token` 在根级):**
212
 **成功响应(与平台 `/login` 一致,`token` 在根级):**
@@ -335,7 +355,8 @@ MemberAppServiceImpl.login
335
 | **v1.1** | 取消短信验证码;注册 confirmPassword;登录 account |
355
 | **v1.1** | 取消短信验证码;注册 confirmPassword;登录 account |
336
 | **v1.2** | **会员 ID = 会员名称**(`user_name`);登录 `selectByMemberCode`;**非** 数字 member_id |
356
 | **v1.2** | **会员 ID = 会员名称**(`user_name`);登录 `selectByMemberCode`;**非** 数字 member_id |
337
 | **v1.3** | Token 与平台一致:`TokenService` + `LoginUser`;响应根级 `token` |
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
 | `/api/member/profile`、`/address/**` | **会员 Token** |
86
 | `/api/member/profile`、`/address/**` | **会员 Token** |
87
 | `/api/member/password`(建议) | **会员 Token** |
87
 | `/api/member/password`(建议) | **会员 Token** |
88
 | `/api/merchant/entry/agreement`、`/status` | **`@Anonymous`** |
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
 Header:`Authorization: Bearer {token}`(与平台 `TokenService` 一致)。
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
 | **v1.4** | 入驻 **仅开店铺**:`GET /context`;`validateShopOnlySubmit`;`form_json.shopOnlyMode` |
515
 | **v1.4** | 入驻 **仅开店铺**:`GET /context`;`validateShopOnlySubmit`;`form_json.shopOnlyMode` |
503
 | **v1.3** | `biz_member_address`:`province/city/district` → **`region_code`/`region_name`** |
516
 | **v1.3** | `biz_member_address`:`province/city/district` → **`region_code`/`region_name`** |
504
 | **v1.2** | 移除 **birthday**(个人资料不含出生日期) |
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
 **MemberWebConfig 变更:**
448
 **MemberWebConfig 变更:**
449
 
449
 
450
 ```java
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
 ## 7. 业务规则映射
461
 ## 7. 业务规则映射