Commit 9c2888c7 by lijinqi

api应用相关生成代码;

api信息新增、编辑、上下架接口完成
api应用市场截止到创建api交易订单
parent 9766fbf7
package com.luhu.computility.module.apihub.controller.admin.api;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
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;
......@@ -69,13 +70,12 @@ public class ApiController {
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()) {
if (ObjectUtil.isEmpty(apiPackageSaveReqVO.getId())) {
apiPackageSaveReqVO.setApiId(updateReqVO.getId());
apiPackageService.createApiPackage(apiPackageSaveReqVO);
} else {
apiPackageService.updateApiPackage(BeanUtils.toBean(apiPackageSaveReqVO,ApiPackageSaveReqVO.class));
}
}
}
......@@ -116,8 +116,7 @@ public class ApiController {
@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));
return success(apiService.getApiPage(pageReqVO));
}
@GetMapping("/export-excel")
......@@ -127,7 +126,7 @@ public class ApiController {
public void exportApiExcel(@Valid ApiPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiDO> list = apiService.getApiPage(pageReqVO).getList();
List<ApiRespVO> list = apiService.getApiPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API信息.xls", "数据", ApiRespVO.class,
BeanUtils.toBean(list, ApiRespVO.class));
......
package com.luhu.computility.module.apihub.controller.admin.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -19,6 +20,15 @@ public class ApiPageReqVO extends PageParam {
@Schema(description = "状态:1=上架,0=下架", example = "1")
private Integer status;
@Schema(description = "API 分类", example = "4891084201")
@ExcelProperty("API 分类")
private Long categoryId;
@Schema(description = "关键字查找", example = "通用型API")
@ExcelProperty("关键字查找")
private String searchQuery;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
......
......@@ -26,6 +26,23 @@ public class ApiRespVO {
@ExcelProperty("API 简介")
private String description;
@Schema(description = "API 最低价格描述", example = "你说的对")
@ExcelProperty("API 最低价格描述")
private String priceInfo;
@Schema(description = "API coverimage", example = "https://xxx.png")
@ExcelProperty("API coverimage")
private String coverImage;
@Schema(description = "API 分类", example = "4891084201")
@ExcelProperty("API 分类")
private Long categoryId;
@Schema(description = "API 分类名称", example = "通用api")
@ExcelProperty("API 分类名称")
private String categoryName;
@Schema(description = "API 详细介绍")
@ExcelProperty("API 详细介绍")
private String detail;
......
package com.luhu.computility.module.apihub.controller.admin.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
......@@ -20,6 +21,15 @@ public class ApiSaveReqVO {
@Schema(description = "API 简介", example = "你说的对")
private String description;
@Schema(description = "API 最低价格描述", example = "你说的对")
private String priceInfo;
@Schema(description = "API coverimage", example = "https://xxx.png")
private String coverImage;
@Schema(description = "API 分类")
private Long categoryId;
@Schema(description = "API 详细介绍")
private String detail;
......
package com.luhu.computility.module.apihub.controller.admin.apicategory;
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.apicategory.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import com.luhu.computility.module.apihub.service.apicategory.ApiCategoryService;
@Tag(name = "管理后台 - API分类")
@RestController
@RequestMapping("/apihub/api-category")
@Validated
public class ApiCategoryController {
@Resource
private ApiCategoryService apiCategoryService;
@PostMapping("/create")
@Operation(summary = "创建API分类")
@PreAuthorize("@ss.hasPermission('apihub:api-category:create')")
public CommonResult<Long> createApiCategory(@Valid @RequestBody ApiCategorySaveReqVO createReqVO) {
return success(apiCategoryService.createApiCategory(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新API分类")
@PreAuthorize("@ss.hasPermission('apihub:api-category:update')")
public CommonResult<Boolean> updateApiCategory(@Valid @RequestBody ApiCategorySaveReqVO updateReqVO) {
apiCategoryService.updateApiCategory(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除API分类")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('apihub:api-category:delete')")
public CommonResult<Boolean> deleteApiCategory(@RequestParam("id") Long id) {
apiCategoryService.deleteApiCategory(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除API分类")
@PreAuthorize("@ss.hasPermission('apihub:api-category:delete')")
public CommonResult<Boolean> deleteApiCategoryList(@RequestParam("ids") List<Long> ids) {
apiCategoryService.deleteApiCategoryListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得API分类")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('apihub:api-category:query')")
public CommonResult<ApiCategoryRespVO> getApiCategory(@RequestParam("id") Long id) {
ApiCategoryDO apiCategory = apiCategoryService.getApiCategory(id);
return success(BeanUtils.toBean(apiCategory, ApiCategoryRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得API分类分页")
@PreAuthorize("@ss.hasPermission('apihub:api-category:query')")
public CommonResult<PageResult<ApiCategoryRespVO>> getApiCategoryPage(@Valid ApiCategoryPageReqVO pageReqVO) {
PageResult<ApiCategoryDO> pageResult = apiCategoryService.getApiCategoryPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ApiCategoryRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得API所有分类")
public CommonResult<List<ApiCategoryRespVO>> getAllApiCategory() {
List<ApiCategoryDO> apiCategoryDOS = apiCategoryService.getAllApiCategory();
return success(BeanUtils.toBean(apiCategoryDOS, ApiCategoryRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出API分类 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-category:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiCategoryExcel(@Valid ApiCategoryPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiCategoryDO> list = apiCategoryService.getApiCategoryPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API分类.xls", "数据", ApiCategoryRespVO.class,
BeanUtils.toBean(list, ApiCategoryRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apicategory.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 ApiCategoryPageReqVO extends PageParam {
@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.apicategory.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 ApiCategoryRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4302")
@ExcelProperty("ID")
private Long id;
@Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("分类名称")
private String name;
@Schema(description = "分类简介", example = "你说的对")
@ExcelProperty("分类简介")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.admin.apicategory.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 ApiCategorySaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4302")
private Long id;
@Schema(description = "分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "分类名称不能为空")
private String name;
@Schema(description = "分类简介", example = "你说的对")
private String description;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.app.api;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import com.luhu.computility.module.apihub.controller.admin.api.vo.ApiPageReqVO;
import com.luhu.computility.module.apihub.controller.admin.api.vo.ApiRespVO;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO;
import com.luhu.computility.module.apihub.controller.app.api.vo.AppApiPackageRespVO;
import com.luhu.computility.module.apihub.controller.app.api.vo.AppApiRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.service.api.ApiService;
import com.luhu.computility.module.apihub.service.apicategory.ApiCategoryService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static com.luhu.computility.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 - API信息")
@RestController
@RequestMapping("/apihub/api")
@Validated
public class AppApiController {
@Resource
private ApiService apiService;
@Resource
private ApiCategoryService apiCategoryService;
@Resource
private ApiPackageService apiPackageService;
@GetMapping("/get")
@Operation(summary = "获得API信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PermitAll
public CommonResult<AppApiRespVO> getApi(@RequestParam("id") Long id) {
ApiDO api = apiService.getApi(id);
ApiCategoryDO apiCategory = apiCategoryService.getApiCategory(api.getCategoryId());
AppApiRespVO apiRespVO = BeanUtils.toBean(api, AppApiRespVO.class);
apiRespVO.setCategoryName(apiCategory.getName());
List<ApiPackageDO> apiPackageDOS = apiPackageService.selectByApiId(id);
apiRespVO.setApiPackages(BeanUtils.toBean(apiPackageDOS, AppApiPackageRespVO.class));
return success(apiRespVO);
}
@GetMapping("/page")
@Operation(summary = "获得API信息分页")
@PermitAll
public CommonResult<PageResult<AppApiRespVO>> getApiPage(@Valid ApiPageReqVO pageReqVO) {
PageResult<ApiRespVO> pageResult = apiService.getApiPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AppApiRespVO.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<ApiRespVO> list = apiService.getApiPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "API信息.xls", "数据", AppApiRespVO.class,
BeanUtils.toBean(list, AppApiRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.app.api.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - API 套餐 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppApiPackageRespVO {
@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.app.api.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.ApiPackageRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "用户端 - API信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppApiRespVO {
@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 priceInfo;
@Schema(description = "API coverimage", example = "https://xxx.png")
@ExcelProperty("API coverimage")
private String coverImage;
@Schema(description = "API 分类", example = "4891084201")
@ExcelProperty("API 分类")
private Long categoryId;
@Schema(description = "API 分类名称", example = "通用api")
@ExcelProperty("API 分类名称")
private String categoryName;
@Schema(description = "API 详细介绍")
@ExcelProperty("API 详细介绍")
private String detail;
@Schema(description = "接口文档内容")
@ExcelProperty("接口文档内容")
private String doc;
@Schema(description = "API 简介", example = "你说的对")
@ExcelProperty("API 简介")
private String description;
@Schema(description = "套餐包", example = "[{}]")
private List<AppApiPackageRespVO> apiPackages;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.app.apicategory;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import com.luhu.computility.module.apihub.controller.admin.apicategory.vo.ApiCategoryPageReqVO;
import com.luhu.computility.module.apihub.controller.admin.apicategory.vo.ApiCategoryRespVO;
import com.luhu.computility.module.apihub.controller.admin.apicategory.vo.ApiCategorySaveReqVO;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import com.luhu.computility.module.apihub.service.apicategory.ApiCategoryService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
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.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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static com.luhu.computility.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
@Tag(name = "用户端 - API分类")
@RestController
@RequestMapping("/apihub/api-category")
@Validated
public class AppApiCategoryController {
@Resource
private ApiCategoryService apiCategoryService;
@GetMapping("/list")
@Operation(summary = "获得API所有分类")
@PermitAll
public CommonResult<List<ApiCategoryRespVO>> getAllApiCategory() {
List<ApiCategoryDO> apiCategoryDOS = apiCategoryService.getAllApiCategory();
return success(BeanUtils.toBean(apiCategoryDOS, ApiCategoryRespVO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.app.apiorder;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.security.core.util.SecurityFrameworkUtils;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.service.api.ApiService;
import com.luhu.computility.module.apihub.service.apiorder.ApiOrderService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
@Tag(name = "用户端 - api订单")
@RestController
@RequestMapping("/apihub/api-order")
@Validated
public class AppApiOrderController {
@Resource
private ApiOrderService apiOrderService;
@PostMapping("/create")
@Operation(summary = "创建api订单")
public CommonResult<Long> createApiOrder(@Valid @RequestBody AppApiOrderCreateReqVO createReqVO) {
//创建订单
createReqVO.setUserId(SecurityFrameworkUtils.getLoginUser().getId());
apiOrderService.createOrder(createReqVO);
return null ;//success(apiOrderService.createApiOrder(createReqVO));
}
/*
@PutMapping("/update")
@Operation(summary = "更新api订单")
@PreAuthorize("@ss.hasPermission('apihub:api-order:update')")
public CommonResult<Boolean> updateApiOrder(@Valid @RequestBody AppApiOrderCreateReqVO 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<AppApiOrderRespVO> getApiOrder(@RequestParam("id") Long id) {
ApiOrderDO apiOrder = apiOrderService.getApiOrder(id);
return success(BeanUtils.toBean(apiOrder, AppApiOrderRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得api订单分页")
@PreAuthorize("@ss.hasPermission('apihub:api-order:query')")
public CommonResult<PageResult<AppApiOrderRespVO>> getApiOrderPage(@Valid AppApiOrderPageReqVO pageReqVO) {
PageResult<ApiOrderDO> pageResult = apiOrderService.getApiOrderPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, AppApiOrderRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出api订单 Excel")
@PreAuthorize("@ss.hasPermission('apihub:api-order:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportApiOrderExcel(@Valid AppApiOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ApiOrderDO> list = apiOrderService.getApiOrderPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "api订单.xls", "数据", AppApiOrderRespVO.class,
BeanUtils.toBean(list, AppApiOrderRespVO.class));
}*/
}
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.app.apiorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Schema(description = "用户端 - api订单新增/修改 Request VO")
@Data
public class AppApiOrderCreateReqVO {
@Schema(description = "订单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30231")
private Long id;
@Schema(description = "下单用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3895")
private Long userId;
@Schema(description = "购买的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
@NotNull(message = "购买的API ID不能为空")
private Long apiId;
@Schema(description = "购买的API 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
private String apiName;
@Schema(description = "购买的套餐ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
@NotNull(message = "购买的套餐ID不能为空")
private Long packageId;
@Schema(description = "购买的套餐名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private String packageName;
@Schema(description = "购买的套餐使用次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Integer packageTimes;
@Schema(description = "购买的套餐价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Long packagePrice;
@Schema(description = "购买的套餐有效时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Integer packageValidDays;
@Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderNo;
@Schema(description = "订单金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
private Long 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.app.apiorder.vo;
import com.luhu.computility.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
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 AppApiOrderPageReqVO extends PageParam {
@Schema(description = "下单用户ID", example = "3895")
private Long userId;
@Schema(description = "关键字查询", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
private String searchQuery;
@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.app.apiorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "用户端 - api订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppApiOrderRespVO {
@Schema(description = "订单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30231")
@ExcelProperty("订单ID")
private Long id;
@Schema(description = "购买的API ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
@ExcelProperty("购买的API ID")
private Long apiId;
@Schema(description = "购买的API 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "10347")
private String apiName;
@Schema(description = "购买的套餐ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
@ExcelProperty("购买的套餐ID")
private Long packageId;
@Schema(description = "购买的套餐名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Long packageName;
@Schema(description = "套餐使用次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Long packageTimes;
@Schema(description = "套餐价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Long packagePrice;
@Schema(description = "套餐有效期", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Integer validDays;
@Schema(description = "购买的套餐实际支出价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "8957")
private Long costPrice;
@Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单编号")
private String orderNo;
@Schema(description = "订单金额(元)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单金额(元)")
private Long 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
......@@ -31,6 +31,24 @@ public class ApiDO extends BaseDO {
* API 名称
*/
private String name;
/**
* API 最低价格描述
*/
private String priceInfo;
/**
* API coverimage
*/
private String coverImage;
/**
* API 分类
*/
private Long categoryId;
/**
* API 简介
*/
......
package com.luhu.computility.module.apihub.dal.dataobject.apicategory;
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_category")
@KeySequence("apihub_api_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiCategoryDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
* 分类名称
*/
private String name;
/**
* 分类简介
*/
private String description;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.dataobject.apiorder;
import com.alipay.api.domain.AlipayOpenStsTokenGetModel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
......@@ -40,6 +42,10 @@ public class ApiOrderDO extends BaseDO {
*/
private Long apiId;
/**
* 购买的套餐名称
*/
private String apiName;
/**
* 购买的套餐ID
*/
private Long packageId;
......@@ -48,6 +54,17 @@ public class ApiOrderDO extends BaseDO {
*/
private String packageName;
/**
* 购买的套餐使用次数
*/
private Long packageTimes;
/**
* 购买的套餐有效期
*/
private Integer validDays;
/**
* 购买的套餐实际费用
*/private Long costPrice;
/**
* 购买的套餐单价
*/
private Long packagePrice;
......@@ -88,5 +105,18 @@ public class ApiOrderDO extends BaseDO {
*/
private String remark;
/**
* ip
*/
private String userIp;
/**
* 退款状态
*/
private Integer refundStatus;
/**
* 退款金额,单位:分
*/
private Integer refundPrice;
}
\ No newline at end of file
......@@ -43,7 +43,7 @@ public class ApiPackageDO extends BaseDO {
/**
* 价格(元)
*/
private BigDecimal price;
private Long price;
/**
* 有效期(天),0表示永久有效
*/
......
......@@ -2,10 +2,14 @@ package com.luhu.computility.module.apihub.dal.mysql.api;
import java.util.*;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.api.vo.*;
......@@ -21,8 +25,29 @@ public interface ApiMapper extends BaseMapperX<ApiDO> {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiDO>()
.likeIfPresent(ApiDO::getName, reqVO.getName())
.eqIfPresent(ApiDO::getStatus, reqVO.getStatus())
.eqIfPresent(ApiDO::getCategoryId, reqVO.getCategoryId())
.betweenIfPresent(ApiDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiDO::getId));
}
default PageResult<ApiRespVO> selectJoinPage(ApiPageReqVO reqVO) {
return selectJoinPage(reqVO, ApiRespVO.class , new MPJLambdaWrapperX<ApiDO>()
.selectAll(ApiDO.class)
.selectAs(ApiCategoryDO :: getName, ApiRespVO :: getCategoryName)
.leftJoin(ApiCategoryDO.class, ApiCategoryDO::getId, ApiDO::getCategoryId)
.eq(!ObjectUtil.isEmpty(reqVO.getCategoryId()), ApiCategoryDO::getId, reqVO.getCategoryId() )
.like(!StringUtils.isEmpty(reqVO.getSearchQuery()), ApiCategoryDO::getName, reqVO.getSearchQuery())
.or(!StringUtils.isEmpty(reqVO.getSearchQuery()))
.like(!StringUtils.isEmpty(reqVO.getSearchQuery()), ApiDO::getName, reqVO.getSearchQuery())
.orderByDesc(ApiDO::getId));
}
/*selectJoinPage(queryVO, ProductSkuRespVO.class, new MPJLambdaWrapperX<ProductSkuDO>()
.selectAll(ProductSkuDO.class)
.select(ProductSpuDO::getName)
.leftJoin(ProductSpuDO.class, ProductSpuDO::getId, ProductSkuDO::getSpuId)
.eq(!ObjectUtil.isEmpty(queryVO.getCategoryId()), ProductSpuDO::getCategoryId, queryVO.getCategoryId() )
.orderByDesc(ProductSkuDO::getCreator));*/
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.mysql.apicategory;
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.apicategory.ApiCategoryDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.apicategory.vo.*;
/**
* API分类 Mapper
*
* @author ljq
*/
@Mapper
public interface ApiCategoryMapper extends BaseMapperX<ApiCategoryDO> {
default PageResult<ApiCategoryDO> selectPage(ApiCategoryPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ApiCategoryDO>()
.likeIfPresent(ApiCategoryDO::getName, reqVO.getName())
.betweenIfPresent(ApiCategoryDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ApiCategoryDO::getId));
}
default List<ApiCategoryDO> selectAll() {
return selectList();
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.dal.redis;
/**
* 交易 Redis Key 枚举类
*
* @author 芋道源码
*/
public interface RedisKeyConstants {
/**
* api交易序号的缓存
*
* KEY 格式:trade_no:{prefix}
* VALUE 数据格式:编号自增
*/
String API_TRADE_NO = "api_trade_no:";
/**
* api交易序号的缓存
*
* KEY 格式:express_track:{code-logisticsNo-receiverMobile}
* VALUE 数据格式 String, 物流信息集合
*/
String EXPRESS_TRACK = "express_track";
}
package com.luhu.computility.module.apihub.dal.redis.no;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.luhu.computility.module.apihub.dal.redis.RedisKeyConstants;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.time.Duration;
import java.time.LocalDateTime;
/**
* 订单序号的 Redis DAO
*
* @author HUIHUI
*/
@Repository
public class ApiOrderNoRedisDAO {
public static final String API_ORDER_NO_PREFIX = "a";
public static final String AFTER_SALE_NO_PREFIX = "p";
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 生成序号
*
* @param prefix 前缀
* @return 序号
*/
public String generate(String prefix) {
// 递增序号
String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN);
String key = RedisKeyConstants.API_TRADE_NO + noPrefix;
Long no = stringRedisTemplate.opsForValue().increment(key);
// 设置过期时间
stringRedisTemplate.expire(key, Duration.ofMinutes(1L));
return noPrefix + no;
}
}
package com.luhu.computility.module.apihub.enums;
/**
* 订单退款状态
*/
public enum ApiOrderRefundStatus {
// 请根据实际情况改成对应的值和备注
NONE(0, "未退款"),
ALL(20, "全部退款");
private int value;
private String remark;
private ApiOrderRefundStatus(int value, String remark) {
this.value = value;
this.remark = remark;
}
public int getValue() {
return value;
}
public String getRemark() {
return remark;
}
public static ApiOrderRefundStatus getByValue(int value) {
for (ApiOrderRefundStatus o : ApiOrderRefundStatus.values()) {
if (o.getValue() == value) {
return o;
}
}
return null;
}
}
package com.luhu.computility.module.apihub.enums;
/**
* 订单状态
*/
public enum ApiOrderStatus {
// 请根据实际情况改成对应的值和备注
UNPAID(0, "待支付"),
PAID(10, "已支付"),
CANCELED(40, "已取消");
private int value;
private String remark;
private ApiOrderStatus(int value, String remark) {
this.value = value;
this.remark = remark;
}
public int getValue() {
return value;
}
public String getRemark() {
return remark;
}
public static ApiOrderStatus getByValue(int value) {
for (ApiOrderStatus o : ApiOrderStatus.values()) {
if (o.getValue() == value) {
return o;
}
}
return null;
}
}
......@@ -13,7 +13,7 @@ public interface ErrorCodeConstants {
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 套餐不存在");
ErrorCode API_CATEGORY_NOT_EXISTS = new ErrorCode(1_010_001_005, "API分类不存在");
}
......@@ -57,6 +57,6 @@ public interface ApiService {
* @param pageReqVO 分页查询
* @return API信息分页
*/
PageResult<ApiDO> getApiPage(ApiPageReqVO pageReqVO);
PageResult<ApiRespVO> getApiPage(ApiPageReqVO pageReqVO);
}
\ No newline at end of file
......@@ -78,8 +78,10 @@ public class ApiServiceImpl implements ApiService {
}
@Override
public PageResult<ApiDO> getApiPage(ApiPageReqVO pageReqVO) {
return apiMapper.selectPage(pageReqVO);
public PageResult<ApiRespVO> getApiPage(ApiPageReqVO pageReqVO) {
return apiMapper.selectJoinPage(pageReqVO);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apicategory;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apicategory.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
/**
* API分类 Service 接口
*
* @author ljq
*/
public interface ApiCategoryService {
/**
* 创建API分类
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createApiCategory(@Valid ApiCategorySaveReqVO createReqVO);
/**
* 更新API分类
*
* @param updateReqVO 更新信息
*/
void updateApiCategory(@Valid ApiCategorySaveReqVO updateReqVO);
/**
* 删除API分类
*
* @param id 编号
*/
void deleteApiCategory(Long id);
/**
* 批量删除API分类
*
* @param ids 编号
*/
void deleteApiCategoryListByIds(List<Long> ids);
/**
* 获得API分类
*
* @param id 编号
* @return API分类
*/
ApiCategoryDO getApiCategory(Long id);
/**
* 获得API分类分页
*
* @param pageReqVO 分页查询
* @return API分类分页
*/
PageResult<ApiCategoryDO> getApiCategoryPage(ApiCategoryPageReqVO pageReqVO);
/**
* 获得API分类分页
*
* @return API分类分页
*/
List<ApiCategoryDO> getAllApiCategory();
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.apicategory;
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.apicategory.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
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.apicategory.ApiCategoryMapper;
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 ApiCategoryServiceImpl implements ApiCategoryService {
@Resource
private ApiCategoryMapper apiCategoryMapper;
@Override
public Long createApiCategory(ApiCategorySaveReqVO createReqVO) {
// 插入
ApiCategoryDO apiCategory = BeanUtils.toBean(createReqVO, ApiCategoryDO.class);
apiCategoryMapper.insert(apiCategory);
// 返回
return apiCategory.getId();
}
@Override
public void updateApiCategory(ApiCategorySaveReqVO updateReqVO) {
// 校验存在
validateApiCategoryExists(updateReqVO.getId());
// 更新
ApiCategoryDO updateObj = BeanUtils.toBean(updateReqVO, ApiCategoryDO.class);
apiCategoryMapper.updateById(updateObj);
}
@Override
public void deleteApiCategory(Long id) {
// 校验存在
validateApiCategoryExists(id);
// 删除
apiCategoryMapper.deleteById(id);
}
@Override
public void deleteApiCategoryListByIds(List<Long> ids) {
// 删除
apiCategoryMapper.deleteByIds(ids);
}
private void validateApiCategoryExists(Long id) {
if (apiCategoryMapper.selectById(id) == null) {
throw exception(API_CATEGORY_NOT_EXISTS);
}
}
@Override
public ApiCategoryDO getApiCategory(Long id) {
return apiCategoryMapper.selectById(id);
}
@Override
public PageResult<ApiCategoryDO> getApiCategoryPage(ApiCategoryPageReqVO pageReqVO) {
return apiCategoryMapper.selectPage(pageReqVO);
}
@Override
public List<ApiCategoryDO> getAllApiCategory() {
return apiCategoryMapper.selectAll();
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ 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.controller.app.apiorder.vo.AppApiOrderCreateReqVO;
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;
......@@ -22,6 +23,10 @@ public interface ApiOrderService {
*/
Long createApiOrder(@Valid ApiOrderSaveReqVO createReqVO);
ApiOrderDO createOrder(AppApiOrderCreateReqVO createReqVO);
/**
* 更新api订单
*
......
package com.luhu.computility.module.apihub.service.apiorder;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.RandomUtil;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.dal.redis.no.ApiOrderNoRedisDAO;
import com.luhu.computility.module.apihub.enums.ApiOrderRefundStatus;
import com.luhu.computility.module.apihub.enums.ApiOrderStatus;
import com.luhu.computility.module.apihub.service.api.ApiService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import com.luhu.computility.module.member.api.address.dto.MemberAddressRespDTO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
......@@ -10,14 +20,15 @@ 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.framework.common.util.collection.CollectionUtils.getSumValue;
import static com.luhu.computility.framework.common.util.servlet.ServletUtils.getClientIP;
import static com.luhu.computility.framework.web.core.util.WebFrameworkUtils.getTerminal;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......@@ -32,6 +43,19 @@ public class ApiOrderServiceImpl implements ApiOrderService {
@Resource
private ApiOrderMapper apiOrderMapper;
@Resource
private ApiService apiService;
@Resource
private ApiPackageService apiPackageService;
@Resource
private ApiOrderNoRedisDAO apiOrderNoRedisDAO;
@Override
public Long createApiOrder(ApiOrderSaveReqVO createReqVO) {
// 插入
......@@ -82,4 +106,39 @@ public class ApiOrderServiceImpl implements ApiOrderService {
return apiOrderMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
//@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CREATE)
public ApiOrderDO createOrder(AppApiOrderCreateReqVO createReqVO) {
// 1.构建订单
ApiOrderDO order = buildApiOrder(createReqVO);
// 2. 保存订单
apiOrderMapper.insert(order);
// 3. 订单创建后的逻辑
//afterCreateApiOrder(order, createReqVO);
return order;
}
private ApiOrderDO buildApiOrder(AppApiOrderCreateReqVO createReqVO) {
ApiDO api = apiService.getApi(createReqVO.getApiId());
ApiPackageDO apiPackage = apiPackageService.getApiPackage(createReqVO.getPackageId());
createReqVO.setApiName(api.getName());
createReqVO.setPackageName(apiPackage.getName());
createReqVO.setPackagePrice(apiPackage.getPrice());
createReqVO.setPackageTimes(apiPackage.getTimes());
createReqVO.setPackageValidDays(apiPackage.getValidDays());
//业务上,订单金额=套餐金额
createReqVO.setAmount(apiPackage.getPrice());
ApiOrderDO order = BeanUtils.toBean(createReqVO, ApiOrderDO.class);
order.setOrderNo(apiOrderNoRedisDAO.generate(ApiOrderNoRedisDAO.API_ORDER_NO_PREFIX));
order.setStatus(ApiOrderStatus.UNPAID.getValue());
order.setUserIp(getClientIP());
order.setRefundStatus(ApiOrderRefundStatus.NONE.getValue()).setRefundPrice(0);
return order;
}
}
\ No newline at end of file
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