package com.yc.ship.module.trade.controller.admin.report.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.yc.ship.framework.excel.core.annotations.DictFormat;
import com.yc.ship.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 订单收入台账 Response VO（同时用于 Excel 导出）
 *
 * @author 管理员
 */
@Schema(description = "管理后台 - 订单收入台账 Response VO")
@Data
@ExcelIgnoreUnannotated
public class IncomeOrderLedgerRespVO {

    @Schema(description = "主键ID", hidden = true)
    private Long id;

    @Schema(description = "订单编号", example = "CJXLY-20260204-YC-1")
    @ExcelProperty("订单编号")
    private String orderNo;

    @Schema(description = "订单状态", example = "1")
    @ExcelProperty(value = "订单状态", converter = DictConvert.class)
    @DictFormat("trade_order_status")
    private Integer orderStatus;

    @Schema(description = "支付状态", example = "1")
    @ExcelProperty(value = "支付状态", converter = DictConvert.class)
    @DictFormat("payment_status")
    private Integer paymentStatus;

    @Schema(description = "开航时间", example = "2024/03/01")
    @ExcelProperty("开航时间")
    private String sailTime;

    @Schema(description = "组团社", example = "长江国际旅行社")
    @ExcelProperty("组团社")
    private String travelAgency;

    @Schema(description = "航次", example = "长江行 揽月2026-05-05")
    @ExcelProperty("航次")
    private String voyage;

    @Schema(description = "航线名称", example = "重庆-宜昌三峡游")
    @ExcelProperty("航线名称")
    private String routeName;

    @Schema(description = "房型名称", example = "标准间")
    @ExcelProperty("房型名称")
    private String roomTypeName;

    @Schema(description = "房间总数", example = "5")
    @ExcelProperty("房间总数")
    private Integer roomCount;

    @Schema(description = "成人数", example = "10")
    @ExcelProperty("成人数")
    private Integer adultCount;

    @Schema(description = "儿童数", example = "3")
    @ExcelProperty("儿童数")
    private Integer childCount;

    @Schema(description = "婴儿数", example = "1")
    @ExcelProperty("婴儿数")
    private Integer infantCount;

    @Schema(description = "陪同数", example = "2")
    @ExcelProperty("陪同数")
    private Integer companionCount;

    @Schema(description = "领队数", example = "2")
    @ExcelProperty("领队数")
    private Integer leaderCount;

    @Schema(description = "免票数", example = "1")
    @ExcelProperty("免票")
    private Integer freeCount;

    @Schema(description = "总人数", example = "17")
    @ExcelProperty("总人数")
    private Integer totalCount;

    @Schema(description = "营销价格", example = "5000.00")
    @NumberFormat("0.00")
    @ExcelProperty("营销价格")
    private BigDecimal marketingPrice;

    @Schema(description = "优惠金额", example = "200.00")
    @NumberFormat("0.00")
    @ExcelProperty("优惠金额")
    private BigDecimal discountAmount;

    @Schema(description = "退票手续费", example = "50.00")
    @NumberFormat("0.00")
    @ExcelProperty("退票手续费")
    private BigDecimal refundFee;

    @Schema(description = "实际结算价格", example = "4750.00")
    @NumberFormat("0.00")
    @ExcelProperty("实际结算价格")
    private BigDecimal actualSettlementPrice;

}
