Commit 9766fbf7 by lijinqi

api应用相关生成代码;

api信息新增、编辑、上下架接口完成
parent 5251136f
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>computility</artifactId>
<groupId>com.luhu</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>computility-module-apihub</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>
api应用
</description>
<dependencies>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-pay</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-member</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-system</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-biz-tenant</artifactId>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-biz-ip</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-mybatis</artifactId>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-redis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-test</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-excel</artifactId>
</dependency>
</dependencies>
</project>
package com.luhu.computility.module.apihub.controller.admin.api;
import cn.hutool.core.collection.CollectionUtil;
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.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import org.checkerframework.checker.units.qual.A;
import org.springframework.transaction.annotation.Transactional;
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.api.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.service.api.ApiService;
@Tag(name = "管理后台 - API信息")
@RestController
@RequestMapping("/apihub/api")
@Validated
public class ApiController {
@Resource
private ApiService apiService;
@Resource
private ApiPackageService apiPackageService;
@PostMapping("/create")
@Operation(summary = "创建API信息")
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> createApi(@Valid @RequestBody ApiSaveReqVO createReqVO) {
Long apiId = apiService.createApi(createReqVO);
if (!CollectionUtil.isEmpty(createReqVO.getApiPackages())) {
for (ApiPackageSaveReqVO apiPackageSaveReqVO : createReqVO.getApiPackages()) {
apiPackageSaveReqVO.setApiId(apiId);
apiPackageService.createApiPackage(apiPackageSaveReqVO);
}
}
return success(apiId);
}
@PutMapping("/update")
@Operation(summary = "更新API信息")
//@PreAuthorize("@ss.hasPermission('apihub:api:update')")
@Transactional(rollbackFor = Exception.class)
public CommonResult<Boolean> updateApi(@Valid @RequestBody ApiSaveReqVO updateReqVO) {
//有套餐则更新套餐
if (!CollectionUtil.isEmpty(updateReqVO.getApiPackages())) {
//清除已有套餐
apiPackageService.deleteApiPackageByApiId(updateReqVO.getId());
//将新套餐放入
if (!CollectionUtil.isEmpty(updateReqVO.getApiPackages())) {
for (ApiPackageSaveReqVO apiPackageSaveReqVO : updateReqVO.getApiPackages()) {
apiPackageSaveReqVO.setApiId(updateReqVO.getId());
apiPackageService.createApiPackage(apiPackageSaveReqVO);
}
}
}
apiService.updateApi(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除API信息")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api:delete')")
public CommonResult<Boolean> deleteApi(@RequestParam("id") Long id) {
apiService.deleteApi(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除API信息")
@PreAuthorize("@ss.hasPermission('apihub:api:delete')")
public CommonResult<Boolean> deleteApiList(@RequestParam("ids") List<Long> ids) {
apiService.deleteApiListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得API信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api:query')")
public CommonResult<ApiRespVO> getApi(@RequestParam("id") Long id) {
ApiDO api = apiService.getApi(id);
ApiRespVO apiRespVO = BeanUtils.toBean(api, ApiRespVO.class);
List<ApiPackageDO> apiPackageDOS = apiPackageService.selectByApiId(id);
apiRespVO.setApiPackages(BeanUtils.toBean(apiPackageDOS, ApiPackageRespVO.class));
return success(apiRespVO);
}
@GetMapping("/page")
@Operation(summary = "获得API信息分页")
public CommonResult<PageResult<ApiRespVO>> getApiPage(@Valid ApiPageReqVO pageReqVO) {
PageResult<ApiDO> pageResult = apiService.getApiPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出API信息 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiExcel(@Valid ApiPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiDO> list = apiService.getApiPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API信息.xls", "数据", ApiRespVO.class,
BeanUtils.toBean(list, ApiRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.api.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 ApiPageReqVO extends PageParam {
@Schema(description = "API 名称", example = "李四")
private String name;
@Schema(description = "状态:1=上架,0=下架", example = "1")
private Integer status;
@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.api.vo;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO;
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 ApiRespVO {
@Schema(description = "API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11243")
@ExcelProperty("API ID")
private Long id;
@Schema(description = "API 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@ExcelProperty("API 名称")
private String name;
@Schema(description = "API 简介", example = "你说的对")
@ExcelProperty("API 简介")
private String description;
@Schema(description = "API 详细介绍")
@ExcelProperty("API 详细介绍")
private String detail;
@Schema(description = "接口文档内容")
@ExcelProperty("接口文档内容")
private String doc;
@Schema(description = "状态:1=上架,0=下架", example = "1")
@ExcelProperty("状态:1=上架,0=下架")
private Integer status;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String remark;
@Schema(description = "套餐包", example = "[{}]")
private List<ApiPackageRespVO> apiPackages;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.api.vo;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO;
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 ApiSaveReqVO {
@Schema(description = "API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11243")
private Long id;
@Schema(description = "API 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotEmpty(message = "API 名称不能为空")
private String name;
@Schema(description = "API 简介", example = "你说的对")
private String description;
@Schema(description = "API 详细介绍")
private String detail;
@Schema(description = "接口文档内容")
private String doc;
@Schema(description = "状态:1=上架,0=下架", example = "1")
private Integer status;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "套餐包", example = "随便")
private List<ApiPackageSaveReqVO> apiPackages;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apicalllog;
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.apicalllog.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicalllog.ApiCallLogDO;
import com.luhu.computility.module.apihub.service.apicalllog.ApiCallLogService;
@Tag(name = "管理后台 - API 调用日志")
@RestController
@RequestMapping("/apihub/api-call-log")
@Validated
public class ApiCallLogController {
@Resource
private ApiCallLogService apiCallLogService;
@PostMapping("/create")
@Operation(summary = "创建API 调用日志")
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:create')")
public CommonResult<Long> createApiCallLog(@Valid @RequestBody ApiCallLogSaveReqVO createReqVO) {
return success(apiCallLogService.createApiCallLog(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新API 调用日志")
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:update')")
public CommonResult<Boolean> updateApiCallLog(@Valid @RequestBody ApiCallLogSaveReqVO updateReqVO) {
apiCallLogService.updateApiCallLog(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除API 调用日志")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:delete')")
public CommonResult<Boolean> deleteApiCallLog(@RequestParam("id") Long id) {
apiCallLogService.deleteApiCallLog(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除API 调用日志")
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:delete')")
public CommonResult<Boolean> deleteApiCallLogList(@RequestParam("ids") List<Long> ids) {
apiCallLogService.deleteApiCallLogListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得API 调用日志")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:query')")
public CommonResult<ApiCallLogRespVO> getApiCallLog(@RequestParam("id") Long id) {
ApiCallLogDO apiCallLog = apiCallLogService.getApiCallLog(id);
return success(BeanUtils.toBean(apiCallLog, ApiCallLogRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得API 调用日志分页")
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:query')")
public CommonResult<PageResult<ApiCallLogRespVO>> getApiCallLogPage(@Valid ApiCallLogPageReqVO pageReqVO) {
PageResult<ApiCallLogDO> pageResult = apiCallLogService.getApiCallLogPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiCallLogRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出API 调用日志 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-call-log:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiCallLogExcel(@Valid ApiCallLogPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiCallLogDO> list = apiCallLogService.getApiCallLogPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API 调用日志.xls", "数据", ApiCallLogRespVO.class,
BeanUtils.toBean(list, ApiCallLogRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apicalllog.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 ApiCallLogPageReqVO extends PageParam {
@Schema(description = "调用用户ID", example = "25965")
private Long userId;
@Schema(description = "调用的API ID", example = "11672")
private Long apiId;
@Schema(description = "响应状态(如200, 500等)", example = "2")
private String responseStatus;
@Schema(description = "调用时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] callTime;
@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.apicalllog.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 ApiCallLogRespVO {
@Schema(description = "调用日志ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8682")
@ExcelProperty("调用日志ID")
private Long id;
@Schema(description = "调用用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25965")
@ExcelProperty("调用用户ID")
private Long userId;
@Schema(description = "调用的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11672")
@ExcelProperty("调用的API ID")
private Long apiId;
@Schema(description = "请求参数")
@ExcelProperty("请求参数")
private String requestParams;
@Schema(description = "响应状态(如200, 500等)", example = "2")
@ExcelProperty("响应状态(如200, 500等)")
private String responseStatus;
@Schema(description = "调用时间")
@ExcelProperty("调用时间")
private LocalDateTime callTime;
@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.apicalllog.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - API 调用日志新增/修改 Request VO")
@Data
public class ApiCallLogSaveReqVO {
@Schema(description = "调用日志ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8682")
private Long id;
@Schema(description = "调用用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25965")
@NotNull(message = "调用用户ID不能为空")
private Long userId;
@Schema(description = "调用的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11672")
@NotNull(message = "调用的API ID不能为空")
private Long apiId;
@Schema(description = "请求参数")
private String requestParams;
@Schema(description = "响应状态(如200, 500等)", example = "2")
private String responseStatus;
@Schema(description = "调用时间")
private LocalDateTime callTime;
@Schema(description = "备注", example = "你猜")
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiorder;
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.apiorder.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
import com.luhu.computility.module.apihub.service.apiorder.ApiOrderService;
@Tag(name = "管理后台 - api订单")
@RestController
@RequestMapping("/apihub/api-order")
@Validated
public class ApiOrderController {
@Resource
private ApiOrderService apiOrderService;
@PostMapping("/create")
@Operation(summary = "创建api订单")
@PreAuthorize("@ss.hasPermission('apihub:api-order:create')")
public CommonResult<Long> createApiOrder(@Valid @RequestBody ApiOrderSaveReqVO createReqVO) {
return success(apiOrderService.createApiOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新api订单")
@PreAuthorize("@ss.hasPermission('apihub:api-order:update')")
public CommonResult<Boolean> updateApiOrder(@Valid @RequestBody ApiOrderSaveReqVO updateReqVO) {
apiOrderService.updateApiOrder(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除api订单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api-order:delete')")
public CommonResult<Boolean> deleteApiOrder(@RequestParam("id") Long id) {
apiOrderService.deleteApiOrder(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除api订单")
@PreAuthorize("@ss.hasPermission('apihub:api-order:delete')")
public CommonResult<Boolean> deleteApiOrderList(@RequestParam("ids") List<Long> ids) {
apiOrderService.deleteApiOrderListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得api订单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api-order:query')")
public CommonResult<ApiOrderRespVO> getApiOrder(@RequestParam("id") Long id) {
ApiOrderDO apiOrder = apiOrderService.getApiOrder(id);
return success(BeanUtils.toBean(apiOrder, ApiOrderRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得api订单分页")
@PreAuthorize("@ss.hasPermission('apihub:api-order:query')")
public CommonResult<PageResult<ApiOrderRespVO>> getApiOrderPage(@Valid ApiOrderPageReqVO pageReqVO) {
PageResult<ApiOrderDO> pageResult = apiOrderService.getApiOrderPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiOrderRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出api订单 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-order:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiOrderExcel(@Valid ApiOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiOrderDO> list = apiOrderService.getApiOrderPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "api订单.xls", "数据", ApiOrderRespVO.class,
BeanUtils.toBean(list, ApiOrderRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apiorder.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.luhu.computility.framework.common.pojo.PageParam;
import java.math.BigDecimal;
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 ApiOrderPageReqVO extends PageParam {
@Schema(description = "下单用户ID", example = "3895")
private Long userId;
@Schema(description = "购买的API ID", example = "10347")
private Long apiId;
@Schema(description = "购买的套餐ID", example = "8957")
private Long packageId;
@Schema(description = "订单编号")
private String orderNo;
@Schema(description = "订单状态:0=待支付,1=已支付,2=已取消", example = "2")
private Integer status;
@Schema(description = "支付订单编号", example = "14961")
private Long payOrderId;
@Schema(description = "订单支付时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] payTime;
@Schema(description = "支付成功的支付渠道")
private String payChannelCode;
@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.apiorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - api订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ApiOrderRespVO {
@Schema(description = "订单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30231")
@ExcelProperty("订单ID")
private Long id;
@Schema(description = "下单用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3895")
@ExcelProperty("下单用户ID")
private Long userId;
@Schema(description = "购买的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
@ExcelProperty("购买的API ID")
private Long apiId;
@Schema(description = "购买的套餐ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
@ExcelProperty("购买的套餐ID")
private Long packageId;
@Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单编号")
private String orderNo;
@Schema(description = "订单金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单金额(元)")
private BigDecimal amount;
@Schema(description = "订单状态:0=待支付,1=已支付,2=已取消", example = "2")
@ExcelProperty("订单状态:0=待支付,1=已支付,2=已取消")
private Integer status;
@Schema(description = "支付订单编号", example = "14961")
@ExcelProperty("支付订单编号")
private Long payOrderId;
@Schema(description = "订单支付时间")
@ExcelProperty("订单支付时间")
private LocalDateTime payTime;
@Schema(description = "支付成功的支付渠道")
@ExcelProperty("支付成功的支付渠道")
private String payChannelCode;
@Schema(description = "订单完成时间")
@ExcelProperty("订单完成时间")
private LocalDateTime finishTime;
@Schema(description = "订单取消时间")
@ExcelProperty("订单取消时间")
private LocalDateTime cancelTime;
@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.apiorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - api订单新增/修改 Request VO")
@Data
public class ApiOrderSaveReqVO {
@Schema(description = "订单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30231")
private Long id;
@Schema(description = "下单用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3895")
@NotNull(message = "下单用户ID不能为空")
private Long userId;
@Schema(description = "购买的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
@NotNull(message = "购买的API ID不能为空")
private Long apiId;
@Schema(description = "购买的套餐ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
@NotNull(message = "购买的套餐ID不能为空")
private Long packageId;
@Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "订单编号不能为空")
private String orderNo;
@Schema(description = "订单金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单金额(元)不能为空")
private BigDecimal amount;
@Schema(description = "订单状态:0=待支付,1=已支付,2=已取消", example = "2")
private Integer status;
@Schema(description = "支付订单编号", example = "14961")
private Long payOrderId;
@Schema(description = "订单支付时间")
private LocalDateTime payTime;
@Schema(description = "支付成功的支付渠道")
private String payChannelCode;
@Schema(description = "订单完成时间")
private LocalDateTime finishTime;
@Schema(description = "订单取消时间")
private LocalDateTime cancelTime;
@Schema(description = "备注", example = "你说的对")
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apipackage;
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.apipackage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
@Tag(name = "管理后台 - API 套餐")
@RestController
@RequestMapping("/apihub/api-package")
@Validated
public class ApiPackageController {
@Resource
private ApiPackageService apiPackageService;
@PostMapping("/create")
@Operation(summary = "创建API 套餐")
@PreAuthorize("@ss.hasPermission('apihub:api-package:create')")
public CommonResult<Long> createApiPackage(@Valid @RequestBody ApiPackageSaveReqVO createReqVO) {
return success(apiPackageService.createApiPackage(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新API 套餐")
@PreAuthorize("@ss.hasPermission('apihub:api-package:update')")
public CommonResult<Boolean> updateApiPackage(@Valid @RequestBody ApiPackageSaveReqVO updateReqVO) {
apiPackageService.updateApiPackage(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除API 套餐")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api-package:delete')")
public CommonResult<Boolean> deleteApiPackage(@RequestParam("id") Long id) {
apiPackageService.deleteApiPackage(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除API 套餐")
@PreAuthorize("@ss.hasPermission('apihub:api-package:delete')")
public CommonResult<Boolean> deleteApiPackageList(@RequestParam("ids") List<Long> ids) {
apiPackageService.deleteApiPackageListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得API 套餐")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api-package:query')")
public CommonResult<ApiPackageRespVO> getApiPackage(@RequestParam("id") Long id) {
ApiPackageDO apiPackage = apiPackageService.getApiPackage(id);
return success(BeanUtils.toBean(apiPackage, ApiPackageRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得API 套餐分页")
@PreAuthorize("@ss.hasPermission('apihub:api-package:query')")
public CommonResult<PageResult<ApiPackageRespVO>> getApiPackagePage(@Valid ApiPackagePageReqVO pageReqVO) {
PageResult<ApiPackageDO> pageResult = apiPackageService.getApiPackagePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiPackageRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出API 套餐 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-package:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiPackageExcel(@Valid ApiPackagePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiPackageDO> list = apiPackageService.getApiPackagePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API 套餐.xls", "数据", ApiPackageRespVO.class,
BeanUtils.toBean(list, ApiPackageRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apipackage.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.luhu.computility.framework.common.pojo.PageParam;
import java.math.BigDecimal;
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 ApiPackagePageReqVO extends PageParam {
@Schema(description = "关联的API ID", example = "23999")
private Long apiId;
@Schema(description = "套餐名称", example = "芋艿")
private String name;
@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.apipackage.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - API 套餐 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ApiPackageRespVO {
@Schema(description = "套餐ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1592")
@ExcelProperty("套餐ID")
private Long id;
@Schema(description = "关联的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23999")
@ExcelProperty("关联的API ID")
private Long apiId;
@Schema(description = "套餐名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("套餐名称")
private String name;
@Schema(description = "可调用次数", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("可调用次数")
private Integer times;
@Schema(description = "价格(元)", requiredMode = Schema.RequiredMode.REQUIRED, example = "9887")
@ExcelProperty("价格(元)")
private BigDecimal price;
@Schema(description = "有效期(天),0表示永久有效")
@ExcelProperty("有效期(天),0表示永久有效")
private Integer validDays;
@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.apipackage.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - API 套餐新增/修改 Request VO")
@Data
public class ApiPackageSaveReqVO {
@Schema(description = "套餐ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1592")
private Long id;
@Schema(description = "关联的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23999")
private Long apiId;
@Schema(description = "套餐名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "套餐名称不能为空")
private String name;
@Schema(description = "可调用次数", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "可调用次数不能为空")
private Integer times;
@Schema(description = "价格(元)", requiredMode = Schema.RequiredMode.REQUIRED, example = "9887")
@NotNull(message = "价格(元)不能为空")
private Long price;
@Schema(description = "有效期(天),0表示永久有效")
private Integer validDays;
@Schema(description = "有效期(天),0表示永久有效")
private Boolean status;
@Schema(description = "备注", example = "随便")
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.userapiusage;
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.userapiusage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.userapiusage.UserApiUsageDO;
import com.luhu.computility.module.apihub.service.userapiusage.UserApiUsageService;
@Tag(name = "管理后台 - 用户 API 使用统计")
@RestController
@RequestMapping("/apihub/user-api-usage")
@Validated
public class UserApiUsageController {
@Resource
private UserApiUsageService userApiUsageService;
@PostMapping("/create")
@Operation(summary = "创建用户 API 使用统计")
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:create')")
public CommonResult<Long> createUserApiUsage(@Valid @RequestBody UserApiUsageSaveReqVO createReqVO) {
return success(userApiUsageService.createUserApiUsage(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新用户 API 使用统计")
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:update')")
public CommonResult<Boolean> updateUserApiUsage(@Valid @RequestBody UserApiUsageSaveReqVO updateReqVO) {
userApiUsageService.updateUserApiUsage(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除用户 API 使用统计")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:delete')")
public CommonResult<Boolean> deleteUserApiUsage(@RequestParam("id") Long id) {
userApiUsageService.deleteUserApiUsage(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除用户 API 使用统计")
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:delete')")
public CommonResult<Boolean> deleteUserApiUsageList(@RequestParam("ids") List<Long> ids) {
userApiUsageService.deleteUserApiUsageListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得用户 API 使用统计")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:query')")
public CommonResult<UserApiUsageRespVO> getUserApiUsage(@RequestParam("id") Long id) {
UserApiUsageDO userApiUsage = userApiUsageService.getUserApiUsage(id);
return success(BeanUtils.toBean(userApiUsage, UserApiUsageRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得用户 API 使用统计分页")
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:query')")
public CommonResult<PageResult<UserApiUsageRespVO>> getUserApiUsagePage(@Valid UserApiUsagePageReqVO pageReqVO) {
PageResult<UserApiUsageDO> pageResult = userApiUsageService.getUserApiUsagePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, UserApiUsageRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出用户 API 使用统计 Excel")
@PreAuthorize("@ss.hasPermission('apihub:user-api-usage:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportUserApiUsageExcel(@Valid UserApiUsagePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<UserApiUsageDO> list = userApiUsageService.getUserApiUsagePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "用户 API 使用统计.xls", "数据", UserApiUsageRespVO.class,
BeanUtils.toBean(list, UserApiUsageRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.userapiusage.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 UserApiUsagePageReqVO extends PageParam {
@Schema(description = "用户ID", example = "26592")
private Long userId;
@Schema(description = "API ID", example = "8522")
private Long apiId;
@Schema(description = "购买总次数")
private Integer totalTimes;
@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.userapiusage.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 UserApiUsageRespVO {
@Schema(description = "记录ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2826")
@ExcelProperty("记录ID")
private Long id;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26592")
@ExcelProperty("用户ID")
private Long userId;
@Schema(description = "API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8522")
@ExcelProperty("API ID")
private Long apiId;
@Schema(description = "购买总次数", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("购买总次数")
private Integer totalTimes;
@Schema(description = "已使用次数", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("已使用次数")
private Integer usedTimes;
@Schema(description = "过期时间")
@ExcelProperty("过期时间")
private LocalDateTime expireTime;
@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.userapiusage.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 用户 API 使用统计新增/修改 Request VO")
@Data
public class UserApiUsageSaveReqVO {
@Schema(description = "记录ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2826")
private Long id;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26592")
@NotNull(message = "用户ID不能为空")
private Long userId;
@Schema(description = "API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8522")
@NotNull(message = "API ID不能为空")
private Long apiId;
@Schema(description = "购买总次数", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "购买总次数不能为空")
private Integer totalTimes;
@Schema(description = "已使用次数", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "已使用次数不能为空")
private Integer usedTimes;
@Schema(description = "过期时间")
private LocalDateTime expireTime;
@Schema(description = "备注", example = "随便")
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.api;
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")
@KeySequence("apihub_api_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiDO extends BaseDO {
/**
* API ID
*/
@TableId
private Long id;
/**
* API 名称
*/
private String name;
/**
* API 简介
*/
private String description;
/**
* API 详细介绍
*/
private String detail;
/**
* 接口文档内容
*/
private String doc;
/**
* 状态:1=上架,0=下架
*/
private Integer status;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.apicalllog;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
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_call_log")
@KeySequence("apihub_api_call_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiCallLogDO extends BaseDO {
/**
* 调用日志ID
*/
@TableId
private Long id;
/**
* 调用用户ID
*/
private Long userId;
/**
* 调用的API ID
*/
private Long apiId;
/**
* 请求参数
*/
private String requestParams;
/**
* 响应状态(如200, 500等)
*/
private String responseStatus;
/**
* 调用时间
*/
private LocalDateTime callTime;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.apiorder;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
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_order")
@KeySequence("apihub_api_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiOrderDO extends BaseDO {
/**
* 订单ID
*/
@TableId
private Long id;
/**
* 下单用户ID
*/
private Long userId;
/**
* 购买的API ID
*/
private Long apiId;
/**
* 购买的套餐ID
*/
private Long packageId;
/**
* 购买的套餐名
*/
private String packageName;
/**
* 购买的套餐单价
*/
private Long packagePrice;
/**
* 订单编号
*/
private String orderNo;
/**
* 订单金额(元)
*/
private BigDecimal amount;
/**
* 订单状态:0=待支付,1=已支付,2=已取消
*/
private Integer status;
/**
* 支付订单编号
*/
private Long payOrderId;
/**
* 订单支付时间
*/
private LocalDateTime payTime;
/**
* 支付成功的支付渠道
*/
private String payChannelCode;
/**
* 订单完成时间
*/
private LocalDateTime finishTime;
/**
* 订单取消时间
*/
private LocalDateTime cancelTime;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.apipackage;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
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_package")
@KeySequence("apihub_api_package_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiPackageDO extends BaseDO {
/**
* 套餐ID
*/
@TableId
private Long id;
/**
* 关联的API ID
*/
private Long apiId;
/**
* 套餐名称
*/
private String name;
/**
* 可调用次数
*/
private Integer times;
/**
* 价格(元)
*/
private BigDecimal price;
/**
* 有效期(天),0表示永久有效
*/
private Integer validDays;
/**
* 上架状态
*/
private Boolean status;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.userapiusage;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
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_user_api_usage")
@KeySequence("apihub_user_api_usage_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserApiUsageDO extends BaseDO {
/**
* 记录ID
*/
@TableId
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* API ID
*/
private Long apiId;
/**
* 购买总次数
*/
private Integer totalTimes;
/**
* 已使用次数
*/
private Integer usedTimes;
/**
* 过期时间
*/
private LocalDateTime expireTime;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.api;
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.api.ApiDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.api.vo.*;
/**
* API信息 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiMapper extends BaseMapperX<ApiDO> {
default PageResult<ApiDO> selectPage(ApiPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiDO>()
.likeIfPresent(ApiDO::getName, reqVO.getName())
.eqIfPresent(ApiDO::getStatus, reqVO.getStatus())
.betweenIfPresent(ApiDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiDO::getId));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.apicalllog;
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.apicalllog.ApiCallLogDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.*;
/**
* API 调用日志 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiCallLogMapper extends BaseMapperX<ApiCallLogDO> {
default PageResult<ApiCallLogDO> selectPage(ApiCallLogPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiCallLogDO>()
.eqIfPresent(ApiCallLogDO::getUserId, reqVO.getUserId())
.eqIfPresent(ApiCallLogDO::getApiId, reqVO.getApiId())
.eqIfPresent(ApiCallLogDO::getResponseStatus, reqVO.getResponseStatus())
.betweenIfPresent(ApiCallLogDO::getCallTime, reqVO.getCallTime())
.betweenIfPresent(ApiCallLogDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiCallLogDO::getId));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.apiorder;
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.apiorder.ApiOrderDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.apiorder.vo.*;
/**
* api订单 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiOrderMapper extends BaseMapperX<ApiOrderDO> {
default PageResult<ApiOrderDO> selectPage(ApiOrderPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiOrderDO>()
.eqIfPresent(ApiOrderDO::getUserId, reqVO.getUserId())
.eqIfPresent(ApiOrderDO::getApiId, reqVO.getApiId())
.eqIfPresent(ApiOrderDO::getPackageId, reqVO.getPackageId())
.eqIfPresent(ApiOrderDO::getOrderNo, reqVO.getOrderNo())
.eqIfPresent(ApiOrderDO::getStatus, reqVO.getStatus())
.eqIfPresent(ApiOrderDO::getPayOrderId, reqVO.getPayOrderId())
.betweenIfPresent(ApiOrderDO::getPayTime, reqVO.getPayTime())
.eqIfPresent(ApiOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
.betweenIfPresent(ApiOrderDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiOrderDO::getId));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.apipackage;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.QueryWrapperX;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.*;
/**
* API 套餐 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiPackageMapper extends BaseMapperX<ApiPackageDO> {
default PageResult<ApiPackageDO> selectPage(ApiPackagePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiPackageDO>()
.eqIfPresent(ApiPackageDO::getApiId, reqVO.getApiId())
.likeIfPresent(ApiPackageDO::getName, reqVO.getName())
.betweenIfPresent(ApiPackageDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiPackageDO::getId));
}
default List<ApiPackageDO> selectByApiId(Long id) {
return selectList(new LambdaQueryWrapperX<ApiPackageDO>()
.eqIfPresent(ApiPackageDO::getApiId, id)
.orderByDesc(ApiPackageDO::getId));
}
default boolean deleteApiPackageByApiId(Long id ) {
return this.delete(new LambdaQueryWrapper<ApiPackageDO>()
.eq(ApiPackageDO::getApiId, id)) > 0;
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.userapiusage;
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.userapiusage.UserApiUsageDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.userapiusage.vo.*;
/**
* 用户 API 使用统计 Mapper
*
* @author ljq
*/
@Mapper
public interface UserApiUsageMapper extends BaseMapperX<UserApiUsageDO> {
default PageResult<UserApiUsageDO> selectPage(UserApiUsagePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<UserApiUsageDO>()
.eqIfPresent(UserApiUsageDO::getUserId, reqVO.getUserId())
.eqIfPresent(UserApiUsageDO::getApiId, reqVO.getApiId())
.eqIfPresent(UserApiUsageDO::getTotalTimes, reqVO.getTotalTimes())
.betweenIfPresent(UserApiUsageDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(UserApiUsageDO::getId));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.enums;
import com.luhu.computility.framework.common.exception.ErrorCode;
/**
* ApiHub 错误码枚举类
* <p>
* ApiHub 系统,使用 1-010-000-000 段
*/
public interface ErrorCodeConstants {
ErrorCode USER_API_USAGE_NOT_EXISTS = new ErrorCode(1_010_001_000, "用户 API 使用统计不存在");
ErrorCode API_CALL_LOG_NOT_EXISTS = new ErrorCode(1_010_001_001, " API 日志不存在");
ErrorCode API_NOT_EXISTS = new ErrorCode(1_010_001_002, " API 模块不存在");
ErrorCode API_ORDER_NOT_EXISTS = new ErrorCode(1_010_001_003, " API 订单不存在");
ErrorCode API_PACKAGE_NOT_EXISTS = new ErrorCode(1_010_001_004, " API 套餐不存在");
}
package com.luhu.computility.module.apihub.service.api;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.api.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* API信息 Service 接口
*
* @author ljq
*/
public interface ApiService {
/**
* 创建API信息
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApi(@Valid ApiSaveReqVO createReqVO);
/**
* 更新API信息
*
* @param updateReqVO 更新信息
*/
void updateApi(@Valid ApiSaveReqVO updateReqVO);
/**
* 删除API信息
*
* @param id 编号
*/
void deleteApi(Long id);
/**
* 批量删除API信息
*
* @param ids 编号
*/
void deleteApiListByIds(List<Long> ids);
/**
* 获得API信息
*
* @param id 编号
* @return API信息
*/
ApiDO getApi(Long id);
/**
* 获得API信息分页
*
* @param pageReqVO 分页查询
* @return API信息分页
*/
PageResult<ApiDO> getApiPage(ApiPageReqVO pageReqVO);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.api;
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.api.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
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.api.ApiMapper;
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 ApiServiceImpl implements ApiService {
@Resource
private ApiMapper apiMapper;
@Override
public Long createApi(ApiSaveReqVO createReqVO) {
// 插入
ApiDO api = BeanUtils.toBean(createReqVO, ApiDO.class);
apiMapper.insert(api);
// 返回
return api.getId();
}
@Override
public void updateApi(ApiSaveReqVO updateReqVO) {
// 校验存在
validateApiExists(updateReqVO.getId());
// 更新
ApiDO updateObj = BeanUtils.toBean(updateReqVO, ApiDO.class);
apiMapper.updateById(updateObj);
}
@Override
public void deleteApi(Long id) {
// 校验存在
validateApiExists(id);
// 删除
apiMapper.deleteById(id);
}
@Override
public void deleteApiListByIds(List<Long> ids) {
// 删除
apiMapper.deleteByIds(ids);
}
private void validateApiExists(Long id) {
if (apiMapper.selectById(id) == null) {
throw exception(API_NOT_EXISTS);
}
}
@Override
public ApiDO getApi(Long id) {
return apiMapper.selectById(id);
}
@Override
public PageResult<ApiDO> getApiPage(ApiPageReqVO pageReqVO) {
return apiMapper.selectPage(pageReqVO);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apicalllog;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicalllog.ApiCallLogDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* API 调用日志 Service 接口
*
* @author ljq
*/
public interface ApiCallLogService {
/**
* 创建API 调用日志
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApiCallLog(@Valid ApiCallLogSaveReqVO createReqVO);
/**
* 更新API 调用日志
*
* @param updateReqVO 更新信息
*/
void updateApiCallLog(@Valid ApiCallLogSaveReqVO updateReqVO);
/**
* 删除API 调用日志
*
* @param id 编号
*/
void deleteApiCallLog(Long id);
/**
* 批量删除API 调用日志
*
* @param ids 编号
*/
void deleteApiCallLogListByIds(List<Long> ids);
/**
* 获得API 调用日志
*
* @param id 编号
* @return API 调用日志
*/
ApiCallLogDO getApiCallLog(Long id);
/**
* 获得API 调用日志分页
*
* @param pageReqVO 分页查询
* @return API 调用日志分页
*/
PageResult<ApiCallLogDO> getApiCallLogPage(ApiCallLogPageReqVO pageReqVO);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apicalllog;
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.apicalllog.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicalllog.ApiCallLogDO;
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.apicalllog.ApiCallLogMapper;
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 ApiCallLogServiceImpl implements ApiCallLogService {
@Resource
private ApiCallLogMapper apiCallLogMapper;
@Override
public Long createApiCallLog(ApiCallLogSaveReqVO createReqVO) {
// 插入
ApiCallLogDO apiCallLog = BeanUtils.toBean(createReqVO, ApiCallLogDO.class);
apiCallLogMapper.insert(apiCallLog);
// 返回
return apiCallLog.getId();
}
@Override
public void updateApiCallLog(ApiCallLogSaveReqVO updateReqVO) {
// 校验存在
validateApiCallLogExists(updateReqVO.getId());
// 更新
ApiCallLogDO updateObj = BeanUtils.toBean(updateReqVO, ApiCallLogDO.class);
apiCallLogMapper.updateById(updateObj);
}
@Override
public void deleteApiCallLog(Long id) {
// 校验存在
validateApiCallLogExists(id);
// 删除
apiCallLogMapper.deleteById(id);
}
@Override
public void deleteApiCallLogListByIds(List<Long> ids) {
// 删除
apiCallLogMapper.deleteByIds(ids);
}
private void validateApiCallLogExists(Long id) {
if (apiCallLogMapper.selectById(id) == null) {
throw exception(API_CALL_LOG_NOT_EXISTS);
}
}
@Override
public ApiCallLogDO getApiCallLog(Long id) {
return apiCallLogMapper.selectById(id);
}
@Override
public PageResult<ApiCallLogDO> getApiCallLogPage(ApiCallLogPageReqVO pageReqVO) {
return apiCallLogMapper.selectPage(pageReqVO);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apiorder;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apiorder.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* api订单 Service 接口
*
* @author ljq
*/
public interface ApiOrderService {
/**
* 创建api订单
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApiOrder(@Valid ApiOrderSaveReqVO createReqVO);
/**
* 更新api订单
*
* @param updateReqVO 更新信息
*/
void updateApiOrder(@Valid ApiOrderSaveReqVO updateReqVO);
/**
* 删除api订单
*
* @param id 编号
*/
void deleteApiOrder(Long id);
/**
* 批量删除api订单
*
* @param ids 编号
*/
void deleteApiOrderListByIds(List<Long> ids);
/**
* 获得api订单
*
* @param id 编号
* @return api订单
*/
ApiOrderDO getApiOrder(Long id);
/**
* 获得api订单分页
*
* @param pageReqVO 分页查询
* @return api订单分页
*/
PageResult<ApiOrderDO> getApiOrderPage(ApiOrderPageReqVO pageReqVO);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apiorder;
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.apiorder.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
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.apiorder.ApiOrderMapper;
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 ApiOrderServiceImpl implements ApiOrderService {
@Resource
private ApiOrderMapper apiOrderMapper;
@Override
public Long createApiOrder(ApiOrderSaveReqVO createReqVO) {
// 插入
ApiOrderDO apiOrder = BeanUtils.toBean(createReqVO, ApiOrderDO.class);
apiOrderMapper.insert(apiOrder);
// 返回
return apiOrder.getId();
}
@Override
public void updateApiOrder(ApiOrderSaveReqVO updateReqVO) {
// 校验存在
validateApiOrderExists(updateReqVO.getId());
// 更新
ApiOrderDO updateObj = BeanUtils.toBean(updateReqVO, ApiOrderDO.class);
apiOrderMapper.updateById(updateObj);
}
@Override
public void deleteApiOrder(Long id) {
// 校验存在
validateApiOrderExists(id);
// 删除
apiOrderMapper.deleteById(id);
}
@Override
public void deleteApiOrderListByIds(List<Long> ids) {
// 删除
apiOrderMapper.deleteByIds(ids);
}
private void validateApiOrderExists(Long id) {
if (apiOrderMapper.selectById(id) == null) {
throw exception(API_ORDER_NOT_EXISTS);
}
}
@Override
public ApiOrderDO getApiOrder(Long id) {
return apiOrderMapper.selectById(id);
}
@Override
public PageResult<ApiOrderDO> getApiOrderPage(ApiOrderPageReqVO pageReqVO) {
return apiOrderMapper.selectPage(pageReqVO);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apipackage;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* API 套餐 Service 接口
*
* @author ljq
*/
public interface ApiPackageService {
/**
* 创建API 套餐
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApiPackage(@Valid ApiPackageSaveReqVO createReqVO);
/**
* 更新API 套餐
*
* @param updateReqVO 更新信息
*/
void updateApiPackage(@Valid ApiPackageSaveReqVO updateReqVO);
/**
* 删除API 套餐
*
* @param id 编号
*/
void deleteApiPackage(Long id);
/**
* 删除某个API下的套餐
*
* @param id 编号
*/
Boolean deleteApiPackageByApiId(Long id);
/**
* 批量删除API 套餐
*
* @param ids 编号
*/
void deleteApiPackageListByIds(List<Long> ids);
/**
* 获得API 套餐
*
* @param id 编号
* @return API 套餐
*/
ApiPackageDO getApiPackage(Long id);
/**
* 获得某api下的API 套餐
*
* @param id 编号
* @return API 套餐列表
*/
List<ApiPackageDO> selectByApiId(Long id);
/**
* 获得API 套餐分页
*
* @param pageReqVO 分页查询
* @return API 套餐分页
*/
PageResult<ApiPackageDO> getApiPackagePage(ApiPackagePageReqVO pageReqVO);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apipackage;
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.apipackage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
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.apipackage.ApiPackageMapper;
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 ApiPackageServiceImpl implements ApiPackageService {
@Resource
private ApiPackageMapper apiPackageMapper;
@Override
public Long createApiPackage(ApiPackageSaveReqVO createReqVO) {
// 插入
ApiPackageDO apiPackage = BeanUtils.toBean(createReqVO, ApiPackageDO.class);
apiPackageMapper.insert(apiPackage);
// 返回
return apiPackage.getId();
}
@Override
public void updateApiPackage(ApiPackageSaveReqVO updateReqVO) {
// 校验存在
validateApiPackageExists(updateReqVO.getId());
// 更新
ApiPackageDO updateObj = BeanUtils.toBean(updateReqVO, ApiPackageDO.class);
apiPackageMapper.updateById(updateObj);
}
@Override
public void deleteApiPackage(Long id) {
// 校验存在
validateApiPackageExists(id);
// 删除
apiPackageMapper.deleteById(id);
}
@Override
public void deleteApiPackageListByIds(List<Long> ids) {
// 删除
apiPackageMapper.deleteByIds(ids);
}
private void validateApiPackageExists(Long id) {
if (apiPackageMapper.selectById(id) == null) {
throw exception(API_PACKAGE_NOT_EXISTS);
}
}
@Override
public ApiPackageDO getApiPackage(Long id) {
return apiPackageMapper.selectById(id);
}
@Override
public PageResult<ApiPackageDO> getApiPackagePage(ApiPackagePageReqVO pageReqVO) {
return apiPackageMapper.selectPage(pageReqVO);
}
@Override
public Boolean deleteApiPackageByApiId(Long id) {
return apiPackageMapper.deleteApiPackageByApiId(id);
}
@Override
public List<ApiPackageDO> selectByApiId(Long id) {
return apiPackageMapper.selectByApiId(id);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.userapiusage;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.userapiusage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.userapiusage.UserApiUsageDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* 用户 API 使用统计 Service 接口
*
* @author ljq
*/
public interface UserApiUsageService {
/**
* 创建用户 API 使用统计
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createUserApiUsage(@Valid UserApiUsageSaveReqVO createReqVO);
/**
* 更新用户 API 使用统计
*
* @param updateReqVO 更新信息
*/
void updateUserApiUsage(@Valid UserApiUsageSaveReqVO updateReqVO);
/**
* 删除用户 API 使用统计
*
* @param id 编号
*/
void deleteUserApiUsage(Long id);
/**
* 批量删除用户 API 使用统计
*
* @param ids 编号
*/
void deleteUserApiUsageListByIds(List<Long> ids);
/**
* 获得用户 API 使用统计
*
* @param id 编号
* @return 用户 API 使用统计
*/
UserApiUsageDO getUserApiUsage(Long id);
/**
* 获得用户 API 使用统计分页
*
* @param pageReqVO 分页查询
* @return 用户 API 使用统计分页
*/
PageResult<UserApiUsageDO> getUserApiUsagePage(UserApiUsagePageReqVO pageReqVO);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.userapiusage;
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.userapiusage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.userapiusage.UserApiUsageDO;
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.userapiusage.UserApiUsageMapper;
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 UserApiUsageServiceImpl implements UserApiUsageService {
@Resource
private UserApiUsageMapper userApiUsageMapper;
@Override
public Long createUserApiUsage(UserApiUsageSaveReqVO createReqVO) {
// 插入
UserApiUsageDO userApiUsage = BeanUtils.toBean(createReqVO, UserApiUsageDO.class);
userApiUsageMapper.insert(userApiUsage);
// 返回
return userApiUsage.getId();
}
@Override
public void updateUserApiUsage(UserApiUsageSaveReqVO updateReqVO) {
// 校验存在
validateUserApiUsageExists(updateReqVO.getId());
// 更新
UserApiUsageDO updateObj = BeanUtils.toBean(updateReqVO, UserApiUsageDO.class);
userApiUsageMapper.updateById(updateObj);
}
@Override
public void deleteUserApiUsage(Long id) {
// 校验存在
validateUserApiUsageExists(id);
// 删除
userApiUsageMapper.deleteById(id);
}
@Override
public void deleteUserApiUsageListByIds(List<Long> ids) {
// 删除
userApiUsageMapper.deleteByIds(ids);
}
private void validateUserApiUsageExists(Long id) {
if (userApiUsageMapper.selectById(id) == null) {
throw exception(USER_API_USAGE_NOT_EXISTS);
}
}
@Override
public UserApiUsageDO getUserApiUsage(Long id) {
return userApiUsageMapper.selectById(id);
}
@Override
public PageResult<UserApiUsageDO> getUserApiUsagePage(UserApiUsagePageReqVO pageReqVO) {
return userApiUsageMapper.selectPage(pageReqVO);
}
}
\ No newline at end of file
package com.luhu.computility.module.biz.controller.app.index; package com.luhu.computility.module.biz.controller.app.index;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.math.Money;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import com.luhu.computility.framework.common.exception.ServiceException;
import com.luhu.computility.framework.common.pojo.CommonResult; import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.biz.controller.admin.bannerinfo.vo.BannerInfoPageReqVO;
import com.luhu.computility.module.biz.controller.admin.bannerinfo.vo.BannerInfoRespVO;
import com.luhu.computility.module.biz.controller.admin.computilityinformation.vo.ComputilityInformationRespVO;
import com.luhu.computility.module.biz.controller.admin.solution.vo.SolutionMenuRespVO;
import com.luhu.computility.module.biz.controller.admin.solution.vo.SolutionPageReqVO;
import com.luhu.computility.module.biz.controller.app.index.vo.BizOrderCreateReqVO; import com.luhu.computility.module.biz.controller.app.index.vo.BizOrderCreateReqVO;
import com.luhu.computility.module.biz.controller.app.index.vo.ResourcesDetailRespVO; import com.luhu.computility.module.biz.controller.app.index.vo.ResourcesDetailRespVO;
import com.luhu.computility.module.biz.controller.client.dto.MenuDTO; import com.luhu.computility.module.biz.controller.client.dto.MenuDTO;
import com.luhu.computility.module.biz.dal.dataobject.bannerinfo.BannerInfoDO;
import com.luhu.computility.module.biz.dal.dataobject.solution.SolutionDO;
import com.luhu.computility.module.biz.dal.mysql.solution.SolutionMapper; import com.luhu.computility.module.biz.dal.mysql.solution.SolutionMapper;
import com.luhu.computility.module.biz.service.bannerinfo.BannerInfoService;
import com.luhu.computility.module.biz.service.order.OrderService; import com.luhu.computility.module.biz.service.order.OrderService;
import com.luhu.computility.module.biz.service.resources.ResourcesDetailService; import com.luhu.computility.module.biz.service.resources.ResourcesDetailService;
import com.luhu.computility.module.biz.service.solution.SolutionService; import com.luhu.computility.module.biz.service.solution.SolutionService;
import com.luhu.computility.module.product.dal.dataobject.category.ProductCategoryDO;
import com.luhu.computility.module.product.dal.dataobject.sku.ProductSkuDO; import com.luhu.computility.module.product.dal.dataobject.sku.ProductSkuDO;
import com.luhu.computility.module.product.dal.dataobject.spu.ProductSpuDO; import com.luhu.computility.module.product.dal.dataobject.spu.ProductSpuDO;
import com.luhu.computility.module.product.enums.spu.ProductSpuStatusEnum;
import com.luhu.computility.module.product.service.category.ProductCategoryService; import com.luhu.computility.module.product.service.category.ProductCategoryService;
import com.luhu.computility.module.product.service.sku.ProductSkuService; import com.luhu.computility.module.product.service.sku.ProductSkuService;
import com.luhu.computility.module.product.service.spu.ProductSpuService; import com.luhu.computility.module.product.service.spu.ProductSpuService;
import com.luhu.computility.module.system.dal.dataobject.dict.DictDataDO; import com.luhu.computility.module.system.dal.dataobject.dict.DictDataDO;
import com.luhu.computility.module.system.util.dict.DictUtils; import com.luhu.computility.module.system.util.dict.DictUtils;
import io.netty.util.internal.ObjectUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.java.Log;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.checkerframework.checker.units.qual.C;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.cache.RedisCache;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.pojo.CommonResult.error; import static com.luhu.computility.framework.common.pojo.CommonResult.error;
import static com.luhu.computility.framework.common.pojo.CommonResult.success; import static com.luhu.computility.framework.common.pojo.CommonResult.success;
import static com.luhu.computility.module.biz.enums.ErrorCodeConstants.GET_SOLUTION_ERROR;
import static com.luhu.computility.module.product.enums.ErrorCodeConstants.SPU_NOT_ENABLE;
import static com.luhu.computility.module.product.enums.ErrorCodeConstants.SPU_NOT_EXISTS; import static com.luhu.computility.module.product.enums.ErrorCodeConstants.SPU_NOT_EXISTS;
/** /**
...@@ -81,7 +46,7 @@ import static com.luhu.computility.module.product.enums.ErrorCodeConstants.SPU_N ...@@ -81,7 +46,7 @@ import static com.luhu.computility.module.product.enums.ErrorCodeConstants.SPU_N
@RestController @RestController
@RequestMapping("/api/v1") @RequestMapping("/api/v1")
@Validated @Validated
public class ApiController { public class ApiControllerUnuse {
@Resource @Resource
private ProductSpuService productSpuService; private ProductSpuService productSpuService;
@Resource @Resource
......
...@@ -92,6 +92,11 @@ ...@@ -92,6 +92,11 @@
<artifactId>computility-module-biz</artifactId> <artifactId>computility-module-biz</artifactId>
<version>${revision}</version> <version>${revision}</version>
</dependency> </dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-apihub</artifactId>
<version>${revision}</version>
</dependency>
<!-- CRM 相关模块。默认注释,保证编译速度 --> <!-- CRM 相关模块。默认注释,保证编译速度 -->
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
<module>computility-module-pay</module> <module>computility-module-pay</module>
<module>computility-module-mall</module> <module>computility-module-mall</module>
<module>computility-module-biz</module> <module>computility-module-biz</module>
<module>computility-module-apihub</module>
<!-- <module>computility-module-crm</module>--> <!-- <module>computility-module-crm</module>-->
<!-- <module>computility-module-erp</module>--> <!-- <module>computility-module-erp</module>-->
<!-- <module>computility-module-iot</module>--> <!-- <module>computility-module-iot</module>-->
......
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