You've already forked FrameTour-BE
feat(pricing): 添加一口价购买功能
- 新增 OnePricePurchaseController 控制器 - 新增 OnePriceConfigFilterRequest、OnePriceConfigRequest、OnePriceInfo等 DTO 类 - 新增 PriceOnePriceConfig 实体类和对应的 Mapper 接口 - 实现 OnePricePurchaseDiscountProvider 优惠提供者 - 实现 OnePricePurchaseServiceImpl 服务实现类 -定义 IOnePricePurchaseService服务接口 - 优化 DiscountDetail 类,添加创建一口价折扣的方法 - 修改 CLAUDE.md,将 error 方法改为 fail 方法
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
package com.ycwl.basic.pricing.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 一口价购买配置实体
|
||||
* 一口价:用户(faceId)在特定景区内所有商品的一次性购买优惠价格
|
||||
*/
|
||||
@Data
|
||||
@TableName("price_one_price_config")
|
||||
public class PriceOnePriceConfig {
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 配置名称
|
||||
*/
|
||||
private String configName;
|
||||
|
||||
/**
|
||||
* 景区ID
|
||||
*/
|
||||
private Long scenicId;
|
||||
|
||||
// 移除faceId字段,一口价是景区级别的统一价格
|
||||
|
||||
/**
|
||||
* 一口价格(该景区内所有商品的统一价格)
|
||||
*/
|
||||
private BigDecimal onePrice;
|
||||
|
||||
/**
|
||||
* 原价(用于计算和展示优惠金额)
|
||||
*/
|
||||
private BigDecimal originalPrice;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private Boolean isActive;
|
||||
|
||||
/**
|
||||
* 开始时间(可选,用于限时一口价)
|
||||
*/
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间(可选,用于限时一口价)
|
||||
*/
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 是否可与优惠券叠加使用
|
||||
*/
|
||||
private Boolean canUseCoupon;
|
||||
|
||||
/**
|
||||
* 是否可与券码叠加使用
|
||||
*/
|
||||
private Boolean canUseVoucher;
|
||||
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
private Long createBy;
|
||||
|
||||
private Long updateBy;
|
||||
|
||||
private Integer deleted;
|
||||
|
||||
@TableField("deleted_at")
|
||||
private LocalDateTime deletedAt;
|
||||
|
||||
/**
|
||||
* 检查是否在有效时间范围内
|
||||
*/
|
||||
public boolean isTimeValid() {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 如果没有设置时间范围,则始终有效
|
||||
if (startTime == null && endTime == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 检查开始时间
|
||||
if (startTime != null && now.isBefore(startTime)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查结束时间
|
||||
if (endTime != null && now.isAfter(endTime)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 移除isUserMatch方法,一口价适用于所有用户
|
||||
|
||||
/**
|
||||
* 检查景区是否匹配
|
||||
*/
|
||||
public boolean isScenicMatch(Long userScenicId) {
|
||||
return scenicId != null && scenicId.equals(userScenicId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user