迁移管理员逻辑
This commit is contained in:
@@ -2,8 +2,14 @@ package cn.iocoder.mall.systemservice.convert.admin;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminCreateBO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminPageBO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminUpdateBO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
@@ -16,9 +22,21 @@ public interface AdminConvert {
|
||||
|
||||
AdminBO convert(AdminDO bean);
|
||||
|
||||
@Mapping(source = "records", target = "list")
|
||||
PageResult<AdminBO> convertPage(IPage<AdminDO> bean);
|
||||
AdminVO convert(AdminBO bean);
|
||||
|
||||
AdminVO convert(AdminBO adminBO);
|
||||
AdminDO convert(AdminCreateBO bean);
|
||||
|
||||
AdminDO convert(AdminUpdateBO bean);
|
||||
|
||||
AdminCreateBO convert(AdminCreateDTO bean);
|
||||
|
||||
AdminUpdateBO convert(AdminUpdateDTO bean);
|
||||
|
||||
@Mapping(source = "records", target = "list")
|
||||
PageResult<AdminBO> convertPage(IPage<AdminDO> page);
|
||||
|
||||
AdminPageBO convert(AdminPageDTO page);
|
||||
|
||||
PageResult<AdminVO> convert(PageResult<AdminBO> adminPage);
|
||||
|
||||
}
|
||||
|
||||
@@ -7,8 +7,12 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 管理员实体
|
||||
*
|
||||
* uk_username 索引:基于 {@link #username} 字段
|
||||
*/
|
||||
@TableName(value = "admin")
|
||||
@Data
|
||||
@@ -50,4 +54,13 @@ public class AdminDO extends BaseDO {
|
||||
*/
|
||||
private String passwordSalt;
|
||||
|
||||
/**
|
||||
* 创建管理员编号
|
||||
*/
|
||||
private String createAdminId;
|
||||
/**
|
||||
* 创建 IP
|
||||
*/
|
||||
private Date createIp;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package cn.iocoder.mall.systemservice.dal.mysql.mapper.admin;
|
||||
|
||||
import cn.iocoder.mall.mybatis.query.QueryWrapperX;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminPageBO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
@@ -14,10 +18,10 @@ public interface AdminMapper extends BaseMapper<AdminDO> {
|
||||
);
|
||||
}
|
||||
|
||||
// default IPage<AdminDO> selectPage(AdminPageDTO adminPageDTO) {
|
||||
// return selectPage(new Page<>(adminPageDTO.getPageNo(), adminPageDTO.getPageSize()),
|
||||
// new QueryWrapperX<AdminDO>().likeIfPresent("name", adminPageDTO.getName())
|
||||
// .eqIfPresent("department_id", adminPageDTO.getDepartmentId()));
|
||||
// }
|
||||
default IPage<AdminDO> selectPage(AdminPageBO adminPageBO) {
|
||||
return selectPage(new Page<>(adminPageBO.getPageNo(), adminPageBO.getPageSize()),
|
||||
new QueryWrapperX<AdminDO>().likeIfPresent("name", adminPageBO.getName())
|
||||
.eqIfPresent("department_id", adminPageBO.getDepartmentId()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,29 @@
|
||||
package cn.iocoder.mall.systemservice.manager.admin;
|
||||
|
||||
import cn.iocoder.common.framework.enums.UserTypeEnum;
|
||||
import cn.iocoder.common.framework.util.StringUtils;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.convert.admin.AdminConvert;
|
||||
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.AdminService;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
|
||||
import cn.iocoder.mall.systemservice.service.oauth.OAuth2Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
public class AdminManager {
|
||||
|
||||
@Autowired
|
||||
private AdminService adminService;
|
||||
@Autowired
|
||||
private OAuth2Service oauth2Service;
|
||||
|
||||
public AdminVO verifyPassword(AdminVerifyPasswordDTO verifyPasswordDTO) {
|
||||
AdminBO adminBO = adminService.verifyPassword(verifyPasswordDTO.getUsername(),
|
||||
@@ -20,4 +31,25 @@ public class AdminManager {
|
||||
return AdminConvert.INSTANCE.convert(adminBO);
|
||||
}
|
||||
|
||||
public AdminVO createAdmin(AdminCreateDTO createDTO) {
|
||||
AdminBO adminBO = adminService.createAdmin(AdminConvert.INSTANCE.convert(createDTO));
|
||||
return AdminConvert.INSTANCE.convert(adminBO);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateAdmin(AdminUpdateDTO updateDTO) {
|
||||
// 更新管理员信息
|
||||
adminService.updateAdmin(AdminConvert.INSTANCE.convert(updateDTO));
|
||||
// 如果修改密码,或者禁用管理员
|
||||
if (StringUtils.hasText(updateDTO.getPassword())
|
||||
|| AdminStatusEnum.INACTIVE.getStatus().equals(updateDTO.getStatus())) {
|
||||
oauth2Service.removeToken(updateDTO.getId(), UserTypeEnum.ADMIN.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
public PageResult<AdminVO> pageAdmin(AdminPageDTO pageDTO) {
|
||||
PageResult<AdminBO> adminPage = adminService.pageAdmin(AdminConvert.INSTANCE.convert(pageDTO));
|
||||
return AdminConvert.INSTANCE.convert(adminPage);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package cn.iocoder.mall.systemservice.rpc.admin;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.manager.admin.AdminManager;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import org.apache.dubbo.config.annotation.Service;
|
||||
@@ -20,4 +24,21 @@ public class AdminRpcImpl implements AdminRpc {
|
||||
return success(adminManager.verifyPassword(verifyPasswordDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Integer> createAdmin(AdminCreateDTO createDTO) {
|
||||
AdminVO adminVO = adminManager.createAdmin(createDTO);
|
||||
return success(adminVO.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateAdmin(AdminUpdateDTO updateDTO) {
|
||||
adminManager.updateAdmin(updateDTO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<PageResult<AdminVO>> pageAdmin(AdminPageDTO pageDTO) {
|
||||
return success(adminManager.pageAdmin(pageDTO));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,24 @@
|
||||
package cn.iocoder.mall.systemservice.service.admin;
|
||||
|
||||
import cn.iocoder.common.framework.enums.CommonStatusEnum;
|
||||
import cn.iocoder.common.framework.util.DigestUtils;
|
||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.common.framework.util.StringUtils;
|
||||
import cn.iocoder.common.framework.vo.PageResult;
|
||||
import cn.iocoder.mall.systemservice.convert.admin.AdminConvert;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.mapper.admin.AdminMapper;
|
||||
import cn.iocoder.mall.systemservice.enums.SystemErrorCodeEnum;
|
||||
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
|
||||
import cn.iocoder.mall.systemservice.enums.admin.AdminUsernameEnum;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminCreateBO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminPageBO;
|
||||
import cn.iocoder.mall.systemservice.service.admin.bo.AdminUpdateBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import static cn.iocoder.mall.systemservice.enums.SystemErrorCodeEnum.*;
|
||||
|
||||
@Service
|
||||
public class AdminService {
|
||||
|
||||
@@ -20,24 +28,143 @@ public class AdminService {
|
||||
public AdminBO verifyPassword(String username, String password, String ip) {
|
||||
AdminDO adminDO = adminMapper.selectByUsername(username);
|
||||
if (adminDO == null) {
|
||||
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ADMIN_NOT_FOUND);
|
||||
throw ServiceExceptionUtil.exception(ADMIN_NOT_FOUND);
|
||||
}
|
||||
// 校验密码是否正确
|
||||
String encodedPassword = DigestUtils.bcrypt(password, adminDO.getPasswordSalt());
|
||||
if (!encodedPassword.equals(adminDO.getPassword())) {
|
||||
// TODO 需要补充密码错误上限
|
||||
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ADMIN_PASSWORD_ERROR);
|
||||
throw ServiceExceptionUtil.exception(ADMIN_PASSWORD_ERROR);
|
||||
}
|
||||
// 账号被禁用
|
||||
if (!AdminStatusEnum.ACTIVE.getStatus().equals(adminDO.getStatus())) {
|
||||
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.ADMIN_IS_DISABLE);
|
||||
throw ServiceExceptionUtil.exception(ADMIN_IS_DISABLE);
|
||||
}
|
||||
// 返回
|
||||
return AdminConvert.INSTANCE.convert(adminDO);
|
||||
}
|
||||
|
||||
// public PageResult<AdminBO> getAdminPage(AdminPageDTO pageDTO) {
|
||||
// return AdminConvert.INSTANCE.convertPage(adminMapper.selectPage(pageDTO));
|
||||
public PageResult<AdminBO> pageAdmin(AdminPageBO adminPageBO) {
|
||||
return AdminConvert.INSTANCE.convertPage(adminMapper.selectPage(adminPageBO));
|
||||
}
|
||||
|
||||
public AdminBO createAdmin(AdminCreateBO createBO) {
|
||||
// 校验账号唯一
|
||||
if (adminMapper.selectByUsername(createBO.getUsername()) != null) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_USERNAME_EXISTS);
|
||||
}
|
||||
// 加密密码
|
||||
String passwordSalt = genPasswordSalt();
|
||||
String password = encodePassword(createBO.getPassword(), passwordSalt);
|
||||
// 保存到数据库
|
||||
AdminDO admin = AdminConvert.INSTANCE.convert(createBO)
|
||||
.setPassword(password).setPasswordSalt(passwordSalt)
|
||||
.setStatus(CommonStatusEnum.ENABLE.getValue());
|
||||
adminMapper.insert(admin);
|
||||
// 返回成功
|
||||
return AdminConvert.INSTANCE.convert(admin);
|
||||
}
|
||||
|
||||
private String genPasswordSalt() {
|
||||
return DigestUtils.genBcryptSalt();
|
||||
}
|
||||
|
||||
private String encodePassword(String password, String salt) {
|
||||
return DigestUtils.bcrypt(password, salt);
|
||||
}
|
||||
|
||||
public void updateAdmin(AdminUpdateBO updateDTO) {
|
||||
// 校验账号存在
|
||||
AdminDO admin = adminMapper.selectById(updateDTO.getId());
|
||||
if (admin == null) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_NOT_FOUND);
|
||||
}
|
||||
// 校验是否为特殊账号,不允许编辑
|
||||
if (AdminUsernameEnum.ADMIN.getUsername().equals(admin.getUsername())
|
||||
|| AdminUsernameEnum.DEMO.getUsername().equals(admin.getUsername())) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_ADMIN_CAN_NOT_UPDATE);
|
||||
}
|
||||
// 校验账号唯一
|
||||
if (StringUtils.hasText(updateDTO.getUsername())) {
|
||||
AdminDO usernameAdmin = adminMapper.selectByUsername(updateDTO.getUsername());
|
||||
if (usernameAdmin != null && !usernameAdmin.getId().equals(updateDTO.getId())) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_USERNAME_EXISTS);
|
||||
}
|
||||
}
|
||||
// 如果有更新状态,则校验是否已经是该状态
|
||||
if (updateDTO.getStatus() != null && updateDTO.getStatus().equals(admin.getStatus())) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_STATUS_EQUALS);
|
||||
}
|
||||
// 更新到数据库
|
||||
AdminDO updateAdmin = AdminConvert.INSTANCE.convert(updateDTO);
|
||||
// 如果更新密码,需要特殊加密
|
||||
if (StringUtils.hasText(updateDTO.getPassword())) {
|
||||
String passwordSalt = genPasswordSalt();
|
||||
String password = encodePassword(updateDTO.getPassword(), passwordSalt);
|
||||
updateAdmin.setPassword(password).setPasswordSalt(passwordSalt);
|
||||
}
|
||||
adminMapper.updateById(updateAdmin);
|
||||
}
|
||||
|
||||
//
|
||||
// @Override
|
||||
// public Map<Integer, Collection<RoleBO>> getAdminRolesMap(Collection<Integer> adminIds) {
|
||||
// // 查询管理员拥有的角色关联数据
|
||||
// List<AdminRoleDO> adminRoleList = adminRoleMapper.selectListByAdminIds(adminIds);
|
||||
// if (adminRoleList.isEmpty()) {
|
||||
// return Collections.emptyMap();
|
||||
// }
|
||||
// // 查询角色数据
|
||||
// List<RoleBO> roleList = roleService.getRoleList(CollectionUtil.convertSet(adminRoleList, AdminRoleDO::getRoleId));
|
||||
// Map<Integer, RoleBO> roleMap = CollectionUtil.convertMap(roleList, RoleBO::getId);
|
||||
// // 拼接数据
|
||||
// Multimap<Integer, RoleBO> result = ArrayListMultimap.create();
|
||||
// adminRoleList.forEach(adminRole -> result.put(adminRole.getAdminId(), roleMap.get(adminRole.getRoleId())));
|
||||
// return result.asMap();
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<RoleBO> getRoleList(Integer adminId) {
|
||||
// // 查询管理员拥有的角色关联数据
|
||||
// List<AdminRoleDO> adminRoleList = adminRoleMapper.selectByAdminId(adminId);
|
||||
// if (adminRoleList.isEmpty()) {
|
||||
// return Collections.emptyList();
|
||||
// }
|
||||
// // 查询角色数据
|
||||
// return roleService.getRoleList(CollectionUtil.convertSet(adminRoleList, AdminRoleDO::getRoleId));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// @Transactional
|
||||
// public Boolean assignAdminRole(Integer adminId, AdminAssignRoleDTO adminAssignRoleDTO) {
|
||||
// // 校验账号存在
|
||||
// AdminDO admin = adminMapper.selectById(adminAssignRoleDTO.getId());
|
||||
// if (admin == null) {
|
||||
// throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.ADMIN_USERNAME_NOT_REGISTERED.getCode());
|
||||
// }
|
||||
// // 校验是否有不存在的角色
|
||||
// if (!CollectionUtil.isEmpty(adminAssignRoleDTO.getRoleIds())) {
|
||||
// List<RoleDO> roles = roleService.getRoles(adminAssignRoleDTO.getRoleIds());
|
||||
// if (roles.size() != adminAssignRoleDTO.getRoleIds().size()) {
|
||||
// throw ServiceExceptionUtil.exception(AdminErrorCodeEnum.ADMIN_ASSIGN_ROLE_NOT_EXISTS.getCode());
|
||||
// }
|
||||
// }
|
||||
// // TODO 芋艿,这里先简单实现。即方式是,删除老的分配的角色关系,然后添加新的分配的角色关系
|
||||
// // 标记管理员角色源关系都为删除
|
||||
// adminRoleMapper.deleteByAdminId(adminAssignRoleDTO.getId());
|
||||
// // 创建 RoleResourceDO 数组,并插入到数据库
|
||||
// if (!CollectionUtil.isEmpty(adminAssignRoleDTO.getRoleIds())) {
|
||||
// List<AdminRoleDO> adminRoleDOs = adminAssignRoleDTO.getRoleIds().stream().map(roleId -> {
|
||||
// AdminRoleDO roleResource = new AdminRoleDO().setAdminId(adminAssignRoleDTO.getId()).setRoleId(roleId);
|
||||
// roleResource.setCreateTime(new Date());
|
||||
// roleResource.setDeleted(DeletedStatusEnum.DELETED_NO.getValue());
|
||||
// return roleResource;
|
||||
// }).collect(Collectors.toList());
|
||||
// adminRoleMapper.insertList(adminRoleDOs);
|
||||
// }
|
||||
// // TODO 插入操作日志
|
||||
// // 返回成功
|
||||
// return true;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package cn.iocoder.mall.systemservice.service.admin.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 管理员添加 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AdminCreateBO {
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
@NotEmpty(message = "昵称不能为空")
|
||||
@Length(max = 10, message = "昵称长度最大为 10 位")
|
||||
private String nickname;
|
||||
/**
|
||||
* 部门编号
|
||||
*/
|
||||
@NotNull(message = "部门不能为空")
|
||||
private Integer departmentId;
|
||||
|
||||
/**
|
||||
* 登录账号
|
||||
*/
|
||||
@NotEmpty(message = "登陆账号不能为空")
|
||||
@Length(min = 5, max = 16, message = "账号长度为 5-16 位")
|
||||
@Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
|
||||
private String username;
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
@NotEmpty(message = "密码不能为空")
|
||||
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 创建管理员编号
|
||||
*/
|
||||
@NotNull(message = "创建管理员编号不能为空")
|
||||
private String createAdminId;
|
||||
/**
|
||||
* 创建 IP
|
||||
*/
|
||||
@NotNull(message = "创建 IP 不能为空")
|
||||
private Date createIp;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.iocoder.mall.systemservice.service.admin.bo;
|
||||
|
||||
import cn.iocoder.common.framework.vo.PageParam;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@ApiModel("管理员分页查询 BO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
public class AdminPageBO extends PageParam {
|
||||
|
||||
/**
|
||||
* 真实名字,模糊匹配
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 部门编号
|
||||
*/
|
||||
private Integer departmentId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package cn.iocoder.mall.systemservice.service.admin.bo;
|
||||
|
||||
import cn.iocoder.common.framework.enums.CommonStatusEnum;
|
||||
import cn.iocoder.common.framework.validator.InEnum;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
|
||||
/**
|
||||
* 管理员修改 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AdminUpdateBO {
|
||||
|
||||
/**
|
||||
* 管理员编号
|
||||
*/
|
||||
@NotNull(message = "管理员编号不能为空")
|
||||
private Integer id;
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
@Length(max = 10, message = "昵称长度最大为 10 位")
|
||||
private String nickname;
|
||||
/**
|
||||
* 部门编号
|
||||
*/
|
||||
@NotNull(message = "部门不能为空")
|
||||
private Integer departmentId;
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 登录账号
|
||||
*/
|
||||
@Length(min = 5, max = 16, message = "账号长度为 5-16 位")
|
||||
@Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
|
||||
private String username;
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
|
||||
private String password;
|
||||
|
||||
}
|
||||
@@ -80,6 +80,12 @@ public class OAuth2Service {
|
||||
return OAuth2Convert.INSTANCE.convert(oauth2AccessTokenDO);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void removeToken(Integer userId, Integer userType) {
|
||||
oauth2AccessTokenMapper.deleteByUserIdAndUserType(userId, userType);
|
||||
oauth2RefreshTokenMapper.deleteByUserIdAndUserType(userId, userType);
|
||||
}
|
||||
|
||||
private OAuth2AccessTokenDO createOAuth2AccessToken(OAuth2RefreshTokenDO refreshTokenDO, String createIp) {
|
||||
OAuth2AccessTokenDO accessToken = new OAuth2AccessTokenDO()
|
||||
.setId(generateAccessToken())
|
||||
|
||||
Reference in New Issue
Block a user