package com.yc.ship.module.resource.dal.dataobject.route;

import com.yc.ship.module.resource.dal.dataobject.routecost.ResourceRouteCostDO;
import com.yc.ship.module.resource.dal.dataobject.routelight.ResourceRouteLightDO;
import com.yc.ship.module.resource.dal.dataobject.routetrip.ResourceRouteTripDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;

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

    /**
     * ID
     */
    @TableId
    private Long id;
    /**
     * 航线名称
     */
    private String name;
    /**
     * 航线编码
     */
    private String code;
    /**
     * 英文名称
     */
    private String nameEn;
    /**
     * 航向（字典）
     *
     * 枚举 {@link TODO resource_route_direction 对应的类}
     */
    private Integer direction;
    /**
     * 航线简称
     */
    private String shortName;
    /**
     * 简拼
     */
    private String shortNameEn;
    /**
     * 登船码头
     */
    private Long onDockId;
    /**
     * 离船码头
     */
    private Long leaveDockId;
    /**
     * 途经停靠码头
     */
    private String midwayDockIds;
    /**
     * 航线简介
     */
    private String introduce;
    /**
     * 航线关联景区
     */
    private String relationScenicIds;
    /**
     * 航线时长
     */
    private String duration;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 状态
     *
     * 枚举 {@link TODO common_status 对应的类}
     */
    private Integer status;

    /**
     * 行程天数
     */
    private Integer dayNum;

    /**
     * 行程晚数
     */
    private Integer nightNum;

    /**
     * 航线图片
     */
    private String routeImg;

    /**
     * 航线视频
     */
    private String routeVideo;

    /**
     * 航线详情
     */
    private String routeDetail;

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

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

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

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

    /**
     * 航线主题
     */
    private String routeTheme;

    @Schema(description = "航线亮点")
    @TableField(exist = false)
    private List<ResourceRouteLightDO> routeLights;

    @Schema(description = "航线费用包含")
    @TableField(exist = false)
    private List<ResourceRouteCostDO> routeCosts;

    @Schema(description = "航线行程")
    @TableField(exist = false)
    private List<ResourceRouteTripDO> routeTrips;

}