1、修复组织产品过期无法购买产品;2、修复组织更新会校验产品列表;3、优化token中产品id不存在时的提示;

This commit is contained in:
gaoqr
2025-09-24 16:35:45 +08:00
parent 8a4a300c3b
commit 3c094e41c0
8 changed files with 52 additions and 10 deletions
@@ -25,6 +25,7 @@ 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.*;
import jakarta.annotation.Resource;
@@ -81,7 +82,7 @@ public class OrganController {
@PostMapping("/create")
@Operation(summary = "创建组织")
@PreAuthorize("@ss.hasPermission('organizationLIst:create')")
public CommonResult<Long> createOrgan(@Valid @RequestBody OrganSaveReqVO createReqVO) {
public CommonResult<Long> createOrgan(@Validated(OrganSaveCreateGroup.class) @RequestBody OrganSaveReqVO createReqVO) {
return success(organService.createOrgan(createReqVO));
}
@@ -13,22 +13,22 @@ import java.time.LocalDate;
@Schema(description = "管理后台 - 组织创建购买产品 Request VO")
@Data
public class OrganCreateProductPurchaseReqVO {
@Schema(description = "产品编号",example = "1")
@NotNull(message = "产品编号不能为空")
@Schema(description = "产品编号", example = "1")
@NotNull(message = "产品编号不能为空", groups = {OrganSaveCreateGroup.class})
private Long productId;
@Schema(description = "定价规则编号",example = "1")
@NotNull(message = "定价规则编号不能为空")
@Schema(description = "定价规则编号", example = "1")
@NotNull(message = "定价规则编号不能为空", groups = {OrganSaveCreateGroup.class})
private Long productDetailsId;
@Schema(description = "产品购买金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@NotNull(message = "产品购买金额不能为空")
@NotNull(message = "产品购买金额不能为空", groups = {OrganSaveCreateGroup.class})
@DecimalMin(value = "0.01", message = "产品购买金额必须大于零")
@DecimalMax(value = "100000", message = "产品购买金额不能超过十万")
@Digits(integer = 6, fraction = 2, message = "产品购买金额格式不正确")
private BigDecimal price;
@Schema(description = "产品有效时间")
@NotNull(message = "产品有效时间不能为空")
@NotNull(message = "产品有效时间不能为空", groups = {OrganSaveCreateGroup.class})
private LocalDate productExpireDate;
}
@@ -0,0 +1,10 @@
package com.cf.imes.module.system.controller.admin.organ.vo.organ;
/**
* 组织新增请求校验组
*
* @author Gqr
* @since 2025/9/24 16:28
*/
public interface OrganSaveCreateGroup {
}
@@ -10,6 +10,7 @@ import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.system.controller.admin.funds.delay.vo.ProductDelayRespVO;
import com.cf.imes.module.system.controller.admin.funds.organamount.vo.TotalSalesAmountRespVO;
import com.cf.imes.module.system.controller.admin.funds.products.vo.productDetails.ProductDetailsPageReqVO;
import com.cf.imes.module.system.controller.admin.funds.purchase.vo.OrgEarliestPurchaseProductRespVO;
@@ -30,6 +31,7 @@ import com.cf.imes.module.system.enums.pay.ProductDurationUnitEnum;
import com.cf.imes.module.system.enums.pay.PurchaseRecordStatusEnum;
import com.cf.imes.module.system.enums.pay.TradeTypeEnum;
import com.cf.imes.module.system.framework.snowflake.config.MybatisIdProperties;
import com.cf.imes.module.system.service.funds.delay.ProductDelayService;
import com.cf.imes.module.system.service.funds.products.ProductsDetailService;
import com.cf.imes.module.system.service.organ.OrganService;
import jakarta.annotation.Resource;
@@ -70,6 +72,10 @@ public class PurchaseServiceImpl implements PurchaseService {
@Lazy
private OrganService organService;
@Resource
@Lazy
private ProductDelayService productDelayService;
@Override
public PurchaseRecordDO getRecord(Long id) {
return purchaseRecordMapper.selectById(id);
@@ -119,12 +125,17 @@ public class PurchaseServiceImpl implements PurchaseService {
// 查询购买记录中还有效的最晚一条
PurchaseRecordDO purchaseRecordDO = purchaseRecordMapper.selectOne(new LambdaQueryWrapper<PurchaseRecordDO>()
.eq(PurchaseRecordDO::getOrganId, organId)
.gt(PurchaseRecordDO::getEndTime, LocalDateTime.now())
.eq(PurchaseRecordDO::getDeleted, false)
.eq(PurchaseRecordDO::getStatus, PurchaseRecordStatusEnum.ACTIVE.getStatus())
.orderByDesc(PurchaseRecordDO::getCreateTime)
.last("limit 1"));
if (ObjectUtil.isNotNull(purchaseRecordDO)) {
// 查询延期记录
List<ProductDelayRespVO> recordsByPurchaseId = productDelayService.getRecordsByPurchaseId(purchaseRecordDO.getId(), organId);
if(CollUtil.isNotEmpty(recordsByPurchaseId)) {
// 延期记录是按自增id逆序的,第一条的延期后时间作为产品到期时间
purchaseRecordDO.setEndTime(recordsByPurchaseId.get(0).getDelayTime());
}
return new OrgEarliestPurchaseProductRespVO(purchaseRecordDO, productsDetailMapper.selectById(purchaseRecordDO.getProductDetailsId()));
}
return null;
@@ -199,6 +199,12 @@ chenfeng:
ignore-product-urls:
- /admin-api/system/auth/get-permission-info
- /admin-api/system/dict-data/list-all-simple
- /admin-api/system/amount
- /admin-api/system/organ/get
- /admin-api/system/products/available
- /admin-api/system/product-details/organ/purchase
- /admin-api/system/purchase
- /admin-api/system/pay/product
ignore-tables:
- system_organization
- system_tenant_package
@@ -215,6 +215,12 @@ chenfeng:
ignore-product-urls:
- /admin-api/system/auth/get-permission-info
- /admin-api/system/dict-data/list-all-simple
- /admin-api/system/amount
- /admin-api/system/organ/get
- /admin-api/system/products/available
- /admin-api/system/product-details/organ/purchase
- /admin-api/system/purchase
- /admin-api/system/pay/product
ignore-tables:
- system_organization
- system_tenant_package