From ef7276e4654cdaabb5e378cb492ec13ddc53113f Mon Sep 17 00:00:00 2001 From: wanggeng <450292408@qq.com> Date: Mon, 23 Aug 2021 16:04:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=AE=8C=E5=96=84=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91=202.=20=E4=B8=8Ekafka=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 + .../controller/api/api/ApiController.java | 59 ++- .../permission/ApiPermissionController.java | 83 ++++ .../controller/api/claim/ClaimController.java | 19 +- .../permission/ClaimPermissionController.java | 74 +++ .../api/system/SystemController.java | 24 + .../SystemPermissionController.java | 58 +++ .../wgink/gatewaymanage/dao/api/IApiDao.java | 20 +- .../gatewaymanage/dao/claim/IClaimDao.java | 13 +- .../gatewaymanage/dao/header/IHeaderDao.java | 5 +- .../dao/requestparams/IRequestParamsDao.java | 5 +- .../responseparams/IResponseParamsDao.java | 5 +- .../gatewaymanage/dao/system/ISystemDao.java | 22 +- .../gatewaymanage/enums/AuditStatusEnum.java | 30 ++ .../gatewaymanage/pojo/dtos/api/ApiDTO.java | 19 + .../pojo/dtos/claim/ClaimDTO.java | 24 + .../pojo/dtos/examine/ExamineDTO.java | 29 ++ .../gatewaymanage/pojo/vos/claim/ClaimVO.java | 4 +- .../pojo/vos/examine/ExamineVO.java | 29 ++ .../service/api/IApiService.java | 64 ++- .../service/api/impl/ApiServiceImpl.java | 156 +++++- .../api/permission/IApiPermissionService.java | 43 ++ .../impl/ApiPermissionServiceImpl.java | 81 ++++ .../service/claim/IClaimService.java | 38 +- .../service/claim/impl/ClaimServiceImpl.java | 115 ++++- .../permission/IClaimPermissionService.java | 65 +++ .../impl/ClaimPermissionServiceImpl.java | 62 +++ .../service/system/ISystemService.java | 42 +- .../system/impl/SystemServiceImpl.java | 114 ++++- .../permission/ISystemPermissionService.java | 34 ++ .../impl/SystemPermissionServiceImpl.java | 39 ++ src/main/resources/application-prod.yml | 128 +++++ src/main/resources/application-test.yml | 26 +- .../mybatis/mapper/api/api-mapper.xml | 129 ++++- .../mybatis/mapper/claim/claim-mapper.xml | 60 ++- .../mybatis/mapper/header/header-mapper.xml | 16 + .../requestparams/request-params-mapper.xml | 19 + .../responseparams/response-params-mapper.xml | 18 + .../mybatis/mapper/system/system-mapper.xml | 80 ++- .../static/route/api/get-examine-result.html | 90 ++++ .../static/route/api/get-example.html | 108 +++++ .../static/route/api/list-claim.html | 273 +++++++++++ .../static/route/api/list-examine.html | 458 ++++++++++++++++++ src/main/resources/static/route/api/list.html | 163 ++++--- src/main/resources/static/route/api/save.html | 2 +- .../save.html => api/update-examine.html} | 89 +--- .../resources/static/route/api/update.html | 5 +- .../static/route/claim/list-examine.html | 262 ++++++++++ .../{update.html => update-examine.html} | 100 +--- .../static/route/header/list-preview.html | 142 ++++++ .../route/requestparams/list-preview.html | 169 +++++++ .../route/responseparams/list-preview.html | 175 +++++++ .../static/route/responseparams/list.html | 10 +- .../route/system/get-examine-result.html | 90 ++++ .../static/route/system/list-examine.html | 318 ++++++++++++ .../resources/static/route/system/list.html | 86 ++-- .../resources/static/route/system/save.html | 2 +- .../static/route/system/update-examine.html | 113 +++++ .../resources/static/route/system/update.html | 2 +- .../ink/wgink/wggatewaymanage/DataDemo.java | 32 ++ 60 files changed, 4143 insertions(+), 401 deletions(-) create mode 100644 src/main/java/ink/wgink/gatewaymanage/controller/api/api/permission/ApiPermissionController.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/controller/api/claim/permission/ClaimPermissionController.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/controller/api/system/permission/SystemPermissionController.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/enums/AuditStatusEnum.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/pojo/dtos/examine/ExamineDTO.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/pojo/vos/examine/ExamineVO.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/service/api/permission/IApiPermissionService.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/service/api/permission/impl/ApiPermissionServiceImpl.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/service/claim/permission/IClaimPermissionService.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/service/claim/permission/impl/ClaimPermissionServiceImpl.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/service/system/permission/ISystemPermissionService.java create mode 100644 src/main/java/ink/wgink/gatewaymanage/service/system/permission/impl/SystemPermissionServiceImpl.java create mode 100644 src/main/resources/application-prod.yml create mode 100644 src/main/resources/static/route/api/get-examine-result.html create mode 100644 src/main/resources/static/route/api/get-example.html create mode 100644 src/main/resources/static/route/api/list-claim.html create mode 100644 src/main/resources/static/route/api/list-examine.html rename src/main/resources/static/route/{claim/save.html => api/update-examine.html} (57%) create mode 100644 src/main/resources/static/route/claim/list-examine.html rename src/main/resources/static/route/claim/{update.html => update-examine.html} (53%) create mode 100644 src/main/resources/static/route/header/list-preview.html create mode 100644 src/main/resources/static/route/requestparams/list-preview.html create mode 100644 src/main/resources/static/route/responseparams/list-preview.html create mode 100644 src/main/resources/static/route/system/get-examine-result.html create mode 100644 src/main/resources/static/route/system/list-examine.html create mode 100644 src/main/resources/static/route/system/update-examine.html create mode 100644 src/test/java/ink/wgink/wggatewaymanage/DataDemo.java diff --git a/pom.xml b/pom.xml index 3210a90..f2ab4a0 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,10 @@ 1.18.16 provided + + org.springframework.kafka + spring-kafka + diff --git a/src/main/java/ink/wgink/gatewaymanage/controller/api/api/ApiController.java b/src/main/java/ink/wgink/gatewaymanage/controller/api/api/ApiController.java index 60e06f4..dc0e303 100644 --- a/src/main/java/ink/wgink/gatewaymanage/controller/api/api/ApiController.java +++ b/src/main/java/ink/wgink/gatewaymanage/controller/api/api/ApiController.java @@ -2,15 +2,17 @@ package ink.wgink.gatewaymanage.controller.api.api; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; +import ink.wgink.gatewaymanage.pojo.vos.api.ApiVO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; +import ink.wgink.gatewaymanage.service.api.IApiService; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.ErrorResult; import ink.wgink.pojo.result.SuccessResult; import ink.wgink.pojo.result.SuccessResultData; import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; -import ink.wgink.gatewaymanage.pojo.vos.api.ApiVO; -import ink.wgink.gatewaymanage.service.api.IApiService; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -45,7 +47,7 @@ public class ApiController extends DefaultBaseController { @ApiOperation(value = "删除接口", notes = "删除接口接口") @ApiImplicitParams({ - @ApiImplicitParam(name = "ids", value = "ID列表,用下划线分隔", paramType = "path", example = "1_2_3") + @ApiImplicitParam(name = "ids", value = "ID列表,用下划线分隔", paramType = "path", example = "1_2_3") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @DeleteMapping("remove/{ids}") @@ -56,7 +58,7 @@ public class ApiController extends DefaultBaseController { @ApiOperation(value = "修改接口", notes = "修改接口接口") @ApiImplicitParams({ - @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path") + @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PutMapping("update/{apiId}") @@ -66,13 +68,25 @@ public class ApiController extends DefaultBaseController { return new SuccessResult(); } + @ApiOperation(value = "审核接口", notes = "审核接口接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update-examine/{apiId}") + @CheckRequestBodyAnnotation + public SuccessResult updateExamine(@PathVariable("apiId") String apiId, @RequestBody ExamineVO examineVO) { + apiService.updateExamine(apiId, examineVO); + return new SuccessResult(); + } + @ApiOperation(value = "接口详情", notes = "接口详情接口") @ApiImplicitParams({ - @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path") + @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @GetMapping("get/{apiId}") - public ApiDTO get(@PathVariable("apiId") String apiId) { + public ApiDTO get(@PathVariable("apiId") String apiId) { return apiService.get(apiId); } @@ -86,11 +100,11 @@ public class ApiController extends DefaultBaseController { @ApiOperation(value = "接口分页列表", notes = "接口分页列表接口") @ApiImplicitParams({ - @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), - @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), - @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), - @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), - @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @GetMapping("listpage") @@ -108,4 +122,25 @@ public class ApiController extends DefaultBaseController { return new SuccessResultData<>(apiService.count(params)); } + @ApiOperation(value = "获取审核结果", notes = "获取审核结果接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "systemId", value = "系统ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("get-examine-result/{apiId}") + public ExamineDTO getExamineResult(@PathVariable("apiId") String apiId) { + return apiService.getExamineResult(apiId); + } + + @ApiOperation(value = "发布接口", notes = "发布接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("publish/{apiId}") + public SuccessResult publish(@PathVariable("apiId") String apiId) { + apiService.publish(apiId); + return new SuccessResult(); + } + } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/controller/api/api/permission/ApiPermissionController.java b/src/main/java/ink/wgink/gatewaymanage/controller/api/api/permission/ApiPermissionController.java new file mode 100644 index 0000000..28fbca2 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/controller/api/api/permission/ApiPermissionController.java @@ -0,0 +1,83 @@ +package ink.wgink.gatewaymanage.controller.api.api.permission; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.exceptions.ParamsException; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.service.api.permission.IApiPermissionService; +import ink.wgink.gatewaymanage.service.claim.IClaimService; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultList; +import io.swagger.annotations.*; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: ApiController + * @Description: api数据权限业务 + * @Author: CodeFactory + * @Date: 2021-08-16 14:50:40 + * @Version: 3.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "接口数据权限接口") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/api/permission") +public class ApiPermissionController extends DefaultBaseController { + + @Autowired + private IApiPermissionService apiPermissionService; + + @ApiOperation(value = "接口列表", notes = "接口列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list") + public List list() { + Map params = requestParams(); + return apiPermissionService.list(params); + } + + @ApiOperation(value = "接口分页列表", notes = "接口分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage") + public SuccessResultList> listPage(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return apiPermissionService.listPage(page); + } + + @ApiOperation(value = "接口认领分页列表", notes = "接口认领分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage-claim/{claimType}") + public SuccessResultList> listPageClaim(@PathVariable("claimType") String claimType, ListPage page) { + if (!StringUtils.equals(IClaimService.CLAIM_TYPE_ALL, claimType) && + !StringUtils.equals(IClaimService.CLAIM_TYPE_CLAIM, claimType) && + !StringUtils.equals(IClaimService.CLAIM_TYPE_UNCLAIMED, claimType)) { + throw new ParamsException("认领类型只能是,all、claim和unclaimed"); + } + Map params = requestParams(); + page.setParams(params); + return apiPermissionService.listPageClaim(claimType, page); + } + +} \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/ClaimController.java b/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/ClaimController.java index 688f829..3279b4d 100644 --- a/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/ClaimController.java +++ b/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/ClaimController.java @@ -2,15 +2,16 @@ package ink.wgink.gatewaymanage.controller.api.claim; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.vos.claim.ClaimVO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; +import ink.wgink.gatewaymanage.service.claim.IClaimService; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.ErrorResult; import ink.wgink.pojo.result.SuccessResult; import ink.wgink.pojo.result.SuccessResultData; import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; -import ink.wgink.gatewaymanage.pojo.vos.claim.ClaimVO; -import ink.wgink.gatewaymanage.service.claim.IClaimService; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -66,6 +67,18 @@ public class ClaimController extends DefaultBaseController { return new SuccessResult(); } + @ApiOperation(value = "审核接口认领", notes = "审核接口认领接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "apiId", value = "接口ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update-examine/{claimId}") + @CheckRequestBodyAnnotation + public SuccessResult updateExamine(@PathVariable("claimId") String claimId, @RequestBody ExamineVO examineVO) { + claimService.updateExamine(claimId, examineVO); + return new SuccessResult(); + } + @ApiOperation(value = "接口认领详情", notes = "接口认领详情接口") @ApiImplicitParams({ @ApiImplicitParam(name = "claimId", value = "接口认领ID", paramType = "path") diff --git a/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/permission/ClaimPermissionController.java b/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/permission/ClaimPermissionController.java new file mode 100644 index 0000000..eff0632 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/controller/api/claim/permission/ClaimPermissionController.java @@ -0,0 +1,74 @@ +package ink.wgink.gatewaymanage.controller.api.claim.permission; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.service.claim.permission.IClaimPermissionService; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultList; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: ClaimController + * @Description: 接口认领 + * @Author: CodeFactory + * @Date: 2021-08-16 14:58:13 + * @Version: 3.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "接口认领接口") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/claim/permission") +public class ClaimPermissionController extends DefaultBaseController { + + @Autowired + private IClaimPermissionService claimPermissionService; + + @ApiOperation(value = "接口认领列表", notes = "接口认领列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list") + public List list() { + Map params = requestParams(); + return claimPermissionService.list(params); + } + + @ApiOperation(value = "接口认领分页列表", notes = "接口认领分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage") + public SuccessResultList> listPage(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return claimPermissionService.listPage(page); + } + + @ApiOperation(value = "接口认领审核分页列表", notes = "接口认领审核分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage-examine") + public SuccessResultList> listPageExamine(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return claimPermissionService.listPageExamine(page); + } + +} \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/controller/api/system/SystemController.java b/src/main/java/ink/wgink/gatewaymanage/controller/api/system/SystemController.java index 52ff6e4..01aac05 100644 --- a/src/main/java/ink/wgink/gatewaymanage/controller/api/system/SystemController.java +++ b/src/main/java/ink/wgink/gatewaymanage/controller/api/system/SystemController.java @@ -2,6 +2,8 @@ package ink.wgink.gatewaymanage.controller.api.system; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.ErrorResult; @@ -66,6 +68,18 @@ public class SystemController extends DefaultBaseController { return new SuccessResult(); } + @ApiOperation(value = "审核接口系统", notes = "审核接口系统接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "systemId", value = "接口系统ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update-examine/{systemId}") + @CheckRequestBodyAnnotation + public SuccessResult updateExamine(@PathVariable("systemId") String systemId, @RequestBody ExamineVO examineVO) { + systemService.updateExamine(systemId, examineVO); + return new SuccessResult(); + } + @ApiOperation(value = "接口系统详情", notes = "接口系统详情接口") @ApiImplicitParams({ @ApiImplicitParam(name = "systemId", value = "接口系统ID", paramType = "path") @@ -108,4 +122,14 @@ public class SystemController extends DefaultBaseController { return new SuccessResultData<>(systemService.count(params)); } + @ApiOperation(value = "获取审核结果", notes = "获取审核结果接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "systemId", value = "系统ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("get-examine-result/{systemId}") + public ExamineDTO getExamineResult(@PathVariable("systemId") String systemId) { + return systemService.getExamineResult(systemId); + } + } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/controller/api/system/permission/SystemPermissionController.java b/src/main/java/ink/wgink/gatewaymanage/controller/api/system/permission/SystemPermissionController.java new file mode 100644 index 0000000..6ffaf3b --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/controller/api/system/permission/SystemPermissionController.java @@ -0,0 +1,58 @@ +package ink.wgink.gatewaymanage.controller.api.system.permission; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.service.system.permission.ISystemPermissionService; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultList; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: SystemController + * @Description: 接口系统数据权限 + * @Author: CodeFactory + * @Date: 2021-08-16 15:03:18 + * @Version: 3.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "接口系统数据权限接口") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/system/permission") +public class SystemPermissionController extends DefaultBaseController { + + @Autowired + private ISystemPermissionService systemPermissionService; + + @ApiOperation(value = "接口系统列表", notes = "接口系统列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list") + public List list() { + Map params = requestParams(); + return systemPermissionService.list(params); + } + + @ApiOperation(value = "接口系统分页列表", notes = "接口系统分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage") + public SuccessResultList> listPage(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return systemPermissionService.listPage(page); + } + +} \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/dao/api/IApiDao.java b/src/main/java/ink/wgink/gatewaymanage/dao/api/IApiDao.java index cee24c2..0cf2da1 100644 --- a/src/main/java/ink/wgink/gatewaymanage/dao/api/IApiDao.java +++ b/src/main/java/ink/wgink/gatewaymanage/dao/api/IApiDao.java @@ -5,8 +5,10 @@ import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.gatewaymanage.pojo.bos.api.ApiBO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; import ink.wgink.gatewaymanage.pojo.pos.api.ApiPO; import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.interfaces.init.IInitBaseTable; import org.springframework.stereotype.Repository; import java.util.List; @@ -20,7 +22,7 @@ import java.util.Map; * @Version: 3.0 **/ @Repository -public interface IApiDao { +public interface IApiDao extends IInitBaseTable { /** * 新增接口 @@ -54,6 +56,14 @@ public interface IApiDao { */ void update(Map params) throws UpdateException; + /** + * 修改审核接口 + * + * @param params + * @throws UpdateException + */ + void updateExamine(Map params) throws UpdateException; + /** * 接口详情 * @@ -117,4 +127,12 @@ public interface IApiDao { */ Integer count(Map params) throws SearchException; + /** + * 获取审核结果 + * + * @param params + * @return + * @throws SearchException + */ + ExamineDTO getExamineResult(Map params) throws SearchException; } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/dao/claim/IClaimDao.java b/src/main/java/ink/wgink/gatewaymanage/dao/claim/IClaimDao.java index 69e5e96..9ff0a50 100644 --- a/src/main/java/ink/wgink/gatewaymanage/dao/claim/IClaimDao.java +++ b/src/main/java/ink/wgink/gatewaymanage/dao/claim/IClaimDao.java @@ -5,8 +5,9 @@ import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.gatewaymanage.pojo.bos.claim.ClaimBO; -import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; +import ink.wgink.interfaces.init.IInitBaseTable; import org.springframework.stereotype.Repository; import java.util.List; @@ -20,7 +21,7 @@ import java.util.Map; * @Version: 3.0 **/ @Repository -public interface IClaimDao { +public interface IClaimDao extends IInitBaseTable { /** * 新增接口认领 @@ -54,6 +55,14 @@ public interface IClaimDao { */ void update(Map params) throws UpdateException; + /** + * 审核接口认领 + * + * @param params + * @throws UpdateException + */ + void updateExamine(Map params) throws UpdateException; + /** * 接口认领详情 * diff --git a/src/main/java/ink/wgink/gatewaymanage/dao/header/IHeaderDao.java b/src/main/java/ink/wgink/gatewaymanage/dao/header/IHeaderDao.java index 7a85144..acf97e4 100644 --- a/src/main/java/ink/wgink/gatewaymanage/dao/header/IHeaderDao.java +++ b/src/main/java/ink/wgink/gatewaymanage/dao/header/IHeaderDao.java @@ -5,8 +5,9 @@ import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.gatewaymanage.pojo.bos.header.HeaderBO; -import ink.wgink.gatewaymanage.pojo.pos.header.HeaderPO; import ink.wgink.gatewaymanage.pojo.dtos.header.HeaderDTO; +import ink.wgink.gatewaymanage.pojo.pos.header.HeaderPO; +import ink.wgink.interfaces.init.IInitBaseTable; import org.springframework.stereotype.Repository; import java.util.List; @@ -20,7 +21,7 @@ import java.util.Map; * @Version: 3.0 **/ @Repository -public interface IHeaderDao { +public interface IHeaderDao extends IInitBaseTable { /** * 新增请求头 diff --git a/src/main/java/ink/wgink/gatewaymanage/dao/requestparams/IRequestParamsDao.java b/src/main/java/ink/wgink/gatewaymanage/dao/requestparams/IRequestParamsDao.java index f60b97c..9c8d1a8 100644 --- a/src/main/java/ink/wgink/gatewaymanage/dao/requestparams/IRequestParamsDao.java +++ b/src/main/java/ink/wgink/gatewaymanage/dao/requestparams/IRequestParamsDao.java @@ -5,8 +5,9 @@ import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.gatewaymanage.pojo.bos.requestparams.RequestParamsBO; -import ink.wgink.gatewaymanage.pojo.pos.requestparams.RequestParamsPO; import ink.wgink.gatewaymanage.pojo.dtos.requestparams.RequestParamsDTO; +import ink.wgink.gatewaymanage.pojo.pos.requestparams.RequestParamsPO; +import ink.wgink.interfaces.init.IInitBaseTable; import org.springframework.stereotype.Repository; import java.util.List; @@ -20,7 +21,7 @@ import java.util.Map; * @Version: 3.0 **/ @Repository -public interface IRequestParamsDao { +public interface IRequestParamsDao extends IInitBaseTable { /** * 新增请求参数 diff --git a/src/main/java/ink/wgink/gatewaymanage/dao/responseparams/IResponseParamsDao.java b/src/main/java/ink/wgink/gatewaymanage/dao/responseparams/IResponseParamsDao.java index 508ca5b..aa178ec 100644 --- a/src/main/java/ink/wgink/gatewaymanage/dao/responseparams/IResponseParamsDao.java +++ b/src/main/java/ink/wgink/gatewaymanage/dao/responseparams/IResponseParamsDao.java @@ -5,8 +5,9 @@ import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.gatewaymanage.pojo.bos.responseparams.ResponseParamsBO; -import ink.wgink.gatewaymanage.pojo.pos.responseparams.ResponseParamsPO; import ink.wgink.gatewaymanage.pojo.dtos.responseparams.ResponseParamsDTO; +import ink.wgink.gatewaymanage.pojo.pos.responseparams.ResponseParamsPO; +import ink.wgink.interfaces.init.IInitBaseTable; import org.springframework.stereotype.Repository; import java.util.List; @@ -20,7 +21,7 @@ import java.util.Map; * @Version: 3.0 **/ @Repository -public interface IResponseParamsDao { +public interface IResponseParamsDao extends IInitBaseTable { /** * 新增响应参数 diff --git a/src/main/java/ink/wgink/gatewaymanage/dao/system/ISystemDao.java b/src/main/java/ink/wgink/gatewaymanage/dao/system/ISystemDao.java index 22bb799..a44ec8e 100644 --- a/src/main/java/ink/wgink/gatewaymanage/dao/system/ISystemDao.java +++ b/src/main/java/ink/wgink/gatewaymanage/dao/system/ISystemDao.java @@ -5,8 +5,10 @@ import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.gatewaymanage.pojo.bos.system.SystemBO; -import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; +import ink.wgink.interfaces.init.IInitBaseTable; import org.springframework.stereotype.Repository; import java.util.List; @@ -20,7 +22,7 @@ import java.util.Map; * @Version: 3.0 **/ @Repository -public interface ISystemDao { +public interface ISystemDao extends IInitBaseTable { /** * 新增接口系统 @@ -54,6 +56,14 @@ public interface ISystemDao { */ void update(Map params) throws UpdateException; + /** + * 修改接口系统审核状态 + * + * @param params + * @throws UpdateException + */ + void updateExamine(Map params) throws UpdateException; + /** * 接口系统详情 * @@ -117,4 +127,12 @@ public interface ISystemDao { */ Integer count(Map params) throws SearchException; + /** + * 获取审核结果 + * + * @param params + * @return + * @throws SearchException + */ + ExamineDTO getExamineResult(Map params) throws SearchException; } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/enums/AuditStatusEnum.java b/src/main/java/ink/wgink/gatewaymanage/enums/AuditStatusEnum.java new file mode 100644 index 0000000..2bdf190 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/enums/AuditStatusEnum.java @@ -0,0 +1,30 @@ +package ink.wgink.gatewaymanage.enums; + +/** + * @ClassName: AuditStatusEnum + * @Description: 审核状态 + * @Author: wanggeng + * @Date: 2021/8/21 11:58 上午 + * @Version: 1.0 + */ +public enum AuditStatusEnum { + NONE("none", "未审核"), + PASS("pass", "通过"), + UN_PASS("unPass", "不通过"); + + private String value; + private String summary; + + AuditStatusEnum(String value, String summary) { + this.value = value; + this.summary = summary; + } + + public String getValue() { + return value == null ? "" : value.trim(); + } + + public String getSummary() { + return summary == null ? "" : summary.trim(); + } +} diff --git a/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/api/ApiDTO.java b/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/api/ApiDTO.java index ee594dd..0f127d3 100644 --- a/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/api/ApiDTO.java +++ b/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/api/ApiDTO.java @@ -1,5 +1,6 @@ package ink.wgink.gatewaymanage.pojo.dtos.api; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -18,6 +19,8 @@ public class ApiDTO { private String apiId; @ApiModelProperty(name = "systemId", value = "系统ID") private String systemId; + @ApiModelProperty(name = "systemName", value = "系统名称") + private String systemName; @ApiModelProperty(name = "title", value = "标题") private String title; @ApiModelProperty(name = "summary", value = "说明") @@ -54,6 +57,8 @@ public class ApiDTO { private String gmtCreate; @ApiModelProperty(name = "gmtModified", value = "修改时间") private String gmtModified; + @ApiModelProperty(name = "claim", value = "认领情况") + private ClaimDTO claim; public String getApiId() { return apiId == null ? "" : apiId.trim(); @@ -71,6 +76,14 @@ public class ApiDTO { this.systemId = systemId; } + public String getSystemName() { + return systemName == null ? "" : systemName.trim(); + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + public String getTitle() { return title == null ? "" : title.trim(); } @@ -215,5 +228,11 @@ public class ApiDTO { this.gmtModified = gmtModified; } + public ClaimDTO getClaim() { + return claim == null ? new ClaimDTO() : claim; + } + public void setClaim(ClaimDTO claim) { + this.claim = claim; + } } diff --git a/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/claim/ClaimDTO.java b/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/claim/ClaimDTO.java index 5179ed1..c0623e1 100644 --- a/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/claim/ClaimDTO.java +++ b/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/claim/ClaimDTO.java @@ -1,7 +1,11 @@ package ink.wgink.gatewaymanage.pojo.dtos.claim; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; /** * @@ -11,6 +15,8 @@ import io.swagger.annotations.ApiModelProperty; * @Date: 2021-08-16 14:58:13 * @Version: 3.0 **/ +@Data +@ToString @ApiModel public class ClaimDTO { @@ -32,6 +38,10 @@ public class ClaimDTO { private String auditReason; @ApiModelProperty(name = "gmtCreate", value = "创建时间") private String gmtCreate; + @ApiModelProperty(name = "system", value = "api系统") + private SystemDTO system; + @ApiModelProperty(name = "api", value = "接口") + private ApiDTO api; public String getClaimId() { return claimId == null ? "" : claimId.trim(); @@ -105,5 +115,19 @@ public class ClaimDTO { this.gmtCreate = gmtCreate; } + public SystemDTO getSystem() { + return system; + } + public void setSystem(SystemDTO system) { + this.system = system; + } + + public ApiDTO getApi() { + return api; + } + + public void setApi(ApiDTO api) { + this.api = api; + } } diff --git a/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/examine/ExamineDTO.java b/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/examine/ExamineDTO.java new file mode 100644 index 0000000..9496400 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/pojo/dtos/examine/ExamineDTO.java @@ -0,0 +1,29 @@ +package ink.wgink.gatewaymanage.pojo.dtos.examine; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +/** + * @ClassName: ExamineDTO + * @Description: 审核 + * @Author: wanggeng + * @Date: 2021/8/21 9:06 下午 + * @Version: 1.0 + */ +@Data +@ToString +@ApiModel +public class ExamineDTO { + + @ApiModelProperty(name = "auditStatus", value = "审核状态") + private String auditStatus; + @ApiModelProperty(name = "auditTime", value = "审核时间") + private String auditTime; + @ApiModelProperty(name = "auditor", value = "审核人") + private String auditor; + @ApiModelProperty(name = "auditReason", value = "审核原因") + private String auditReason; + +} diff --git a/src/main/java/ink/wgink/gatewaymanage/pojo/vos/claim/ClaimVO.java b/src/main/java/ink/wgink/gatewaymanage/pojo/vos/claim/ClaimVO.java index e6d987d..1163792 100644 --- a/src/main/java/ink/wgink/gatewaymanage/pojo/vos/claim/ClaimVO.java +++ b/src/main/java/ink/wgink/gatewaymanage/pojo/vos/claim/ClaimVO.java @@ -1,12 +1,10 @@ package ink.wgink.gatewaymanage.pojo.vos.claim; import ink.wgink.annotation.CheckEmptyAnnotation; -import ink.wgink.annotation.CheckNumberAnnotation; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; /** - * * @ClassName: ClaimVO * @Description: 接口认领 * @Author: CodeFactory @@ -17,8 +15,10 @@ import io.swagger.annotations.ApiModelProperty; public class ClaimVO { @ApiModelProperty(name = "systemId", value = "系统ID") + @CheckEmptyAnnotation(name = "系统ID") private String systemId; @ApiModelProperty(name = "apiId", value = "APIID") + @CheckEmptyAnnotation(name = "APIID") private String apiId; public String getSystemId() { diff --git a/src/main/java/ink/wgink/gatewaymanage/pojo/vos/examine/ExamineVO.java b/src/main/java/ink/wgink/gatewaymanage/pojo/vos/examine/ExamineVO.java new file mode 100644 index 0000000..a8d3724 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/pojo/vos/examine/ExamineVO.java @@ -0,0 +1,29 @@ +package ink.wgink.gatewaymanage.pojo.vos.examine; + +import ink.wgink.annotation.CheckEmptyAnnotation; +import ink.wgink.annotation.CheckNumberAnnotation; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +/** + * @ClassName: ExamineVO + * @Description: 审核 + * @Author: wanggeng + * @Date: 2021/8/21 11:53 上午 + * @Version: 1.0 + */ +@Data +@ToString +@ApiModel +public class ExamineVO { + + @ApiModelProperty(name = "isPass", value = "是否通过") + @CheckNumberAnnotation(name = "是否通过", types = {"0", "1"}) + private Integer isPass; + @ApiModelProperty(name = "reason", value = "说明") + @CheckEmptyAnnotation(name = "说明") + private String reason; + +} diff --git a/src/main/java/ink/wgink/gatewaymanage/service/api/IApiService.java b/src/main/java/ink/wgink/gatewaymanage/service/api/IApiService.java index 8e31667..279fb56 100644 --- a/src/main/java/ink/wgink/gatewaymanage/service/api/IApiService.java +++ b/src/main/java/ink/wgink/gatewaymanage/service/api/IApiService.java @@ -1,11 +1,13 @@ package ink.wgink.gatewaymanage.service.api; +import ink.wgink.gatewaymanage.pojo.bos.api.ApiBO; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; +import ink.wgink.gatewaymanage.pojo.pos.api.ApiPO; +import ink.wgink.gatewaymanage.pojo.vos.api.ApiVO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; -import ink.wgink.gatewaymanage.pojo.vos.api.ApiVO; -import ink.wgink.gatewaymanage.pojo.bos.api.ApiBO; -import ink.wgink.gatewaymanage.pojo.pos.api.ApiPO; import java.util.List; import java.util.Map; @@ -66,11 +68,18 @@ public interface IApiService { * 删除接口 * * @param token - * @param ids id列表 + * @param ids id列表 * @return */ void remove(String token, List ids); + /** + * 删除接口 + * + * @param systemIds 系统ID列表 + */ + void removeBySystemIds(List systemIds); + /** * 删除接口(物理删除) * @@ -78,6 +87,13 @@ public interface IApiService { */ void delete(List ids); + /** + * 删除接口(物理删除) + * + * @param systemIds + */ + void deleteBySystemIds(List systemIds); + /** * 修改接口 * @@ -97,6 +113,14 @@ public interface IApiService { */ void update(String token, String apiId, ApiVO apiVO); + /** + * 审核接口 + * + * @param apiId + * @param examineVO + */ + void updateExamine(String apiId, ExamineVO examineVO); + /** * 接口详情 * @@ -145,6 +169,14 @@ public interface IApiService { */ ApiPO getPO(String apiId); + /** + * 接口列表 + * + * @param params + * @return + */ + List list(List apiIds); + /** * 接口列表 * @@ -161,6 +193,14 @@ public interface IApiService { */ List listBO(Map params); + /** + * 接口列表 + * + * @param apiIds + * @return + */ + List listPO(List apiIds); + /** * 接口列表 * @@ -185,4 +225,18 @@ public interface IApiService { */ Integer count(Map params); + /** + * 获取审核结果 + * + * @param apiId + * @return + */ + ExamineDTO getExamineResult(String apiId); + + /** + * 发布接口 + * + * @param apiId + */ + void publish(String apiId); } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/service/api/impl/ApiServiceImpl.java b/src/main/java/ink/wgink/gatewaymanage/service/api/impl/ApiServiceImpl.java index e45bdcd..f602152 100644 --- a/src/main/java/ink/wgink/gatewaymanage/service/api/impl/ApiServiceImpl.java +++ b/src/main/java/ink/wgink/gatewaymanage/service/api/impl/ApiServiceImpl.java @@ -1,21 +1,30 @@ package ink.wgink.gatewaymanage.service.api.impl; -import ink.wgink.common.base.DefaultBaseService; -import ink.wgink.pojo.ListPage; -import ink.wgink.pojo.result.SuccessResult; -import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.util.map.HashMapUtil; -import ink.wgink.util.UUIDUtil; -import ink.wgink.gatewaymanage.dao.api.IApiDao; -import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; -import ink.wgink.gatewaymanage.pojo.vos.api.ApiVO; -import ink.wgink.gatewaymanage.pojo.bos.api.ApiBO; -import ink.wgink.gatewaymanage.pojo.pos.api.ApiPO; -import ink.wgink.gatewaymanage.service.api.IApiService; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.exceptions.SearchException; +import ink.wgink.gatewaymanage.dao.api.IApiDao; +import ink.wgink.gatewaymanage.enums.AuditStatusEnum; +import ink.wgink.gatewaymanage.pojo.bos.api.ApiBO; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.pojo.pos.api.ApiPO; +import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; +import ink.wgink.gatewaymanage.pojo.vos.api.ApiVO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; +import ink.wgink.gatewaymanage.service.api.IApiService; +import ink.wgink.gatewaymanage.service.system.ISystemService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.util.UUIDUtil; +import ink.wgink.util.date.DateUtil; +import ink.wgink.util.map.HashMapUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.core.KafkaTemplate; import org.springframework.stereotype.Service; import java.util.*; @@ -32,6 +41,10 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { @Autowired private IApiDao apiDao; + @Autowired + private ISystemService systemService; + @Autowired + private KafkaTemplate kafkaTemplate; @Override public void save(ApiVO apiVO) { @@ -79,6 +92,14 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { apiDao.remove(params); } + @Override + public void removeBySystemIds(List systemIds) { + Map params = getHashMap(2); + params.put("systemIds", systemIds); + setUpdateInfo(params); + apiDao.remove(params); + } + @Override public void delete(List ids) { Map params = getHashMap(2); @@ -86,6 +107,13 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { apiDao.delete(params); } + @Override + public void deleteBySystemIds(List systemIds) { + Map params = getHashMap(2); + params.put("systemIds", systemIds); + apiDao.delete(params); + } + @Override public void update(String apiId, ApiVO apiVO) { update(null, apiId, apiVO); @@ -103,6 +131,17 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { apiDao.update(params); } + @Override + public void updateExamine(String apiId, ExamineVO examineVO) { + Map params = getHashMap(10); + params.put("apiId", apiId); + params.put("auditStatus", examineVO.getIsPass() == 1 ? AuditStatusEnum.PASS.getValue() : AuditStatusEnum.UN_PASS.getValue()); + params.put("auditTime", DateUtil.getTime()); + params.put("auditor", securityComponent.getCurrentUser().getUserId()); + params.put("auditReason", examineVO.getReason()); + apiDao.updateExamine(params); + } + @Override public ApiDTO get(Map params) { return apiDao.get(params); @@ -139,9 +178,19 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { return getPO(params); } + @Override + public List list(List apiIds) { + Map params = getHashMap(2); + params.put("apiIds", apiIds); + return list(params); + } + @Override public List list(Map params) { - return apiDao.list(params); + List apiDTOs = apiDao.list(params); + setSystemInfos(apiDTOs); + setAuditor(apiDTOs); + return apiDTOs; } @Override @@ -149,6 +198,13 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { return apiDao.listBO(params); } + @Override + public List listPO(List apiIds) { + Map params = getHashMap(2); + params.put("apiIds", apiIds); + return listPO(params); + } + @Override public List listPO(Map params) { return apiDao.listPO(params); @@ -168,4 +224,78 @@ public class ApiServiceImpl extends DefaultBaseService implements IApiService { return count == null ? 0 : count; } + @Override + public ExamineDTO getExamineResult(String apiId) { + Map params = getHashMap(2); + params.put("apiId", apiId); + return apiDao.getExamineResult(params); + } + + @Override + public void publish(String apiId) { + ApiPO apiPO = getPO(apiId); + if (!StringUtils.equals(apiPO.getAuditStatus(), AuditStatusEnum.PASS.getValue())) { + throw new SearchException("接口未审核通过"); + } + if (apiPO.getIsPublish() == 0) { + throw new SearchException("接口未发布"); + } + SystemPO systemPO = systemService.getPO(apiPO.getSystemId()); + if (!StringUtils.equals(systemPO.getAuditStatus(), AuditStatusEnum.PASS.getValue())) { + throw new SearchException("系统未审核通过"); + } + JSONObject apiObj = new JSONObject(); + apiObj.put("system", systemPO); + apiObj.put("api", apiPO); + kafkaTemplate.send("apiPublish", apiObj.toJSONString()).addCallback(success -> { + // 消息发送到的topic + String topic = success.getRecordMetadata().topic(); + // 消息发送到的分区 + int partition = success.getRecordMetadata().partition(); + // 消息在分区内的offset + long offset = success.getRecordMetadata().offset(); + System.out.println("发送消息成功:" + topic + "-" + partition + "-" + offset); + }, failure -> { + System.out.println("发送消息失败:" + failure.getMessage()); + }); + } + + private void setSystemInfos(List apiDTOs) { + if (apiDTOs.isEmpty()) { + return; + } + Set systemIds = new HashSet<>(); + for (ApiDTO apiDTO : apiDTOs) { + systemIds.add(apiDTO.getSystemId()); + } + List systemDTOs = systemService.list(new ArrayList<>(systemIds)); + for (ApiDTO apiDTO : apiDTOs) { + for (SystemDTO systemDTO : systemDTOs) { + if (StringUtils.equals(apiDTO.getSystemId(), systemDTO.getSystemId())) { + apiDTO.setSystemName(systemDTO.getName()); + break; + } + } + } + } + + /** + * 设置审核人 + * + * @param apiDTOs + */ + private void setAuditor(List apiDTOs) { + if (apiDTOs.isEmpty()) { + return; + } + for (ApiDTO apiDTO : apiDTOs) { + if (StringUtils.isBlank(apiDTO.getAuditor())) { + continue; + } + if (StringUtils.equals(apiDTO.getAuditor(), "1")) { + apiDTO.setAuditor("管理员"); + } + } + } + } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/service/api/permission/IApiPermissionService.java b/src/main/java/ink/wgink/gatewaymanage/service/api/permission/IApiPermissionService.java new file mode 100644 index 0000000..cb47164 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/service/api/permission/IApiPermissionService.java @@ -0,0 +1,43 @@ +package ink.wgink.gatewaymanage.service.api.permission; + +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: IApiPermissionService + * @Description: api数据权限业务 + * @Author: wanggeng + * @Date: 2021/8/21 10:14 下午 + * @Version: 1.0 + */ +public interface IApiPermissionService { + + /** + * 接口列表 + * + * @param params + * @return + */ + List list(Map params); + + /** + * 接口分页列表 + * + * @param page + * @return + */ + SuccessResultList> listPage(ListPage page); + + /** + * 接口认领情况列表 + * + * @param claimType + * @param page + * @return + */ + SuccessResultList> listPageClaim(String claimType, ListPage page); +} diff --git a/src/main/java/ink/wgink/gatewaymanage/service/api/permission/impl/ApiPermissionServiceImpl.java b/src/main/java/ink/wgink/gatewaymanage/service/api/permission/impl/ApiPermissionServiceImpl.java new file mode 100644 index 0000000..7ede77f --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/service/api/permission/impl/ApiPermissionServiceImpl.java @@ -0,0 +1,81 @@ +package ink.wgink.gatewaymanage.service.api.permission.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; +import ink.wgink.gatewaymanage.service.api.IApiService; +import ink.wgink.gatewaymanage.service.api.permission.IApiPermissionService; +import ink.wgink.gatewaymanage.service.claim.IClaimService; +import ink.wgink.gatewaymanage.service.claim.permission.IClaimPermissionService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * @ClassName: ApiPermissionServiceImpl + * @Description: api数据权限业务 + * @Author: wanggeng + * @Date: 2021/8/21 10:14 下午 + * @Version: 1.0 + */ +@Service +public class ApiPermissionServiceImpl extends DefaultBaseService implements IApiPermissionService { + + @Autowired + private IApiService apiService; + @Autowired + private IClaimService claimService; + @Autowired + private IClaimPermissionService claimPermissionService; + + @Override + public List list(Map params) { + params.put("creator", securityComponent.getCurrentUser().getUserId()); + return apiService.list(params); + } + + @Override + public SuccessResultList> listPage(ListPage page) { + page.getParams().put("creator", securityComponent.getCurrentUser().getUserId()); + return apiService.listPage(page); + } + + @Override + public SuccessResultList> listPageClaim(String claimType, ListPage page) { + // 我的认领列表 + List claimPOs = claimPermissionService.listPO(); + Set apiIds = new HashSet<>(); + for (ClaimPO claimPO : claimPOs) { + apiIds.add(claimPO.getApiId()); + } + if (StringUtils.equals(IClaimService.CLAIM_TYPE_CLAIM, claimType)) { + if (claimPOs.isEmpty()) { + return new SuccessResultList>(new ArrayList<>(), 1, 0L); + } + page.getParams().put("claimApiIds", new ArrayList<>(apiIds)); + } else if (StringUtils.equals(IClaimService.CLAIM_TYPE_UNCLAIMED, claimType)) { + page.getParams().put("unclaimedApiIds", new ArrayList<>(apiIds)); + } + page.getParams().put("auditStatus", "pass"); + SuccessResultList> listSuccessResultList = apiService.listPage(page); + List claimDTOs = new ArrayList<>(); + for (ApiDTO apiDTO : listSuccessResultList.getRows()) { + for (ClaimPO claimPO : claimPOs) { + if (StringUtils.equals(apiDTO.getApiId(), claimPO.getApiId())) { + ClaimDTO claimDTO = new ClaimDTO(); + BeanUtils.copyProperties(claimPO, claimDTO); + apiDTO.setClaim(claimDTO); + claimDTOs.add(claimDTO); + } + } + } + claimService.setAuditor(claimDTOs); + return listSuccessResultList; + } +} diff --git a/src/main/java/ink/wgink/gatewaymanage/service/claim/IClaimService.java b/src/main/java/ink/wgink/gatewaymanage/service/claim/IClaimService.java index cf399aa..e5322c2 100644 --- a/src/main/java/ink/wgink/gatewaymanage/service/claim/IClaimService.java +++ b/src/main/java/ink/wgink/gatewaymanage/service/claim/IClaimService.java @@ -1,11 +1,12 @@ package ink.wgink.gatewaymanage.service.claim; +import ink.wgink.gatewaymanage.pojo.bos.claim.ClaimBO; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; +import ink.wgink.gatewaymanage.pojo.vos.claim.ClaimVO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; -import ink.wgink.gatewaymanage.pojo.vos.claim.ClaimVO; -import ink.wgink.gatewaymanage.pojo.bos.claim.ClaimBO; -import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; import java.util.List; import java.util.Map; @@ -19,6 +20,19 @@ import java.util.Map; **/ public interface IClaimService { + /** + * 已认领 + */ + String CLAIM_TYPE_CLAIM = "claim"; + /** + * 未认领 + */ + String CLAIM_TYPE_UNCLAIMED = "unclaimed"; + /** + * 全部 + */ + String CLAIM_TYPE_ALL = "all"; + /** * 新增接口认领 * @@ -66,7 +80,7 @@ public interface IClaimService { * 删除接口认领 * * @param token - * @param ids id列表 + * @param ids id列表 * @return */ void remove(String token, List ids); @@ -97,6 +111,14 @@ public interface IClaimService { */ void update(String token, String claimId, ClaimVO claimVO); + /** + * 审核接口认领 + * + * @param claimId + * @param examineVO + */ + void updateExamine(String claimId, ExamineVO examineVO); + /** * 接口认领详情 * @@ -185,4 +207,10 @@ public interface IClaimService { */ Integer count(Map params); + /** + * 设置审核人 + * + * @param claimDTOs + */ + void setAuditor(List claimDTOs); } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/service/claim/impl/ClaimServiceImpl.java b/src/main/java/ink/wgink/gatewaymanage/service/claim/impl/ClaimServiceImpl.java index b97ddae..64b6ca2 100644 --- a/src/main/java/ink/wgink/gatewaymanage/service/claim/impl/ClaimServiceImpl.java +++ b/src/main/java/ink/wgink/gatewaymanage/service/claim/impl/ClaimServiceImpl.java @@ -1,20 +1,29 @@ package ink.wgink.gatewaymanage.service.claim.impl; -import ink.wgink.common.base.DefaultBaseService; -import ink.wgink.pojo.ListPage; -import ink.wgink.pojo.result.SuccessResult; -import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.util.map.HashMapUtil; -import ink.wgink.util.UUIDUtil; -import ink.wgink.gatewaymanage.dao.claim.IClaimDao; -import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; -import ink.wgink.gatewaymanage.pojo.vos.claim.ClaimVO; -import ink.wgink.gatewaymanage.pojo.bos.claim.ClaimBO; -import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; -import ink.wgink.gatewaymanage.service.claim.IClaimService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.gatewaymanage.dao.claim.IClaimDao; +import ink.wgink.gatewaymanage.enums.AuditStatusEnum; +import ink.wgink.gatewaymanage.pojo.bos.claim.ClaimBO; +import ink.wgink.gatewaymanage.pojo.dtos.api.ApiDTO; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.pojo.pos.api.ApiPO; +import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; +import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; +import ink.wgink.gatewaymanage.pojo.vos.claim.ClaimVO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; +import ink.wgink.gatewaymanage.service.api.IApiService; +import ink.wgink.gatewaymanage.service.claim.IClaimService; +import ink.wgink.gatewaymanage.service.system.ISystemService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.util.UUIDUtil; +import ink.wgink.util.date.DateUtil; +import ink.wgink.util.map.HashMapUtil; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,6 +41,10 @@ public class ClaimServiceImpl extends DefaultBaseService implements IClaimServic @Autowired private IClaimDao claimDao; + @Autowired + private ISystemService systemService; + @Autowired + private IApiService apiService; @Override public void save(ClaimVO claimVO) { @@ -53,11 +66,9 @@ public class ClaimServiceImpl extends DefaultBaseService implements IClaimServic String claimId = UUIDUtil.getUUID(); Map params = HashMapUtil.beanToMap(claimVO); params.put("claimId", claimId); - if (StringUtils.isBlank(token)) { - setSaveInfo(params); - } else { - setAppSaveInfo(token, params); - } + params.put("userId", securityComponent.getCurrentUser().getUserId()); + params.put("auditStatus", "none"); + params.put("gmtCreate", DateUtil.getTime()); claimDao.save(params); return claimId; } @@ -103,6 +114,17 @@ public class ClaimServiceImpl extends DefaultBaseService implements IClaimServic claimDao.update(params); } + @Override + public void updateExamine(String claimId, ExamineVO examineVO) { + Map params = getHashMap(10); + params.put("claimId", claimId); + params.put("auditStatus", examineVO.getIsPass() == 1 ? AuditStatusEnum.PASS.getValue() : AuditStatusEnum.UN_PASS.getValue()); + params.put("auditTime", DateUtil.getTime()); + params.put("auditor", securityComponent.getCurrentUser().getUserId()); + params.put("auditReason", examineVO.getReason()); + claimDao.updateExamine(params); + } + @Override public ClaimDTO get(Map params) { return claimDao.get(params); @@ -141,7 +163,10 @@ public class ClaimServiceImpl extends DefaultBaseService implements IClaimServic @Override public List list(Map params) { - return claimDao.list(params); + List claimDTOs = claimDao.list(params); + setSystemApiInfo(claimDTOs); + setAuditor(claimDTOs); + return claimDTOs; } @Override @@ -168,4 +193,58 @@ public class ClaimServiceImpl extends DefaultBaseService implements IClaimServic return count == null ? 0 : count; } + @Override + public void setAuditor(List claimDTOs) { + if (claimDTOs.isEmpty()) { + return; + } + for (ClaimDTO claimDTO : claimDTOs) { + if (StringUtils.isBlank(claimDTO.getAuditor())) { + continue; + } + if (StringUtils.equals(claimDTO.getAuditor(), "1")) { + claimDTO.setAuditor("管理员"); + } + } + } + + /** + * 设置系统和API + * + * @param claimDTOs + */ + private void setSystemApiInfo(List claimDTOs) { + if (claimDTOs.isEmpty()) { + return; + } + Set systemIdSet = new HashSet<>(); + Set apiSet = new HashSet<>(); + for (ClaimDTO claimDTO : claimDTOs) { + systemIdSet.add(claimDTO.getSystemId()); + systemIdSet.add(claimDTO.getApiId()); + } + + List systemPOs = systemService.listPO(new ArrayList<>(systemIdSet)); + List apiPOs = apiService.listPO(new ArrayList<>(apiSet)); + + for (ClaimDTO claimDTO : claimDTOs) { + for (SystemPO systemPO : systemPOs) { + if (StringUtils.equals(claimDTO.getSystemId(), systemPO.getSystemId())) { + SystemDTO systemDTO = new SystemDTO(); + BeanUtils.copyProperties(systemPO, systemDTO); + claimDTO.setSystem(systemDTO); + break; + } + } + for (ApiPO apiPO : apiPOs) { + if (StringUtils.equals(claimDTO.getApiId(), apiPO.getApiId())) { + ApiDTO apiDTO = new ApiDTO(); + BeanUtils.copyProperties(apiPO, apiDTO); + claimDTO.setApi(apiDTO); + break; + } + } + } + } + } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/service/claim/permission/IClaimPermissionService.java b/src/main/java/ink/wgink/gatewaymanage/service/claim/permission/IClaimPermissionService.java new file mode 100644 index 0000000..3650bdc --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/service/claim/permission/IClaimPermissionService.java @@ -0,0 +1,65 @@ +package ink.wgink.gatewaymanage.service.claim.permission; + +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: IClaimPermissionService + * @Description: 接口认领数据权限业务 + * @Author: wanggeng + * @Date: 2021/8/21 11:36 下午 + * @Version: 1.0 + */ +public interface IClaimPermissionService { + + /** + * 接口认领列表 + * + * @return + */ + List list(); + + /** + * 接口认领列表 + * + * @param params + * @return + */ + List list(Map params); + + /** + * 接口认领列表 + * + * @return + */ + List listPO(); + + /** + * 接口认领列表 + * + * @param params + * @return + */ + List listPO(Map params); + + /** + * 接口认领分页列表 + * + * @param page + * @return + */ + SuccessResultList> listPage(ListPage page); + + /** + * 接口认领审核分页列表 + * + * @param page + * @return + */ + SuccessResultList> listPageExamine(ListPage page); +} diff --git a/src/main/java/ink/wgink/gatewaymanage/service/claim/permission/impl/ClaimPermissionServiceImpl.java b/src/main/java/ink/wgink/gatewaymanage/service/claim/permission/impl/ClaimPermissionServiceImpl.java new file mode 100644 index 0000000..14689b6 --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/service/claim/permission/impl/ClaimPermissionServiceImpl.java @@ -0,0 +1,62 @@ +package ink.wgink.gatewaymanage.service.claim.permission.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.gatewaymanage.pojo.dtos.claim.ClaimDTO; +import ink.wgink.gatewaymanage.pojo.pos.claim.ClaimPO; +import ink.wgink.gatewaymanage.service.claim.IClaimService; +import ink.wgink.gatewaymanage.service.claim.permission.IClaimPermissionService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: ClaimPermissionServiceImpl + * @Description: 接口认领数据权限服务 + * @Author: wanggeng + * @Date: 2021/8/21 11:36 下午 + * @Version: 1.0 + */ +@Service +public class ClaimPermissionServiceImpl extends DefaultBaseService implements IClaimPermissionService { + + @Autowired + private IClaimService claimService; + + + @Override + public List list() { + return list(getHashMap(2)); + } + + @Override + public List list(Map params) { + params.put("userId", securityComponent.getCurrentUser().getUserId()); + return claimService.list(params); + } + + @Override + public List listPO() { + return listPO(getHashMap(2)); + } + + @Override + public List listPO(Map params) { + params.put("userId", securityComponent.getCurrentUser().getUserId()); + return claimService.listPO(params); + } + + @Override + public SuccessResultList> listPage(ListPage page) { + page.getParams().put("userId", securityComponent.getCurrentUser().getUserId()); + return claimService.listPage(page); + } + + @Override + public SuccessResultList> listPageExamine(ListPage page) { + return claimService.listPage(page); + } +} diff --git a/src/main/java/ink/wgink/gatewaymanage/service/system/ISystemService.java b/src/main/java/ink/wgink/gatewaymanage/service/system/ISystemService.java index 5dc8f81..42696fe 100644 --- a/src/main/java/ink/wgink/gatewaymanage/service/system/ISystemService.java +++ b/src/main/java/ink/wgink/gatewaymanage/service/system/ISystemService.java @@ -1,11 +1,13 @@ package ink.wgink.gatewaymanage.service.system; +import ink.wgink.gatewaymanage.pojo.bos.system.SystemBO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; +import ink.wgink.gatewaymanage.pojo.vos.system.SystemVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; -import ink.wgink.gatewaymanage.pojo.vos.system.SystemVO; -import ink.wgink.gatewaymanage.pojo.bos.system.SystemBO; -import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; import java.util.List; import java.util.Map; @@ -66,7 +68,7 @@ public interface ISystemService { * 删除接口系统 * * @param token - * @param ids id列表 + * @param ids id列表 * @return */ void remove(String token, List ids); @@ -97,6 +99,13 @@ public interface ISystemService { */ void update(String token, String systemId, SystemVO systemVO); + /** + * 审核接口系统 + * @param systemId + * @param examineVO + */ + void updateExamine(String systemId, ExamineVO examineVO); + /** * 接口系统详情 * @@ -153,6 +162,14 @@ public interface ISystemService { */ List list(Map params); + /** + * 接口系统列表 + * + * @param systemIds 系统ID列表 + * @return + */ + List list(List systemIds); + /** * 接口系统列表 * @@ -161,6 +178,14 @@ public interface ISystemService { */ List listBO(Map params); + /** + * 接口系统列表 + * + * @param systemIds + * @return + */ + List listPO(List systemIds); + /** * 接口系统列表 * @@ -185,4 +210,11 @@ public interface ISystemService { */ Integer count(Map params); + /** + * 获取审核结果 + * + * @param systemId + * @return + */ + ExamineDTO getExamineResult(String systemId); } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/service/system/impl/SystemServiceImpl.java b/src/main/java/ink/wgink/gatewaymanage/service/system/impl/SystemServiceImpl.java index 63aa3ea..0ab2506 100644 --- a/src/main/java/ink/wgink/gatewaymanage/service/system/impl/SystemServiceImpl.java +++ b/src/main/java/ink/wgink/gatewaymanage/service/system/impl/SystemServiceImpl.java @@ -1,24 +1,29 @@ package ink.wgink.gatewaymanage.service.system.impl; -import ink.wgink.common.base.DefaultBaseService; -import ink.wgink.pojo.ListPage; -import ink.wgink.pojo.result.SuccessResult; -import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.util.map.HashMapUtil; -import ink.wgink.util.UUIDUtil; -import ink.wgink.gatewaymanage.dao.system.ISystemDao; -import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; -import ink.wgink.gatewaymanage.pojo.vos.system.SystemVO; -import ink.wgink.gatewaymanage.pojo.bos.system.SystemBO; -import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; -import ink.wgink.gatewaymanage.service.system.ISystemService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.gatewaymanage.dao.system.ISystemDao; +import ink.wgink.gatewaymanage.enums.AuditStatusEnum; +import ink.wgink.gatewaymanage.pojo.bos.system.SystemBO; +import ink.wgink.gatewaymanage.pojo.dtos.examine.ExamineDTO; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.pojo.pos.system.SystemPO; +import ink.wgink.gatewaymanage.pojo.vos.examine.ExamineVO; +import ink.wgink.gatewaymanage.pojo.vos.system.SystemVO; +import ink.wgink.gatewaymanage.service.api.IApiService; +import ink.wgink.gatewaymanage.service.system.ISystemService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.util.UUIDUtil; +import ink.wgink.util.date.DateUtil; +import ink.wgink.util.map.HashMapUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.List; +import java.util.Map; /** * @ClassName: SystemServiceImpl @@ -32,6 +37,8 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ @Autowired private ISystemDao systemDao; + @Autowired + private IApiService apiService; @Override public void save(SystemVO systemVO) { @@ -77,6 +84,7 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ setAppUpdateInfo(token, params); } systemDao.remove(params); + removeDependency(ids); } @Override @@ -84,6 +92,7 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ Map params = getHashMap(2); params.put("systemIds", ids); systemDao.delete(params); + deleteDependency(ids); } @Override @@ -103,6 +112,17 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ systemDao.update(params); } + @Override + public void updateExamine(String systemId, ExamineVO examineVO) { + Map params = getHashMap(10); + params.put("systemId", systemId); + params.put("auditStatus", examineVO.getIsPass() == 1 ? AuditStatusEnum.PASS.getValue() : AuditStatusEnum.UN_PASS.getValue()); + params.put("auditTime", DateUtil.getTime()); + params.put("auditor", securityComponent.getCurrentUser().getUserId()); + params.put("auditReason", examineVO.getReason()); + systemDao.updateExamine(params); + } + @Override public SystemDTO get(Map params) { return systemDao.get(params); @@ -141,7 +161,16 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ @Override public List list(Map params) { - return systemDao.list(params); + List systemDTOs = systemDao.list(params); + setAuditor(systemDTOs); + return systemDTOs; + } + + @Override + public List list(List systemIds) { + Map params = getHashMap(2); + params.put("systemIds", systemIds); + return list(params); } @Override @@ -149,6 +178,13 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ return systemDao.listBO(params); } + @Override + public List listPO(List systemIds) { + Map params = getHashMap(2); + params.put("systemIds", systemIds); + return listPO(params); + } + @Override public List listPO(Map params) { return systemDao.listPO(params); @@ -168,4 +204,54 @@ public class SystemServiceImpl extends DefaultBaseService implements ISystemServ return count == null ? 0 : count; } + @Override + public ExamineDTO getExamineResult(String systemId) { + Map params = getHashMap(2); + params.put("systemId", systemId); + return systemDao.getExamineResult(params); + } + + /** + * 删除依赖 + * + * @param systemIds + */ + private void removeDependency(List systemIds) { + if (systemIds.isEmpty()) { + return; + } + apiService.removeBySystemIds(systemIds); + } + + /** + * 删除依赖 + * + * @param systemIds + */ + private void deleteDependency(List systemIds) { + if (systemIds.isEmpty()) { + return; + } + apiService.deleteBySystemIds(systemIds); + } + + /** + * 设置审核人 + * + * @param systemDTOs + */ + private void setAuditor(List systemDTOs) { + if (systemDTOs.isEmpty()) { + return; + } + for (SystemDTO systemDTO : systemDTOs) { + if (StringUtils.isBlank(systemDTO.getAuditor())) { + continue; + } + if (StringUtils.equals(systemDTO.getAuditor(), "1")) { + systemDTO.setAuditor("管理员"); + } + } + } + } \ No newline at end of file diff --git a/src/main/java/ink/wgink/gatewaymanage/service/system/permission/ISystemPermissionService.java b/src/main/java/ink/wgink/gatewaymanage/service/system/permission/ISystemPermissionService.java new file mode 100644 index 0000000..d372c2d --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/service/system/permission/ISystemPermissionService.java @@ -0,0 +1,34 @@ +package ink.wgink.gatewaymanage.service.system.permission; + +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: ISystemPermissionService + * @Description: api系统数据权限业务 + * @Author: wanggeng + * @Date: 2021/8/21 10:17 下午 + * @Version: 1.0 + */ +public interface ISystemPermissionService { + + /** + * 接口系统列表 + * + * @param params + * @return + */ + List list(Map params); + + /** + * 接口系统分页列表 + * + * @param page + * @return + */ + SuccessResultList> listPage(ListPage page); +} diff --git a/src/main/java/ink/wgink/gatewaymanage/service/system/permission/impl/SystemPermissionServiceImpl.java b/src/main/java/ink/wgink/gatewaymanage/service/system/permission/impl/SystemPermissionServiceImpl.java new file mode 100644 index 0000000..72fc89b --- /dev/null +++ b/src/main/java/ink/wgink/gatewaymanage/service/system/permission/impl/SystemPermissionServiceImpl.java @@ -0,0 +1,39 @@ +package ink.wgink.gatewaymanage.service.system.permission.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.gatewaymanage.pojo.dtos.system.SystemDTO; +import ink.wgink.gatewaymanage.service.system.ISystemService; +import ink.wgink.gatewaymanage.service.system.permission.ISystemPermissionService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: SystemPermissionServiceImpl + * @Description: api系统数据权限业务 + * @Author: wanggeng + * @Date: 2021/8/21 10:18 下午 + * @Version: 1.0 + */ +@Service +public class SystemPermissionServiceImpl extends DefaultBaseService implements ISystemPermissionService { + + @Autowired + private ISystemService systemService; + + @Override + public List list(Map params) { + params.put("creator", securityComponent.getCurrentUser().getUserId()); + return systemService.list(params); + } + + @Override + public SuccessResultList> listPage(ListPage page) { + page.getParams().put("creator", securityComponent.getCurrentUser().getUserId()); + return systemService.listPage(page); + } +} diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..f74d3f2 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,128 @@ +server: + port: 7009 + url: http://172.74.3.59:7009/gateway-manage + system-title: 网关管理系统 + system-sub-title: 网关管理系统 +# default-index-page: +# default-home-page: route/system/default + servlet: + context-path: /gateway-manage + +spring: + login-url: /oauth/login + login-failure: /oauth/login?error + login-process: /userlogin + assets-matchers: /assets/** + thymeleaf: + prefix: classpath:/templates/ + suffix: .html + mode: HTML5 + encoding: UTF-8 + cache: false + main: + allow-bean-definition-overriding: true + servlet: + multipart: + max-file-size: 1GB + max-request-size: 1GB + datasource: + druid: + url: jdbc:mysql://172.74.3.62:3306/db_gateway_manage?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=UTC + db-type: mysql + driver-class-name: com.mysql.cj.jdbc.Driver + username: yjhlq + password: cmxx0471 + initial-size: 2 + min-idle: 2 + max-active: 5 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + validation-query: SELECT 1 FROM DUAL + test-while-idle: true + test-on-borrow: false + test-on-return: false + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 10 + filter: + commons-log: + connection-logger-name: stat,wall,log4j + stat: + log-slow-sql: true + slow-sql-millis: 2000 + connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + use-global-data-source-stat: true + kafka: + bootstrap-servers: localhost:9092 + producer: + # 写入失败时,重试次数。当leader节点失效,一个repli节点会替代成为leader节点,此时可能出现写入失败, + # 当retris为0时,produce不会重复。retirs重发,此时repli节点完全成为leader节点,不会产生消息丢失。 + retries: 0 + #procedure要求leader在考虑完成请求之前收到的确认数,用于控制发送记录在服务端的持久化,其值可以为如下: + #acks = 0 如果设置为零,则生产者将不会等待来自服务器的任何确认,该记录将立即添加到套接字缓冲区并视为已发送。在这种情况下,无法保证服务器已收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何故障),为每条记录返回的偏移量始终设置为-1。 + #acks = 1 这意味着leader会将记录写入其本地日志,但无需等待所有副本服务器的完全确认即可做出回应,在这种情况下,如果leader在确认记录后立即失败,但在将数据复制到所有的副本服务器之前,则记录将会丢失。 + #acks = all 这意味着leader将等待完整的同步副本集以确认记录,这保证了只要至少一个同步副本服务器仍然存活,记录就不会丢失,这是最强有力的保证,这相当于acks = -1的设置。 + #可以设置的值为:all, -1, 0, 1 + acks: 1 + consumer: + group-id: WgGateway + # smallest和largest才有效,如果smallest重新0开始读取,如果是largest从logfile的offset读取。一般情况下我们都是设置smallest + auto-offset-reset: earliest + # 设置自动提交offset + enable-auto-commit: true + # 如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000。 + auto-commit-interval: 100 + max-poll-records: 5 + + +# 数据库 +mybatis: + config-location: classpath:mybatis/mybatis-config.xml + mapper-locations: classpath*:mybatis/mapper/**/*.xml + +# 文档 +swagger: + base-package-list: ink.wgink + +# 访问控制 +access-control: + role-permission: false + +# 文件 +file: + # 文件的保存路径 + upload-path: E:\project\uploadFiles/ + # 图片类型 + image-types: png,jpg,jpeg,gif,blob + # 视频类型 + video-types: mp4,rmvb + # 音频类型 + audio-types: mp3,wmv,amr + # 文件类型 + file-types: doc,docx,xls,xlsx,ppt,pptx,txt,zip,rar,apk,pdf + # 同时上传最大支持数 + max-file-count: 6 + # 图片输出压缩质量,大于0,默认0.4 + image-output-quality: 0.4 + # 媒体最大时长(单位:秒) + media-max-duration: + # 后台 + backend: + video: 0 + audio: 0 + # 微信 + wechat: + video: 0 + audio: 0 + # app + app: + video: 0 + audio: 0 + +# 日志 +logging: + file: + name: E:\project\gateway\gateway-manage-logs.log + level: + org.springframework: debug + ink.wgink: debug diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index ccbcf0d..23505d7 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -52,6 +52,28 @@ spring: slow-sql-millis: 2000 connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 use-global-data-source-stat: true + kafka: + bootstrap-servers: localhost:9092 + producer: + # 写入失败时,重试次数。当leader节点失效,一个repli节点会替代成为leader节点,此时可能出现写入失败, + # 当retris为0时,produce不会重复。retirs重发,此时repli节点完全成为leader节点,不会产生消息丢失。 + retries: 0 + #procedure要求leader在考虑完成请求之前收到的确认数,用于控制发送记录在服务端的持久化,其值可以为如下: + #acks = 0 如果设置为零,则生产者将不会等待来自服务器的任何确认,该记录将立即添加到套接字缓冲区并视为已发送。在这种情况下,无法保证服务器已收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何故障),为每条记录返回的偏移量始终设置为-1。 + #acks = 1 这意味着leader会将记录写入其本地日志,但无需等待所有副本服务器的完全确认即可做出回应,在这种情况下,如果leader在确认记录后立即失败,但在将数据复制到所有的副本服务器之前,则记录将会丢失。 + #acks = all 这意味着leader将等待完整的同步副本集以确认记录,这保证了只要至少一个同步副本服务器仍然存活,记录就不会丢失,这是最强有力的保证,这相当于acks = -1的设置。 + #可以设置的值为:all, -1, 0, 1 + acks: 1 + consumer: + group-id: WgGateway + # smallest和largest才有效,如果smallest重新0开始读取,如果是largest从logfile的offset读取。一般情况下我们都是设置smallest + auto-offset-reset: earliest + # 设置自动提交offset + enable-auto-commit: true + # 如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000。 + auto-commit-interval: 100 + max-poll-records: 5 + # 数据库 mybatis: @@ -102,7 +124,5 @@ logging: file: name: /projects/logs/study/gateway-manage-logs.log level: - root: error - org.springframework.boot.autoconfigure.security.servlet: debug + org.springframework: debug ink.wgink: debug - com.cm: debug \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/api/api-mapper.xml b/src/main/resources/mybatis/mapper/api/api-mapper.xml index 4d14fff..c195b83 100644 --- a/src/main/resources/mybatis/mapper/api/api-mapper.xml +++ b/src/main/resources/mybatis/mapper/api/api-mapper.xml @@ -77,6 +77,45 @@ + + + + + + + + + CREATE TABLE IF NOT EXISTS `api_api` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `api_id` char(36) NOT NULL COMMENT '主键', + `system_id` char(36) NOT NULL COMMENT '系统ID', + `title` varchar(255) NOT NULL COMMENT '标题', + `summary` varchar(500) DEFAULT NULL COMMENT '说明', + `url` varchar(1000) NOT NULL COMMENT '请求地址', + `method` varchar(255) NOT NULL COMMENT '方法', + `request_example_url` text COMMENT '请求示例', + `request_example_body` longtext COMMENT '请求正文', + `response_success_example` longtext COMMENT '响应成功示例', + `response_fail_example` longtext COMMENT '响应失败示例', + `audit_status` varchar(100) DEFAULT 'none' COMMENT '审核状态', + `audit_time` varchar(20) DEFAULT NULL COMMENT '审核时间', + `auditor` char(36) DEFAULT NULL COMMENT '审核人', + `audit_reason` text COMMENT '审核原因', + `is_publish` int(11) NOT NULL DEFAULT '0' COMMENT '是否发布', + `publish_time` varchar(255) DEFAULT NULL COMMENT '发布时间', + `is_can_claim` int(1) NOT NULL DEFAULT '1' COMMENT '是否可认领', + `is_usable` int(1) NOT NULL DEFAULT '0' COMMENT '是否可用', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `creator` char(36) NOT NULL COMMENT '创建人', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `modifier` char(36) NOT NULL COMMENT '修改人', + `is_delete` int(1) NOT NULL DEFAULT '0' COMMENT '是否删除', + PRIMARY KEY (`id`), + UNIQUE KEY `api_id` (`api_id`) USING BTREE, + KEY `system_id` (`system_id`) USING BTREE + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='接口'; + + INSERT INTO api_api( @@ -139,10 +178,18 @@ modifier = #{modifier}, is_delete = 1 WHERE + api_id IN - - #{apiIds[${index}]} - + + #{apiIds[${index}]} + + + + system_id IN + + #{systemIds[${index}]} + + @@ -150,10 +197,18 @@ DELETE FROM api_api WHERE + api_id IN - - #{apiIds[${index}]} - + + #{apiIds[${index}]} + + + + system_id IN + + #{systemIds[${index}]} + + @@ -204,6 +259,19 @@ api_id = #{apiId} + + + UPDATE + api_api + SET + audit_status = #{auditStatus}, + audit_time = #{auditTime}, + auditor = #{auditor}, + audit_reason = #{auditReason} + WHERE + api_id = #{apiId} + + SELECT @@ -324,16 +392,14 @@ t1.is_can_claim, t1.is_usable, t1.gmt_create, - t1.gmt_modified, - 1 + t1.gmt_modified FROM api_api t1 WHERE t1.is_delete = 0 AND ( - - t1.id LIKE CONCAT('%', #{keywords}, '%') + t1.title LIKE CONCAT('%', #{keywords}, '%') ) @@ -344,6 +410,18 @@ AND LEFT(t1.gmt_create, 10) #{endTime} + + AND + LEFT(t1.audit_time, 10) = ]]> #{auditStartTime} + + + AND + LEFT(t1.audit_time, 10) #{auditEndTime} + + + AND + t1.audit_status = #{auditStatus} + AND t1.api_id IN @@ -351,6 +429,24 @@ #{apiIds[${index}]} + + AND + t1.creator = #{creator} + + + AND + t1.api_id IN + + #{claimApiIds[${index}]} + + + + AND + t1.api_id NOT IN + + #{unclaimedApiIds[${index}]} + + @@ -469,4 +565,17 @@ t1.is_delete = 0 + + + SELECT + t1.audit_status, + t1.audit_time, + t1.auditor, + t1.audit_reason + FROM + api_api t1 + WHERE + t1.api_id = #{apiId} + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/claim/claim-mapper.xml b/src/main/resources/mybatis/mapper/claim/claim-mapper.xml index 744f9e1..4df4586 100644 --- a/src/main/resources/mybatis/mapper/claim/claim-mapper.xml +++ b/src/main/resources/mybatis/mapper/claim/claim-mapper.xml @@ -38,6 +38,26 @@ + + CREATE TABLE IF NOT EXISTS `api_claim` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `claim_id` char(36) NOT NULL COMMENT '主键', + `system_id` char(36) NOT NULL COMMENT '系统ID', + `api_id` char(36) NOT NULL COMMENT 'APIID', + `user_id` char(36) NOT NULL COMMENT '申请人ID', + `audit_status` varchar(100) DEFAULT 'none' COMMENT '审核状态', + `audit_time` varchar(20) DEFAULT NULL COMMENT '审核时间', + `auditor` char(36) DEFAULT NULL COMMENT '审核人', + `audit_reason` text COMMENT '审核原因', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `claim_id` (`claim_id`), + KEY `system_id` (`system_id`), + KEY `api_id` (`api_id`), + KEY `user_id` (`user_id`) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='接口认领'; + + INSERT INTO api_claim( @@ -91,6 +111,19 @@ claim_id = #{claimId} + + + UPDATE + api_claim + SET + audit_status = #{auditStatus}, + audit_time = #{auditTime}, + auditor = #{auditor}, + audit_reason = #{auditReason} + WHERE + claim_id = #{claimId} + + SELECT @@ -162,24 +195,16 @@ t1.audit_time, t1.auditor, t1.audit_reason, - t1.gmt_create, - 1 + t1.gmt_create FROM api_claim t1 - WHERE - 1 = 1 - - AND ( - - t1.id LIKE CONCAT('%', #{keywords}, '%') - ) - + AND LEFT(t1.gmt_create, 10) = ]]> #{startTime} - AND + AND LEFT(t1.gmt_create, 10) #{endTime} @@ -189,6 +214,15 @@ #{claimIds[${index}]} + + AND + t1.user_id = #{userId} + + + AND + t1.audit_status = #{auditStatus} + + @@ -267,6 +301,10 @@ #{claimIds[${index}]} + + AND + t1.user_id = #{userId} + diff --git a/src/main/resources/mybatis/mapper/header/header-mapper.xml b/src/main/resources/mybatis/mapper/header/header-mapper.xml index b894f4b..4d4c3a3 100644 --- a/src/main/resources/mybatis/mapper/header/header-mapper.xml +++ b/src/main/resources/mybatis/mapper/header/header-mapper.xml @@ -29,6 +29,22 @@ + + CREATE TABLE IF NOT EXISTS `api_header` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `header_id` char(36) NOT NULL COMMENT '主键', + `system_id` char(36) NOT NULL COMMENT '系统ID', + `api_id` char(36) NOT NULL COMMENT '接口ID', + `header_name` varchar(255) NOT NULL COMMENT '键名', + `header_value` varchar(500) NOT NULL COMMENT '键值', + `summary` varchar(500) DEFAULT NULL COMMENT '说明', + PRIMARY KEY (`id`), + UNIQUE KEY `header_id` (`header_id`) USING BTREE, + KEY `system_id` (`system_id`), + KEY `api_id` (`api_id`) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='请求头'; + + INSERT INTO api_header( diff --git a/src/main/resources/mybatis/mapper/requestparams/request-params-mapper.xml b/src/main/resources/mybatis/mapper/requestparams/request-params-mapper.xml index a67a0bd..b3e024a 100644 --- a/src/main/resources/mybatis/mapper/requestparams/request-params-mapper.xml +++ b/src/main/resources/mybatis/mapper/requestparams/request-params-mapper.xml @@ -38,6 +38,25 @@ + + CREATE TABLE IF NOT EXISTS `api_request_params` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `request_params_id` char(36) NOT NULL COMMENT '主键', + `system_id` char(36) NOT NULL COMMENT '系统ID', + `api_id` char(36) NOT NULL COMMENT '接口ID', + `params_name` varchar(255) NOT NULL COMMENT '参数名', + `params_summary` varchar(255) DEFAULT NULL COMMENT '参数说明', + `params_type` varchar(255) NOT NULL DEFAULT 'query' COMMENT '参数类型', + `params_data_type` varchar(255) DEFAULT 'String' COMMENT '参数数据类型', + `params_is_required` int(1) NOT NULL DEFAULT '0' COMMENT '是否必填', + `params_example` varchar(255) DEFAULT '' COMMENT '参数示例', + PRIMARY KEY (`id`), + UNIQUE KEY `request_params_id` (`request_params_id`) USING BTREE, + KEY `system_id` (`system_id`), + KEY `api_id` (`api_id`) + ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='请求参数'; + + INSERT INTO api_request_params( diff --git a/src/main/resources/mybatis/mapper/responseparams/response-params-mapper.xml b/src/main/resources/mybatis/mapper/responseparams/response-params-mapper.xml index ab5009a..5d5b0f6 100644 --- a/src/main/resources/mybatis/mapper/responseparams/response-params-mapper.xml +++ b/src/main/resources/mybatis/mapper/responseparams/response-params-mapper.xml @@ -35,6 +35,24 @@ + + CREATE TABLE IF NOT EXISTS `api_response_params` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `response_params_id` char(36) NOT NULL COMMENT '主键', + `system_id` char(36) NOT NULL COMMENT '系统ID', + `api_id` char(36) NOT NULL COMMENT '接口ID', + `params_name` varchar(255) NOT NULL COMMENT '参数名', + `params_summary` varchar(255) DEFAULT NULL COMMENT '参数说明', + `params_data_type` varchar(255) DEFAULT 'String' COMMENT '参数数据类型', + `params_is_required` int(1) NOT NULL DEFAULT '0' COMMENT '是否必填', + `params_example` varchar(255) DEFAULT '' COMMENT '参数示例', + PRIMARY KEY (`id`), + UNIQUE KEY `response_params_id` (`response_params_id`) USING BTREE, + KEY `system_id` (`system_id`), + KEY `api_id` (`api_id`) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='响应参数'; + + INSERT INTO api_response_params( diff --git a/src/main/resources/mybatis/mapper/system/system-mapper.xml b/src/main/resources/mybatis/mapper/system/system-mapper.xml index 0804f03..ed3620b 100644 --- a/src/main/resources/mybatis/mapper/system/system-mapper.xml +++ b/src/main/resources/mybatis/mapper/system/system-mapper.xml @@ -58,6 +58,38 @@ + + + + + + + + + CREATE TABLE IF NOT EXISTS `api_system` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `system_id` char(36) NOT NULL, + `name` varchar(255) NOT NULL COMMENT '名称', + `summary` varchar(500) DEFAULT NULL COMMENT '描述', + `logo` varchar(255) DEFAULT NULL COMMENT 'logo', + `gateway_context` varchar(255) NOT NULL COMMENT '网关上下文', + `request_schema` varchar(255) NOT NULL DEFAULT 'http' COMMENT '请求方式', + `ip_address` varchar(255) NOT NULL COMMENT '系统地址', + `system_context` varchar(255) NOT NULL COMMENT '系统上下文', + `audit_status` varchar(20) DEFAULT 'none' COMMENT '审核状态', + `audit_time` varchar(20) DEFAULT NULL COMMENT '审核时间', + `auditor` char(36) DEFAULT NULL COMMENT '审核人', + `audit_reason` text COMMENT '审核原因', + `gmt_create` datetime NOT NULL COMMENT '创建时间', + `creator` char(36) NOT NULL COMMENT '创建人', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `modifier` char(36) NOT NULL COMMENT '修改人', + `is_delete` int(1) NOT NULL DEFAULT '0' COMMENT '是否删除', + PRIMARY KEY (`id`), + UNIQUE KEY `system_id` (`system_id`) USING BTREE + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='接口系统'; + + INSERT INTO api_system( @@ -158,6 +190,19 @@ system_id = #{systemId} + + + UPDATE + api_system + SET + audit_status = #{auditStatus}, + audit_time = #{auditTime}, + auditor = #{auditor}, + audit_reason = #{auditReason} + WHERE + system_id = #{systemId} + + SELECT @@ -254,16 +299,14 @@ t1.audit_time, t1.auditor, t1.audit_reason, - t1.gmt_create, - 1 + t1.gmt_create FROM api_system t1 WHERE t1.is_delete = 0 AND ( - - t1.id LIKE CONCAT('%', #{keywords}, '%') + t1.name LIKE CONCAT('%', #{keywords}, '%') ) @@ -274,6 +317,18 @@ AND LEFT(t1.gmt_create, 10) #{endTime} + + AND + LEFT(t1.audit_time, 10) = ]]> #{auditStartTime} + + + AND + LEFT(t1.audit_time, 10) #{auditEndTime} + + + AND + t1.audit_status = #{auditStatus} + AND t1.system_id IN @@ -281,6 +336,10 @@ #{systemIds[${index}]} + + AND + t1.creator = #{creator} + @@ -387,4 +446,17 @@ t1.is_delete = 0 + + + SELECT + t1.audit_status, + t1.audit_time, + t1.auditor, + t1.audit_reason + FROM + api_system t1 + WHERE + t1.system_id = #{systemId} + + \ No newline at end of file diff --git a/src/main/resources/static/route/api/get-examine-result.html b/src/main/resources/static/route/api/get-examine-result.html new file mode 100644 index 0000000..26c0cf0 --- /dev/null +++ b/src/main/resources/static/route/api/get-examine-result.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + 审核结果 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/route/api/get-example.html b/src/main/resources/static/route/api/get-example.html new file mode 100644 index 0000000..7f28e93 --- /dev/null +++ b/src/main/resources/static/route/api/get-example.html @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + 审核结果 + + + + + + 请求正文 + + + + + + 响应成功示例 + + + + + + 响应失败示例 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/route/api/list-claim.html b/src/main/resources/static/route/api/list-claim.html new file mode 100644 index 0000000..19e7525 --- /dev/null +++ b/src/main/resources/static/route/api/list-claim.html @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 未认领 + 已认领 + 全部 + + + + 搜索 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/route/api/list-examine.html b/src/main/resources/static/route/api/list-examine.html new file mode 100644 index 0000000..b2fdb84 --- /dev/null +++ b/src/main/resources/static/route/api/list-examine.html @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + + + + + + 审核时间段 + + + + + + + + + 未审核 + 审核通过 + 审核不通过 + + + + 搜索 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/route/api/list.html b/src/main/resources/static/route/api/list.html index bbcdeb1..0d6ebe1 100644 --- a/src/main/resources/static/route/api/list.html +++ b/src/main/resources/static/route/api/list.html @@ -65,7 +65,7 @@ var laydate = layui.laydate; var common = layui.common; var resizeTimeout = null; - var tableUrl = 'api/api/listpage'; + var tableUrl = 'api/api/permission/listpage'; // 初始化表格 function initTable() { @@ -86,16 +86,7 @@ [ {type:'checkbox', fixed: 'left'}, {field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '{{d.LAY_INDEX}}'}, - {field: 'apiId', width: 180, title: '主键', align:'center', - templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; - } - return rowData; - } - }, - {field: 'systemId', width: 180, title: '系统ID', align:'center', + {field: 'systemName', width: 180, title: '系统名称', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { @@ -140,49 +131,27 @@ return rowData; } }, - {field: 'requestExampleUrl', width: 180, title: '请求示例', align:'center', + {field: 'example', width: 100, title: '示例', align:'center', templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; - } - return rowData; + return '点击查看'; } }, - {field: 'requestExampleBody', width: 180, title: '请求正文', align:'center', + {field: 'auditStatus', width: 100, title: '审核状态', align:'center', templet: function(row) { var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { + if(typeof(rowData) === 'undefined' || rowData == null) { return '-'; } - return rowData; - } - }, - {field: 'responseSuccessExample', width: 180, title: '响应成功示例', align:'center', - templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; + if(rowData == 'none') { + return '未审核'; } - return rowData; - } - }, - {field: 'responseFailExample', width: 180, title: '响应失败示例', align:'center', - templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; + if(rowData == 'unPass') { + return '未审核'; } - return rowData; - } - }, - {field: 'auditStatus', width: 180, title: '审核状态', align:'center', - templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; + if(rowData == 'pass') { + return '通过'; } - return rowData; + return '错误'; } }, {field: 'auditTime', width: 180, title: '审核时间', align:'center', @@ -203,22 +172,27 @@ return rowData; } }, - {field: 'auditReason', width: 180, title: '审核原因', align:'center', + {field: 'auditReason', width: 100, title: '审核原因', align:'center', templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; + if(row.auditStatus == 'none') { + return '未审核'; } - return rowData; + return '点击查看'; } }, - {field: 'isPublish', width: 180, title: '是否发布', align:'center', + {field: 'isPublish', width: 100, title: '是否发布', align:'center', templet: function(row) { var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { + if(typeof(rowData) === 'undefined' || rowData == null) { return '-'; } - return rowData; + if(rowData == 0) { + return '否'; + } + if(rowData == 1) { + return '是'; + } + return '错误'; } }, {field: 'publishTime', width: 180, title: '发布时间', align:'center', @@ -230,21 +204,33 @@ return rowData; } }, - {field: 'isCanClaim', width: 180, title: '是否可认领', align:'center', + {field: 'isCanClaim', width: 100, title: '可认领', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { return '-'; } + if(rowData == 0) { + return '否'; + } + if(rowData == 1) { + return '是'; + } return rowData; } }, - {field: 'isUsable', width: 180, title: '是否可用', align:'center', + {field: 'isUsable', width: 100, title: '是否可用', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { return '-'; } + if(rowData == 0) { + return '否'; + } + if(rowData == 1) { + return '是'; + } return rowData; } }, @@ -257,28 +243,27 @@ return rowData; } }, - {field: 'gmtModified', width: 180, title: '修改时间', align:'center', - templet: function(row) { - var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; - } - return rowData; - } - }, {field: 'headerParams', width: 80, title: '头参数', align:'center', fixed: 'right', templet: function(row) { - return '查看'; + return '查看'; } }, {field: 'requestParams', width: 90, title: '请求参数', align:'center', fixed: 'right', templet: function(row) { - return '查看'; + return '查看'; } }, {field: 'responseParams', width: 90, title: '响应参数', align:'center', fixed: 'right', templet: function(row) { - return '查看'; + return '查看'; + } + }, + {field: 'operate', width: 90, title: '操作', align:'center', fixed: 'right', + templet: function(row) { + if(row.auditStatus == 'pass' && row.isUsable == '1') { + return '发布'; + } + return '-'; } }, ] @@ -412,30 +397,62 @@ table.on('tool(dataTable)', function(obj) { var event = obj.event; var data = obj.data; - if(event === 'headerParamsEvent') { + if(event === 'exampleEvent') { + top.dialog.open({ + url: top.restAjax.path('route/api/get-example.html?apiId={apiId}', [data.apiId]), + title: '头参数列表', + width: '70%', + height: '70%', + onClose: function() {} + }); + } else if(event === 'headerParamsEvent') { top.dialog.open({ url: top.restAjax.path('route/header/list.html?systemId={systemId}&apiId={apiId}', [data.systemId, data.apiId]), title: '头参数列表', - width: '500px', - height: '400px', + width: '70%', + height: '70%', onClose: function() {} }); } else if(event === 'requestParamsEvent') { top.dialog.open({ url: top.restAjax.path('route/requestparams/list.html?systemId={systemId}&apiId={apiId}', [data.systemId, data.apiId]), title: '请求参数列表', - width: '500px', - height: '400px', + width: '70%', + height: '70%', onClose: function() {} }); } else if(event === 'responseParamsEvent') { top.dialog.open({ url: top.restAjax.path('route/responseparams/list.html?systemId={systemId}&apiId={apiId}', [data.systemId, data.apiId]), title: '响应参数列表', - width: '500px', - height: '400px', + width: '70%', + height: '70%', onClose: function() {} }); + } else if(event === 'auditReasonEvent') { + top.dialog.open({ + url: top.restAjax.path('route/api/get-examine-result.html?apiId={apiId}', [data.apiId]), + title: '审核结果', + width: '500px', + height: '400px', + onClose: function() { + reloadTable(); + } + }); + } else if(event === 'publishEvent') { + top.dialog.confirm('确定发布该接口码?', function(index) { + top.dialog.close(index); + var loadLayerIndex; + top.restAjax.get(top.restAjax.path('api/api/publish/{apiId}', [data.apiId]), {}, null, function(code, data) { + top.dialog.msg('发布成功'); + }, function(code, data) { + top.dialog.msg(data.msg); + }, function() { + loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3}); + }, function() { + top.dialog.close(loadLayerIndex); + }); + }) } }); }); diff --git a/src/main/resources/static/route/api/save.html b/src/main/resources/static/route/api/save.html index 4aebb0c..339e953 100644 --- a/src/main/resources/static/route/api/save.html +++ b/src/main/resources/static/route/api/save.html @@ -162,7 +162,7 @@ // 初始化系统ID function initSystemId() { - top.restAjax.get(top.restAjax.path('api/system/list', []), {}, null, function(code, data, args) { + top.restAjax.get(top.restAjax.path('api/system/list?auditStatus=pass', []), {}, null, function(code, data, args) { laytpl(document.getElementById('systemIdTemplate').innerHTML).render(data, function(html) { document.getElementById('systemIdTemplateBox').innerHTML = html; }); diff --git a/src/main/resources/static/route/claim/save.html b/src/main/resources/static/route/api/update-examine.html similarity index 57% rename from src/main/resources/static/route/claim/save.html rename to src/main/resources/static/route/api/update-examine.html index fe07e08..42b285f 100644 --- a/src/main/resources/static/route/claim/save.html +++ b/src/main/resources/static/route/api/update-examine.html @@ -10,34 +10,40 @@ + - + 上级列表/ - 新增内容 + 编辑内容 - - 系统ID + + 审核状态 * - + + - - APIID + + 说明 - + @@ -46,8 +52,6 @@ - - + + + +