package com.yc.ship.module.product.dal.dataobject.voyage;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.sun.xml.bind.v2.TODO;
import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
import lombok.*;

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

/**
 * 航次管理 DO
 *
 * @author lfy
 */
@TableName(value = "product_voyage",autoResultMap = true)
@KeySequence("product_voyage_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VoyageDO extends TenantBaseDO {

    /**
     * ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 航次名称
     */
    private String name;
    /**
     * 航次代码
     */
    private String code;
    /**
     * 游轮
     */
    private Long shipId;
    /**
     * 航线
     */
    private Long routeId;
    /**
     * 登船时间
     */
    private LocalDateTime boardingTime;
    /**
     * 开航时间
     */
    private LocalDateTime startTime;
    /**
     * 离船时间
     */
    private LocalDateTime leaveTime;
    /**
     * 航次类别
     * 枚举 {@link TODO voyage_type 对应的类}
     */
    private Integer type;
    /**
     * 是否中转
     * 枚举 {@link TODO yes_no 对应的类}
     */
    private Integer transfer;
    /**
     * 中转时间
     */
    private LocalDateTime transferTime;
    /**
     * 登船码头
     */
    private Long boardingDockId;
    /**
     * 登船地点
     */
    private String boardingAddress;
    /**
     * 离船地点
     */
    private String leaveAddress;
    /**
     * 预定渠道
     * 枚举 {@link TODO product_reserve_channel 对应的类}
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> channel;
    /**
     * 库存是否可见
     * 枚举 {@link TODO yes_no 对应的类}
     */
    private Integer stockVisible;
    /**
     * 上架状态
     * 枚举 {@link TODO product_shelf_status 对应的类}
     */
    private Integer shelfStatus;

    /**
     * 航次方向
     * 枚举 {@link TODO voyage_direction 对应的类}
     */
    @TableField(exist = false)
    private Integer direction;

    @TableField(exist = false)
    private BigDecimal basicPrice;
    /**
     * 集合地点
     */
    private String venue;
    /**
     * 产品介绍
     */
    private String introduce;
    /**
     * 登船须知（弃用）
     */
    private String notice;

    /**
     * 预订须知
     */
    private String bookingNotice;

    /**
     * 登船须知
     */
    private String boardingNotice;

    /**
     * 儿童预定说明
     */
    private String childBookingNotice;


    private Integer isLock;
}