diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/balancedetails/BalanceDetailsController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/balancedetails/BalanceDetailsController.java index 872fda5f3..863923593 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/balancedetails/BalanceDetailsController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/balancedetails/BalanceDetailsController.java @@ -7,6 +7,7 @@ import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.excel.core.util.ExcelUtils; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; +import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsPageReqVO; import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsRespVO; import com.cf.imes.module.system.service.funds.incomeandexpense.IncomeExpenseService; @@ -29,7 +30,7 @@ import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT /** * @author 组织余额明细 */ -@Tag(name = "管理后台 - 组织余额明细") +@Tag(name = "管理后台 - 组织账户明细") @RestController @RequestMapping("/system/balance") @Validated @@ -42,6 +43,10 @@ public class BalanceDetailsController { @GetMapping("") @Operation(summary = "查询组织账户明细分页") public CommonResult> getBalanceDetailsPage(@Valid BalanceDetailsPageReqVO pageReqVO) { + boolean manageEndPoint = SecurityFrameworkUtils.isManageEndPoint(); + if (!manageEndPoint) { + pageReqVO.setOrganId(SecurityFrameworkUtils.getUserOrganId()); + } return success(incomeExpenseService.getBalanceDetailsPage(pageReqVO)); } @@ -50,6 +55,10 @@ public class BalanceDetailsController { @OperateLog(type = EXPORT) public void balanceDetailsExport(@Valid BalanceDetailsPageReqVO pageReqVO, HttpServletResponse response) throws IOException { + boolean manageEndPoint = SecurityFrameworkUtils.isManageEndPoint(); + if (!manageEndPoint) { + pageReqVO.setOrganId(null); + } pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = incomeExpenseService.getBalanceDetailsPage(pageReqVO).getList(); // 导出 Excel diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/products/vo/productDetails/ProductDetailsSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/products/vo/productDetails/ProductDetailsSaveReqVO.java index 0de560d3d..a5b902d99 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/products/vo/productDetails/ProductDetailsSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/products/vo/productDetails/ProductDetailsSaveReqVO.java @@ -1,8 +1,8 @@ package com.cf.imes.module.system.controller.admin.funds.products.vo.productDetails; import com.cf.imes.framework.common.validation.NumberValid; +import com.cf.imes.module.system.validation.products.ProductDurationUnitValid; import com.cf.imes.module.system.validation.products.ProductType; -import com.cf.imes.module.system.validation.products.TimeUnitValid; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.DecimalMax; import jakarta.validation.constraints.DecimalMin; @@ -31,7 +31,7 @@ public class ProductDetailsSaveReqVO { private String duration; @Schema(description = "产品时长单位,0:年、1:月", example = "1") - @TimeUnitValid + @ProductDurationUnitValid private Integer durationUnit; @Schema(description = "产品产量", requiredMode = Schema.RequiredMode.REQUIRED, example = "") @@ -41,7 +41,7 @@ public class ProductDetailsSaveReqVO { private String giftDuration; @Schema(description = "赠送时长单位,0:年、1:月", example = "1") - @TimeUnitValid + @ProductDurationUnitValid private Integer giftDurationUnit; @Schema(description = "赠送产量", requiredMode = Schema.RequiredMode.REQUIRED, example = "") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/vo/PurchaseRecordRespVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/vo/PurchaseRecordRespVO.java index 0ef6e5443..175f8f91a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/vo/PurchaseRecordRespVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/vo/PurchaseRecordRespVO.java @@ -8,7 +8,7 @@ import com.cf.imes.framework.excel.core.convert.DictConvert; import com.cf.imes.framework.excel.core.convert.EnumConvert; import com.cf.imes.module.system.enums.DictTypeConstants; import com.cf.imes.module.system.enums.pay.InvoiceStatusEnum; -import com.cf.imes.module.system.enums.pay.DurationUnitEnum; +import com.cf.imes.module.system.enums.pay.ProductDurationUnitEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -52,7 +52,7 @@ public class PurchaseRecordRespVO { @Schema(description = "购买时长单位,0:年、1:月", example = "1") @ExcelProperty(value = "购买时长单位", converter = EnumConvert.class) - @EnumFormat(value = DurationUnitEnum.class) + @EnumFormat(value = ProductDurationUnitEnum.class) private Integer purchaseDurationUnit; @Schema(description = "赠送时长", example = "1") @@ -61,7 +61,7 @@ public class PurchaseRecordRespVO { @Schema(description = "赠送时长单位,0:年、1:月", example = "1") @ExcelProperty(value = "赠送时长单位", converter = EnumConvert.class) - @EnumFormat(value = DurationUnitEnum.class) + @EnumFormat(value = ProductDurationUnitEnum.class) private Integer giftDurationUnit; @Schema(description = "支付方式") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/DurationUnitEnum.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/DurationUnitEnum.java index 0fd499c24..b998ff18b 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/DurationUnitEnum.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/DurationUnitEnum.java @@ -18,7 +18,8 @@ import java.util.Objects; public enum DurationUnitEnum implements IntArrayValuable, BaseEnum { YEAR(0, "年"), - MONTH(1, "月"),; + MONTH(1, "月"), + DAY(2, "日"); public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DurationUnitEnum::getCode).toArray(); @@ -44,6 +45,10 @@ public enum DurationUnitEnum implements IntArrayValuable, BaseEnum { return Objects.equals(MONTH.code, name); } + public static boolean isDay(String name) { + return Objects.equals(DAY.code, name); + } + public static DurationUnitEnum fromStatus(Integer status) { return Arrays.stream(values()) .filter(bean -> Objects.equals(bean.code, status)) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/ProductDurationUnitEnum.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/ProductDurationUnitEnum.java new file mode 100644 index 000000000..6e6184e75 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/enums/pay/ProductDurationUnitEnum.java @@ -0,0 +1,64 @@ +package com.cf.imes.module.system.enums.pay; + +import com.cf.imes.framework.common.core.IntArrayValuable; +import com.cf.imes.framework.excel.core.convert.BaseEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 时长单位态枚举 + * + * @author 晨丰科技 + */ +@Getter +@AllArgsConstructor +public enum ProductDurationUnitEnum implements IntArrayValuable, BaseEnum { + + YEAR(0, "年"), + MONTH(1, "月"); + + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ProductDurationUnitEnum::getCode).toArray(); + + /** + * 状态值 + */ + private final Integer code; + /** + * 状态名 + */ + private final String desc; + + @Override + public int[] array() { + return ARRAYS; + } + + public static boolean isYear(String name) { + return Objects.equals(YEAR.code, name); + } + + public static boolean isMonth(String name) { + return Objects.equals(MONTH.code, name); + } + + public static ProductDurationUnitEnum fromStatus(Integer status) { + return Arrays.stream(values()) + .filter(bean -> Objects.equals(bean.code, status)) + .findFirst() + .orElse(null); + } + + /** + * 获取描述desc,否则返回null + * + * @param status + * @return + */ + public static String getDesc(Integer status) { + ProductDurationUnitEnum unit = fromStatus(status); + return unit != null ? unit.getDesc() : null; + } +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/incomeandexpense/IncomeExpenseServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/incomeandexpense/IncomeExpenseServiceImpl.java index 18044d92d..866d04e3c 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/incomeandexpense/IncomeExpenseServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/incomeandexpense/IncomeExpenseServiceImpl.java @@ -3,7 +3,6 @@ package com.cf.imes.module.system.service.funds.incomeandexpense; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsPageReqVO; import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsRespVO; import com.cf.imes.module.system.dal.dataobject.funds.purchase.PurchaseRecordDO; @@ -43,10 +42,6 @@ public class IncomeExpenseServiceImpl implements IncomeExpenseService { @Override public PageResult getBalanceDetailsPage(BalanceDetailsPageReqVO pageReqVO) { - if (ObjectUtil.isNull(pageReqVO.getOrganId())) { - pageReqVO.setOrganId(SecurityFrameworkUtils.getUserOrganId()); - } - PageResult pageResult = incomeExpenseDetailsMapper.selectDetailsPage(pageReqVO); List pageResultList = pageResult.getList(); if(CollUtil.isEmpty(pageResultList)){ diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/products/ProductsDetailServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/products/ProductsDetailServiceImpl.java index c964f2161..ade2378bb 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/products/ProductsDetailServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/products/ProductsDetailServiceImpl.java @@ -12,7 +12,7 @@ import com.cf.imes.module.system.dal.dataobject.funds.products.ProductsDO; import com.cf.imes.module.system.dal.dataobject.funds.products.ProductsDetailDO; import com.cf.imes.module.system.dal.mysql.funds.products.ProductsDetailMapper; import com.cf.imes.module.system.dal.mysql.funds.products.ProductsMapper; -import com.cf.imes.module.system.enums.pay.DurationUnitEnum; +import com.cf.imes.module.system.enums.pay.ProductDurationUnitEnum; import com.cf.imes.module.system.enums.products.ProductStatusEnum; import com.cf.imes.module.system.enums.products.ProductsPurchaseTypeEnum; import org.springframework.stereotype.Service; @@ -197,7 +197,7 @@ public class ProductsDetailServiceImpl implements ProductsDetailService { // 时长去重 count = productDetailsMapper.selectCountByDuration(createReqVO.getProductId(), createReqVO.getId(), duration, durationUnit); if (count > 0) { - throw ServiceExceptionUtil.exception(PRODUCTS_DETAIL_DURATION_EXIST, duration, DurationUnitEnum.getDesc(durationUnit)); + throw ServiceExceptionUtil.exception(PRODUCTS_DETAIL_DURATION_EXIST, duration, ProductDurationUnitEnum.getDesc(durationUnit)); } } else if (createReqVO.getPurchaseType() == 1) { //产量去重 diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java index 713d3d413..76afefd69 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java @@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.util.date.LocalDateTimeUtils; -import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd; import com.cf.imes.framework.pay.config.ChenfengPayConfig; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.funds.products.vo.product.ProductProcessorRespVO; @@ -21,8 +20,8 @@ import com.cf.imes.module.system.enums.pay.PayChannelCodeEnum; import com.cf.imes.module.system.enums.pay.PayConstants; import com.cf.imes.module.system.enums.pay.PayOrderStatusEnum; import com.cf.imes.module.system.enums.pay.PayProductChannelCodeEnum; +import com.cf.imes.module.system.enums.pay.ProductDurationUnitEnum; import com.cf.imes.module.system.enums.pay.TradeTypeEnum; -import com.cf.imes.module.system.enums.pay.DurationUnitEnum; import com.cf.imes.module.system.framework.snowflake.config.MybatisIdProperties; import org.apache.commons.lang3.StringUtils; @@ -644,7 +643,7 @@ public class PayProductProcessor { * @return */ private static LocalDate addTime(LocalDate time, int duration, int unit) { - switch (DurationUnitEnum.fromStatus(unit)) { + switch (ProductDurationUnitEnum.fromStatus(unit)) { case YEAR: return time.plusYears(duration); case MONTH: diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/TimeUnitValid.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/DurationUnitValid.java similarity index 88% rename from cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/TimeUnitValid.java rename to cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/DurationUnitValid.java index 26f1fb324..616fd51f8 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/TimeUnitValid.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/DurationUnitValid.java @@ -21,9 +21,9 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Documented @Constraint( - validatedBy = {TimeUnitValidator.class} + validatedBy = {DurationUnitValidator.class} ) -public @interface TimeUnitValid { +public @interface DurationUnitValid { String message() default "时长单位不合法"; Class[] groups() default {}; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/TimeUnitValidator.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/DurationUnitValidator.java similarity index 88% rename from cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/TimeUnitValidator.java rename to cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/DurationUnitValidator.java index 19e77a828..9f7769bf1 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/TimeUnitValidator.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/DurationUnitValidator.java @@ -13,7 +13,7 @@ import java.util.Objects; * @author Gqr * @since 2025/8/11 14:19 */ -public class TimeUnitValidator implements ConstraintValidator { +public class DurationUnitValidator implements ConstraintValidator { @Override public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) { diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/ProductDurationUnitValid.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/ProductDurationUnitValid.java new file mode 100644 index 000000000..fec741bf5 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/ProductDurationUnitValid.java @@ -0,0 +1,32 @@ +package com.cf.imes.module.system.validation.products; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 产品时长单位校验注解 + * + * @author Gqr + * @since 2025/8/11 14:18 + */ +@Target({ + ElementType.FIELD, +}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Constraint( + validatedBy = {ProductDurationUnitValidator.class} +) +public @interface ProductDurationUnitValid { + String message() default "时长单位不合法"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/ProductDurationUnitValidator.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/ProductDurationUnitValidator.java new file mode 100644 index 000000000..1e4bb1946 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/validation/products/ProductDurationUnitValidator.java @@ -0,0 +1,30 @@ +package com.cf.imes.module.system.validation.products; + +import cn.hutool.core.util.ObjectUtil; +import com.cf.imes.module.system.enums.pay.ProductDurationUnitEnum; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +import java.util.Objects; + +/** + * 产品时长单位校验器 + * + * @author Gqr + * @since 2025/8/11 14:19 + */ +public class ProductDurationUnitValidator implements ConstraintValidator { + + @Override + public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) { + if (ObjectUtil.isNull(value)) { + return true; + } + for (ProductDurationUnitEnum unitEnum : ProductDurationUnitEnum.values()) { + if (Objects.equals(unitEnum.getCode(), value)) { + return true; + } + } + return false; + } +}