Commit 8e81bfe5 by Jony.L

算力资源重构-更换服务器前修改

parent b55d38ad
package com.luhu.computility.module.compute.controller.app.resourceorder; package com.luhu.computility.module.compute.controller.app.resourceorder;
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.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateReqVO; import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateReqVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateRespVO; import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateRespVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderPageReqVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderRespVO;
import com.luhu.computility.module.compute.service.resourceorder.ResourceOrderService; import com.luhu.computility.module.compute.service.resourceorder.ResourceOrderService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -42,4 +46,22 @@ public class AppResourceOrderController { ...@@ -42,4 +46,22 @@ public class AppResourceOrderController {
return success(true); return success(true);
} }
@GetMapping("/page")
@Operation(summary = "获得用户算力资源订单分页")
public CommonResult<PageResult<AppResourceOrderRespVO>> getUserResourceOrderPage(@Valid AppResourceOrderPageReqVO pageReqVO) {
Long userId = getLoginUserId();
pageReqVO.setUserId(userId);
PageResult<AppResourceOrderRespVO> pageResult = resourceOrderService.getUserResourceOrderPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/get")
@Operation(summary = "获得算力资源订单详情")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<AppResourceOrderRespVO> getUserResourceOrder(@RequestParam("id") Long id) {
Long userId = getLoginUserId();
AppResourceOrderRespVO orderDetail = resourceOrderService.getUserResourceOrder(userId, id);
return success(orderDetail);
}
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.luhu.computility.module.compute.controller.app.resourcesku; ...@@ -2,6 +2,7 @@ package com.luhu.computility.module.compute.controller.app.resourcesku;
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.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.compute.controller.app.resourcesku.vo.AppResourceSkuPageReqVO; import com.luhu.computility.module.compute.controller.app.resourcesku.vo.AppResourceSkuPageReqVO;
import com.luhu.computility.module.compute.controller.app.resourcesku.vo.AppResourceSkuRespVO; import com.luhu.computility.module.compute.controller.app.resourcesku.vo.AppResourceSkuRespVO;
import com.luhu.computility.module.compute.dal.dataobject.resourcesku.ResourceSkuDO; import com.luhu.computility.module.compute.dal.dataobject.resourcesku.ResourceSkuDO;
...@@ -110,18 +111,10 @@ public class AppResourceSkuController { ...@@ -110,18 +111,10 @@ public class AppResourceSkuController {
return success(null); return success(null);
} }
AppResourceSkuRespVO respVO = new AppResourceSkuRespVO(); AppResourceSkuRespVO respVO = BeanUtils.toBean(resourceSpu, AppResourceSkuRespVO.class);
respVO.setId(resourceSku.getId()); respVO.setId(resourceSku.getId());
respVO.setName(resourceSpu.getName());
respVO.setRemark(resourceSpu.getIntro());
respVO.setPrice(resourceSku.getPaymentPrice()); respVO.setPrice(resourceSku.getPaymentPrice());
respVO.setFeeInfo(resourceSku.getDurationDays() + "天"); respVO.setFeeInfo(resourceSku.getDurationDays() + "天");
respVO.setCpu(resourceSpu.getCpu());
respVO.setGpu(resourceSpu.getGpu());
respVO.setRam(resourceSpu.getRam());
respVO.setStorage(resourceSpu.getStorage());
respVO.setIp(resourceSpu.getIp());
respVO.setLocation(resourceSpu.getLocation());
return success(respVO); return success(respVO);
} }
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/** /**
* 算力资源分类表(仅用于算力服务器分类) DO * 算力资源分类表(仅用于算力服务器分类) DO
* *
* @author 呼啦啦 * @author jony
*/ */
@TableName("compute_resource_category") @TableName("compute_resource_category")
@KeySequence("compute_resource_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @KeySequence("compute_resource_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/** /**
* 算力资源配置 DO * 算力资源配置 DO
* *
* @author 呼啦啦 * @author jony
*/ */
@TableName("compute_resource_config") @TableName("compute_resource_config")
@KeySequence("compute_resource_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @KeySequence("compute_resource_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
......
...@@ -14,7 +14,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO; ...@@ -14,7 +14,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/** /**
* 算力资源订单 DO * 算力资源订单 DO
* *
* @author 呼啦啦 * @author jony
*/ */
@TableName("compute_resource_order") @TableName("compute_resource_order")
@KeySequence("compute_resource_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @KeySequence("compute_resource_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
...@@ -36,6 +36,10 @@ public class ResourceOrderDO extends BaseDO { ...@@ -36,6 +36,10 @@ public class ResourceOrderDO extends BaseDO {
*/ */
private Long userId; private Long userId;
/** /**
* 用户IP
*/
private String userIp;
/**
* 算力资源SKU ID * 算力资源SKU ID
*/ */
private Long skuId; private Long skuId;
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/** /**
* 算力资源SKU表(价格和租赁信息) DO * 算力资源SKU表(价格和租赁信息) DO
* *
* @author 呼啦啦 * @author jony
*/ */
@TableName("compute_resource_sku") @TableName("compute_resource_sku")
@KeySequence("compute_resource_sku_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @KeySequence("compute_resource_sku_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.mybatis.core.dataobject.BaseDO;
/** /**
* 算力资源SPU表(基础配置信息) DO * 算力资源SPU表(基础配置信息) DO
* *
* @author 呼啦啦 * @author jony
*/ */
@TableName("compute_resource_spu") @TableName("compute_resource_spu")
@KeySequence("compute_resource_spu_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @KeySequence("compute_resource_spu_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
......
...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourcecategory.vo. ...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourcecategory.vo.
/** /**
* 算力资源分类表(仅用于算力服务器分类) Mapper * 算力资源分类表(仅用于算力服务器分类) Mapper
* *
* @author 呼啦啦 * @author jony
*/ */
@Mapper @Mapper
public interface ResourceCategoryMapper extends BaseMapperX<ResourceCategoryDO> { public interface ResourceCategoryMapper extends BaseMapperX<ResourceCategoryDO> {
......
...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourceconfig.vo.*; ...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourceconfig.vo.*;
/** /**
* 算力资源配置 Mapper * 算力资源配置 Mapper
* *
* @author 呼啦啦 * @author jony
*/ */
@Mapper @Mapper
public interface ResourceConfigMapper extends BaseMapperX<ResourceConfigDO> { public interface ResourceConfigMapper extends BaseMapperX<ResourceConfigDO> {
......
...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourceorder.vo.*; ...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourceorder.vo.*;
/** /**
* 算力资源订单 Mapper * 算力资源订单 Mapper
* *
* @author 呼啦啦 * @author jony
*/ */
@Mapper @Mapper
public interface ResourceOrderMapper extends BaseMapperX<ResourceOrderDO> { public interface ResourceOrderMapper extends BaseMapperX<ResourceOrderDO> {
......
...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourcesku.vo.*; ...@@ -12,7 +12,7 @@ import com.luhu.computility.module.compute.controller.admin.resourcesku.vo.*;
/** /**
* 算力资源SKU表(价格和租赁信息) Mapper * 算力资源SKU表(价格和租赁信息) Mapper
* *
* @author 呼啦啦 * @author jony
*/ */
@Mapper @Mapper
public interface ResourceSkuMapper extends BaseMapperX<ResourceSkuDO> { public interface ResourceSkuMapper extends BaseMapperX<ResourceSkuDO> {
......
...@@ -15,7 +15,7 @@ import com.luhu.computility.module.compute.controller.admin.resourcespu.vo.*; ...@@ -15,7 +15,7 @@ import com.luhu.computility.module.compute.controller.admin.resourcespu.vo.*;
/** /**
* 算力资源SPU表(基础配置信息) Mapper * 算力资源SPU表(基础配置信息) Mapper
* *
* @author 呼啦啦 * @author jony
*/ */
@Mapper @Mapper
public interface ResourceSpuMapper extends BaseMapperX<ResourceSpuDO> { public interface ResourceSpuMapper extends BaseMapperX<ResourceSpuDO> {
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam;
/** /**
* 算力资源分类表(仅用于算力服务器分类) Service 接口 * 算力资源分类表(仅用于算力服务器分类) Service 接口
* *
* @author 呼啦啦 * @author jony
*/ */
public interface ResourceCategoryService { public interface ResourceCategoryService {
......
...@@ -20,7 +20,7 @@ import static com.luhu.computility.module.compute.enums.ResourceEnableStatus.ENA ...@@ -20,7 +20,7 @@ import static com.luhu.computility.module.compute.enums.ResourceEnableStatus.ENA
/** /**
* 算力资源分类表(仅用于算力服务器分类) Service 实现类 * 算力资源分类表(仅用于算力服务器分类) Service 实现类
* *
* @author 呼啦啦 * @author jony
*/ */
@Service @Service
@Validated @Validated
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam;
/** /**
* 算力资源配置 Service 接口 * 算力资源配置 Service 接口
* *
* @author 呼啦啦 * @author jony
*/ */
public interface ResourceConfigService { public interface ResourceConfigService {
......
...@@ -21,7 +21,7 @@ import static com.luhu.computility.module.compute.enums.ResourceEnableStatus.ENA ...@@ -21,7 +21,7 @@ import static com.luhu.computility.module.compute.enums.ResourceEnableStatus.ENA
/** /**
* 算力资源配置 Service 实现类 * 算力资源配置 Service 实现类
* *
* @author 呼啦啦 * @author jony
*/ */
@Service @Service
@Validated @Validated
......
...@@ -5,6 +5,8 @@ import javax.validation.*; ...@@ -5,6 +5,8 @@ import javax.validation.*;
import com.luhu.computility.module.compute.controller.admin.resourceorder.vo.*; import com.luhu.computility.module.compute.controller.admin.resourceorder.vo.*;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateReqVO; import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateReqVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateRespVO; import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateRespVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderPageReqVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderRespVO;
import com.luhu.computility.module.compute.dal.dataobject.resourceorder.ResourceOrderDO; import com.luhu.computility.module.compute.dal.dataobject.resourceorder.ResourceOrderDO;
import com.luhu.computility.framework.common.pojo.PageResult; import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam; import com.luhu.computility.framework.common.pojo.PageParam;
...@@ -12,7 +14,7 @@ import com.luhu.computility.framework.common.pojo.PageParam; ...@@ -12,7 +14,7 @@ import com.luhu.computility.framework.common.pojo.PageParam;
/** /**
* 算力资源订单 Service 接口 * 算力资源订单 Service 接口
* *
* @author 呼啦啦 * @author jony
*/ */
public interface ResourceOrderService { public interface ResourceOrderService {
...@@ -86,4 +88,21 @@ public interface ResourceOrderService { ...@@ -86,4 +88,21 @@ public interface ResourceOrderService {
*/ */
void cancelOrder(Long userId, Long orderId); void cancelOrder(Long userId, Long orderId);
/**
* 获得用户算力资源订单分页
*
* @param pageReqVO 分页查询
* @return 算力资源订单分页
*/
PageResult<AppResourceOrderRespVO> getUserResourceOrderPage(AppResourceOrderPageReqVO pageReqVO);
/**
* 获得用户算力资源订单详情
*
* @param userId 用户ID
* @param id 订单ID
* @return 算力资源订单详情
*/
AppResourceOrderRespVO getUserResourceOrder(Long userId, Long id);
} }
\ No newline at end of file
...@@ -12,6 +12,8 @@ import java.util.*; ...@@ -12,6 +12,8 @@ import java.util.*;
import com.luhu.computility.module.compute.controller.admin.resourceorder.vo.*; import com.luhu.computility.module.compute.controller.admin.resourceorder.vo.*;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateReqVO; import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateReqVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateRespVO; import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderCreateRespVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderPageReqVO;
import com.luhu.computility.module.compute.controller.app.resourceorder.vo.AppResourceOrderRespVO;
import com.luhu.computility.module.compute.dal.dataobject.resourceorder.ResourceOrderDO; import com.luhu.computility.module.compute.dal.dataobject.resourceorder.ResourceOrderDO;
import com.luhu.computility.framework.common.pojo.PageResult; import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam; import com.luhu.computility.framework.common.pojo.PageParam;
...@@ -22,19 +24,28 @@ import com.luhu.computility.module.compute.dal.dataobject.resourcesku.ResourceSk ...@@ -22,19 +24,28 @@ import com.luhu.computility.module.compute.dal.dataobject.resourcesku.ResourceSk
import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSpuDO; import com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSpuDO;
import com.luhu.computility.module.compute.service.resourcesku.ResourceSkuService; import com.luhu.computility.module.compute.service.resourcesku.ResourceSkuService;
import com.luhu.computility.module.compute.service.resourcespu.ResourceSpuService; import com.luhu.computility.module.compute.service.resourcespu.ResourceSpuService;
import com.luhu.computility.module.compute.service.resourcecategory.ResourceCategoryService;
import com.luhu.computility.module.compute.enums.ResourceOrderStatus; import com.luhu.computility.module.compute.enums.ResourceOrderStatus;
import com.luhu.computility.module.compute.enums.ResourceOrderRefundStatus;
import com.luhu.computility.module.compute.enums.ResourceOrderInvoiceStatus;
import com.luhu.computility.module.compute.config.ResourceOrderProperties;
import com.luhu.computility.module.pay.api.order.PayOrderApi; import com.luhu.computility.module.pay.api.order.PayOrderApi;
import com.luhu.computility.module.pay.api.order.dto.PayOrderCreateReqDTO; import com.luhu.computility.module.pay.api.order.dto.PayOrderCreateReqDTO;
import static com.luhu.computility.framework.common.util.servlet.ServletUtils.getClientIP;
import static com.luhu.computility.framework.common.util.date.LocalDateTimeUtils.addTime;
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.util.collection.CollectionUtils.convertList; 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.diffList;
import static com.luhu.computility.module.compute.enums.ErrorCodeConstants.*; import static com.luhu.computility.module.compute.enums.ErrorCodeConstants.*;
import static com.luhu.computility.module.compute.enums.ResourceOrderRefundStatus.NOT_REFUND;
import static com.luhu.computility.module.compute.enums.ResourceOrderInvoiceStatus.UNINVOICE;
import com.luhu.computility.module.compute.dal.redis.no.ResourceOrderNoRedisDAO;
/** /**
* 算力资源订单 Service 实现类 * 算力资源订单 Service 实现类
* *
* @author 呼啦啦 * @author jony
*/ */
@Service @Service
@Validated @Validated
...@@ -50,8 +61,17 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -50,8 +61,17 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
private ResourceSpuService resourceSpuService; private ResourceSpuService resourceSpuService;
@Resource @Resource
private ResourceCategoryService resourceCategoryService;
@Resource
private PayOrderApi payOrderApi; private PayOrderApi payOrderApi;
@Resource
private ResourceOrderProperties resourceOrderProperties;
@Resource
private ResourceOrderNoRedisDAO resourceOrderNoRedisDAO;
@Override @Override
public Long createResourceOrder(ResourceOrderSaveReqVO createReqVO) { public Long createResourceOrder(ResourceOrderSaveReqVO createReqVO) {
// 插入 // 插入
...@@ -105,6 +125,27 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -105,6 +125,27 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public AppResourceOrderCreateRespVO createUserResourceOrder(Long userId, AppResourceOrderCreateReqVO createReqVO) { public AppResourceOrderCreateRespVO createUserResourceOrder(Long userId, AppResourceOrderCreateReqVO createReqVO) {
// 1. 构建订单
ResourceOrderDO order = buildResourceOrder(userId, createReqVO);
// 2. 保存订单
resourceOrderMapper.insert(order);
// 3. 创建支付订单
if (order.getPaymentPrice() > 0) {
createPayOrder(order);
}
// 4. 返回结果
AppResourceOrderCreateRespVO respVO = new AppResourceOrderCreateRespVO();
respVO.setId(order.getId());
respVO.setOrderNo(order.getOrderNo());
respVO.setPayOrderId(order.getPayOrderId());
return respVO;
}
private ResourceOrderDO buildResourceOrder(Long userId, AppResourceOrderCreateReqVO createReqVO) {
// 获取SKU信息 // 获取SKU信息
ResourceSkuDO sku = resourceSkuService.getResourceSku(createReqVO.getSkuId()); ResourceSkuDO sku = resourceSkuService.getResourceSku(createReqVO.getSkuId());
if (sku == null) { if (sku == null) {
...@@ -117,7 +158,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -117,7 +158,7 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
throw exception(RESOURCE_ORDER_SPU_NOT_EXISTS); throw exception(RESOURCE_ORDER_SPU_NOT_EXISTS);
} }
// 创建算力资源订单 // 构建订单数据
ResourceOrderDO order = new ResourceOrderDO(); ResourceOrderDO order = new ResourceOrderDO();
order.setUserId(userId); order.setUserId(userId);
order.setSkuId(createReqVO.getSkuId()); order.setSkuId(createReqVO.getSkuId());
...@@ -126,36 +167,42 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -126,36 +167,42 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
order.setStatus(ResourceOrderStatus.UNPAID.getValue()); order.setStatus(ResourceOrderStatus.UNPAID.getValue());
order.setMarketPrice(sku.getMarketPrice().longValue()); order.setMarketPrice(sku.getMarketPrice().longValue());
order.setPaymentPrice(sku.getPaymentPrice().longValue()); order.setPaymentPrice(sku.getPaymentPrice().longValue());
order.setRefundStatus(0); // 无退款 order.setRefundStatus(NOT_REFUND.getValue());
order.setInvoiceStatus(0); // 未开票 order.setInvoiceStatus(UNINVOICE.getValue());
order.setUserIp(getClientIP());
order.setRentStartTime(LocalDateTime.now()); order.setRentStartTime(LocalDateTime.now());
// 设置租赁结束时间 // 设置租赁结束时间
order.setRentEndTime(LocalDateTime.now().plusDays(sku.getDurationDays())); order.setRentEndTime(LocalDateTime.now().plusDays(sku.getDurationDays()));
resourceOrderMapper.insert(order); return order;
}
// 创建支付订单 private void createPayOrder(ResourceOrderDO order) {
PayOrderCreateReqDTO payOrderCreateReqDTO = new PayOrderCreateReqDTO(); // 创建支付单,用于后续的支付
payOrderCreateReqDTO.setAppKey("computility-app"); // TODO: 从配置中获取 PayOrderCreateReqDTO payOrderCreateReqDTO = new PayOrderCreateReqDTO()
payOrderCreateReqDTO.setMerchantOrderId(order.getId().toString()); .setAppKey(resourceOrderProperties.getPayAppKey())
payOrderCreateReqDTO.setSubject("算力资源购买"); .setUserIp(order.getUserIp());
payOrderCreateReqDTO.setBody(spu.getName() + " - " + sku.getDurationDays() + "天");
payOrderCreateReqDTO.setPrice(sku.getPaymentPrice()); // 商户相关字段
payOrderCreateReqDTO.setExpireTime(LocalDateTime.now().plusMinutes(30)); // 30分钟过期 payOrderCreateReqDTO.setMerchantOrderId(String.valueOf(order.getId()));
String subject = order.getSpuName() + " - " + getDurationDaysFromSku(order.getSkuId()) + "天";
payOrderCreateReqDTO.setSubject(subject);
payOrderCreateReqDTO.setBody(subject);
// 订单相关字段
payOrderCreateReqDTO.setPrice(order.getPaymentPrice().intValue())
.setExpireTime(addTime(resourceOrderProperties.getPayExpireTime()));
Long payOrderId = payOrderApi.createOrder(payOrderCreateReqDTO); Long payOrderId = payOrderApi.createOrder(payOrderCreateReqDTO);
// 更新订单的支付ID // 更新到算力资源订单上
resourceOrderMapper.updateById(new ResourceOrderDO().setId(order.getId()).setPayOrderId(payOrderId));
order.setPayOrderId(payOrderId); order.setPayOrderId(payOrderId);
resourceOrderMapper.updateById(order); }
// 返回结果
AppResourceOrderCreateRespVO respVO = new AppResourceOrderCreateRespVO();
respVO.setId(order.getId());
respVO.setOrderNo(order.getOrderNo());
respVO.setPayOrderId(payOrderId);
return respVO; private Integer getDurationDaysFromSku(Long skuId) {
ResourceSkuDO sku = resourceSkuService.getResourceSku(skuId);
return sku != null ? sku.getDurationDays() : null;
} }
@Override @Override
...@@ -217,7 +264,98 @@ public class ResourceOrderServiceImpl implements ResourceOrderService { ...@@ -217,7 +264,98 @@ public class ResourceOrderServiceImpl implements ResourceOrderService {
* 生成订单编号 * 生成订单编号
*/ */
private String generateOrderNo() { private String generateOrderNo() {
return "c" + IdUtil.getSnowflakeNextIdStr(); return resourceOrderNoRedisDAO.generate(ResourceOrderNoRedisDAO.RESOURCE_ORDER_NO_PREFIX);
}
@Override
public PageResult<AppResourceOrderRespVO> getUserResourceOrderPage(AppResourceOrderPageReqVO pageReqVO) {
// 查询订单分页
PageResult<ResourceOrderDO> pageResult = resourceOrderMapper.selectPage(BeanUtils.toBean(pageReqVO, ResourceOrderPageReqVO.class));
if (CollUtil.isEmpty(pageResult.getList())) {
return new PageResult<>(Collections.emptyList(), pageResult.getTotal());
}
// 组装响应数据
List<AppResourceOrderRespVO> respList = convertList(pageResult.getList(), order -> {
AppResourceOrderRespVO respVO = BeanUtils.toBean(order, AppResourceOrderRespVO.class);
// 获取SKU和SPU信息
ResourceSkuDO sku = resourceSkuService.getResourceSku(order.getSkuId());
if (sku != null) {
ResourceSpuDO spu = resourceSpuService.getResourceSpu(sku.getSpuId());
if (spu != null) {
respVO.setSpuId(spu.getId());
respVO.setSpuName(spu.getName());
respVO.setCategoryId(spu.getCategoryId());
respVO.setCpu(spu.getCpu());
respVO.setGpu(spu.getGpu());
respVO.setRam(spu.getRam());
respVO.setStorage(spu.getStorage());
respVO.setIp(spu.getIp());
respVO.setLocation(spu.getLocation());
respVO.setSkuName(spu.getName() + " - " + sku.getDurationDays() + "天");
// 设置分类名称
if (spu.getCategoryId() != null) {
respVO.setCategoryName(resourceCategoryService.getResourceCategory(spu.getCategoryId()).getName());
}
}
// feeInfo不需要设置,直接在前端显示 sku.getDurationDays() + "天"
}
return respVO;
});
return new PageResult<>(respList, pageResult.getTotal());
}
@Override
public AppResourceOrderRespVO getUserResourceOrder(Long userId, Long id) {
// 查询订单
ResourceOrderDO order = resourceOrderMapper.selectById(id);
if (order == null) {
throw exception(RESOURCE_ORDER_NOT_EXISTS);
}
// 校验订单属于该用户
if (!Objects.equals(order.getUserId(), userId)) {
throw exception(RESOURCE_ORDER_NOT_BELONGS_TO_USER);
}
// 组装响应数据
AppResourceOrderRespVO respVO = BeanUtils.toBean(order, AppResourceOrderRespVO.class);
// 获取SKU和SPU信息
ResourceSkuDO sku = resourceSkuService.getResourceSku(order.getSkuId());
if (sku != null) {
ResourceSpuDO spu = resourceSpuService.getResourceSpu(sku.getSpuId());
if (spu != null) {
respVO.setSpuId(spu.getId());
respVO.setSpuName(spu.getName());
respVO.setCategoryId(spu.getCategoryId());
respVO.setCpu(spu.getCpu());
respVO.setGpu(spu.getGpu());
respVO.setRam(spu.getRam());
respVO.setStorage(spu.getStorage());
respVO.setIp(spu.getIp());
respVO.setLocation(spu.getLocation());
respVO.setSkuName(spu.getName() + " - " + sku.getDurationDays() + "天");
// 设置分类名称
if (spu.getCategoryId() != null) {
respVO.setCategoryName(resourceCategoryService.getResourceCategory(spu.getCategoryId()).getName());
}
}
// feeInfo不需要设置,直接在前端显示 sku.getDurationDays() + "天"
}
return respVO;
} }
} }
\ No newline at end of file
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam;
/** /**
* 算力资源SKU表(价格和租赁信息) Service 接口 * 算力资源SKU表(价格和租赁信息) Service 接口
* *
* @author 呼啦啦 * @author jony
*/ */
public interface ResourceSkuService { public interface ResourceSkuService {
......
...@@ -26,7 +26,7 @@ import static com.luhu.computility.framework.common.enums.CommonDeleteStatusEnum ...@@ -26,7 +26,7 @@ import static com.luhu.computility.framework.common.enums.CommonDeleteStatusEnum
/** /**
* 算力资源SKU表(价格和租赁信息) Service 实现类 * 算力资源SKU表(价格和租赁信息) Service 实现类
* *
* @author 呼啦啦 * @author jony
*/ */
@Service @Service
@Validated @Validated
......
...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam; ...@@ -10,7 +10,7 @@ import com.luhu.computility.framework.common.pojo.PageParam;
/** /**
* 算力资源SPU表(基础配置信息) Service 接口 * 算力资源SPU表(基础配置信息) Service 接口
* *
* @author 呼啦啦 * @author jony
*/ */
public interface ResourceSpuService { public interface ResourceSpuService {
......
...@@ -26,7 +26,7 @@ import static com.luhu.computility.framework.common.enums.CommonDeleteStatusEnum ...@@ -26,7 +26,7 @@ import static com.luhu.computility.framework.common.enums.CommonDeleteStatusEnum
/** /**
* 算力资源SPU表(基础配置信息) Service 实现类 * 算力资源SPU表(基础配置信息) Service 实现类
* *
* @author 呼啦啦 * @author jony
*/ */
@Service @Service
@Validated @Validated
......
...@@ -42,9 +42,13 @@ spring: ...@@ -42,9 +42,13 @@ spring:
primary: master primary: master
datasource: datasource:
master: master:
url: jdbc:mysql://43.139.100.220:13306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # 重点加了 catalog=new_computility,强制绑定数据库目录
url: jdbc:mysql://8.136.9.68:3306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&catalog=new_computility
username: root username: root
password: D7kaJdNdLsjzXGhD password: Luchuan@123
#url: jdbc:mysql://43.139.100.220:13306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
#username: root
#password: D7kaJdNdLsjzXGhD
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis: redis:
...@@ -161,9 +165,9 @@ computility: ...@@ -161,9 +165,9 @@ computility:
captcha: captcha:
enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试; enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试;
pay: pay:
order-notify-url: https://phsl.lijinqi.com/admin-api/pay/notify/order # 支付渠道的【支付】回调地址 order-notify-url: https://phslgld.hnluchuan.com/admin-api/pay/notify/order # 支付渠道的【支付】回调地址
refund-notify-url: https://phsl.lijinqi.com/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址 refund-notify-url: https://phslgld.hnluchuan.com/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址
transfer-notify-url: https://phsl.lijinqi.com/admin-api/pay/notify/transfer # 支付渠道的【转账】回调地址 transfer-notify-url: https://phslgld.hnluchuan.com/admin-api/pay/notify/transfer # 支付渠道的【转账】回调地址
access-log: # 访问日志的配置项 access-log: # 访问日志的配置项
enable: true enable: true
demo: false # 开启演示模式 demo: false # 开启演示模式
......
...@@ -55,12 +55,17 @@ spring: ...@@ -55,12 +55,17 @@ spring:
primary: master primary: master
datasource: datasource:
master: master:
url: jdbc:mysql://43.139.100.220:13306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
#url: jdbc:mysql://localhost/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 #url: jdbc:mysql://localhost/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
#username: root #username: root
#password: 159357 # D7kaJdNdLsjzXGhD #password: 159357 # D7kaJdNdLsjzXGhD
#url: jdbc:mysql://43.139.100.220:13306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
#username: root
#password: D7kaJdNdLsjzXGhD
url: jdbc:mysql://8.136.9.68:3306/new_computility?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
username: root username: root
password: D7kaJdNdLsjzXGhD password: Luchuan@123
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis: redis:
host: 127.0.0.1 # 地址 host: 127.0.0.1 # 地址
......
...@@ -362,6 +362,9 @@ computility: ...@@ -362,6 +362,9 @@ computility:
receive-expire-time: 14d # 收货的过期时间 receive-expire-time: 14d # 收货的过期时间
comment-expire-time: 7d # 评论的过期时间 comment-expire-time: 7d # 评论的过期时间
status-sync-to-wxa-enable: true # 是否同步订单状态到微信小程序 status-sync-to-wxa-enable: true # 是否同步订单状态到微信小程序
compute:
order:
pay-expire-time: 30m # 支付的过期时间,30分钟
express: express:
client: kd_100 client: kd_100
......
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