Explorar el Código

会员管理代码

wwh hace 2 semanas
padre
commit
ca1c3802da

+ 0 - 14
baqing-shop/src/main/java/com/ruoyi/web/modules/account/domain/BizMember.java

@@ -31,10 +31,6 @@ public class BizMember extends BaseEntity
31 31
     /** sys_user.sex(0男 1女 2未知) */
32 32
     private String sex;
33 33
 
34
-    /** sys_user.birthday */
35
-    @JsonFormat(pattern = "yyyy-MM-dd")
36
-    private Date birthday;
37
-
38 34
     /** 会员等级(biz_member_level.level_no,选填) */
39 35
     private Integer memberLevel;
40 36
 
@@ -128,16 +124,6 @@ public class BizMember extends BaseEntity
128 124
         this.sex = sex;
129 125
     }
130 126
 
131
-    public Date getBirthday()
132
-    {
133
-        return birthday;
134
-    }
135
-
136
-    public void setBirthday(Date birthday)
137
-    {
138
-        this.birthday = birthday;
139
-    }
140
-
141 127
     public Integer getMemberLevel()
142 128
     {
143 129
         return memberLevel;

+ 0 - 16
baqing-shop/src/main/java/com/ruoyi/web/modules/account/dto/MemberProfileUpdateDTO.java

@@ -1,8 +1,5 @@
1 1
 package com.ruoyi.web.modules.account.dto;
2 2
 
3
-import java.util.Date;
4
-import com.fasterxml.jackson.annotation.JsonFormat;
5
-
6 3
 /**
7 4
  * C 端更新个人资料(写入 sys_user,member_id = user_id)
8 5
  */
@@ -17,9 +14,6 @@ public class MemberProfileUpdateDTO
17 14
     /** 0男 1女 2未知 */
18 15
     private String sex;
19 16
 
20
-    @JsonFormat(pattern = "yyyy-MM-dd")
21
-    private Date birthday;
22
-
23 17
     public String getNickName()
24 18
     {
25 19
         return nickName;
@@ -59,14 +53,4 @@ public class MemberProfileUpdateDTO
59 53
     {
60 54
         this.sex = sex;
61 55
     }
62
-
63
-    public Date getBirthday()
64
-    {
65
-        return birthday;
66
-    }
67
-
68
-    public void setBirthday(Date birthday)
69
-    {
70
-        this.birthday = birthday;
71
-    }
72 56
 }

+ 0 - 15
baqing-shop/src/main/java/com/ruoyi/web/modules/account/service/impl/MemberAppServiceImpl.java

@@ -145,7 +145,6 @@ public class MemberAppServiceImpl implements IMemberAppService
145 145
         }
146 146
         validateEmail(dto.getEmail());
147 147
         validateSex(dto.getSex());
148
-        validateBirthday(dto.getBirthday());
149 148
 
150 149
         BizMember accountUpdate = new BizMember();
151 150
         accountUpdate.setMemberId(memberId);
@@ -154,7 +153,6 @@ public class MemberAppServiceImpl implements IMemberAppService
154 153
         accountUpdate.setAvatar(dto.getAvatar());
155 154
         accountUpdate.setEmail(dto.getEmail());
156 155
         accountUpdate.setSex(dto.getSex());
157
-        accountUpdate.setBirthday(dto.getBirthday());
158 156
         memberMapper.updateAccount(accountUpdate);
159 157
     }
160 158
 
@@ -204,7 +202,6 @@ public class MemberAppServiceImpl implements IMemberAppService
204 202
         vo.setAvatar(member.getAvatar());
205 203
         vo.setEmail(member.getEmail());
206 204
         vo.setSex(member.getSex());
207
-        vo.setBirthday(member.getBirthday());
208 205
         return vo;
209 206
     }
210 207
 
@@ -232,18 +229,6 @@ public class MemberAppServiceImpl implements IMemberAppService
232 229
         }
233 230
     }
234 231
 
235
-    private void validateBirthday(java.util.Date birthday)
236
-    {
237
-        if (birthday == null)
238
-        {
239
-            return;
240
-        }
241
-        if (birthday.after(DateUtils.getNowDate()))
242
-        {
243
-            throw new ServiceException("出生日期不能为未来日期");
244
-        }
245
-    }
246
-
247 232
     private String resolveLoginAccount(MemberLoginDTO dto)
