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;
import java.util.Date;

/**
 * 一口价购买配置实体
 * 一口价：用户(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 Date createTime;
    
    @TableField("update_time")
    private Date updateTime;
    
    private Long createBy;
    
    private Long updateBy;
    
    private Integer deleted;
    
    @TableField("deleted_at")
    private Date 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);
    }
}