mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
1、账户明细接口增加非管理端只能查当前组织数据逻辑;2、产品时长单位和正常年月日单位枚举区分;
This commit is contained in:
+10
-1
@@ -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<PageResult<BalanceDetailsRespVO>> 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<BalanceDetailsRespVO> list = incomeExpenseService.getBalanceDetailsPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
|
||||
+3
-3
@@ -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 = "")
|
||||
|
||||
+3
-3
@@ -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 = "支付方式")
|
||||
|
||||
+6
-1
@@ -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))
|
||||
|
||||
+64
@@ -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;
|
||||
}
|
||||
}
|
||||
-5
@@ -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<BalanceDetailsRespVO> getBalanceDetailsPage(BalanceDetailsPageReqVO pageReqVO) {
|
||||
if (ObjectUtil.isNull(pageReqVO.getOrganId())) {
|
||||
pageReqVO.setOrganId(SecurityFrameworkUtils.getUserOrganId());
|
||||
}
|
||||
|
||||
PageResult<IncomeExpenseDetailsDO> pageResult = incomeExpenseDetailsMapper.selectDetailsPage(pageReqVO);
|
||||
List<IncomeExpenseDetailsDO> pageResultList = pageResult.getList();
|
||||
if(CollUtil.isEmpty(pageResultList)){
|
||||
|
||||
+2
-2
@@ -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) {
|
||||
//产量去重
|
||||
|
||||
+2
-3
@@ -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:
|
||||
|
||||
+2
-2
@@ -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 {};
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Objects;
|
||||
* @author Gqr
|
||||
* @since 2025/8/11 14:19
|
||||
*/
|
||||
public class TimeUnitValidator implements ConstraintValidator<TimeUnitValid, Integer> {
|
||||
public class DurationUnitValidator implements ConstraintValidator<DurationUnitValid, Integer> {
|
||||
|
||||
@Override
|
||||
public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) {
|
||||
+32
@@ -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<? extends Payload>[] payload() default {};
|
||||
}
|
||||
+30
@@ -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<ProductDurationUnitValid, Integer> {
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user