package com.yc.ship.module.trade.dal.dataobject.order;

import com.yc.ship.framework.mybatis.core.dataobject.TenantSyncDO;
import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
import com.yc.ship.module.trade.framework.annotation.ForUpdate;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.*;
import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;

/**
 * 订单汇总 DO
 *
 * @author 管理员
 */
@TableName("trade_order_total")
@KeySequence("trade_order_total_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeOrderTotalDO extends TenantSyncDO {

    /**
     * 订单ID
     */
    @TableId
    private Long id;
    /**
     * 旧订单ID
     */
    private Long oldOrderId;
    /**
     * 成人总数
     */
    @ForUpdate(fieldName = "成人总数")
    private Integer adultTotalNum;
    /**
     * 儿童总数
     */
    @ForUpdate(fieldName = "儿童总数")
    private Integer childTotalNum;
    /**
     * 婴儿总数
     */
    @ForUpdate(fieldName = "婴儿总数")
    private Integer babyTotalNum;
    /**
     * 陪同总数
     */
    @ForUpdate(fieldName = "陪同总数")
    private Integer withTotalNum;
    /**
     * 用房总数
     */
    @ForUpdate(fieldName = "用房总数")
    private Double useRoomTotalNum;
    /**
     * 升楼层总数
     */
    @ForUpdate(fieldName = "升楼层总数")
    private Integer upFloorTotalNum;
    /**
     * 升楼层总价
     */
    @ForUpdate(fieldName = "升楼层总价")
    private BigDecimal upFloorTotalMoney;
    /**
     * 总加床人数
     */
    @ForUpdate(fieldName = "总加床人数")
    private Integer plusTotalNum;
    /**
     * 调节总价
     */
    @ForUpdate(fieldName = "调节总价")
    private BigDecimal adjustTotalMoney;
    /**
     * 领队数
     */
    @ForUpdate(fieldName = "领队数")
    private Integer leaderTotalNum;

    @ForUpdate(fieldName = "领队费")
    private BigDecimal leaderAmount;

    @ForUpdate(fieldName = "陪同费")
    private BigDecimal withAmount;
    /**
     * 包含服务费
     */
    @ForUpdate(fieldName = "包含服务费")
    private BigDecimal serviceMoney;
    /**
     * 代收服务费
     */
    @ForUpdate(fieldName = "代收服务费")
    private BigDecimal collectionServiceMoney;
    /**
     * 订单总额
     */
    @ForUpdate(fieldName = "订单总额")
    private BigDecimal orderMoney;

//    @ForUpdate(fieldName = "实际金额")
    private BigDecimal realMoney;

    @ForUpdate(fieldName = "其它费用")
    private BigDecimal otherMoney;

    @ForUpdate(fieldName = "16免1人数")
    private Integer freeNum;

    @ForUpdate(fieldName = "16免1金额")
    private BigDecimal freeAmount;

    @ForUpdate(fieldName = "其它备注")
    private String otherRemark;

}