feat(member): 支持用户注销状态管理- 新增用户注销状态REVOKED,值为2- 短信认证策略中处理已注销用户重新登录的情况

This commit is contained in:
huk 2025-09-26 16:23:02 +08:00
parent e0ac519d55
commit 40d8105e55
4 changed files with 15 additions and 5 deletions

View File

@ -156,9 +156,12 @@ public class SmsAuthStrategy implements IAuthStrategy {
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", phonenumber);
return null;
} else if (SystemConstants.DISABLE.equals(user.getStatus())) {
} else if (org.dromara.common.core.domain.event.Constants.MEMBER_ACCOUNT_STATUS.FORBIDDEN.equals(user.getStatus())) {
log.info("登录用户:{} 已被停用.", phonenumber);
throw new UserException("user.blocked", phonenumber);
} else if (org.dromara.common.core.domain.event.Constants.MEMBER_ACCOUNT_STATUS.REVOKED.equals(user.getStatus())) {
log.warn("已注销的用户:{} 重新登录", phonenumber);
memberMapper.updateById(Member.builder().id(user.getId()).status(org.dromara.common.core.domain.event.Constants.MEMBER_ACCOUNT_STATUS.NORMAL).build());
}
return user;
}

View File

@ -160,6 +160,8 @@ public class Constants
public static class MEMBER_ACCOUNT_STATUS {
public static final Integer FORBIDDEN = 0;
public static final Integer NORMAL = 1;
// 注销
public static final Integer REVOKED = 2;
}
/**

View File

@ -7,12 +7,12 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.common.core.domain.event.Constants;
import org.dromara.common.core.domain.model.BaseAudit;
import org.dromara.common.excel.annotation.Excel;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* 会员信息对象 ums_member
*
@ -47,7 +47,12 @@ public class Member extends BaseAudit {
@Schema(description ="用户备注")
private String mark;
@Schema(description ="帐号启用状态:0->禁用1->启用")
/**
* 帐号启用状态
* @see Constants.MEMBER_ACCOUNT_STATUS
*/
@Schema(description ="帐号启用状态", implementation = Constants.MEMBER_ACCOUNT_STATUS.class)
private Integer status;
@Schema(description ="头像")

View File

@ -406,7 +406,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper,Member> implemen
String phoneNumber = loginUser.getPhoneNumber();
String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phoneNumber);
Assert.isTrue(StrUtil.equals(smsCode, code), () -> new ServiceException("短信验证码错误"));
memberMapper.updateById(Member.builder().id(loginUser.getUserId()).status(Constants.MEMBER_ACCOUNT_STATUS.FORBIDDEN).build());
memberMapper.updateById(Member.builder().id(loginUser.getUserId()).status(Constants.MEMBER_ACCOUNT_STATUS.REVOKED).build());
}
@Override