From dc14a5768694299e6ccf73a60d64d00fd5c5910f Mon Sep 17 00:00:00 2001
From: limqhz <540344226@qq.com>
Date: Thu, 9 Apr 2026 16:49:43 +0800
Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E5=AE=9E=E7=8E=B0=E7=94=A8?=
=?UTF-8?q?=E6=88=B7=E5=A4=B4=E5=83=8F=E4=BF=AE=E6=94=B9=E6=AC=A1=E6=95=B0?=
=?UTF-8?q?=E9=99=90=E5=88=B6=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在Member实体中添加avatarModifyCount和avatarModifyYear字段用于统计本年头像修改次数
- 在上传头像接口中实现头像修改次数检查,限制每年最多修改2次
- 更新用户信息时增加头像修改次数统计逻辑
- 修改createByMobile方法参数,移除不必要的用户信息参数
- 在MemberDTO中添加avatarModifyRemainCount字段显示剩余修改次数
- 添加数据库表结构变更SQL脚本
- 移除已废弃的手机号注册和微信登录相关代码
- 移除BindMobileDTO中的冗余字段定义
---
.../controller/LoginOrRegisterController.java | 34 ++--
.../sv/api/controller/UploadController.java | 15 ++
.../impl/LoginRegisterServiceImpl.java | 173 +++++++++---------
.../java/com/sv/dto/api/BindMobileDTO.java | 119 +-----------
.../main/java/com/sv/dto/api/MemberDTO.java | 13 ++
.../src/main/java/com/sv/entity/Member.java | 28 +++
other/sql/202604.sql | 4 +
.../com/sv/service/api/MemberService.java | 38 ++--
.../mybatis/mapper/sv/MemberMapper.xml | 34 +++-
9 files changed, 220 insertions(+), 238 deletions(-)
create mode 100644 other/sql/202604.sql
diff --git a/api/src/main/java/com/sv/api/controller/LoginOrRegisterController.java b/api/src/main/java/com/sv/api/controller/LoginOrRegisterController.java
index 314c291..093b147 100644
--- a/api/src/main/java/com/sv/api/controller/LoginOrRegisterController.java
+++ b/api/src/main/java/com/sv/api/controller/LoginOrRegisterController.java
@@ -44,16 +44,17 @@ public class LoginOrRegisterController extends BaseApiController {
* @param address
* @return
*/
- @RequestMapping(value = "/member/register" , method = RequestMethod.POST)
- public ResponseDTO register(@RequestParam("mobile")String mobile,@RequestParam("captcha")String captcha,
- @RequestParam(value = "name",required = false)String name,
- @RequestParam(value = "sex",required = false)Integer sex,
- @RequestParam(value = "age",required = false)Integer age,
- @RequestParam(value = "address",required = false)String address
- ){
- MemberTokenDTO memberTokenDTO = loginRegisterService.registerByMobile(mobile, captcha, name, sex, age , address);
- return ResponseDTO.ok().addAttribute("authorization",memberTokenDTO);
- }
+// @RequestMapping(value = "/member/register" , method = RequestMethod.POST)
+// @Deprecated
+// public ResponseDTO register(@RequestParam("mobile")String mobile,@RequestParam("captcha")String captcha,
+// @RequestParam(value = "name",required = false)String name,
+// @RequestParam(value = "sex",required = false)Integer sex,
+// @RequestParam(value = "age",required = false)Integer age,
+// @RequestParam(value = "address",required = false)String address
+// ){
+// MemberTokenDTO memberTokenDTO = loginRegisterService.registerByMobile(mobile, captcha, name, sex, age , address);
+// return ResponseDTO.ok().addAttribute("authorization",memberTokenDTO);
+// }
/**
* 手机号和验证码登录
@@ -72,12 +73,13 @@ public class LoginOrRegisterController extends BaseApiController {
@Deprecated
public ResponseDTO loginWx(@RequestParam("code") String code, @RequestParam("nickname") String nickname,
@RequestParam("avatar") String avatar){
- String openId = wechatService.getXcxOpenId(code); //查询openId:
- MemberTokenDTO memberTokenDTO = loginRegisterService.loginWithXcx(openId,nickname,avatar);
-
- // memberTokenDTO为null则跳绑定手机页面
- return ResponseDTO.ok().addAttribute("authorization",memberTokenDTO)
- .addAttribute("information",loginRegisterService.info(avatar,nickname,openId));
+// String openId = wechatService.getXcxOpenId(code); //查询openId:
+// MemberTokenDTO memberTokenDTO = loginRegisterService.loginWithXcx(openId,nickname,avatar);
+//
+// // memberTokenDTO为null则跳绑定手机页面
+// return ResponseDTO.ok().addAttribute("authorization",memberTokenDTO)
+// .addAttribute("information",loginRegisterService.info(avatar,nickname,openId));
+ return null;
}
/**
diff --git a/api/src/main/java/com/sv/api/controller/UploadController.java b/api/src/main/java/com/sv/api/controller/UploadController.java
index 036f2df..aa11090 100644
--- a/api/src/main/java/com/sv/api/controller/UploadController.java
+++ b/api/src/main/java/com/sv/api/controller/UploadController.java
@@ -1,10 +1,13 @@
package com.sv.api.controller;
import com.sv.api.service.impl.LoginRegisterServiceImpl;
+import com.sv.entity.Member;
+import com.sv.service.api.MemberService;
import com.sv.service.common.OSSClientUtil;
import com.ydd.framework.core.annotation.AccessToken;
import com.ydd.framework.core.common.dto.ResponseDTO;
import com.ydd.framework.core.controller.BaseApiController;
+import com.ydd.framework.core.exception.ServiceException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@@ -21,11 +24,23 @@ public class UploadController extends BaseApiController {
private OSSClientUtil ossClientUtil;
@Resource
private LoginRegisterServiceImpl loginRegisterService;
+ @Resource
+ private MemberService memberService;
@RequestMapping("/upload/avatar")
@AccessToken
public ResponseDTO uploadImg(@RequestParam("image") MultipartFile file) throws IOException {
Integer loginMemberId = getLoginMemberId();
+ Member member = memberService.findById(loginMemberId);
+ // 检查头像修改次数限制
+ int currentYear = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
+ Integer modifyCount = member.getAvatarModifyCount();
+ Integer modifyYear = member.getAvatarModifyYear();
+ if (modifyYear != null && modifyYear == currentYear) {
+ if (modifyCount != null && modifyCount >= 2) {
+ throw new ServiceException("本年头像修改次数已达上限(2次)");
+ }
+ }
String imgUrl = ossClientUtil.uploadImg(file);
loginRegisterService.updateInformation(loginMemberId,null,imgUrl);
return ResponseDTO.ok();
diff --git a/api/src/main/java/com/sv/api/service/impl/LoginRegisterServiceImpl.java b/api/src/main/java/com/sv/api/service/impl/LoginRegisterServiceImpl.java
index f6a5586..5771d7d 100644
--- a/api/src/main/java/com/sv/api/service/impl/LoginRegisterServiceImpl.java
+++ b/api/src/main/java/com/sv/api/service/impl/LoginRegisterServiceImpl.java
@@ -69,37 +69,37 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
/**
* 手机号注册
*/
- @Transactional
- @Deprecated
- public MemberTokenDTO registerByMobile(String mobile,String captcha,String name,Integer sex,Integer age,String address){
- ValidationUtils.assertNotBlank(mobile, "请输入手机号码");
- VenueValidateUtils.assertMobile(mobile);
- ValidationUtils.assertNotNull(captcha);
-
- // 校验验证码是否正确
- captchaCacheService.assertCaptcha(mobile, ApiConstants.REGISTER_SMS_CAPTCHA_PREFIX, captcha);
- MemberTokenDTO memberTokenDTO = null;
- synchronized (mobile){
- // 根据手机号码创建新用户
- Member member = memberService.createByMobile(mobile,name,sex,age,address,PlatformContext.getValue());
-
- // 删除验证码
- captchaCacheService.remove(mobile, ApiConstants.REGISTER_SMS_CAPTCHA_PREFIX);
-
- // 查询认证
- MemberAuth memberAuth = memberAuthService.findByMobile(mobile);
- if (memberAuth == null){
- // 创建用户登录认证
- memberAuth = memberAuthService.createByMobile(member.getId(),member.getPlatformId(),mobile);
- }
-
- // 查询访问凭证,并强制更新
- memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
- }
-
-
- return memberTokenDTO;
- }
+// @Transactional
+// @Deprecated
+// public MemberTokenDTO registerByMobile(String mobile,String captcha,String name,Integer sex,Integer age,String address){
+// ValidationUtils.assertNotBlank(mobile, "请输入手机号码");
+// VenueValidateUtils.assertMobile(mobile);
+// ValidationUtils.assertNotNull(captcha);
+//
+// // 校验验证码是否正确
+// captchaCacheService.assertCaptcha(mobile, ApiConstants.REGISTER_SMS_CAPTCHA_PREFIX, captcha);
+// MemberTokenDTO memberTokenDTO = null;
+// synchronized (mobile){
+// // 根据手机号码创建新用户
+// Member member = memberService.createByMobile(mobile,name,sex,age,address,PlatformContext.getValue());
+//
+// // 删除验证码
+// captchaCacheService.remove(mobile, ApiConstants.REGISTER_SMS_CAPTCHA_PREFIX);
+//
+// // 查询认证
+// MemberAuth memberAuth = memberAuthService.findByMobile(mobile);
+// if (memberAuth == null){
+// // 创建用户登录认证
+// memberAuth = memberAuthService.createByMobile(member.getId(),member.getPlatformId(),mobile);
+// }
+//
+// // 查询访问凭证,并强制更新
+// memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
+// }
+//
+//
+// return memberTokenDTO;
+// }
/**
@@ -135,22 +135,23 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
/**
* 微信快捷登录
*/
- public MemberTokenDTO loginWithXcx(String openId,String nickname, String avatar){
-
- MemberTokenDTO memberTokenDTO = null;
- synchronized (openId){
- // 判断用户是否注册过,用微信登录过
- MemberAuth memberAuth = memberAuthService.findByAuthId(openId);
- // 登录过,则直接登录成功
- if (memberAuth != null){
- // 查询访问凭证,并强制更新
- memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
- // 修改用户图像
- updateInformation(memberAuth.getMemberId(),nickname,avatar);
- }
- }
- return memberTokenDTO;
- }
+// @Deprecated
+// public MemberTokenDTO loginWithXcx(String openId,String nickname, String avatar){
+//
+// MemberTokenDTO memberTokenDTO = null;
+// synchronized (openId){
+// // 判断用户是否注册过,用微信登录过
+// MemberAuth memberAuth = memberAuthService.findByAuthId(openId);
+// // 登录过,则直接登录成功
+// if (memberAuth != null){
+// // 查询访问凭证,并强制更新
+// memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
+// // 修改用户图像
+// updateInformation(memberAuth.getMemberId(),nickname,avatar);
+// }
+// }
+// return memberTokenDTO;
+// }
/**
* 已用手机号登录,支付,再跳转微信登录
@@ -188,7 +189,7 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
}
// 修改用户图像
- updateInformation(memberId,nickname,avatar);
+// updateInformation(memberId,nickname,avatar);
// 查询访问凭证,并强制更新
memberTokenDTO = memberTokenService.findDTOByMemberId(memberId, Boolean.TRUE);
@@ -306,31 +307,31 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
/**
* 更新用户信息
*/
- @Transactional
- public Member updateMember(Member member,BindMobileDTO bindMobileDTO){
- member.setAvatar(bindMobileDTO.getAvatar());
- member.setNickname(bindMobileDTO.getNickname());
- member.setMobile(bindMobileDTO.getMobile());
- if (bindMobileDTO.getName() != null){
- member.setName(bindMobileDTO.getName());
- }
- if (bindMobileDTO.getSex() != null){
- member.setSex(bindMobileDTO.getSex());
- }
- if (bindMobileDTO.getAge() != null){
- member.setAge(bindMobileDTO.getAge());
- }
- if (bindMobileDTO.getAddress() != null){
- member.setAddress(bindMobileDTO.getAddress());
- }
- try {
-// member.setAvatar(updateWxImgToOss(bindMobileDTO.getAvatar()));
- } catch (Exception e) {
- e.printStackTrace();
- }
- memberService.update(member);
- return member;
- }
+// @Transactional
+// public Member updateMember(Member member,BindMobileDTO bindMobileDTO){
+// member.setAvatar(bindMobileDTO.getAvatar());
+// member.setNickname(bindMobileDTO.getNickname());
+// member.setMobile(bindMobileDTO.getMobile());
+// if (bindMobileDTO.getName() != null){
+// member.setName(bindMobileDTO.getName());
+// }
+// if (bindMobileDTO.getSex() != null){
+// member.setSex(bindMobileDTO.getSex());
+// }
+// if (bindMobileDTO.getAge() != null){
+// member.setAge(bindMobileDTO.getAge());
+// }
+// if (bindMobileDTO.getAddress() != null){
+// member.setAddress(bindMobileDTO.getAddress());
+// }
+// try {
+//// member.setAvatar(updateWxImgToOss(bindMobileDTO.getAvatar()));
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// memberService.update(member);
+// return member;
+// }
/**
* 退出登录
@@ -363,10 +364,7 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
synchronized (openId.intern()){
Member member = memberService.findByMobile(mobile);
if (member == null) {
- member = memberService.createByMobile(mobile, bindMobileDTO.getNickname(),
- bindMobileDTO.getSex(), bindMobileDTO.getAge(), bindMobileDTO.getAddress(), value);
- updateInformation(member.getId(), bindMobileDTO.getNickname(), bindMobileDTO.getAvatar());
-
+ member = memberService.createByMobile(mobile, value);
MemberAuth memberAuth = memberAuthService.findByMobile(mobile);
if (memberAuth == null) {
memberAuth = memberAuthService.createByMobileByOpenId(member.getId(), member.getPlatformId(), mobile, openId);
@@ -389,7 +387,6 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
} else {
throw new ServiceException("该手机号已被其他微信账号绑定");
}
- updateInformation(member.getId(), bindMobileDTO.getNickname(), bindMobileDTO.getAvatar());
}
}
return memberTokenDTO;
@@ -407,12 +404,22 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
if (nickname != null){
member.setNickname(nickname);
}
- member.setAvatar(avatar);
- try {
-// member.setAvatar(updateWxImgToOss(avatar));
- } catch (Exception e) {
- e.printStackTrace();
+
+ // 如果更新了头像,增加修改次数
+ if (avatar != null && !avatar.equals(member.getAvatar())) {
+ int currentYear = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
+ Integer modifyCount = member.getAvatarModifyCount();
+ Integer modifyYear = member.getAvatarModifyYear();
+
+ if (modifyYear == null || modifyYear != currentYear) {
+ member.setAvatarModifyCount(1);
+ member.setAvatarModifyYear(currentYear);
+ } else {
+ member.setAvatarModifyCount((modifyCount == null ? 0 : modifyCount) + 1);
+ }
}
+
+ member.setAvatar(avatar);
memberService.update(member);
}
}
diff --git a/entity/src/main/java/com/sv/dto/api/BindMobileDTO.java b/entity/src/main/java/com/sv/dto/api/BindMobileDTO.java
index 8a10c65..b7d5986 100644
--- a/entity/src/main/java/com/sv/dto/api/BindMobileDTO.java
+++ b/entity/src/main/java/com/sv/dto/api/BindMobileDTO.java
@@ -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;
}
-}
\ No newline at end of file
+}
diff --git a/entity/src/main/java/com/sv/dto/api/MemberDTO.java b/entity/src/main/java/com/sv/dto/api/MemberDTO.java
index 8be5677..66c9f52 100644
--- a/entity/src/main/java/com/sv/dto/api/MemberDTO.java
+++ b/entity/src/main/java/com/sv/dto/api/MemberDTO.java
@@ -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;
+ }
+
}
\ No newline at end of file
diff --git a/entity/src/main/java/com/sv/entity/Member.java b/entity/src/main/java/com/sv/entity/Member.java
index 27806e3..f942afa 100644
--- a/entity/src/main/java/com/sv/entity/Member.java
+++ b/entity/src/main/java/com/sv/entity/Member.java
@@ -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;
+ }
}
\ No newline at end of file
diff --git a/other/sql/202604.sql b/other/sql/202604.sql
new file mode 100644
index 0000000..57dea46
--- /dev/null
+++ b/other/sql/202604.sql
@@ -0,0 +1,4 @@
+-- 2026年4月 - 添加用户头像修改限制字段
+ALTER TABLE sv_member
+ADD COLUMN avatar_modify_count INT DEFAULT 0 COMMENT '本年头像修改次数',
+ADD COLUMN avatar_modify_year INT DEFAULT NULL COMMENT '头像修改统计年份';
diff --git a/service/src/main/java/com/sv/service/api/MemberService.java b/service/src/main/java/com/sv/service/api/MemberService.java
index b568c0e..db0e8bc 100644
--- a/service/src/main/java/com/sv/service/api/MemberService.java
+++ b/service/src/main/java/com/sv/service/api/MemberService.java
@@ -211,7 +211,7 @@ public class MemberService extends BaseServiceImpl {
* @return 新用户
*/
@Transactional
- public Member createByMobile(String mobile, String name, Integer sex, Integer age, String address, Integer platformId) {
+ public Member createByMobile(String mobile, Integer platformId) {
// 参数校验
ValidationUtils.assertNotNull(mobile);
VenueValidateUtils.assertMobile(mobile);
@@ -230,25 +230,12 @@ public class MemberService extends BaseServiceImpl {
}
member.setInviteCode(inviteCode);
member.setMobile(mobile);
- if (name != null) {
- if (name.length() > 8) {
- throw new ServiceException("姓名不能超过8位");
- }
- member.setName(name);
- }
- if (sex != null) {
- member.setSex(sex);
- }
- if (age != null) {
- if (age.intValue() < 10 || age.intValue() > 100) {
- throw new ServiceException("年龄在10-100之间");
- }
- member.setAge(age);
- }
- if (address != null) {
- member.setAddress(address);
- }
member.setPlatformId(platformId);
+
+ // 初始化头像修改次数
+ member.setAvatarModifyCount(0);
+ member.setAvatarModifyYear(java.util.Calendar.getInstance().get(java.util.Calendar.YEAR));
+
memberMapper.insert(member);
return member;
}
@@ -375,6 +362,17 @@ public class MemberService extends BaseServiceImpl {
memberDTO.setSex(member.getSex());
memberDTO.setAge(member.getAge() == null ? null : member.getAge());
memberDTO.setAddress(member.getAddress() == null ? "" : member.getAddress());
+
+ // 计算本年头像剩余修改次数
+ int currentYear = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
+ Integer modifyCount = member.getAvatarModifyCount();
+ Integer modifyYear = member.getAvatarModifyYear();
+ if (modifyYear == null || modifyYear != currentYear) {
+ memberDTO.setAvatarModifyRemainCount(2);
+ } else {
+ memberDTO.setAvatarModifyRemainCount(Math.max(0, 2 - (modifyCount == null ? 0 : modifyCount)));
+ }
+
return memberDTO;
}
@@ -461,6 +459,7 @@ public class MemberService extends BaseServiceImpl {
* @param faceUrl
* @param memberId
*/
+ @Deprecated
public void setMemberFaceInfo(Integer subjectId, String faceUrl, Integer memberId, Integer platformId) {
MemberFaceInfo memberFaceInfo = memberMapper.findMemberFaceInfo(memberId);
if (memberFaceInfo == null) {
@@ -485,6 +484,7 @@ public class MemberService extends BaseServiceImpl {
* @param file
*/
@Transactional
+ @Deprecated
public void setMemberFaceInfo(Integer memberId, MultipartFile file, Integer platformId) {
Date now = new Date();
MemberFaceInfo memberFaceInfo = memberMapper.findMemberFaceInfo(memberId);
diff --git a/service/src/main/resources/mybatis/mapper/sv/MemberMapper.xml b/service/src/main/resources/mybatis/mapper/sv/MemberMapper.xml
index c987777..f229859 100644
--- a/service/src/main/resources/mybatis/mapper/sv/MemberMapper.xml
+++ b/service/src/main/resources/mybatis/mapper/sv/MemberMapper.xml
@@ -21,6 +21,8 @@
+
+
@@ -42,6 +44,8 @@
+
+
@@ -79,7 +83,9 @@
platform_id,
created_time,
modified_time,
- deleted
+ deleted,
+ avatar_modify_count,
+ avatar_modify_year
@@ -100,7 +106,9 @@
#{platformId, jdbcType=INTEGER},
#{createdTime, jdbcType=TIMESTAMP},
#{modifiedTime, jdbcType=TIMESTAMP},
- #{deleted, jdbcType=TINYINT}
+ #{deleted, jdbcType=TINYINT},
+ #{avatarModifyCount, jdbcType=INTEGER},
+ #{avatarModifyYear, jdbcType=INTEGER}
@@ -123,6 +131,8 @@
sm.created_time,
sm.modified_time,
sm.deleted,
+ sm.avatar_modify_count,
+ sm.avatar_modify_year,
smfi.face_url
FROM
sv_member AS sm
@@ -187,6 +197,12 @@
deleted,
+
+ avatar_modify_count,
+
+
+ avatar_modify_year,
+
@@ -240,6 +256,12 @@
#{deleted},
+
+ #{avatarModifyCount},
+
+
+ #{avatarModifyYear},
+
@@ -317,6 +339,12 @@
deleted = #{deleted},
+
+ avatar_modify_count = #{avatarModifyCount},
+
+
+ avatar_modify_year = #{avatarModifyYear},
+
WHERE id = #{id}
@@ -345,6 +373,8 @@
sm.created_time,
sm.modified_time,
sm.deleted,
+ sm.avatar_modify_count,
+ sm.avatar_modify_year,
smfi.face_url
FROM
sv_member AS sm