优化不符合规范的注解 30%

v1.4.1
hiparker 5 years ago
parent 7b4a28ff81
commit f4e2a59e71

@ -1,10 +1,9 @@
package org.opsli.api;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api
* @Author: Parker
* @CreateTime: 2020-11-21 15:15
* @Description: 标示文件 请勿删除
* 标示文件 请勿删除
*
* @author Parker
* @date 2020-11-21 15:15
*/
public interface ApiFlag { }

@ -11,15 +11,12 @@ import org.springframework.http.HttpStatus;
import java.io.Serializable;
/**
* API 统一返回参数
*
* @date 2020年5月15日10:40:54
* @author Parker
*
* API 统一返回参数
* 在 Feign 的调用过程中,无法直接序列化数据
*
* 所以要加上 泛型对象 @JsonProperty ,否者返回则为一个null
*
* @date 2020年5月15日10:40:54
* @author Parker
*/
@Data
@ApiModel(value="视图层返回Api对象",

@ -48,7 +48,6 @@ import java.util.Date;
*
* @author Parker
* @date 2019-05-11
*
*/
@Data
@Accessors(chain = true)

@ -28,18 +28,15 @@ import org.opsli.api.wrapper.gentest.carinfo.TestCarModel;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.web.gentest.carinfo
* @Author: Parker
* @CreateTime: 2020-12-20 20:12:57
* @Description: 汽车信息
* 测试汽车
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-12-20 20:12:57
*/
public interface TestCarRestApi {
@ -114,7 +111,6 @@ public interface TestCarRestApi {
*
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -130,7 +126,6 @@ public interface TestCarRestApi {
/**
* 汽车信息 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -28,18 +28,15 @@ import org.opsli.api.wrapper.gentest.user.TestUserModel;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.web.gentest.user
* @Author: 周鹏程
* @CreateTime: 2020-11-22 12:12:05
* @Description: 某系统用户
* 测试用户
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-11-22 12:12:05
*/
public interface TestUserRestApi {
@ -106,7 +103,6 @@ public interface TestUserRestApi {
* 某系统用户 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -122,7 +118,6 @@ public interface TestUserRestApi {
/**
* 某系统用户 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -28,18 +28,15 @@ import javax.servlet.http.HttpServletResponse;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.web.system.area
* @Author: Parker
* @CreateTime: 2020-11-28 18:59:59
* @Description: 组织机构表
* 地域管理
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-11-28 18:59:59
*/
public interface SysAreaRestApi {
@ -58,11 +55,11 @@ public interface SysAreaRestApi {
/**
* 组织树
* @param parentId
* @param parentId 父节点ID
* @return ResultVo
*/
@GetMapping("/findTree")
ResultVo<?> findTree( String parentId );
ResultVo<?> findTree(String parentId);
/**
* 组织树
@ -108,7 +105,6 @@ public interface SysAreaRestApi {
* 组织机构表 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -124,7 +120,6 @@ public interface SysAreaRestApi {
/**
* 组织机构表 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -28,18 +28,15 @@ import javax.servlet.http.HttpServletResponse;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 数据字典 API
* 数据字典 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface DictApi {
@ -106,7 +103,6 @@ public interface DictApi {
* 数据字典 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -122,7 +118,6 @@ public interface DictApi {
/**
* 数据字典 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);
@ -132,7 +127,7 @@ public interface DictApi {
* 根据字典类型编号 查询出所有字典
*
* @param typeCode 字典类型编号
* @return
* @return ResultVo
*/
@GetMapping("/getDictListByCode")
ResultVo<?> getDictListByCode(String typeCode);

@ -29,18 +29,15 @@ import java.util.List;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 数据字典 API
* 数据字典明细 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface DictDetailApi {
@ -107,7 +104,6 @@ public interface DictDetailApi {
* 数据字典 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -123,7 +119,6 @@ public interface DictDetailApi {
/**
* 数据字典 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);
@ -135,7 +130,7 @@ public interface DictDetailApi {
* 根据字典类型编号 查询出所有字典
*
* @param typeCode 字典类型编号
* @return
* @return ResultVo
*/
@GetMapping("/findListByTypeCode")
ResultVo<List<DictDetailModel>> findListByTypeCode(String typeCode);

@ -17,28 +17,23 @@ package org.opsli.api.web.system.logs;
import org.opsli.api.base.result.ResultVo;
import org.opsli.api.wrapper.system.logs.LogsModel;
import org.opsli.api.wrapper.system.menu.MenuModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 日志 API
* 日志 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface LogsApi {

@ -30,18 +30,15 @@ import java.util.List;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 菜单 API
* 菜单管理 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface MenuApi {
@ -53,6 +50,8 @@ public interface MenuApi {
/**
* 获得列表菜单
*
* @param request request
* @return ResultVo
*/
@GetMapping("/findMenuTreePage")
@ -156,7 +155,6 @@ public interface MenuApi {
* 菜单 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -172,7 +170,6 @@ public interface MenuApi {
/**
* 菜单 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -34,20 +34,15 @@ import java.util.Map;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.web.system.options
* @Author: Parker
* @CreateTime: 2021-02-07 18:24:38
* @Description: 系统参数
* 系统参数
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2021-02-07 18:24:38
*/
public interface OptionsApi {
@ -179,6 +174,8 @@ public interface OptionsApi {
/**
* 系统参数 创建加密公私钥
*
* @param type 类型
* @return ResultVo
*/
@PostMapping("/createCrypto")

@ -28,18 +28,15 @@ import org.opsli.api.wrapper.system.org.SysOrgModel;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.web.system.org
* @Author: Parker
* @CreateTime: 2020-11-28 18:59:59
* @Description: 组织机构表
* 组织机构管理
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-11-28 18:59:59
*/
public interface SysOrgRestApi {
@ -49,12 +46,27 @@ public interface SysOrgRestApi {
String SUB_TITLE = "组织机构";
/**
* 获得懒加载树 By 用户
* @param parentId 父级ID
* @return ResultVo
*/
@GetMapping("/findTreeLazyByUser")
ResultVo<?> findTreeLazyByUser(String parentId);
/**
* 获得懒加载树
* @param parentId 父级ID
* @return ResultVo
*/
@GetMapping("/findTreeLazy")
ResultVo<?> findTreeLazy(String parentId);
/**
* 获得控件树
* @param parentId 父级ID
* @return ResultVo
*/
@GetMapping("/findGridTree")
ResultVo<?> findGridTree(String parentId);
@ -112,7 +124,6 @@ public interface SysOrgRestApi {
* 组织机构表 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -128,7 +139,6 @@ public interface SysOrgRestApi {
/**
* 组织机构表 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -28,18 +28,15 @@ import javax.servlet.http.HttpServletResponse;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 角色 API
* 角色管理 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface RoleApi {
@ -106,7 +103,6 @@ public interface RoleApi {
* 角色 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -122,7 +118,6 @@ public interface RoleApi {
/**
* 角色 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -29,18 +29,15 @@ import javax.servlet.http.HttpServletResponse;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 角色菜单 API
* 角色菜单 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface RoleMenuRefApi {

@ -28,18 +28,15 @@ import javax.servlet.http.HttpServletResponse;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 租户 API
* 租户管理 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface TenantApi {
@ -106,7 +103,6 @@ public interface TenantApi {
* 租户 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -122,7 +118,6 @@ public interface TenantApi {
/**
* 租户 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -33,18 +33,15 @@ import java.util.List;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 用户信息 API
* 用户信息 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface UserApi {
@ -55,6 +52,7 @@ public interface UserApi {
/**
* 当前登陆用户信息
* @param request request
* @return ResultVo
*/
@GetMapping("/getInfo")
@ -62,10 +60,12 @@ public interface UserApi {
/**
* 当前登陆用户信息
*
* @param userId 用户ID
* @return ResultVo
*/
@GetMapping("/getInfoById")
ResultVo<UserInfo> getInfoById(@RequestParam(name = "userId") String userId);
ResultVo<UserInfo> getInfoById(String userId);
/**
* 当前登陆用户信息
@ -76,10 +76,12 @@ public interface UserApi {
/**
* 当前登陆用户信息
*
* @param userId 用户ID
* @return ResultVo
*/
@GetMapping("/getOrgByUserId")
ResultVo<UserOrgRefModel> getOrgByUserId(@RequestParam(name = "userId") String userId);
ResultVo<UserOrgRefModel> getOrgByUserId(String userId);
/**
* 根据 userId 获得用户角色Id集合
@ -99,6 +101,8 @@ public interface UserApi {
/**
* 修改密码 ID
*
* @param userPassword 密码类
* @return ResultVo
*/
@PostMapping("/updatePasswordById")
@ -106,6 +110,8 @@ public interface UserApi {
/**
* 重置密码 ID
*
* @param userId 用户ID
* @return ResultVo
*/
@PostMapping("/resetPasswordById")
@ -142,6 +148,7 @@ public interface UserApi {
* 用户信息 查询分页
* @param pageNo 当前页
* @param pageSize 每页条数
* @param org 组织
* @param request request
* @return ResultVo
*/
@ -198,7 +205,6 @@ public interface UserApi {
* 用户信息 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -215,7 +221,6 @@ public interface UserApi {
/**
* 用户信息 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);
@ -256,6 +261,8 @@ public interface UserApi {
/**
* 当前登陆用户信息
*
* @param userId 用户ID
* @return ResultVo
*/
ResultVo<UserOrgRefModel> getOrgInfoByUserId(String userId);

@ -22,18 +22,15 @@ import org.springframework.web.bind.annotation.RequestBody;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 用户组织 API
* 用户组织 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface UserOrgRefApi {
@ -45,8 +42,7 @@ public interface UserOrgRefApi {
/**
* 设置角色
* @param model userId 用户Id
* @param model roleIds 角色Id 数组
* @param model 用户组织关联对象
* @return ResultVo
*/
@PostMapping("/setOrg")

@ -24,18 +24,15 @@ import org.springframework.web.bind.annotation.RequestBody;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 用户角色 API
* 用户角色 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface UserRoleRefApi {
@ -47,8 +44,7 @@ public interface UserRoleRefApi {
/**
* 设置角色
* @param model userId 用户Id
* @param model roleIds 角色Id 数组
* @param model 用户角色关联对象
* @return ResultVo
*/
@PostMapping("/setRoles")

@ -1,6 +1,5 @@
package org.opsli.api.web.test;
import io.swagger.annotations.ApiOperation;
import org.opsli.api.base.result.ResultVo;
import org.opsli.api.wrapper.test.TestModel;
import org.springframework.web.bind.annotation.GetMapping;
@ -14,29 +13,30 @@ import java.util.List;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 测试类
* 测试类
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface TestApi {
/**
* 发送邮件
* @return ResultVo
*/
@GetMapping("/sendMail")
ResultVo<?> sendMail();
/**
* 发送 Redis 订阅消息
* @return
* @return ResultVo
*/
@GetMapping("/sendMsg")
ResultVo<?> sendMsg();
@ -44,7 +44,7 @@ public interface TestApi {
/**
* 发送 Redis 订阅消息
* @return
* @return ResultVo
*/
@GetMapping("/redisTest")
ResultVo<?> redisTest();
@ -52,21 +52,23 @@ public interface TestApi {
/**
* 发起 Redis 分布式锁
* @return
* @return ResultVo
*/
@GetMapping("/testLock")
ResultVo<?> testLock();
/**
* 新增数据
* @return
* @param entity entity
* @return ResultVo
*/
@GetMapping("/insert")
ResultVo<TestModel> insert(TestModel entity);
/**
* 修改数据
* @return
* @param entity entity
* @return ResultVo
*/
@GetMapping("/update")
ResultVo<TestModel> update(TestModel entity);
@ -74,7 +76,8 @@ public interface TestApi {
/**
* 查看对象
* @return
* @param entity entity
* @return ResultVo
*/
@GetMapping("/get")
ResultVo<TestModel> get(TestModel entity);
@ -82,7 +85,8 @@ public interface TestApi {
/**
* 删除对象
* @return
* @param id id
* @return ResultVo
*/
@GetMapping("/del")
ResultVo<?> del(String id);
@ -90,7 +94,7 @@ public interface TestApi {
/**
* 删除全部对象
* @return
* @return ResultVo
*/
@GetMapping("/delAll")
ResultVo<?> delAll();
@ -98,7 +102,8 @@ public interface TestApi {
/**
* 查找一个集合
* @return
* @param request request
* @return ResultVo
*/
@GetMapping("/findList")
ResultVo<List<TestModel>> findList(HttpServletRequest request);
@ -106,7 +111,7 @@ public interface TestApi {
/**
* 查找一个全部集合
* @return
* @return ResultVo
*/
@GetMapping("/findAllList")
ResultVo<List<TestModel>> findAllList();
@ -114,7 +119,11 @@ public interface TestApi {
/**
* 查找一个分页
* @return
*
* @param pageNo 当前页
* @param pageSize 每页条数
* @param request request
* @return ResultVo
*/
@GetMapping("/findPage")
ResultVo<?> findPage(
@ -126,21 +135,26 @@ public interface TestApi {
/**
* Excel 导出
* @return
*
* @param request request
* @param response response
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
/**
* Excel 导入
* @return
*
* @param request request
* @return ResultVo
*/
@PostMapping("/importExcel")
ResultVo<?> importExcel(MultipartHttpServletRequest request);
/**
* Excel 下载导入模版
* @return
*
* @param response response
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -28,18 +28,15 @@ import javax.servlet.http.HttpServletResponse;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.web
* @Author: Parker
* @CreateTime: 2020-09-13 17:40
* @Description: 测试 API
* 测试 API
*
* 对外 API 直接 暴露 @GetMapping 或者 @PostMapping
* 对内也推荐 单机版 不需要设置 Mapping 但是调用方法得从Controller写起
*
* 这样写法虽然比较绕,但是当单体项目想要改造微服务架构时 时非常容易的
*
*
* @author Parker
* @date 2020-09-13 17:40
*/
public interface TestRestApi {
@ -106,7 +103,6 @@ public interface TestRestApi {
* 测试 Excel 导出
* @param request request
* @param response response
* @return ResultVo
*/
@GetMapping("/exportExcel")
void exportExcel(HttpServletRequest request, HttpServletResponse response);
@ -122,7 +118,6 @@ public interface TestRestApi {
/**
* 测试 Excel 下载导入模版
* @param response response
* @return ResultVo
*/
@GetMapping("/importExcel/template")
void importTemplate(HttpServletResponse response);

@ -29,11 +29,10 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.gentest.carinfo
* @Author: Parker
* @CreateTime: 2020-12-20 20:12:57
* @Description: 汽车信息
* 汽车信息
*
* @author Parker
* @date 2020-12-20 20:12:57
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -30,11 +30,10 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.gentest.user
* @Author: 周鹏程
* @CreateTime: 2020-11-22 12:12:05
* @Description: 某系统用户
* 某系统用户
*
* @author Parker
* @date 2020-11-22 12:12:05
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -27,11 +27,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.system.area
* @Author: Parker
* @CreateTime: 2020-11-28 18:59:59
* @Description: 地域表
* 地域表
*
* @author Parker
* @date 2020-11-28 18:59:59
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -27,11 +27,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 数据字典 - 明细
* 数据字典 - 明细
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -26,11 +26,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 数据字典
* 数据字典
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -19,11 +19,10 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 数据字典 - 工具类用
* 数据字典 - 工具类用
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -22,11 +22,10 @@ import lombok.EqualsAndHashCode;
import org.opsli.api.base.warpper.ApiWrapper;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 日志表
* 日志表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -27,11 +27,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.io.Serializable;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.system.menu
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 创建完整菜单
* 创建完整菜单
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,11 +28,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.system.menu
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 菜单表
* 菜单表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,13 +28,11 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.system.options
* @Author: Parker
* @CreateTime: 2021-02-07 18:24:38
* @Description: 系统参数
*
* 系统参数
*
* @author Parker
* @date 2021-02-07 18:24:38
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,11 +28,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.system.org
* @Author: Parker
* @CreateTime: 2020-11-28 18:59:59
* @Description: 组织机构表
* 组织机构表
*
* @author Parker
* @date 2020-11-28 18:59:59
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -26,11 +26,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.io.Serializable;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 角色表
* 角色表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -27,18 +27,15 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 角色表
* 角色表
*
* @author 2020-09-16 17:33
* @date Parker
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class RoleModel extends ApiWrapper {
/** 角色编码 */
@ApiModelProperty(value = "角色编码")
@ExcelProperty(value = "角色编码", order = 1)

@ -26,11 +26,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 租户表
* 租户表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,11 +28,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 用户信息表
* 用户信息表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,11 +28,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.util.List;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 用户信息表
* 用户信息表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,11 +28,10 @@ import org.opsli.common.enums.ValiArgsType;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 用户信息表
* 用户信息表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -26,11 +26,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.io.Serializable;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 角色表
* 角色表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -28,11 +28,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.io.Serializable;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 用户 修改密码
* 用户 修改密码
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -26,11 +26,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.io.Serializable;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 角色表
* 用户 - 角色表
*
* @author Parker
* @date 2020-09-16 17:33
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -19,19 +19,18 @@ import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.opsli.api.base.warpper.ApiWrapper;
import org.opsli.plugins.excel.annotation.ExcelInfo;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.modulars.test.entity
* @Author: Parker
* @CreateTime: 2020-09-16 17:33
* @Description: 测试类
*
* 测试类
* 测试导入导出
*
* @author Parker
* @date 2020-09-16 17:33
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="测试接口返回Model",description="测试接口返回Model")
@Data
public class TestModel extends ApiWrapper {

@ -29,11 +29,10 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.api.wrapper.testt
* @Author: parker
* @CreateTime: 2020-12-20 18:27:04
* @Description: 测试3
* 测试3
*
* @author Parker
* @date 2020-12-20 18:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)

@ -20,7 +20,9 @@ import java.lang.annotation.*;
/**
* Api非对称加解密
*
* @author Parker
* @date 2021年5月18日14:46:02
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

@ -23,7 +23,9 @@ import java.lang.annotation.*;
/**
* controller层统一使用该注解
*
* @author Parker
* @date 2021年5月18日14:46:09
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)

@ -24,6 +24,7 @@ import java.lang.annotation.Target;
/**
* 自定义操作日志注解
* @author parker
* @date 2020-09-12
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

@ -23,7 +23,9 @@ import java.lang.annotation.*;
/**
* Java 限流器
*
* @author Parker
* @date 2020-12-31
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

@ -20,7 +20,9 @@ import java.lang.annotation.*;
/**
* 参数配置
*
* @author Parker
* @date 2020-09-22 17:07
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)

@ -21,9 +21,10 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author Parker
*
* 自定义权限验证
*
* @author Parker
* @date 2020-09-22 17:07
*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

@ -19,10 +19,10 @@ import java.lang.annotation.*;
/**
* 搜索历史注解
*
* 默认按照当前用户 key, 搜索记录排行最高
*
* @author Parker
* @date 2020-09-22 17:07
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)

@ -18,12 +18,6 @@ package org.opsli.common.annotation.hotdata;
import java.lang.annotation.*;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.annotation
* @Author: Parker
* @CreateTime: 2020-09-16 16:36
* @Description: 热数据 - Get
*
* 添加在 Service get 方法上 , 默认获得 传入对象 key为id的数据
*
* 调用 热点数据 不论增加缓存 还是 删除缓存
@ -37,6 +31,8 @@ import java.lang.annotation.*;
*
* 并发更新 不建议使用 热数据 ☆☆☆☆☆
*
* @author Parker
* @date 2020-09-16 16:36
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)

@ -19,12 +19,6 @@ package org.opsli.common.annotation.hotdata;
import java.lang.annotation.*;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.annotation
* @Author: Parker
* @CreateTime: 2020-09-16 16:36
* @Description: 热数据 - Get
*
* 添加在 Service get 方法上 , 默认获得 传入对象 key为id的数据
*
* 调用 热点数据 不论增加缓存 还是 删除缓存
@ -34,6 +28,8 @@ import java.lang.annotation.*;
*
* 并发更新 不建议使用 热数据 ☆☆☆☆☆
*
* @author Parker
* @date 2020-09-16 16:36
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)

@ -19,12 +19,6 @@ package org.opsli.common.annotation.hotdata;
import java.lang.annotation.*;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.annotation
* @Author: Parker
* @CreateTime: 2020-09-16 16:36
* @Description: 热数据 - Get
*
* 添加在 Service get 方法上 , 默认获得 传入对象 key为id的数据
*
* 调用 热点数据 不论增加缓存 还是 删除缓存
@ -34,6 +28,8 @@ import java.lang.annotation.*;
*
* 并发更新 不建议使用 热数据 ☆☆☆☆☆
*
* @author Parker
* @date 2020-09-16 16:36
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)

@ -20,11 +20,10 @@ import org.opsli.common.enums.ValiArgsType;
import java.lang.annotation.*;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.annotation
* @Author: Parker
* @CreateTime: 2020-09-22 17:07
* @Description: 字段验证器
* 字段验证器
*
* @author Parker
* @date 2020-09-22 17:07
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)

@ -19,14 +19,11 @@ package org.opsli.common.annotation.validation;
import java.lang.annotation.*;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.annotation
* @Author: Parker
* @CreateTime: 2020-09-22 17:07
* @Description: 字段验证器 - 字段最大长度
*
* 字段验证器 - 字段最大长度
* 对应 数据库 真实长度数
*
* @author Parker
* @date 2020-09-22 17:07
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)

@ -19,14 +19,11 @@ package org.opsli.common.annotation.validation;
import java.lang.annotation.*;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.annotation
* @Author: Parker
* @CreateTime: 2020-09-22 17:07
* @Description: 字段验证器 - 字段最大长度
*
* 字段验证器 - 字段最大长度
* 对应 数据库 真实长度数
*
* @author Parker
* @date 2020-09-22 17:07
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)

@ -26,13 +26,12 @@ import java.util.Map;
/**
* 统一返回参数
*
* @date 2020年5月15日10:40:54
* @author Parker
*
* 在 Feign 的调用过程中,无法直接序列化数据
*
* 所以要加上 @JsonProperty ,否者返回则为一个null
*
* @author Parker
* @date 2020-09-22 17:07
*/
public class ResultDto<T> implements Serializable {

@ -26,9 +26,8 @@ import java.util.Map;
/**
* Web统一返回参数
*
* @date 2020年5月15日10:40:54
* @author Parker
*
* @date 2020-09-22 17:07
*/
public class ResultVoMap extends HashMap<String,Object> implements Serializable {

@ -16,15 +16,11 @@
package org.opsli.common.base.msg;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.base.msg
* @Author: Parker
* @CreateTime: 2020-09-13 19:34
* @Description: 总消息类
*
* 消息类 用来存放消息
* 总消息类 用来存放消息
* opsli将消息全部提取出至一个总文件
*
* @author Parker
* @date 2020-09-22 17:07
*/
public interface BaseMsg {

@ -16,11 +16,10 @@
package org.opsli.common.constants;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.constants
* @Author: Parker
* @CreateTime: 2020-09-16 17:42
* @Description: 缓存 常量
* 缓存 常量
*
* @author Parker
* @date 2020-09-22 17:07
*/
public interface CacheConstants {

@ -16,11 +16,10 @@
package org.opsli.common.constants;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.constants
* @Author: Parker
* @CreateTime: 2020-09-16 17:42
* @Description: 字典缓存 常量
* 字典缓存 常量
*
* @author Parker
* @date 2020-09-16 17:42
*/
public interface DictConstants {

@ -18,11 +18,10 @@ package org.opsli.common.constants;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.constants
* @Author: Parker
* @CreateTime: 2020-09-18 18:46
* @Description: MyBatis 常量
* MyBatis 常量
*
* @author Parker
* @date 2020-09-16 17:42
*/
public interface MyBatisConstants {

@ -16,9 +16,10 @@
package org.opsli.common.constants;
/**
* Order
* @author parker
* @date 2020-09-16
* Order 排序
*
* @author Parker
* @date 2020-09-16 17:42
*/
public interface OrderConstants {

@ -1,9 +1,10 @@
package org.opsli.common.constants;
/**
* @Author: 周鹏程
* @CreateTime: 2020-09-16 17:42
* @Description: 签名
* 签名
*
* @author Parker
* @date 2020-09-16 17:42
*/
public interface SignConstants {

@ -16,11 +16,10 @@
package org.opsli.common.constants;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.constants
* @Author: Parker
* @CreateTime: 2020-09-16 17:42
* @Description: Token
* Token 常量类
*
* @author Parker
* @date 2020-09-16 17:42
*/
public interface TokenConstants {

@ -1,9 +1,10 @@
package org.opsli.common.constants;
/**
* @Author: 周鹏程
* @CreateTime: 2020-09-16 17:42
* @Description: Token类型
* Token类型
*
* @author Parker
* @date 2020-09-16 17:42
*/
public interface TokenTypeConstants {

@ -17,9 +17,10 @@ package org.opsli.common.enums;
/**
* @Author: Parker
* @CreateTime: 2020-09-17 23:40
* @Description: 字典
* 字典
*
* @author Parker
* @date 2020-09-16 17:42
*/
public enum AlertType {

@ -19,6 +19,7 @@ package org.opsli.common.enums;
* 数据库类型
*
* @author Parker
* @date 2020-09-16 17:42
*/
public enum CacheType {

@ -19,6 +19,7 @@ package org.opsli.common.enums;
* 非对称算法类型
*
* @author Parker
* @date 2020-09-16 17:42
*/
public enum CryptoAsymmetricType {

@ -17,11 +17,10 @@ package org.opsli.common.enums;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.enums
* @Author: Parker
* @CreateTime: 2020-09-17 23:40
* @Description: Excel 操作类型
* Excel 操作类型
*
* @author Parker
* @date 2020-09-16 17:42
*/
public enum ExcelOperate {

@ -17,11 +17,10 @@ package org.opsli.common.enums;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.enums
* @Author: Parker
* @CreateTime: 2020-09-17 23:40
* @Description: 登录拒绝策略
* 登录拒绝策略
*
* @author Parker
* @date 2020-09-17 23:40
*/
public enum LoginLimitRefuse {

@ -19,6 +19,7 @@ package org.opsli.common.enums;
* 参数类型
*
* @author Parker
* @date 2020-09-17 23:40
*/
public enum OptionsType {

@ -18,11 +18,10 @@ package org.opsli.common.enums;
import java.util.UUID;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.enums
* @Author: Parker
* @CreateTime: 2020-09-17 23:40
* @Description: 通过单例 模式 生成系统唯一标示
* 通过单例 模式 生成系统唯一标示
*
* @author Parker
* @date 2020-09-17 23:40
*/
public enum SystemInfo {

@ -17,11 +17,10 @@ package org.opsli.common.enums;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.enums
* @Author: Parker
* @CreateTime: 2020-09-17 23:40
* @Description: 通过单例 模式 生成系统唯一标示
* 通过单例 模式 生成系统唯一标示
*
* @author Parker
* @date 2020-09-17 23:40
*/
public enum ValiArgsType {

@ -17,11 +17,10 @@ package org.opsli.common.exception;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.base.excption
* @Author: Parker
* @CreateTime: 2020-09-13 19:41
* @Description: 框架总异常
* 空异常
*
* @author Parker
* @date 2020-09-17 23:40
*/
public class EmptyException extends ServiceException{

@ -18,11 +18,10 @@ package org.opsli.common.exception;
import org.opsli.common.base.msg.BaseMsg;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.plugins.mail.exception
* @Author: Parker
* @CreateTime: 2020-09-14 18:44
* @Description: Jwt 异常
* Jwt 异常
*
* @author Parker
* @date 2020-09-17 23:40
*/
public class JwtException extends ServiceException {

@ -18,11 +18,10 @@ package org.opsli.common.exception;
import org.opsli.common.base.msg.BaseMsg;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.base.excption
* @Author: Parker
* @CreateTime: 2020-09-13 19:41
* @Description: 框架总异常
* 框架服务异常
*
* @author Parker
* @date 2020-09-13 19:41
*/
public class ServiceException extends RuntimeException{

@ -18,11 +18,10 @@ package org.opsli.common.exception;
import org.opsli.common.base.msg.BaseMsg;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.plugins.mail.exception
* @Author: Parker
* @CreateTime: 2020-09-14 18:44
* @Description: 认证 异常
* 认证 异常
*
* @author Parker
* @date 2020-09-13 19:41
*/
public class TokenException extends ServiceException {

@ -18,11 +18,10 @@ package org.opsli.common.msg;
import org.opsli.common.base.msg.BaseMsg;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.core.msg
* @Author: Parker
* @CreateTime: 2020-09-13 19:36
* @Description: 核心类 - 消息
* 核心类 - 消息
*
* @author Parker
* @date 2020-09-13 19:41
*/
public enum CommonMsg implements BaseMsg {

@ -5,9 +5,10 @@ import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
/**
* @Author: 一枝花算不算浪漫
* @CreateTime: 2020-10-08 10:24
* @Description: 自定义线程有界队列
* 自定义线程有界队列
*
* @author 一枝花算不算浪漫
* @date 2020-10-08 10:24
*/
@Slf4j
public class AsyncProcessQueueReFuse {
@ -44,8 +45,8 @@ public class AsyncProcessQueueReFuse {
/**
* 执行指定的任务
*
* @param task
* @return
* @param task 任务
* @return boolean
*/
public static boolean execute(final Runnable task) {
return AsyncProcessorReFuse.executeTask(new TaskWrapper(task));

@ -6,9 +6,10 @@ import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import java.util.concurrent.*;
/**
* @Author: 一枝花算不算浪漫
* @CreateTime: 2020-10-08 10:24
* @Description: 自定义线程执行器 - 线程超时自动拒绝
* 自定义线程执行器 - 线程超时自动拒绝
*
* @author 一枝花算不算浪漫
* @date 2020-10-08 10:24
*/
@Slf4j
public class AsyncProcessorReFuse {
@ -97,8 +98,8 @@ public class AsyncProcessorReFuse {
* 执行任务,不管是否成功<br>
* 其实也就是包装以后的 {@link } 方法
*
* @param task
* @return
* @param task 任务
* @return boolean
*/
public static boolean executeTask(Runnable task) {
try {
@ -114,8 +115,8 @@ public class AsyncProcessorReFuse {
* 提交任务,并可以在稍后获取其执行情况<br>
* 当提交失败时,会抛出 {@link }
*
* @param task
* @return
* @param task 任务
* @return <T>
*/
public static <T> Future<T> submitTask(Callable<T> task) {
try {

@ -8,9 +8,10 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Author: 一枝花算不算浪漫
* @CreateTime: 2020-10-08 10:24
* @Description: 自定义线程有界队列 - 等待线程执行完毕不拒绝
* 自定义线程有界队列 - 等待线程执行完毕不拒绝
*
* @author 一枝花算不算浪漫
* @date 2020-10-08 10:24
*/
@Slf4j
public class AsyncProcessQueueWait {
@ -55,8 +56,8 @@ public class AsyncProcessQueueWait {
/**
* 执行指定的任务
*
* @param task
* @return
* @param task 任务
* @return boolean
*/
public static boolean execute(final Runnable task, final AtomicInteger count, final CountDownLatch latch) {
return AsyncProcessorWait.executeTask(new TaskWrapper(task, count, latch));

@ -24,12 +24,11 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Author: Parker
* @CreateTime: 2020-12-10 10:36
* @Description: 多线程锁执行器
*
* 多线程锁执行器
* 用于当前方法中复杂业务多线程处理,等待线程执行完毕后 获得统一结果
*
* @author Parker
* @date 2020-12-10 10:36
*/
@Slf4j
public class AsyncProcessWaitExecutor {

@ -6,9 +6,10 @@ import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import java.util.concurrent.*;
/**
* @Author: 一枝花算不算浪漫
* @CreateTime: 2020-10-08 10:24
* @Description: 自定义线程执行器 - 等待线程执行完毕不拒绝
* 自定义线程执行器 - 等待线程执行完毕不拒绝
*
* @author 一枝花算不算浪漫
* @date 2020-10-08 10:24
*/
@Slf4j
public class AsyncProcessorWait {

@ -18,11 +18,10 @@ package org.opsli.common.utils;
import java.math.BigDecimal;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.utils
* @Author: Parker
* @CreateTime: 2020-09-19 23:21
* @Description: 小数精度处理工具类
* 小数精度处理工具类
*
* @author Parker
* @date 2020-09-19 23:21
*/
public class BigDecimalUtil {
/**

@ -1,3 +1,18 @@
/**
* Copyright 2020 OPSLI 快速开发平台 https://www.opsli.com
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.opsli.common.utils;
@ -5,6 +20,7 @@ package org.opsli.common.utils;
* 检测密码强度
*
* @author venshine
* @date 2020-09-19 23:21
*/
public class CheckStrength {

@ -16,11 +16,10 @@
package org.opsli.common.utils;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.utils
* @Author: Parker
* @CreateTime: 2020-09-19 23:21
* @Description: 驼峰转换
* 字节转换
*
* @author Parker
* @date 2020-09-19 23:21
*/
public final class ConvertBytesUtil {

@ -16,11 +16,10 @@
package org.opsli.common.utils;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.utils
* @Author: Parker
* @CreateTime: 2020-09-19 23:21
* @Description: 驼峰转换
* 驼峰转换
*
* @author Parker
* @date 2020-09-19 23:21
*/
public final class HumpUtil {
@ -33,10 +32,9 @@ public final class HumpUtil {
/***
* 下划线命名转为驼峰命名
*
* @param para
* 下划线命名的字符串
* @param para 下划线命名的字符串
* @return String
*/
public static String underlineToHump(String para) {
StringBuilder result = new StringBuilder();
String[] a = para.split(UNDERLINE);
@ -58,10 +56,9 @@ public final class HumpUtil {
/***
* 驼峰命名转为下划线命名
*
* @param para
* 驼峰命名的字符串
* @param para 驼峰命名的字符串
* @return String
*/
public static String humpToUnderline(String para) {
StringBuilder sb = new StringBuilder(para);
//定位
@ -79,8 +76,8 @@ public final class HumpUtil {
/**
* 首字母大写
* @param str
* @return
* @param str 字符串
* @return String
*/
public static String captureName(String str) {
char[] cs = str.toCharArray();

@ -15,46 +15,24 @@
*/
package org.opsli.common.utils;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.net.NetUtil;
import cn.hutool.core.util.StrUtil;
import javax.servlet.http.HttpServletRequest;
/**
* @BelongsProject: opsli-boot
* @BelongsPackage: org.opsli.common.utils
* @Author: Parker
* @CreateTime: 2020-10-08 10:24
* @Description: IP 工具类
* IP 工具类
*
* @author Parker
* @date 2020-09-19 23:21
*/
public final class IPUtil {
/** 排除结果 */
private static final String UNKNOWN = "unknown";
/**
* 获取客户端ip地址(可以穿透代理)
*
* @param request
* @return
*/
public static String getRemoteAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
/** 分割符 */
private static final String SPLIT = ",";
/** 尝试字段 */
private static final String[] HEADERS_TO_TRY = {
"X-Forwarded-For",
"Proxy-Client-IP",
@ -67,95 +45,69 @@ public final class IPUtil {
"HTTP_FORWARDED",
"HTTP_VIA",
"REMOTE_ADDR",
"X-Real-IP"};
"X-Real-IP"
};
/***
* 获取客户端ip地址(可以穿透代理)
* @param request
* @return
* 获取客户端地址
*
* @param request request
* @return String
*/
public static String getClientIpAddress(HttpServletRequest request) {
public static String getClientAddress(HttpServletRequest request) {
for (String header : HEADERS_TO_TRY) {
String ip = request.getHeader(header);
if (ip != null && ip.length() != 0 && !UNKNOWN.equalsIgnoreCase(ip)) {
return ip;
String address = request.getHeader(header);
if (StrUtil.isNotBlank(address)
&& !UNKNOWN.equalsIgnoreCase(address)) {
return address;
}
}
return request.getRemoteAddr();
}
/***
* 获取客户端ip地址(可以穿透代理)
* @param request
* @return
* 获取客户端地址 (多重代理只获得第一个)
*
* @param request request
* @return String
*/
public static String getMultistageReverseProxyIp(HttpServletRequest request) {
String clientIpAddress = getClientIpAddress(request);
return NetUtil.getMultistageReverseProxyIp(clientIpAddress);
public static String getClientAddressBySingle(HttpServletRequest request) {
String clientAddress = getClientAddress(request);
return NetUtil.getMultistageReverseProxyIp(clientAddress);
}
/***
* 获取客户端ip地址(可以穿透代理)
* @param request
* @return
* 获取客户端IP
*
* @param request request
* @return String
*/
public static String getClientIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_CLUSTER_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_FORWARDED");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_VIA");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("REMOTE_ADDR");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (null != ip && !"".equals(ip.trim())
&& !UNKNOWN.equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (null != ip && !"".equals(ip.trim())
&& !UNKNOWN.equalsIgnoreCase(ip)) {
// get first ip from proxy ip
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
public static String getClientId(HttpServletRequest request) {
for (String header : HEADERS_TO_TRY) {
String ip = request.getHeader(header);
if (StrUtil.isNotBlank(ip) && !UNKNOWN.equalsIgnoreCase(ip)) {
String reverseProxyIp = NetUtil.getMultistageReverseProxyIp(ip);
if(Validator.isIpv4(reverseProxyIp) || Validator.isIpv6(reverseProxyIp)){
// 判断是否为IP 返回原始IP
return ip;
}
}
}
return request.getRemoteAddr();
// 否则返回 空地址
return "";
}
/***
* 获取客户端IP (多重代理只获得第一个)
*
* @param request request
* @return String
*/
public static String getClientIdBySingle(HttpServletRequest request) {
String clientIp = getClientId(request);
return NetUtil.getMultistageReverseProxyIp(clientIp);
}
// ===============

@ -57,7 +57,7 @@ public final class RateLimiterUtil {
*/
public static boolean enter(HttpServletRequest request) {
// 获得IP
String clientIpAddress = IPUtil.getClientIpAddress(request);
String clientIpAddress = IPUtil.getClientIdBySingle(request);
// 获得URI
String clientUri = request.getRequestURI();
return RateLimiterUtil.enter(clientIpAddress, clientUri);
@ -70,7 +70,7 @@ public final class RateLimiterUtil {
*/
public static boolean enter(HttpServletRequest request, Double dfQps) {
// 获得IP
String clientIpAddress = IPUtil.getClientIpAddress(request);
String clientIpAddress = IPUtil.getClientIdBySingle(request);
// 获得URI
String clientUri = request.getRequestURI();
return RateLimiterUtil.enter(clientIpAddress, clientUri, dfQps);

@ -39,6 +39,7 @@ import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import static org.opsli.common.constants.OrderConstants.LIMITER_AOP_SORT;
/**
* 限流器
*

@ -29,6 +29,9 @@ import static com.google.common.collect.Maps.newHashMap;
/**
* 替换组件相同名称方法 切面
*
* @author Parker
* @date 2021年5月18日13:57:46
*/
@Slf4j
@Component

@ -51,6 +51,7 @@ import java.util.*;
* 参考地址:https://www.cnblogs.com/qingshan-tang/p/13299701.html
*
* @author Parker
* @date 2020-03-01
*/
@Component
@Slf4j

@ -92,7 +92,7 @@ public final class LogUtil {
// 操作方法
String methodName = request.getMethod();
// 获得IP
String clientIpAddress = IPUtil.getMultistageReverseProxyIp(request);
String clientIpAddress = IPUtil.getClientIdBySingle(request);
// 设置标题
setTitle(point, method, logsModel, user);

@ -140,7 +140,7 @@ public class LoginRestController {
// 异步保存IP
AsyncProcessQueueReFuse.execute(()->{
// 保存用户最后登录IP
String clientIpAddress = IPUtil.getMultistageReverseProxyIp(request);
String clientIpAddress = IPUtil.getClientIdBySingle(request);
user.setLoginIp(clientIpAddress);
iUserService.updateLoginIp(user);
});

Loading…
Cancel
Save