接入 IDEA REST Client 插件
This commit is contained in:
parent
3be27d0648
commit
cf7cedbd06
@ -0,0 +1,13 @@
|
|||||||
|
### /passport/login 成功
|
||||||
|
POST {{baseUrl}}/passport/login
|
||||||
|
Content-Type: application/x-www-form-urlencoded
|
||||||
|
|
||||||
|
username=admin&password=buzhidao
|
||||||
|
|
||||||
|
### /passport/login 密码不正确
|
||||||
|
POST {{baseUrl}}/passport/login
|
||||||
|
Content-Type: application/x-www-form-urlencoded
|
||||||
|
|
||||||
|
username=admin&password=1024
|
||||||
|
|
||||||
|
###
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"local": {
|
||||||
|
"baseUrl": "http://127.0.0.1:18083/management-api/",
|
||||||
|
"accessToken": "yudaoyuanma"
|
||||||
|
}
|
||||||
|
}
|
@ -1,34 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.biz.dto.account;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
// TODO 注释
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
public class AccountCreateDTO {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登陆账号
|
|
||||||
*/
|
|
||||||
private String username;
|
|
||||||
/**
|
|
||||||
* 手机号
|
|
||||||
*/
|
|
||||||
private String mobile;
|
|
||||||
/**
|
|
||||||
* 邮箱
|
|
||||||
*/
|
|
||||||
private String email;
|
|
||||||
/**
|
|
||||||
* 密码
|
|
||||||
*
|
|
||||||
* // TODO 芋艿 暂时明文
|
|
||||||
*/
|
|
||||||
private String password;
|
|
||||||
/**
|
|
||||||
* 创建 IP
|
|
||||||
*/
|
|
||||||
private String createIp;
|
|
||||||
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.biz.dto.admin;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.vo.PageParam;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 管理员模块 - 管理员分页 DTO
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class AdminPageDTO extends PageParam {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 真实名字,模糊匹配
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门编号
|
|
||||||
*/
|
|
||||||
private Integer departmentId;
|
|
||||||
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.rpc.api.admin;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
|
||||||
import cn.iocoder.mall.system.rpc.response.admin.AdminResponse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Admin RPC 接口
|
|
||||||
*/
|
|
||||||
public interface AdminRPC {
|
|
||||||
|
|
||||||
CommonResult<AdminResponse> getAdmin(Integer id);
|
|
||||||
|
|
||||||
CommonResult<AdminResponse> getAdminByAccountId(Integer accountId);
|
|
||||||
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.rpc.api.oauth2;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
|
||||||
import cn.iocoder.mall.system.rpc.request.oauth2.OAuth2AccessTokenAuthenticateRequest;
|
|
||||||
import cn.iocoder.mall.system.rpc.response.oauth2.OAuth2AccessTokenResponse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* OAuth2 RPC 接口
|
|
||||||
*/
|
|
||||||
public interface OAuth2RPC {
|
|
||||||
|
|
||||||
CommonResult<OAuth2AccessTokenResponse> authenticate(OAuth2AccessTokenAuthenticateRequest request);
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.rpc.request.oauth2;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* OAuth2 模块 - 访问令牌认证 Request
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
public class OAuth2AccessTokenAuthenticateRequest implements Serializable {
|
|
||||||
|
|
||||||
@NotNull(message = "访问令牌不能为空")
|
|
||||||
private String accessToken;
|
|
||||||
@NotNull(message = "IP 不能为空")
|
|
||||||
private String ip;
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.rpc.response.admin;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Admin 模块 - Admin 信息 Response
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
public class AdminResponse implements Serializable {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 管理员编号
|
|
||||||
*/
|
|
||||||
private Integer id;
|
|
||||||
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.rpc.response.oauth2;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* OAuth2 认证 Response
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Accessors(chain = true)
|
|
||||||
public class OAuth2AccessTokenResponse implements Serializable {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 访问令牌
|
|
||||||
*/
|
|
||||||
private String id;
|
|
||||||
/**
|
|
||||||
* 刷新令牌
|
|
||||||
*/
|
|
||||||
private String refreshToken;
|
|
||||||
/**
|
|
||||||
* 账号编号
|
|
||||||
*/
|
|
||||||
private Integer accountId;
|
|
||||||
/**
|
|
||||||
* 过期时间
|
|
||||||
*/
|
|
||||||
private Date expiresTime;
|
|
||||||
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.rpc.rpc.admin;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
|
||||||
import cn.iocoder.mall.system.biz.bo.admin.AdminBO;
|
|
||||||
import cn.iocoder.mall.system.biz.service.admin.AdminService;
|
|
||||||
import cn.iocoder.mall.system.rpc.api.admin.AdminRPC;
|
|
||||||
import cn.iocoder.mall.system.rpc.convert.admn.AdminCovert;
|
|
||||||
import cn.iocoder.mall.system.rpc.response.admin.AdminResponse;
|
|
||||||
import org.apache.dubbo.config.annotation.Service;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
@Service(version = "${dubbo.provider.AdminRPC.version}", validation = "true")
|
|
||||||
public class AdminRPCImpl implements AdminRPC {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AdminService adminService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CommonResult<AdminResponse> getAdmin(Integer id) {
|
|
||||||
AdminBO adminBO = adminService.getAdmin(id);
|
|
||||||
return CommonResult.success(AdminCovert.INSTANCE.convert(adminBO));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CommonResult<AdminResponse> getAdminByAccountId(Integer accountId) {
|
|
||||||
AdminBO adminBO = adminService.getAdminByAccountId(accountId);
|
|
||||||
return CommonResult.success(AdminCovert.INSTANCE.convert(adminBO));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.api;
|
|
||||||
|
|
||||||
import cn.iocoder.mall.system.api.dto.oauth2.OAuth2RemoveTokenByUserDTO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Oauth2 服务接口
|
|
||||||
*/
|
|
||||||
public interface OAuth2Service {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 基于用户移除 accessToken
|
|
||||||
*
|
|
||||||
* @param oauth2RemoveTokenDTO accessToken 信息
|
|
||||||
*/
|
|
||||||
void removeToken(OAuth2RemoveTokenByUserDTO oauth2RemoveTokenDTO);
|
|
||||||
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
package cn.iocoder.mall.admin.convert;
|
|
||||||
|
|
||||||
import cn.iocoder.mall.system.api.bo.oauth2.OAuth2AccessTokenBO;
|
|
||||||
import cn.iocoder.mall.system.api.bo.oauth2.OAuth2AuthenticationBO;
|
|
||||||
import cn.iocoder.mall.admin.dataobject.OAuth2AccessTokenDO;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.Mapping;
|
|
||||||
import org.mapstruct.Mappings;
|
|
||||||
import org.mapstruct.factory.Mappers;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface OAuth2Convert {
|
|
||||||
|
|
||||||
OAuth2Convert INSTANCE = Mappers.getMapper(OAuth2Convert.class);
|
|
||||||
|
|
||||||
@Mappings({
|
|
||||||
@Mapping(source = "id", target = "accessToken")
|
|
||||||
})
|
|
||||||
OAuth2AccessTokenBO convertToAccessToken(OAuth2AccessTokenDO oauth2AccessTokenDO);
|
|
||||||
|
|
||||||
default OAuth2AccessTokenBO convertToAccessTokenWithExpiresIn(OAuth2AccessTokenDO oauth2AccessTokenDO) {
|
|
||||||
return this.convertToAccessToken(oauth2AccessTokenDO)
|
|
||||||
.setExpiresIn(Math.max((int) ((oauth2AccessTokenDO.getExpiresTime().getTime() - System.currentTimeMillis()) / 1000), 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Mappings({})
|
|
||||||
OAuth2AuthenticationBO convertToAuthentication(OAuth2AccessTokenDO oauth2AccessTokenDO);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
package cn.iocoder.mall.admin.service;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.enums.CommonStatusEnum;
|
|
||||||
import cn.iocoder.common.framework.enums.DeletedStatusEnum;
|
|
||||||
import cn.iocoder.common.framework.enums.UserTypeEnum;
|
|
||||||
import cn.iocoder.common.framework.util.CollectionUtil;
|
|
||||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
|
||||||
import cn.iocoder.common.framework.vo.PageResult;
|
|
||||||
import cn.iocoder.mall.system.api.AdminService;
|
|
||||||
import cn.iocoder.mall.system.api.bo.admin.AdminBO;
|
|
||||||
import cn.iocoder.mall.system.api.bo.role.RoleBO;
|
|
||||||
import cn.iocoder.mall.system.api.constant.AdminConstants;
|
|
||||||
import cn.iocoder.mall.system.api.constant.AdminErrorCodeEnum;
|
|
||||||
import cn.iocoder.mall.system.api.dto.admin.*;
|
|
||||||
import cn.iocoder.mall.system.api.dto.oauth2.OAuth2RemoveTokenByUserDTO;
|
|
||||||
import cn.iocoder.mall.admin.convert.AdminConvert;
|
|
||||||
import cn.iocoder.mall.admin.dao.AdminMapper;
|
|
||||||
import cn.iocoder.mall.admin.dao.AdminRoleMapper;
|
|
||||||
import cn.iocoder.mall.admin.dataobject.AdminDO;
|
|
||||||
import cn.iocoder.mall.admin.dataobject.AdminRoleDO;
|
|
||||||
import cn.iocoder.mall.admin.dataobject.RoleDO;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
|
||||||
import com.google.common.collect.Multimap;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.AdminService.version}")
|
|
||||||
public class AdminServiceImpl implements AdminService {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AdminMapper adminMapper;
|
|
||||||
@Autowired
|
|
||||||
private AdminRoleMapper adminRoleMapper;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private OAuth2ServiceImpl oauth2Service;
|
|
||||||
@Autowired
|
|
||||||
private RoleServiceImpl roleService;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
package cn.iocoder.mall.admin.service;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
|
||||||
import cn.iocoder.mall.system.api.OAuth2Service;
|
|
||||||
import cn.iocoder.mall.system.api.bo.oauth2.OAuth2AccessTokenBO;
|
|
||||||
import cn.iocoder.mall.system.api.bo.oauth2.OAuth2AuthenticationBO;
|
|
||||||
import cn.iocoder.mall.system.api.constant.AdminErrorCodeEnum;
|
|
||||||
import cn.iocoder.mall.system.api.dto.oauth2.OAuth2CreateTokenDTO;
|
|
||||||
import cn.iocoder.mall.system.api.dto.oauth2.OAuth2GetTokenDTO;
|
|
||||||
import cn.iocoder.mall.system.api.dto.oauth2.OAuth2RefreshTokenDTO;
|
|
||||||
import cn.iocoder.mall.system.api.dto.oauth2.OAuth2RemoveTokenByUserDTO;
|
|
||||||
import cn.iocoder.mall.admin.convert.OAuth2Convert;
|
|
||||||
import cn.iocoder.mall.admin.dao.OAuth2AccessTokenMapper;
|
|
||||||
import cn.iocoder.mall.admin.dao.OAuth2RefreshTokenMapper;
|
|
||||||
import cn.iocoder.mall.admin.dataobject.OAuth2AccessTokenDO;
|
|
||||||
import cn.iocoder.mall.admin.dataobject.OAuth2RefreshTokenDO;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.OAuth2Service.version:1.0.0}")
|
|
||||||
public class OAuth2ServiceImpl implements OAuth2Service {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 访问令牌过期时间,单位:毫秒
|
|
||||||
*/
|
|
||||||
@Value("${modules.oauth2-code-service.access-token-expire-time-millis}")
|
|
||||||
private int accessTokenExpireTimeMillis;
|
|
||||||
/**
|
|
||||||
* 刷新令牌过期时间,单位:毫秒
|
|
||||||
*/
|
|
||||||
@Value("${modules.oauth2-code-service.refresh-token-expire-time-millis}")
|
|
||||||
private int refreshTokenExpireTimeMillis;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AdminServiceImpl adminService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional
|
|
||||||
public void removeToken(OAuth2RemoveTokenByUserDTO oauth2RemoveTokenByUserDTO) {
|
|
||||||
Integer userId = oauth2RemoveTokenByUserDTO.getUserId();
|
|
||||||
Integer userType = oauth2RemoveTokenByUserDTO.getUserType();
|
|
||||||
// 设置 access token 失效
|
|
||||||
oauth2AccessTokenMapper.updateToInvalid(userId, userType);
|
|
||||||
// 设置 refresh token 失效
|
|
||||||
oauth2RefreshTokenMapper.updateToInvalid(userId, userType);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
package cn.iocoder.mall.system.application.convert;
|
|
||||||
|
|
||||||
import cn.iocoder.common.framework.vo.CommonResult;
|
|
||||||
import cn.iocoder.mall.system.api.bo.oauth2.OAuth2AccessTokenBO;
|
|
||||||
import cn.iocoder.mall.system.application.vo.PassportLoginVO;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.Mappings;
|
|
||||||
import org.mapstruct.factory.Mappers;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface PassportConvert {
|
|
||||||
|
|
||||||
PassportConvert INSTANCE = Mappers.getMapper(PassportConvert.class);
|
|
||||||
|
|
||||||
@Mappings({})
|
|
||||||
PassportLoginVO convert(OAuth2AccessTokenBO oauth2AccessTokenBO);
|
|
||||||
|
|
||||||
@Mappings({})
|
|
||||||
CommonResult<PassportLoginVO> convert(CommonResult<OAuth2AccessTokenBO> oauth2AccessTokenBO);
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user