package com.cyksj.model.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.cyksj.model.views.DistributeSearchView;
import com.cyksj.model.views.GoodsDiscountPlusPurchaseRelationFrontView;
import com.ejlchina.searcher.bean.DbIgnore;
import com.ejlchina.searcher.bean.SearchBean;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author chan
 * @date 2022/9/26 4:58 PM
 */
@Getter
@Setter
@SearchBean(tables = "goods_don_sku",
		where = ":condition:")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class GoodsDonSku extends BaseEntity {

    private Long goodsId;


    private String subTitle;

    /**
     * 商品规格 ids
     */
    private String specIds;

    /**
     * 重复校验规格ids
     */
    private String dupSpecIds;

    /**
     * 商品规格 value
     */
    private String specVal;

    /**
     * 商品规格 json
     */
    private String specJson;

    /**
     * 规格说明信息
     */
    private String notifyText;

    /**
     * H5标签
     */
    private String mobileTags;

    /**
     * 规格背景图
     */
    private String img;

    /**
     * 规格框提示
     */
    private String smallMsg;

    /**
     * 双重验证码次数
     */
    private Integer codeNum;

    /**
     * 商品预览图
     */
    private String picture;

    /**
     * 商品详情图
     */
    private String detail;

    /**
     * 标签
     */
    private String tags;


    /**
     * true 上架 / false 下架
     */
    private Boolean status;


    /**
     * 车位数
     */
    private Integer num;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 专属用户规格
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String userOwns;

    /**
     * 专属用户列表
     */
    @DbIgnore
    @TableField(exist = false)
    private List<DistributeSearchView> userOwnsList;

    /**
     * 是否开启实物车票时长权益
     */
    private Boolean isBenefits;

    /**
     * 权益列表
     */
    private String benefitsList;

    /**
     * 月数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer months;

    /**
     * 天数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer days;

//    @DbField("case when spec_val like '%月%' and spec_val not like '%年%' then 0 when spec_val like '%季%' then 1 when spec_val like '%半年%' then 2 when spec_val like '%年%' then 3 else 66 end")
//    @TableField(exist = false)
//    private Integer orderBy;

    /**
     * 加购规格
     */
    @DbIgnore
    @TableField(exist = false)
    private List<GoodsDiscountPlusPurchaseRelation> dpSku;

    /**
     * 是否是优惠加购规格
     */
    private Boolean isDp;

    /**
     * 是否是镜像服务
     */
    private Boolean isMirror;

    /**
     * 是否是车队形式
     */
    private Boolean isCar;

    /**
     * 限制次数
     */
    private Integer gptLimitNum;

    /**
     * 限制时间
     */
    private Long gptLimitTime;

    /**
     * mj fast次数
     */
    private Integer mjFastNum;

    /**
     * mj relax次数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer mjRelaxNum;

    /**
     * luma次数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer lumaNum;

    /**
     * deepseek限制次数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer dsLimitNum;

    /**
     * deepseek限制时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long dsLimitTime;

    /**
     * 其他模型限制次数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer otherLimitNum;

    /**
     * 其他模型限制时间
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long otherLimitTime;

    /**
     * 特定价格
     */
    private BigDecimal specificPrice;

    /**
     * 特定平台购买用户人群
     */
    private String specificGoodsIds;

    /**
     * 优惠加购商品规格展示
     */
    @DbIgnore
    @TableField(exist = false)
    private List<GoodsDiscountPlusPurchaseRelationFrontView> dpSkuList;

    /**
     * 前端展示
     */
    @DbIgnore
    @TableField(exist = false)
    @JsonProperty("gname")
    private String gName;

    /**
     * 前端展示
     */
    @DbIgnore
    @TableField(exist = false)
    @JsonProperty("sname")
    private String sName;

    @DbIgnore
    @TableField(exist = false)
    private BigDecimal yhShopSkuPrice;

    /**
     * 排序
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer sorted;

    /**
     * 备注
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String remark;

    /**
     * claude code每日限额
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer claudeDailyLimit;

    /**
     * Claude code 服务总额度
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer claudeQuota;

    /**
     * nano总配额次数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer nanoQuota;

    /**
     * cc最高约可使用次数
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer highestUsage;

    /**
     * 是否赠送codex
     */
    private Boolean isCodex;

    /**
     * codex套餐名
     */
    private String codexPlanName;

    /**
     * 每日预算上限
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer openaiDailyLimit;

    /**
     * 每月预算上限
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer openaiQuota;
}