248 233
     {
249 234
         if (dto == null)

+ 0 - 16
baqing-shop/src/main/java/com/ruoyi/web/modules/account/vo/MemberProfileAppVO.java

@@ -1,8 +1,5 @@
1 1
 package com.ruoyi.web.modules.account.vo;
2 2
 
3
-import java.util.Date;
4
-import com.fasterxml.jackson.annotation.JsonFormat;
5
-
6 3
 /**
7 4
  * C 端个人资料(只读 + 可编辑字段展示)
8 5
  */
@@ -25,9 +22,6 @@ public class MemberProfileAppVO
25 22
     /** 0男 1女 2未知 */
26 23
     private String sex;
27 24
 
28
-    @JsonFormat(pattern = "yyyy-MM-dd")
29
-    private Date birthday;
30
-
31 25
     public Long getMemberId()
32 26
     {
33 27
         return memberId;
@@ -97,14 +91,4 @@ public class MemberProfileAppVO
97 91
     {
98 92
         this.sex = sex;
99 93
     }
100
-
101
-    public Date getBirthday()
102
-    {
103
-        return birthday;
104
-    }
105
-
106
-    public void setBirthday(Date birthday)
107
-    {
108
-        this.birthday = birthday;
109
-    }
110 94
 }

+ 0 - 3
baqing-shop/src/main/resources/mapper/account/BizMemberMapper.xml

@@ -9,7 +9,6 @@
9 9
         <result property="nickName" column="nick_name"/>
10 10
         <result property="email" column="email"/>
11 11
         <result property="sex" column="sex"/>
12
-        <result property="birthday" column="birthday"/>
13 12
         <result property="password" column="password"/>
14 13
         <result property="memberLevel" column="member_level"/>
15 14
         <result property="status" column="status"/>
@@ -32,7 +31,6 @@
32 31
                u.nick_name,
33 32
                u.email,
34 33
                u.sex,
35
-               u.birthday,
36 34
                u.password,
37 35
                m.member_level,
38 36
                u.status,
@@ -143,7 +141,6 @@
143 141
             <if test="nickName != null">nick_name = #{nickName},</if>
144 142
             <if test="email != null">email = #{email},</if>
145 143
             <if test="sex != null">sex = #{sex},</if>
146
-            <if test="birthday != null">birthday = #{birthday},</if>
147 144
             <if test="password != null and password != ''">password = #{password},</if>
148 145
             <if test="avatar != null">avatar = #{avatar},</if>
149 146
             update_by = #{updateBy},

+ 1 - 1
doc/平台后台/会员管理/会员管理功能需求.md

@@ -154,7 +154,7 @@ C 端用户(手机号注册会员)
154 154
 | 累计消费次数 / 金额 | 与列表一致,只读 |
155 155
 | 注册日期 | 只读 |
156 156
 
157
-原型「个人资料」另含:用户 ID、出生日期、邮箱、登录密码修改等 —— 属 **C 端自助** 能力;平台详情 **至少** 展示上表;其余字段 **可选** 只读展示。
157
+原型「个人资料」另含:用户 ID、邮箱、性别、头像、登录密码修改等 —— 属 **C 端自助** 能力;平台详情 **至少** 展示上表;其余字段 **可选** 只读展示。
158 158
 
159 159
 ### 5.3 收货信息(定稿)
160 160
 

+ 1 - 1
doc/消费者APP/我的服务/我的服务前端技术方案.md

@@ -82,7 +82,7 @@
82 82
 | `deleteAddress` | DELETE | `/address/{id}` |
83 83
 | `setDefaultAddress` | PUT | `/address/{id}/default` |
84 84
 
85
-**资料可写字段:** `nickName`、`avatar`、`email`、`sex`、`birthday`(`memberId`/`mobile`/`memberCode` 只读)。
85
+**资料可写字段:** `nickName`、`avatar`、`email`、`sex`(`memberId`/`mobile`/`memberCode` 只读)。
86 86
 
87 87
 **密码 Body:** `oldPassword`、`newPassword`、`confirmPassword`。
88 88
 

+ 3 - 3
doc/消费者APP/我的服务/我的服务功能需求.md

@@ -160,7 +160,7 @@
160 160
 |------|------|
161 161
 | 我的服务 | C 端 **个人中心** 下 **账户与入驻** 相关自助能力的集合(本模块) |
162 162
 | 用户 ID | 会员 **系统标识编号**,注册后分配,**只读展示**;**不是** 登录用的「会员名称」 |
163
-| 个人资料 | 昵称、头像、性别、出生日期、邮箱等;**不含** 可编辑手机号(草稿) |
163
+| 个人资料 | 昵称、头像、性别、邮箱等;**不含** 可编辑手机号(草稿) |
164 164
 | 收货地址 | 收货人、手机号、省市区、详细地址;可设 **默认地址** |
165 165
 | 默认地址 | 同一会员 **至多一条**;下单 **优先选用** |
166 166
 | 入驻申请 | 会员发起的一次 **商户入驻** 申请;含主体、经营、首家店铺信息 |
@@ -217,7 +217,6 @@ C 端:无法登录(或登录失败)
217 217
 |------|:------:|------|
218 218
 | 用户 ID | 否 | 系统标识,只读展示 |
219 219
 | 昵称 | 是 | 非空;长度上限以原型为准(建议 ≤30 字) |
220
-| 出生日期 | 是 | 日期选择;**不可** 为未来日期 |
221 220
 | 手机号码 | 否 | 注册手机号,只读;**换绑手机非本期** |
222 221
 | 邮箱 | 是 | 格式校验;**可空** 或必填以原型为准 |
223 222
 | 性别 | 是 | 枚举:如 男 / 女 / 保密 |
@@ -543,7 +542,8 @@ C 端:无法登录(或登录失败)
543 542
 | 版本 | 说明 |
544 543
 |------|------|
545 544
 | **v1.0** | 首版定稿:账号资料/密码/地址/商家入驻;关联平台会员、入驻审核、关联需求分析;不含表结构/接口 |
545
+| **v1.1** | 个人资料 **不含出生日期**(与 C 端实现一致) |
546 546
 
547 547
 ---
548 548
 
549
-*文档版本:v1.0(定稿)· 关联《我的服务功能需求-草稿.md》、《关联需求分析.md》v1.6、《会员管理功能需求.md》v1.1、《商户入驻审核功能需求.md》v1.1*
549
+*文档版本:v1.1(定稿)· 关联《我的服务功能需求-草稿.md》、《关联需求分析.md》v1.6、《会员管理功能需求.md》v1.1、《商户入驻审核功能需求.md》v1.1*

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

@@ -97,7 +97,7 @@ Header:`Authorization: Bearer {token}`(与平台 `TokenService` 一致)。
97 97
 
98 98
 | 表 | 本模块用途 | 关键字段 |
99 99
 |----|------------|----------|
100
-| **`sys_user`** | 资料、密码 | `user_id`(= `member_id`)、`nick_name`、`email`、`sex`、**`birthday`**、`avatar`、`password` |
100
+| **`sys_user`** | 资料、密码 | `user_id`(= `member_id`)、`nick_name`、`email`、`sex`、`avatar`、`password` |
101 101
 | **`biz_member`** | 会员扩展 | `member_id`(= `user_id`)、`register_time`、消费统计 |
102 102
 
103 103
 **字段映射(C 端展示):**
@@ -111,7 +111,6 @@ Header:`Authorization: Bearer {token}`(与平台 `TokenService` 一致)。
111 111
 | 头像 | `avatar` | 是 |
112 112
 | 邮箱 | `email` | 是 |
113 113
 | 性别 | `sex`(0男 1女 2未知) | 是 |
114
-| 出生日期 | `birthday` | 是 |
115 114
 | 密码 | `password` | 仅 **PUT /password** |
116 115
 
117 116
 > **更新口径:** `BizMemberMapper.updateAccount` 按 `member_id` 更新 **`sys_user`**(`WHERE user_id = #{memberId}`);**不写入** `biz_member`。
@@ -198,24 +197,22 @@ sys_user ──1:1── biz_member ──1:N── biz_member_address
198 197
 | avatar | 头像 URL |
199 198
 | email | 邮箱 |
200 199
 | sex | 性别 |
201
-| birthday | 出生日期 `yyyy-MM-dd`(列扩展后返回) |
202 200
 
203
-> **已实现:** `MemberProfileAppVO`;`updateAccount` 写 **sys_user**(email/sex/birthday)。
201
+> **已实现:** `MemberProfileAppVO`;`updateAccount` 写 **sys_user**(email/sex)。
204 202
 
205 203
 #### `PUT /api/member/profile`
206 204
 
207 205
 | Body | 可写字段 |
208 206
 |------|----------|
209
-| nickName、avatar、email、sex、birthday | 更新 **`sys_user`**(`user_id = member_id`) |
207
+| nickName、avatar、email、sex | 更新 **`sys_user`**(`user_id = member_id`) |
210 208
 | **不可写** | memberId、mobile、password |
211 209
 
212 210
 | 校验 | 说明 |
213 211
 |------|------|
214 212
 | nickName | 非空 |
215 213
 | email | 格式(可空) |
216
-| birthday | 非未来日期 |
217 214
 
218
-**Service:** `MemberAppServiceImpl.updateProfile` → `BizMemberMapper.updateAccount`(`sys_user`:nick_name、avatar、email、sex、birthday)。
215
+**Service:** `MemberAppServiceImpl.updateProfile` → `BizMemberMapper.updateAccount`(`sys_user`:nick_name、avatar、email、sex)。
219 216
 
220 217
 ---
221 218
 
@@ -379,11 +376,11 @@ isDefault = 1  →  UPDATE 同 member 其他行 is_default = 0  →  写当前
379 376
 ```text
380 377
 getProfile(memberId)
381 378
     → BizMemberMapper.selectById(JOIN sys_user)
382
-    → 脱敏 password;组装 VO(含 email/sex/birthday
379
+    → 脱敏 password;组装 VO(含 email/sex)
383 380
 
384 381
 updateProfile(memberId, dto)
385 382
     → 校验 nickName 等
386
-    → updateAccount(sys_user:nick_name, avatar, email, sex, birthday
383
+    → updateAccount(sys_user:nick_name, avatar, email, sex)
387 384
 ```
388 385
 
389 386
 ### 4.2 修改密码
@@ -443,12 +440,12 @@ submitApply(memberId, dto)
443 440
 | 能力 | 状态 | 备注 |
444 441
 |------|------|------|
445 442
 | 鉴权 `MemberAuthInterceptor` + TokenService | **已实现** | |
446
-| GET/PUT `/profile`(含 email/sex/birthday) | **已实现** | `MemberProfileAppVO` |
443
+| GET/PUT `/profile`(含 email/sex) | **已实现** | `MemberProfileAppVO` |
447 444
 | PUT `/password`(旧密码校验) | **已实现** | |
448 445
 | 地址 CRUD + 默认互斥 | **已实现** | |
449 446
 | 入驻协议 GET | **已实现** | |
450 447
 | POST `/apply`、GET `/my` | **已实现** | 含公示时间 |
451
-| C 端前端 | **已实现**(见《我的服务前端技术方案.md》) | |
448
+| C 端前端 | **未实现** | |
452 449
 
453 450
 ---
454 451
 
@@ -468,9 +465,10 @@ submitApply(memberId, dto)
468 465
 
469 466
 | 版本 | 说明 |
470 467
 |------|------|
471
-| **v1.1** | email/sex/birthday 存 **sys_user**;`PUT /password`;`MemberProfileAppVO` |
468
+| **v1.2** | 移除 **birthday**(个人资料不含出生日期) |
469
+| **v1.1** | email/sex 存 **sys_user**;`PUT /password`;`MemberProfileAppVO` |
472 470
 | **v1.0** | 首版 |
473 471
 
474 472
 ---
475 473
 
476
-*文档版本:v1.1 · MySQL 5.7.39 · RuoYi v3.9.2-springboot2 · 关联《我的服务功能需求.md》v1.0*
474
+*文档版本:v1.2 · MySQL 5.7.39 · RuoYi v3.9.2-springboot2 · 关联《我的服务功能需求.md》v1.0*

+ 1 - 0
sql/biz_member.sql

@@ -1,7 +1,7 @@
1 1
 -- =============================================================================
2 2
 -- C 端会员 biz_member(与 sys_user 复用)
3 3
 -- 映射:member_id = user_id;手机号=phonenumber;会员名称=user_name;昵称=nick_name;
4
+--       邮箱=email;性别=sex;密码=password;头像=avatar;状态=status
4 5
 -- 注册:先 insert sys_user(分配 role_key=member),再 insert biz_member(member_id = user_id)
5 6
 -- =============================================================================
6 7
 CREATE TABLE IF NOT EXISTS `biz_member` (