用户的功能迁移
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package cn.iocoder.mall.systemservice.convert.oauth;
|
||||
|
||||
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2AccessTokenDO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
|
||||
import cn.iocoder.mall.systemservice.service.oauth.bo.OAuth2AccessTokenBO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
@@ -15,6 +15,6 @@ public interface OAuth2Convert {
|
||||
@Mapping(source = "id", target = "accessToken")
|
||||
OAuth2AccessTokenBO convert(OAuth2AccessTokenDO bean);
|
||||
|
||||
OAuth2AccessTokenVO convert(OAuth2AccessTokenBO bean);
|
||||
OAuth2AccessTokenRespDTO convert(OAuth2AccessTokenBO bean);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,38 +1,47 @@
|
||||
package cn.iocoder.mall.systemservice.manager.oauth;
|
||||
|
||||
import cn.iocoder.mall.systemservice.convert.oauth.OAuth2Convert;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO;
|
||||
import cn.iocoder.mall.systemservice.service.oauth.OAuth2Service;
|
||||
import cn.iocoder.mall.systemservice.service.oauth.bo.OAuth2AccessTokenBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* OAuth2.0 Manager
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class OAuth2Manager {
|
||||
|
||||
@Autowired
|
||||
private OAuth2Service oauth2Service;
|
||||
|
||||
public OAuth2AccessTokenVO createAccessToken(OAuth2CreateAccessTokenDTO createAccessTokenDTO) {
|
||||
public OAuth2AccessTokenRespDTO createAccessToken(@Valid OAuth2CreateAccessTokenReqDTO createAccessTokenDTO) {
|
||||
OAuth2AccessTokenBO accessTokenBO = oauth2Service.createAccessToken(createAccessTokenDTO.getUserId(),
|
||||
createAccessTokenDTO.getUserType(), createAccessTokenDTO.getCreateIp());
|
||||
return OAuth2Convert.INSTANCE.convert(accessTokenBO);
|
||||
}
|
||||
|
||||
public OAuth2AccessTokenVO checkAccessToken(String accessToken) {
|
||||
public OAuth2AccessTokenRespDTO checkAccessToken(String accessToken) {
|
||||
OAuth2AccessTokenBO accessTokenBO = oauth2Service.checkAccessToken(accessToken);
|
||||
return OAuth2Convert.INSTANCE.convert(accessTokenBO);
|
||||
}
|
||||
|
||||
public OAuth2AccessTokenVO refreshAccessToken(OAuth2RefreshAccessTokenDTO refreshAccessTokenDTO) {
|
||||
public OAuth2AccessTokenRespDTO refreshAccessToken(@Valid OAuth2RefreshAccessTokenReqDTO refreshAccessTokenDTO) {
|
||||
OAuth2AccessTokenBO accessTokenBO = oauth2Service.refreshAccessToken(refreshAccessTokenDTO.getRefreshToken(),
|
||||
refreshAccessTokenDTO.getCreateIp());
|
||||
return OAuth2Convert.INSTANCE.convert(accessTokenBO);
|
||||
}
|
||||
|
||||
public void removeToken(@Valid OAuth2RemoveTokenByUserReqDTO removeTokenDTO) {
|
||||
oauth2Service.removeToken(removeTokenDTO.getUserId(), removeTokenDTO.getUserType());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,9 +2,10 @@ package cn.iocoder.mall.systemservice.rpc.oauth;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.systemservice.manager.oauth.OAuth2Manager;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO;
|
||||
import org.apache.dubbo.config.annotation.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -17,18 +18,24 @@ public class OAuth2RpcImpl implements OAuth2Rpc {
|
||||
private OAuth2Manager oauth2Manager;
|
||||
|
||||
@Override
|
||||
public CommonResult<OAuth2AccessTokenVO> createAccessToken(OAuth2CreateAccessTokenDTO createAccessTokenDTO) {
|
||||
public CommonResult<OAuth2AccessTokenRespDTO> createAccessToken(OAuth2CreateAccessTokenReqDTO createAccessTokenDTO) {
|
||||
return success(oauth2Manager.createAccessToken(createAccessTokenDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<OAuth2AccessTokenVO> checkAccessToken(String accessToken) {
|
||||
public CommonResult<OAuth2AccessTokenRespDTO> checkAccessToken(String accessToken) {
|
||||
return success(oauth2Manager.checkAccessToken(accessToken));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<OAuth2AccessTokenVO> refreshAccessToken(OAuth2RefreshAccessTokenDTO refreshAccessTokenDTO) {
|
||||
public CommonResult<OAuth2AccessTokenRespDTO> refreshAccessToken(OAuth2RefreshAccessTokenReqDTO refreshAccessTokenDTO) {
|
||||
return success(oauth2Manager.refreshAccessToken(refreshAccessTokenDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> removeToken(OAuth2RemoveTokenByUserReqDTO removeTokenDTO) {
|
||||
oauth2Manager.removeToken(removeTokenDTO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -81,34 +81,34 @@ public class AdminService {
|
||||
return DigestUtils.bcrypt(password, salt);
|
||||
}
|
||||
|
||||
public void updateAdmin(AdminUpdateBO updateDTO) {
|
||||
public void updateAdmin(AdminUpdateBO updateBO) {
|
||||
// 校验账号存在
|
||||
AdminDO admin = adminMapper.selectById(updateDTO.getId());
|
||||
if (admin == null) {
|
||||
AdminDO adminDO = adminMapper.selectById(updateBO.getId());
|
||||
if (adminDO == null) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_NOT_FOUND);
|
||||
}
|
||||
// 校验是否为特殊账号,不允许编辑
|
||||
if (AdminUsernameEnum.ADMIN.getUsername().equals(admin.getUsername())
|
||||
|| AdminUsernameEnum.DEMO.getUsername().equals(admin.getUsername())) {
|
||||
if (AdminUsernameEnum.ADMIN.getUsername().equals(adminDO.getUsername())
|
||||
|| AdminUsernameEnum.DEMO.getUsername().equals(adminDO.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())) {
|
||||
if (StringUtils.hasText(updateBO.getUsername())) {
|
||||
AdminDO usernameAdmin = adminMapper.selectByUsername(updateBO.getUsername());
|
||||
if (usernameAdmin != null && !usernameAdmin.getId().equals(updateBO.getId())) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_USERNAME_EXISTS);
|
||||
}
|
||||
}
|
||||
// 如果有更新状态,则校验是否已经是该状态
|
||||
if (updateDTO.getStatus() != null && updateDTO.getStatus().equals(admin.getStatus())) {
|
||||
if (updateBO.getStatus() != null && updateBO.getStatus().equals(adminDO.getStatus())) {
|
||||
throw ServiceExceptionUtil.exception(ADMIN_STATUS_EQUALS);
|
||||
}
|
||||
// 更新到数据库
|
||||
AdminDO updateAdmin = AdminConvert.INSTANCE.convert(updateDTO);
|
||||
AdminDO updateAdmin = AdminConvert.INSTANCE.convert(updateBO);
|
||||
// 如果更新密码,需要特殊加密
|
||||
if (StringUtils.hasText(updateDTO.getPassword())) {
|
||||
if (StringUtils.hasText(updateBO.getPassword())) {
|
||||
String passwordSalt = genPasswordSalt();
|
||||
String password = encodePassword(updateDTO.getPassword(), passwordSalt);
|
||||
String password = encodePassword(updateBO.getPassword(), passwordSalt);
|
||||
updateAdmin.setPassword(password).setPasswordSalt(passwordSalt);
|
||||
}
|
||||
adminMapper.updateById(updateAdmin);
|
||||
@@ -119,65 +119,4 @@ public class AdminService {
|
||||
return AdminConvert.INSTANCE.convert(adminDO);
|
||||
}
|
||||
|
||||
//
|
||||
// @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;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user