Commit 401032c1 by lijinqi

api新增 关联接口

parent 77fc37db
...@@ -2,9 +2,16 @@ package com.luhu.computility.module.apihub.controller.admin.api; ...@@ -2,9 +2,16 @@ package com.luhu.computility.module.apihub.controller.admin.api;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointRespVO;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointSaveReqVO;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.ApiEndpointRelPageReqVO;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.ApiEndpointRelSaveReqVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO; import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO; import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO; import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.service.apiendpoint.ApiEndpointService;
import com.luhu.computility.module.apihub.service.apiendpointrel.ApiEndpointRelService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService; import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import org.checkerframework.checker.units.qual.A; import org.checkerframework.checker.units.qual.A;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -47,19 +54,32 @@ public class ApiController { ...@@ -47,19 +54,32 @@ public class ApiController {
private ApiService apiService; private ApiService apiService;
@Resource @Resource
private ApiEndpointRelService apiEndpointRelService;
@Resource
private ApiPackageService apiPackageService; private ApiPackageService apiPackageService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建API信息") @Operation(summary = "创建API信息")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public CommonResult<Long> createApi(@Valid @RequestBody ApiSaveReqVO createReqVO) { public CommonResult<Long> createApi(@Valid @RequestBody ApiSaveReqVO createReqVO) {
Long apiId = apiService.createApi(createReqVO); Long apiId = apiService.createApi(createReqVO);
//创建套餐包
if (!CollectionUtil.isEmpty(createReqVO.getApiPackages())) { if (!CollectionUtil.isEmpty(createReqVO.getApiPackages())) {
for (ApiPackageSaveReqVO apiPackageSaveReqVO : createReqVO.getApiPackages()) { for (ApiPackageSaveReqVO apiPackageSaveReqVO : createReqVO.getApiPackages()) {
apiPackageSaveReqVO.setApiId(apiId); apiPackageSaveReqVO.setApiId(apiId);
apiPackageService.createApiPackage(apiPackageSaveReqVO); apiPackageService.createApiPackage(apiPackageSaveReqVO);
} }
} }
//api应用+api接口关联
if (!CollectionUtil.isEmpty(createReqVO.getApiEndPoints())) {
for (ApiEndpointSaveReqVO apiEndpointSaveReqVO : createReqVO.getApiEndPoints()) {
apiEndpointRelService.createApiEndpointRel(new ApiEndpointRelSaveReqVO()
.setApiEndpointId(apiEndpointSaveReqVO.getId())
.setApiId(apiId));
}
}
return success(apiId); return success(apiId);
} }
...@@ -79,6 +99,16 @@ public class ApiController { ...@@ -79,6 +99,16 @@ public class ApiController {
} }
} }
} }
if (!CollectionUtil.isEmpty(updateReqVO.getApiEndPoints())) {
//删除已经关联的
apiEndpointRelService.deleteByApiId(updateReqVO.getId());
for (ApiEndpointSaveReqVO apiEndpointSaveReqVO : updateReqVO.getApiEndPoints()) {
apiEndpointRelService.createApiEndpointRel(new ApiEndpointRelSaveReqVO()
.setApiEndpointId(apiEndpointSaveReqVO.getId())
.setApiId(updateReqVO.getId()));
}
}
apiService.updateApi(updateReqVO); apiService.updateApi(updateReqVO);
return success(true); return success(true);
} }
...@@ -110,6 +140,10 @@ public class ApiController { ...@@ -110,6 +140,10 @@ public class ApiController {
ApiRespVO apiRespVO = BeanUtils.toBean(api, ApiRespVO.class); ApiRespVO apiRespVO = BeanUtils.toBean(api, ApiRespVO.class);
List<ApiPackageDO> apiPackageDOS = apiPackageService.selectByApiId(id); List<ApiPackageDO> apiPackageDOS = apiPackageService.selectByApiId(id);
apiRespVO.setApiPackages(BeanUtils.toBean(apiPackageDOS, ApiPackageRespVO.class)); apiRespVO.setApiPackages(BeanUtils.toBean(apiPackageDOS, ApiPackageRespVO.class));
List<ApiEndpointRespVO> apiEndpointRespVOS = apiEndpointRelService.getApiEndpointByApiId(id);
apiRespVO.setApiEndPoints(apiEndpointRespVOS);
return success(apiRespVO); return success(apiRespVO);
} }
......
package com.luhu.computility.module.apihub.controller.admin.api.vo; package com.luhu.computility.module.apihub.controller.admin.api.vo;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointRespVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO; import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO; import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
...@@ -59,9 +60,12 @@ public class ApiRespVO { ...@@ -59,9 +60,12 @@ public class ApiRespVO {
@ExcelProperty("备注") @ExcelProperty("备注")
private String remark; private String remark;
@Schema(description = "套餐包", example = "[{}]") @Schema(description = "资源包", example = "[{}]")
private List<ApiPackageRespVO> apiPackages; private List<ApiPackageRespVO> apiPackages;
@Schema(description = "", example = "[{}]")
private List<ApiEndpointRespVO> apiEndPoints;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
......
package com.luhu.computility.module.apihub.controller.admin.api.vo; package com.luhu.computility.module.apihub.controller.admin.api.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointSaveReqVO;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.ApiEndpointRelRespVO;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.ApiEndpointRelSaveReqVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO; import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
...@@ -42,8 +45,10 @@ public class ApiSaveReqVO { ...@@ -42,8 +45,10 @@ public class ApiSaveReqVO {
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
private String remark; private String remark;
@Schema(description = "资源包", example = "随便")
@Schema(description = "套餐包", example = "随便")
private List<ApiPackageSaveReqVO> apiPackages; private List<ApiPackageSaveReqVO> apiPackages;
@Schema(description = "api接口", example = "随便")
private List<ApiEndpointSaveReqVO> apiEndPoints;
} }
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpoint;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import static com.luhu.computility.framework.apilog.core.enums.OperateTypeEnum.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.service.apiendpoint.ApiEndpointService;
@Tag(name = "管理后台 - API 接口")
@RestController
@RequestMapping("/apihub/api-endpoint")
@Validated
public class ApiEndpointController {
@Resource
private ApiEndpointService apiEndpointService;
@PostMapping("/create")
@Operation(summary = "创建API 接口")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:create')")
public CommonResult<Long> createApiEndpoint(@Valid @RequestBody ApiEndpointSaveReqVO createReqVO) {
return success(apiEndpointService.createApiEndpoint(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新API 接口")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:update')")
public CommonResult<Boolean> updateApiEndpoint(@Valid @RequestBody ApiEndpointSaveReqVO updateReqVO) {
apiEndpointService.updateApiEndpoint(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除API 接口")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:delete')")
public CommonResult<Boolean> deleteApiEndpoint(@RequestParam("id") Long id) {
apiEndpointService.deleteApiEndpoint(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除API 接口")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:delete')")
public CommonResult<Boolean> deleteApiEndpointList(@RequestParam("ids") List<Long> ids) {
apiEndpointService.deleteApiEndpointListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得API 接口")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:query')")
public CommonResult<ApiEndpointRespVO> getApiEndpoint(@RequestParam("id") Long id) {
ApiEndpointDO apiEndpoint = apiEndpointService.getApiEndpoint(id);
return success(BeanUtils.toBean(apiEndpoint, ApiEndpointRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得API 接口分页")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:query')")
public CommonResult<PageResult<ApiEndpointRespVO>> getApiEndpointPage(@Valid ApiEndpointPageReqVO pageReqVO) {
PageResult<ApiEndpointDO> pageResult = apiEndpointService.getApiEndpointPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiEndpointRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得API 接口")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:query')")
public CommonResult<List<ApiEndpointRespVO>> getApiEndpointPage() {
List<ApiEndpointDO> pageResult = apiEndpointService.getApiEndpointList();
return success(BeanUtils.toBean(pageResult, ApiEndpointRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出API 接口 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiEndpointExcel(@Valid ApiEndpointPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiEndpointDO> list = apiEndpointService.getApiEndpointPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API 接口.xls", "数据", ApiEndpointRespVO.class,
BeanUtils.toBean(list, ApiEndpointRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.luhu.computility.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.luhu.computility.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - API 接口分页 Request VO")
@Data
public class ApiEndpointPageReqVO extends PageParam {
@Schema(description = "接口名称", example = "王五")
private String name;
@Schema(description = "接口路径,全路径例如 https://phsl.lijinqi.com/openn_ip/xxx")
private String path;
@Schema(description = "请求方式: GET/POST/PUT/DELETE")
private String method;
@Schema(description = "参数定义(JSON)")
private String params;
@Schema(description = "返回结果示例")
private String response;
@Schema(description = "鉴权方式,例如 API_KEY/OAUTH", example = "2")
private String authType;
@Schema(description = "接口级限流规则,例如 100 QPS")
private String rateLimit;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - API 接口 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ApiEndpointRespVO {
@Schema(description = "接口ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30761")
@ExcelProperty("接口ID")
private Long id;
@Schema(description = "接口名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@ExcelProperty("接口名称")
private String name;
@Schema(description = "接口路径,全路径例如 https://phsl.lijinqi.com/openn_ip/xxx", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("接口路径,全路径例如 https://phsl.lijinqi.com/openn_ip/xxx")
private String path;
@Schema(description = "请求方式: GET/POST/PUT/DELETE", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("请求方式: GET/POST/PUT/DELETE")
private String method;
@Schema(description = "参数定义(JSON)")
@ExcelProperty("参数定义(JSON)")
private String params;
@Schema(description = "返回结果示例")
@ExcelProperty("返回结果示例")
private String response;
@Schema(description = "鉴权方式,例如 API_KEY/OAUTH", example = "2")
@ExcelProperty("鉴权方式,例如 API_KEY/OAUTH")
private String authType;
@Schema(description = "接口级限流规则,例如 100 QPS")
@ExcelProperty("接口级限流规则,例如 100 QPS")
private String rateLimit;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - API 接口新增/修改 Request VO")
@Data
public class ApiEndpointSaveReqVO {
@Schema(description = "接口ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30761")
private Long id;
@Schema(description = "接口名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "接口名称不能为空")
private String name;
@Schema(description = "接口路径,全路径例如 https://phsl.lijinqi.com/openn_ip/xxx", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "接口路径,全路径例如 https://phsl.lijinqi.com/openn_ip/xxx不能为空")
private String path;
@Schema(description = "请求方式: GET/POST/PUT/DELETE", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "请求方式: GET/POST/PUT/DELETE不能为空")
private String method;
@Schema(description = "参数定义(JSON)")
private String params;
@Schema(description = "返回结果示例")
private String response;
@Schema(description = "鉴权方式,例如 API_KEY/OAUTH", example = "2")
private String authType;
@Schema(description = "接口级限流规则,例如 100 QPS")
private String rateLimit;
@Schema(description = "备注", example = "你说的对")
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpointrel;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import static com.luhu.computility.framework.apilog.core.enums.OperateTypeEnum.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import com.luhu.computility.module.apihub.service.apiendpointrel.ApiEndpointRelService;
@Tag(name = "管理后台 - API 应用与接口关系")
@RestController
@RequestMapping("/apihub/api-endpoint-rel")
@Validated
public class ApiEndpointRelController {
@Resource
private ApiEndpointRelService apiEndpointRelService;
@PostMapping("/create")
@Operation(summary = "创建API 应用与接口关系")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:create')")
public CommonResult<Long> createApiEndpointRel(@Valid @RequestBody ApiEndpointRelSaveReqVO createReqVO) {
return success(apiEndpointRelService.createApiEndpointRel(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新API 应用与接口关系")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:update')")
public CommonResult<Boolean> updateApiEndpointRel(@Valid @RequestBody ApiEndpointRelSaveReqVO updateReqVO) {
apiEndpointRelService.updateApiEndpointRel(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除API 应用与接口关系")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:delete')")
public CommonResult<Boolean> deleteApiEndpointRel(@RequestParam("id") Long id) {
apiEndpointRelService.deleteApiEndpointRel(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除API 应用与接口关系")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:delete')")
public CommonResult<Boolean> deleteApiEndpointRelList(@RequestParam("ids") List<Long> ids) {
apiEndpointRelService.deleteApiEndpointRelListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得API 应用与接口关系")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:query')")
public CommonResult<ApiEndpointRelRespVO> getApiEndpointRel(@RequestParam("id") Long id) {
ApiEndpointRelDO apiEndpointRel = apiEndpointRelService.getApiEndpointRel(id);
return success(BeanUtils.toBean(apiEndpointRel, ApiEndpointRelRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得API 应用与接口关系分页")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:query')")
public CommonResult<PageResult<ApiEndpointRelRespVO>> getApiEndpointRelPage(@Valid ApiEndpointRelPageReqVO pageReqVO) {
PageResult<ApiEndpointRelDO> pageResult = apiEndpointRelService.getApiEndpointRelPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiEndpointRelRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出API 应用与接口关系 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-endpoint-rel:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiEndpointRelExcel(@Valid ApiEndpointRelPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiEndpointRelDO> list = apiEndpointRelService.getApiEndpointRelPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API 应用与接口关系.xls", "数据", ApiEndpointRelRespVO.class,
BeanUtils.toBean(list, ApiEndpointRelRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.luhu.computility.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.luhu.computility.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - API 应用与接口关系分页 Request VO")
@Data
public class ApiEndpointRelPageReqVO extends PageParam {
@Schema(description = "API 应用ID,关联 apihub_api.id", example = "15662")
private Long apiId;
@Schema(description = "接口ID,关联 apihub_api_endpoint.id", example = "14690")
private Long apiEndpointId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - API 应用与接口关系 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ApiEndpointRelRespVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30202")
@ExcelProperty("主键")
private Long id;
@Schema(description = "API 应用ID,关联 apihub_api.id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15662")
@ExcelProperty("API 应用ID,关联 apihub_api.id")
private Long apiId;
@Schema(description = "接口ID,关联 apihub_api_endpoint.id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14690")
@ExcelProperty("接口ID,关联 apihub_api_endpoint.id")
private Long apiEndpointId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - API 应用与接口关系新增/修改 Request VO")
@Data
public class ApiEndpointRelSaveReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30202")
private Long id;
@Schema(description = "API 应用ID,关联 apihub_api.id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15662")
@NotNull(message = "API 应用ID,关联 apihub_api.id不能为空")
private Long apiId;
@Schema(description = "接口ID,关联 apihub_api_endpoint.id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14690")
@NotNull(message = "接口ID,关联 apihub_api_endpoint.id不能为空")
private Long apiEndpointId;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.appcredential;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import static com.luhu.computility.framework.apilog.core.enums.OperateTypeEnum.*;
import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import com.luhu.computility.module.apihub.service.appcredential.AppCredentialService;
@Tag(name = "管理后台 - 用户密钥信息")
@RestController
@RequestMapping("/apihub/app-credential")
@Validated
public class AppCredentialController {
@Resource
private AppCredentialService appCredentialService;
@PostMapping("/create")
@Operation(summary = "创建用户密钥信息")
@PreAuthorize("@ss.hasPermission('apihub:app-credential:create')")
public CommonResult<Long> createAppCredential(@Valid @RequestBody AppCredentialSaveReqVO createReqVO) {
return success(appCredentialService.createAppCredential(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新用户密钥信息")
@PreAuthorize("@ss.hasPermission('apihub:app-credential:update')")
public CommonResult<Boolean> updateAppCredential(@Valid @RequestBody AppCredentialSaveReqVO updateReqVO) {
appCredentialService.updateAppCredential(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除用户密钥信息")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:app-credential:delete')")
public CommonResult<Boolean> deleteAppCredential(@RequestParam("id") Long id) {
appCredentialService.deleteAppCredential(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除用户密钥信息")
@PreAuthorize("@ss.hasPermission('apihub:app-credential:delete')")
public CommonResult<Boolean> deleteAppCredentialList(@RequestParam("ids") List<Long> ids) {
appCredentialService.deleteAppCredentialListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得用户密钥信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:app-credential:query')")
public CommonResult<AppCredentialRespVO> getAppCredential(@RequestParam("id") Long id) {
AppCredentialDO appCredential = appCredentialService.getAppCredential(id);
return success(BeanUtils.toBean(appCredential, AppCredentialRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得用户密钥信息分页")
@PreAuthorize("@ss.hasPermission('apihub:app-credential:query')")
public CommonResult<PageResult<AppCredentialRespVO>> getAppCredentialPage(@Valid AppCredentialPageReqVO pageReqVO) {
PageResult<AppCredentialDO> pageResult = appCredentialService.getAppCredentialPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AppCredentialRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出用户密钥信息 Excel")
@PreAuthorize("@ss.hasPermission('apihub:app-credential:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportAppCredentialExcel(@Valid AppCredentialPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<AppCredentialDO> list = appCredentialService.getAppCredentialPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "用户密钥信息.xls", "数据", AppCredentialRespVO.class,
BeanUtils.toBean(list, AppCredentialRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.appcredential.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.luhu.computility.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.luhu.computility.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 用户密钥信息分页 Request VO")
@Data
public class AppCredentialPageReqVO extends PageParam {
@Schema(description = "应用ID,唯一", example = "23068")
private String appId;
@Schema(description = "AES加密后的应用密钥")
private String appSecret;
@Schema(description = "所属用户ID", example = "11786")
private Long userId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.appcredential.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 用户密钥信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppCredentialRespVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8721")
@ExcelProperty("主键ID")
private Long id;
@Schema(description = "应用ID,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "23068")
@ExcelProperty("应用ID,唯一")
private String appId;
@Schema(description = "AES加密后的应用密钥", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("AES加密后的应用密钥")
private String appSecret;
@Schema(description = "所属用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11786")
@ExcelProperty("所属用户ID")
private Long userId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.appcredential.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 用户密钥信息新增/修改 Request VO")
@Data
public class AppCredentialSaveReqVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8721")
private Long id;
@Schema(description = "应用ID,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "23068")
@NotEmpty(message = "应用ID,唯一不能为空")
private String appId;
@Schema(description = "AES加密后的应用密钥", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "AES加密后的应用密钥不能为空")
private String appSecret;
@Schema(description = "所属用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11786")
@NotNull(message = "所属用户ID不能为空")
private Long userId;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.apiendpoint;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/**
* API 接口 DO
*
* @author ljq
*/
@TableName("apihub_api_endpoint")
@KeySequence("apihub_api_endpoint_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiEndpointDO extends BaseDO {
/**
* 接口ID
*/
@TableId
private Long id;
/**
* 接口名称
*/
private String name;
/**
* 接口路径,全路径例如 https://phsl.lijinqi.com/openn_ip/xxx
*/
private String path;
/**
* 请求方式: GET/POST/PUT/DELETE
*/
private String method;
/**
* 参数定义(JSON)
*/
private String params;
/**
* 返回结果示例
*/
private String response;
/**
* 鉴权方式,例如 API_KEY/OAUTH
*/
private String authType;
/**
* 接口级限流规则,例如 100 QPS
*/
private String rateLimit;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/**
* API 应用与接口关系 DO
*
* @author ljq
*/
@TableName("apihub_api_endpoint_rel")
@KeySequence("apihub_api_endpoint_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiEndpointRelDO extends BaseDO {
/**
* 主键
*/
@TableId
private Long id;
/**
* API 应用ID,关联 apihub_api.id
*/
private Long apiId;
/**
* 接口ID,关联 apihub_api_endpoint.id
*/
private Long apiEndpointId;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.appcredential;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/**
* 用户密钥信息 DO
*
* @author ljq
*/
@TableName("apihub_app_credential")
@KeySequence("apihub_app_credential_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppCredentialDO extends BaseDO {
/**
* 主键ID
*/
@TableId
private Long id;
/**
* 应用ID,唯一
*/
private String appId;
/**
* AES加密后的应用密钥
*/
private String appSecret;
/**
* 所属用户ID
*/
private Long userId;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.apiendpoint;
import java.util.*;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.*;
/**
* API 接口 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiEndpointMapper extends BaseMapperX<ApiEndpointDO> {
default PageResult<ApiEndpointDO> selectPage(ApiEndpointPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiEndpointDO>()
.likeIfPresent(ApiEndpointDO::getName, reqVO.getName())
.eqIfPresent(ApiEndpointDO::getPath, reqVO.getPath())
.eqIfPresent(ApiEndpointDO::getMethod, reqVO.getMethod())
.eqIfPresent(ApiEndpointDO::getParams, reqVO.getParams())
.eqIfPresent(ApiEndpointDO::getResponse, reqVO.getResponse())
.eqIfPresent(ApiEndpointDO::getAuthType, reqVO.getAuthType())
.eqIfPresent(ApiEndpointDO::getRateLimit, reqVO.getRateLimit())
.eqIfPresent(ApiEndpointDO::getRemark, reqVO.getRemark())
.betweenIfPresent(ApiEndpointDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiEndpointDO::getId));
}
default List<ApiEndpointDO> selectAll() {
return selectList();
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.apiendpointrel;
import java.util.*;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.*;
/**
* API 应用与接口关系 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiEndpointRelMapper extends BaseMapperX<ApiEndpointRelDO> {
default PageResult<ApiEndpointRelDO> selectPage(ApiEndpointRelPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiEndpointRelDO>()
.eqIfPresent(ApiEndpointRelDO::getApiId, reqVO.getApiId())
.eqIfPresent(ApiEndpointRelDO::getApiEndpointId, reqVO.getApiEndpointId())
.betweenIfPresent(ApiEndpointRelDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiEndpointRelDO::getId));
}
default int deleteByApiId(Long apiId) {
return delete(new LambdaQueryWrapperX<ApiEndpointRelDO>()
.eqIfPresent(ApiEndpointRelDO::getApiId, apiId));
}
default List<ApiEndpointRespVO> getApiEndpointByApiId(Long apiId) {
return selectJoinList(ApiEndpointRespVO.class, new MPJLambdaWrapperX<ApiEndpointRelDO>()
.selectAs(ApiEndpointDO::getName, ApiEndpointRespVO::getName)
.selectAs(ApiEndpointDO::getMethod, ApiEndpointRespVO::getMethod)
.selectAs(ApiEndpointDO::getPath, ApiEndpointRespVO::getPath)
.selectAs(ApiEndpointRelDO::getApiEndpointId, ApiEndpointRespVO::getId)
.leftJoin(ApiEndpointDO.class, ApiEndpointDO::getId, ApiEndpointRelDO::getApiEndpointId)
.eqIfPresent(ApiEndpointRelDO::getApiId, apiId)
);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.appcredential;
import java.util.*;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
/**
* 用户密钥信息 Mapper
*
* @author ljq
*/
@Mapper
public interface AppCredentialMapper extends BaseMapperX<AppCredentialDO> {
default PageResult<AppCredentialDO> selectPage(AppCredentialPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<AppCredentialDO>()
.eqIfPresent(AppCredentialDO::getAppId, reqVO.getAppId())
.eqIfPresent(AppCredentialDO::getAppSecret, reqVO.getAppSecret())
.eqIfPresent(AppCredentialDO::getUserId, reqVO.getUserId())
.betweenIfPresent(AppCredentialDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(AppCredentialDO::getId));
}
}
\ No newline at end of file
...@@ -19,4 +19,7 @@ public interface ErrorCodeConstants { ...@@ -19,4 +19,7 @@ public interface ErrorCodeConstants {
ErrorCode API_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_ID_ERROR = new ErrorCode(1_010_001_014, "API订单更新支付状态失败,支付单编号不匹配"); ErrorCode API_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_ID_ERROR = new ErrorCode(1_010_001_014, "API订单更新支付状态失败,支付单编号不匹配");
ErrorCode API_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_STATUS_NOT_SUCCESS = new ErrorCode(1_010_001_015, "API订单更新支付状态失败,支付单状态不是【支付成功】状态"); ErrorCode API_ORDER_UPDATE_PAID_FAIL_PAY_ORDER_STATUS_NOT_SUCCESS = new ErrorCode(1_010_001_015, "API订单更新支付状态失败,支付单状态不是【支付成功】状态");
ErrorCode API_ORDER_UPDATE_PAID_FAIL_PAY_PRICE_NOT_MATCH = new ErrorCode(1_010_001_016, "API订单更新支付状态失败,支付单金额不匹配"); ErrorCode API_ORDER_UPDATE_PAID_FAIL_PAY_PRICE_NOT_MATCH = new ErrorCode(1_010_001_016, "API订单更新支付状态失败,支付单金额不匹配");
ErrorCode API_ENDPOINT_NOT_EXISTS = new ErrorCode(1_010_001_017, "API 接口不存在");
ErrorCode API_ENDPOINT_REL_NOT_EXISTS = new ErrorCode(1_010_001_018, "API 应用与接口关系不存在");
ErrorCode APP_CREDENTIAL_NOT_EXISTS = new ErrorCode(1_010_001_019, "用户密钥信息不存在");
} }
package com.luhu.computility.module.apihub.service.apiendpoint;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* API 接口 Service 接口
*
* @author ljq
*/
public interface ApiEndpointService {
/**
* 创建API 接口
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApiEndpoint(@Valid ApiEndpointSaveReqVO createReqVO);
/**
* 更新API 接口
*
* @param updateReqVO 更新信息
*/
void updateApiEndpoint(@Valid ApiEndpointSaveReqVO updateReqVO);
/**
* 删除API 接口
*
* @param id 编号
*/
void deleteApiEndpoint(Long id);
/**
* 批量删除API 接口
*
* @param ids 编号
*/
void deleteApiEndpointListByIds(List<Long> ids);
/**
* 获得API 接口
*
* @param id 编号
* @return API 接口
*/
ApiEndpointDO getApiEndpoint(Long id);
/**
* 获得API 接口分页
*
* @param pageReqVO 分页查询
* @return API 接口分页
*/
PageResult<ApiEndpointDO> getApiEndpointPage(ApiEndpointPageReqVO pageReqVO);
/**
* 获得API所有接口
*
* @return API 接口
*/
List<ApiEndpointDO> getApiEndpointList();
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apiendpoint;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apiendpoint.ApiEndpointMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
* API 接口 Service 实现类
*
* @author ljq
*/
@Service
@Validated
public class ApiEndpointServiceImpl implements ApiEndpointService {
@Resource
private ApiEndpointMapper apiEndpointMapper;
@Override
public Long createApiEndpoint(ApiEndpointSaveReqVO createReqVO) {
// 插入
ApiEndpointDO apiEndpoint = BeanUtils.toBean(createReqVO, ApiEndpointDO.class);
apiEndpointMapper.insert(apiEndpoint);
// 返回
return apiEndpoint.getId();
}
@Override
public void updateApiEndpoint(ApiEndpointSaveReqVO updateReqVO) {
// 校验存在
validateApiEndpointExists(updateReqVO.getId());
// 更新
ApiEndpointDO updateObj = BeanUtils.toBean(updateReqVO, ApiEndpointDO.class);
apiEndpointMapper.updateById(updateObj);
}
@Override
public void deleteApiEndpoint(Long id) {
// 校验存在
validateApiEndpointExists(id);
// 删除
apiEndpointMapper.deleteById(id);
}
@Override
public void deleteApiEndpointListByIds(List<Long> ids) {
// 删除
apiEndpointMapper.deleteByIds(ids);
}
private void validateApiEndpointExists(Long id) {
if (apiEndpointMapper.selectById(id) == null) {
throw exception(API_ENDPOINT_NOT_EXISTS);
}
}
@Override
public ApiEndpointDO getApiEndpoint(Long id) {
return apiEndpointMapper.selectById(id);
}
@Override
public PageResult<ApiEndpointDO> getApiEndpointPage(ApiEndpointPageReqVO pageReqVO) {
return apiEndpointMapper.selectPage(pageReqVO);
}
@Override
public List<ApiEndpointDO> getApiEndpointList() {
return apiEndpointMapper.selectAll();
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apiendpointrel;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointRespVO;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* API 应用与接口关系 Service 接口
*
* @author ljq
*/
public interface ApiEndpointRelService {
/**
* 创建API 应用与接口关系
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApiEndpointRel(@Valid ApiEndpointRelSaveReqVO createReqVO);
/**
* 更新API 应用与接口关系
*
* @param updateReqVO 更新信息
*/
void updateApiEndpointRel(@Valid ApiEndpointRelSaveReqVO updateReqVO);
/**
* 删除API 应用与接口关系
*
* @param id 编号
*/
void deleteApiEndpointRel(Long id);
/**
* 批量删除API 应用与接口关系
*
* @param ids 编号
*/
void deleteApiEndpointRelListByIds(List<Long> ids);
/**
* 获得API 应用与接口关系
*
* @param id 编号
* @return API 应用与接口关系
*/
ApiEndpointRelDO getApiEndpointRel(Long id);
/**
* 获得API 应用与接口关系分页
*
* @param pageReqVO 分页查询
* @return API 应用与接口关系分页
*/
PageResult<ApiEndpointRelDO> getApiEndpointRelPage(ApiEndpointRelPageReqVO pageReqVO);
/**
* 获得API 应用与接口关系
*
* @param apiId 分页查询
* @return API 应用与接口关系分页
*/
List<ApiEndpointRespVO> getApiEndpointByApiId(Long apiId);
/**
* 根据apiId删除关联的ApiEndpoint
*/
Integer deleteByApiId(Long apiId);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apiendpointrel;
import cn.hutool.core.collection.CollUtil;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apiendpointrel.ApiEndpointRelMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
* API 应用与接口关系 Service 实现类
*
* @author ljq
*/
@Service
@Validated
public class ApiEndpointRelServiceImpl implements ApiEndpointRelService {
@Resource
private ApiEndpointRelMapper apiEndpointRelMapper;
@Override
public Long createApiEndpointRel(ApiEndpointRelSaveReqVO createReqVO) {
// 插入
ApiEndpointRelDO apiEndpointRel = BeanUtils.toBean(createReqVO, ApiEndpointRelDO.class);
apiEndpointRelMapper.insert(apiEndpointRel);
// 返回
return apiEndpointRel.getId();
}
@Override
public void updateApiEndpointRel(ApiEndpointRelSaveReqVO updateReqVO) {
// 校验存在
validateApiEndpointRelExists(updateReqVO.getId());
// 更新
ApiEndpointRelDO updateObj = BeanUtils.toBean(updateReqVO, ApiEndpointRelDO.class);
apiEndpointRelMapper.updateById(updateObj);
}
@Override
public void deleteApiEndpointRel(Long id) {
// 校验存在
validateApiEndpointRelExists(id);
// 删除
apiEndpointRelMapper.deleteById(id);
}
@Override
public void deleteApiEndpointRelListByIds(List<Long> ids) {
// 删除
apiEndpointRelMapper.deleteByIds(ids);
}
private void validateApiEndpointRelExists(Long id) {
if (apiEndpointRelMapper.selectById(id) == null) {
throw exception(API_ENDPOINT_REL_NOT_EXISTS);
}
}
@Override
public ApiEndpointRelDO getApiEndpointRel(Long id) {
return apiEndpointRelMapper.selectById(id);
}
@Override
public PageResult<ApiEndpointRelDO> getApiEndpointRelPage(ApiEndpointRelPageReqVO pageReqVO) {
return apiEndpointRelMapper.selectPage(pageReqVO);
}
@Override
public List<ApiEndpointRespVO> getApiEndpointByApiId(Long apiId) {
return apiEndpointRelMapper.getApiEndpointByApiId(apiId);
}
@Override
public Integer deleteByApiId(Long apiId) {
return apiEndpointRelMapper.deleteByApiId(apiId);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.appcredential;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* 用户密钥信息 Service 接口
*
* @author ljq
*/
public interface AppCredentialService {
/**
* 创建用户密钥信息
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createAppCredential(@Valid AppCredentialSaveReqVO createReqVO);
/**
* 更新用户密钥信息
*
* @param updateReqVO 更新信息
*/
void updateAppCredential(@Valid AppCredentialSaveReqVO updateReqVO);
/**
* 删除用户密钥信息
*
* @param id 编号
*/
void deleteAppCredential(Long id);
/**
* 批量删除用户密钥信息
*
* @param ids 编号
*/
void deleteAppCredentialListByIds(List<Long> ids);
/**
* 获得用户密钥信息
*
* @param id 编号
* @return 用户密钥信息
*/
AppCredentialDO getAppCredential(Long id);
/**
* 获得用户密钥信息分页
*
* @param pageReqVO 分页查询
* @return 用户密钥信息分页
*/
PageResult<AppCredentialDO> getAppCredentialPage(AppCredentialPageReqVO pageReqVO);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.appcredential;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.appcredential.AppCredentialMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
* 用户密钥信息 Service 实现类
*
* @author ljq
*/
@Service
@Validated
public class AppCredentialServiceImpl implements AppCredentialService {
@Resource
private AppCredentialMapper appCredentialMapper;
@Override
public Long createAppCredential(AppCredentialSaveReqVO createReqVO) {
// 插入
AppCredentialDO appCredential = BeanUtils.toBean(createReqVO, AppCredentialDO.class);
appCredentialMapper.insert(appCredential);
// 返回
return appCredential.getId();
}
@Override
public void updateAppCredential(AppCredentialSaveReqVO updateReqVO) {
// 校验存在
validateAppCredentialExists(updateReqVO.getId());
// 更新
AppCredentialDO updateObj = BeanUtils.toBean(updateReqVO, AppCredentialDO.class);
appCredentialMapper.updateById(updateObj);
}
@Override
public void deleteAppCredential(Long id) {
// 校验存在
validateAppCredentialExists(id);
// 删除
appCredentialMapper.deleteById(id);
}
@Override
public void deleteAppCredentialListByIds(List<Long> ids) {
// 删除
appCredentialMapper.deleteByIds(ids);
}
private void validateAppCredentialExists(Long id) {
if (appCredentialMapper.selectById(id) == null) {
throw exception(APP_CREDENTIAL_NOT_EXISTS);
}
}
@Override
public AppCredentialDO getAppCredential(Long id) {
return appCredentialMapper.selectById(id);
}
@Override
public PageResult<AppCredentialDO> getAppCredentialPage(AppCredentialPageReqVO pageReqVO) {
return appCredentialMapper.selectPage(pageReqVO);
}
}
\ No newline at end of file
...@@ -64,7 +64,7 @@ public class OpenApiController { ...@@ -64,7 +64,7 @@ public class OpenApiController {
@ApiAccessLog @ApiAccessLog
@PostMapping(value = "/digital-human-conversation") @PostMapping(value = "/digital-human-conversation")
@Operation(summary = "数字人对话", description = "和数字人朱熹进行一问一答的对话") @Operation(summary = "数字人对话", description = "和数字人朱熹进行一问一答的对话")
//@ApiSignature @ApiSignature
public CommonResult<ConversationRespDTO> digitalHumanConversation(@RequestBody ConversationReqDTO conversationReqDTO){ public CommonResult<ConversationRespDTO> digitalHumanConversation(@RequestBody ConversationReqDTO conversationReqDTO){
return openApiService.digitalHumanConversation(conversationReqDTO); return openApiService.digitalHumanConversation(conversationReqDTO);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment