package com.fs.course.config;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalTime;
import java.util.Date;
import java.util.List;

@Data
public class CourseConfig implements Serializable {
    private Integer answerRate; //可答题百分比
    private Integer answerErrorCount; //允许错误次数
    private Integer videoLinkExpireDate; //课程小节短链过期时间
    private Integer maxBufferLength;//最大缓冲时长
    private Integer videoIntegral;//每十分钟获取多少积分
    private Integer answerIntegral;//答题获得积分
    private Integer appAnswerIntegral; //app答题积分
    private Integer defaultLine;//默认看课线路
    private String realLinkDomainName;//真链域名
    private String feishuCourseDomain;//飞书看课域名
    private String feishuAuthDomain;//飞书授权域名
    private Boolean enableFeishuNewLink;//是否启用飞书新跳转
    private String realLinkGjDomainName;//外网通用看课链接域名
    private String authDomainName;//网页授权域名
    private String mpAppId;//看课公众号APPID
    /**
     * 飞书NEW（contentType=18）领取页服务号 AppID，与通用 mpAppId 分开配置
     */
    private String feishuMpAppId;
    private String registerDomainName;//注册域名
    private String courseDomainName;//链接域名
    private String miniprogramAppid;//链接域名
    private Integer rewardType; // 奖励类型 1红包 2积分 3红包+积分
    private Integer redPacketMode;//红包模式 1总公司 2销售公司
    private BigDecimal moneyPri;//充值手续费百分比
    private BigDecimal redPackageMoney;//充值手续费百分比
    private List<DisabledTimeVo> disabledTimeList;//充值手续费百分比
    private Integer completionMode; // 完课模式
    private Integer minutesNum; //多少分钟算完课
    private Integer openCommentStatus; //开启评论/弹幕
    private Integer viewCommentNum; // 查看历史评论数量
    private Long sendDelayTime; // 查看发送延时时间

    private String companyUserQRCode;// 默认客服二维码图片
    private String courseLogo;//课程Logo
    private String sidebarImageUrl;//侧边栏公共图
    private Integer delayStart;
    private Integer delayEnd;
    private Integer isNegative;//是否为负数 0、不允许，1、允许

    private Integer isOpen;

    /**
     * 侧边栏是否仅展示当天课程
     */
    private boolean sidebarOnlyShowTodayCourse;

    /**
     * 用于配置登录的小程序id
     */
    private String loginMiniAppId;

    /**
     * 小程序授权头像昵称方式（目前仅会员看课有效）
     * 1：小程序原生授权 2：跳转H5服务号授权
     */
    private Integer miniAppAuthType;
    /**
     * 会员看课
     * 小程序授权头像昵称，跳转H5服务号授权域名
     */
    private String userCourseAuthDomain;

    /**
     * 会员看课
     * 炮灰看课发红包-服务号发
     */
    private String userCourseH5Reward;

    /**
     * 是否绑定
     */
    private Boolean isBound;

    /**
     * 是否显示企微二维码
     */
    private Boolean showQwCode;
    private Boolean dept;
    /**
     * 是否单销售观看（只能在第一次绑定的销售头上看课）
     */
    private boolean oneCompanyCourse;

    //
    private boolean moreCompanyCourse;

    /**
     * 是否开启IM
     */
    private Boolean isOpenIM;

    /**
     * 是否红包余额抵扣 1是 0否
     */
    private String isRedPackageBalanceDeduction;

    // 控制休息提示是否打开 默认打开 0-关闭 1-打开
    private Integer isOpenRestReminder;

    /**
     * 是否开启按项目自动看课重粉限制（关闭则不限制）
     */
    private Boolean projectRepeatLimitEnabled;

    /**
     * 按项目重粉限制生效时间，此时间之后的看课行为才受限
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date projectRepeatLimitEffectiveTime;

    /**
     * 先导课是否豁免重粉限制，默认 true
     */
    private Boolean pilotCourseSkipRepeatLimit;

    /**
     * 飞书免授权 SOP 一键群发：每个飞书文档承载的最大客户数，超出后轮换新文档。默认 30。
     */
    private Integer feishuDirectDocMaxCustomersPerShard;

    /**
     * 飞书免授权 SOP 自动定时发课：每个飞书文档承载的最大客户数，超出后轮换新文档。默认 50。
     * 未配置时回退 feishuDirectDocMaxCustomersPerShard，仍无则使用 50。
     */
    private Integer feishuDirectDocMaxCustomersPerShardAuto;


    @Data
    public static class DisabledTimeVo{
        @JsonFormat(pattern = "HH:mm")
        private LocalTime startDisabledTime;
        @JsonFormat(pattern = "HH:mm")
        private LocalTime endDisabledTime;
    }

}
