package com.hzs.system.base.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.system.sys.dto.LoginUser;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @Description: 公告VO
 * @Author: ljc
 * @Time: 2023/2/3 11:24
 * @Classname: BdNoticeVO
 * @Package_name: com.hzs.system.base.vo
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BdNoticeVO implements Serializable {
    private static final long serialVersionUID = -7475002531106898860L;

    /**
     * 主键
     */
    private Long pkId;

    /**
     * 标题
     */
    private String title;

    /**
     * 富文本
     */
    private String content;

    /**
     * 是否强制弹窗 1:允许 2：禁止
     */
    @Transaction(transactionKey = EnumsPrefixConstants.POPUP_TYPE)
    private Integer isPopScreen;

    private String isPopScreenVal;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;

    /**
     * 网站类型：1：前台，2：后台
     */
    @Transaction(transactionKey = EnumsPrefixConstants.NOTICE_WEBSITE_TYPE)
    private Integer websiteType;

    private String websiteTypeVal;

    /**
     * 类型：1：公告，2：站内信
     */
    @Transaction(transactionKey = EnumsPrefixConstants.NOTICE_FUNCTION_TYPE)
    private Integer functionType;

    private String functionTypeVal;
    /**
     * 发布位置
     */
    private String publishLocation;

    /**
     * 等级
     */
    private String grade;

    /**
     * 角色
     */
    private String role;

    /**
     * 奖衔
     */
    private String awards;

    /**
     * 状态
     */
    @Transaction(transactionKey = EnumsPrefixConstants.NOTICE_STATE)
    private Integer state;

    private String stateVal;
    /**
     * 会员ID
     */
    private Long pkMember;
    /**
     * 国家ID
     */
    private Integer pkCountry;

    /**
     * 等级翻译
     */
    @Transaction
    private List<DbNoticeGradeVO> noticeGradeVOList;

    /**
     * 奖衔翻译
     */
    @Transaction
    private List<DbNoticeAwardsVO> awardsVOList;

    /**
     * 发布位置翻译
     */
    @Transaction
    private List<DbNoticeLocationVO> locationVOList;

    /**
     * 审核状态((1:待审核 2：通过 3:驳回))
     */
    @Transaction(transactionKey = EnumsPrefixConstants.APPROVE_RECHARGE_OPERATION)
    private Integer approveState;


    private String approveStateVal;

    /**
     * 审核人
     */
    private Long approver;

    /**
     * 审核时间
     */
    @TableField("APPROVE_TIME")
    private Date approveTime;

    /**
     * 批次
     */
    private String batch;

    /**
     * 登录用户信息
     */
    private LoginUser loginUser;

    /**
     * 审批业务类型
     */
    private Integer approvalBusiness;


    /**
     * 角色名称
     */
    private String roleNames;
    /**
     * 是否显示七天的数据
     */
    private Integer isShowDay;
    /**
     * 开始时间
     */
    private String startDate;
    /**
     * 结束时间
     */
    private String endDate;

    /**
     * 开始完成时间
     */
    private String startFinishtDate;
    /**
     * 结束完成时间
     */
    private String endFinishDate;


    /**
     * 读取状态
     */
    private Integer readState;

    /**
     * 角色集合
     */
    private List roles;

    /**
     * 排序
     */
    private Long sort;

    /**
     * 是否置项（0:置顶 1：未置顶）
     */
    private Integer top;

    /**
     * 操作类型（1=新增,2=修改,3=删除）
     */
    private Integer operateType;

    /**
     * 会员ID
     */
    private List<Long> pkMemberList;

    /**
     * 创建人
     */
    private Long pkCreate;

    /**
     * 系统类型（2=新零售）
     */
    private Integer systemType;

    /**
     * 系统类型
     */
    private List<Integer> systemTypeList;

}
