接入 IDEA REST Client 插件

This commit is contained in:
YunaiV 2020-07-05 23:05:01 +08:00
parent 3be27d0648
commit cf7cedbd06
16 changed files with 19 additions and 363 deletions

View File

@ -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
###

View File

@ -0,0 +1,6 @@
{
"local": {
"baseUrl": "http://127.0.0.1:18083/management-api/",
"accessToken": "yudaoyuanma"
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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));
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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);
}