package com.cyksj.model.manage.request;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.cyksj.model.entity.GoodsDiscountPlusPurchaseRelation;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author chan
 * @date 2022/9/27 5:28 PM
 */
@Getter
@Setter
public class ReqGoodsSkuInsert {
    private Long id;

    @NotNull(message = "请指定商品spu.")
    private Long goodsId;

    private List<ReqGoodsSkuSpec> specs;

    private List<Sku> skus;

    @Getter
    @Setter
    public static class Sku {
        /**
         * 商品规格 ids
         */
        private String specIds;

        /**
         * 副标题
         */
        private String subTitle;

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

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

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

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

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

        private String tags;

        private BigDecimal price;

        /**
         * 专属用户规格
         */
        private String userOwns;

        /**
         * 数量
         */
        private Integer num;

        /**
         * 有效天数
         */
        private Integer days;

        /**
         * 月份
         */
        private Integer months;

        /**
         * 状态
         */
        private Boolean status;

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

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

        /**
         * 优惠加购虚拟商品
         */
        private List<GoodsDiscountPlusPurchaseRelation> dpSku;

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

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

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

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

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

        /**
         * 排序
         */
        private Integer sorted;

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

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

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


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

        /**
         * mj relax次数
         */
        private Integer mjRelaxNum;

        private Integer lumaNum;

        /**
         * deepseek限制次数
         */
        private Integer dsLimitNum;

        /**
         * deepseek限制时间
         */
        private Long dsLimitTime;

        /**
         * 其他模型限制次数
         */
        private Integer otherLimitNum;

        /**
         * 其他模型限制时间
         */
        private Long otherLimitTime;

        /**
         * 备注
         */
        private String remark;

        /**
         * claude code每日限额
         */
        private Integer claudeDailyLimit;

        /**
         * Claude code 服务总额度
         */
        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;
    }

}
