package com.jeesharp.business.modules.mall.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 商城订单管理端 Excel 导出行；含会员编号、昵称、手机（联查 {@code app_member}）。
 *
 * @author jeesharp
 * @since 2026-05-16
 */
@Data
@Schema(description = "商城订单导出")
public class MallOrderExportVO {

    @ExcelProperty("订单编号")
    @Schema(description = "订单编号")
    private String orderNo;

    @ExcelProperty("合并支付批次")
    @Schema(description = "合并支付批次号")
    private String payBatchNo;

    @ExcelProperty("店铺券抵扣")
    @Schema(description = "店铺券抵扣")
    private BigDecimal merchantCouponAmount;

    @ExcelProperty("平台券分摊")
    @Schema(description = "平台券分摊")
    private BigDecimal platformCouponAmount;

    @ExcelProperty("会员编号")
    @Schema(description = "会员编号")
    private String memberNo;

    @ExcelProperty("会员昵称")
    @Schema(description = "会员昵称")
    private String memberNickname;

    @ExcelProperty("会员手机号码")
    @Schema(description = "会员手机号码")
    private String memberMobile;

    @ExcelProperty("会员ID")
    @Schema(description = "会员ID")
    private String memberId;

    @ExcelProperty("订单状态")
    @Schema(description = "订单状态")
    private String statusName;

    @ExcelProperty("配送方式")
    @Schema(description = "配送方式")
    private String deliveryTypeName;

    @ExcelProperty("实付金额")
    @Schema(description = "实付金额")
    private BigDecimal payAmount;

    @ExcelProperty("运费")
    @Schema(description = "运费")
    private BigDecimal freightAmount;

    @ExcelProperty("订单总额")
    @Schema(description = "订单总额")
    private BigDecimal totalAmount;

    @ExcelProperty("优惠金额")
    @Schema(description = "优惠金额")
    private BigDecimal discountAmount;

    @ExcelProperty("支付方式")
    @Schema(description = "支付方式")
    private String payType;

    @ExcelProperty(value = "支付时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @Schema(description = "支付时间")
    private Date payTime;

    @ExcelProperty("收货人")
    @Schema(description = "收货人")
    private String receiverName;

    @ExcelProperty("收货手机")
    @Schema(description = "收货手机")
    private String receiverMobile;

    @ExcelProperty("收货地址")
    @Schema(description = "收货地址")
    private String receiverFullAddress;

    @ExcelProperty("自提核销码")
    @Schema(description = "自提核销码")
    private String pickupVerifyCode;

    @ExcelProperty("物流公司")
    @Schema(description = "物流公司")
    private String logisticsCompany;

    @ExcelProperty("运单号")
    @Schema(description = "运单号")
    private String logisticsNo;

    @ExcelProperty(value = "发货时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @Schema(description = "发货时间")
    private Date shipTime;

    @ExcelProperty(value = "确认收货时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @Schema(description = "确认收货时间")
    private Date confirmTime;

    @ExcelProperty("买家留言")
    @Schema(description = "买家留言")
    private String buyerRemark;

    @ExcelProperty("商家备注")
    @Schema(description = "商家备注")
    private String adminRemark;

    @ExcelProperty(value = "创建时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间")
    private Date createDate;
}
