feat(auth): 实现用户头像修改次数限制功能

- 在Member实体中添加avatarModifyCount和avatarModifyYear字段用于统计本年头像修改次数
- 在上传头像接口中实现头像修改次数检查,限制每年最多修改2次
- 更新用户信息时增加头像修改次数统计逻辑
- 修改createByMobile方法参数,移除不必要的用户信息参数
- 在MemberDTO中添加avatarModifyRemainCount字段显示剩余修改次数
- 添加数据库表结构变更SQL脚本
- 移除已废弃的手机号注册和微信登录相关代码
- 移除BindMobileDTO中的冗余字段定义
This commit is contained in:
2026-04-09 16:49:43 +08:00
parent be6376f10d
commit dc14a57686
9 changed files with 220 additions and 238 deletions

View File

@@ -10,128 +10,11 @@ public class BindMobileDTO implements Serializable {
*/
private String loginCode;
/**
* 小程序openId
*/
private String openId;
/**
* 微信手机号 code (wx.getPhoneNumber获取)
*/
private String phoneCode;
/**
* 微信昵称
*/
private String nickname;
/**
* 微信图像
*/
private String avatar;
/**
* 手机号码 (从phoneCode解析得到)
*/
private String mobile;
/**
* 验证码 (不再使用)
*/
private String captcha;
/**
* 真实姓名
*/
private String name;
/**
* 性别
*/
private Integer sex;
/**
* 年龄
*/
private Integer age;
/**
* 地址
*/
private String address;
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getCaptcha() {
return captcha;
}
public void setCaptcha(String captcha) {
this.captcha = captcha;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getLoginCode() {
return loginCode;
}
@@ -147,4 +30,4 @@ public class BindMobileDTO implements Serializable {
public void setPhoneCode(String phoneCode) {
this.phoneCode = phoneCode;
}
}
}

View File

@@ -102,6 +102,11 @@ public class MemberDTO implements Serializable {
*/
private Integer deleted;
/**
* 本年头像剩余修改次数
*/
private Integer avatarModifyRemainCount;
/**
@@ -430,4 +435,12 @@ public class MemberDTO implements Serializable {
return deleted;
}
public Integer getAvatarModifyRemainCount() {
return avatarModifyRemainCount;
}
public void setAvatarModifyRemainCount(Integer avatarModifyRemainCount) {
this.avatarModifyRemainCount = avatarModifyRemainCount;
}
}

View File

@@ -117,6 +117,18 @@ public class Member implements Serializable {
@JsonIgnore
private Integer deleted;
/**
* 头像修改次数(本年)
*/
@JsonIgnore
private Integer avatarModifyCount;
/**
* 头像修改统计年份
*/
@JsonIgnore
private Integer avatarModifyYear;
/**
@@ -452,4 +464,20 @@ public class Member implements Serializable {
public void setBanType(Integer banType) {
this.banType = banType;
}
public Integer getAvatarModifyCount() {
return avatarModifyCount;
}
public void setAvatarModifyCount(Integer avatarModifyCount) {
this.avatarModifyCount = avatarModifyCount;
}
public Integer getAvatarModifyYear() {
return avatarModifyYear;
}
public void setAvatarModifyYear(Integer avatarModifyYear) {
this.avatarModifyYear = avatarModifyYear;
}
}