package cn.newfeifan.mall.module.trade.controller.admin.order.vo;

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

import java.time.LocalDateTime;

@Schema(description = "管理后台 - 交易订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class TradeOrderRespVO {

    @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12286")
    private Long id;

    @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单号")
    private String no;

    @Schema(description = "订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    private Integer type;

    @Schema(description = "订单来源终端", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer terminal;

    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29815")
    private Long userId;

    @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED)
    private String userIp;

    @Schema(description = "用户备注", example = "你说的对")
    @ExcelProperty("用户备注")
    private String userRemark;

    @Schema(description = "订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer status;

    @Schema(description = "购买的商品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "2870")
    @ExcelProperty("购买的商品数量")
    private Integer productCount;

    @Schema(description = "取消类型", example = "2")
    private Integer cancelType;

    @Schema(description = "商家备注", example = "随便")
    @ExcelProperty("商家备注")
    private String remark;

    @Schema(description = "是否评价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Boolean commentStatus;

    @Schema(description = "推广人编号", example = "29343")
    private Long brokerageUserId;

    @Schema(description = "支付订单编号", example = "4697")
    private Long payOrderId;

    @Schema(description = "是否已支付：[0:未支付 1:已经支付过]", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Boolean payStatus;


    @Schema(description = "支付成功的支付渠道")
    private String payChannelCode;

    @Schema(description = "商品原价（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1317")
    @ExcelProperty("商品原价（总）")
    private Double totalPrice;

    @Schema(description = "订单优惠（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "6113")
    private Integer discountPrice;

    @Schema(description = "运费金额，单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "29782")
    @ExcelProperty("运费金额")
    private Double deliveryPrice;

    @Schema(description = "订单调价（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "25923")
    private Integer adjustPrice;

    @Schema(description = "应付金额（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "26217")
    @ExcelProperty("应付金额（总）")
    private Double payPrice;

    @Schema(description = "配送类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    private Integer deliveryType;

    @Schema(description = "发货物流公司编号", example = "9174")
    private Long logisticsId;

    @Schema(description = "物流公司单号")
    @ExcelProperty("物流公司单号")
    private String logisticsNo;

    @Schema(description = "发货时间")
    @ExcelProperty("发货时间")
    private LocalDateTime deliveryTime;

    @Schema(description = "收货时间")
    @ExcelProperty("收货时间")
    private LocalDateTime receiveTime;

    @Schema(description = "收件人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("收件人名称")
    private String receiverName;

    @Schema(description = "收件人手机", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("收件人手机")
    private String receiverMobile;

    @Schema(description = "收件人地区编号", example = "6830")
    private Integer receiverAreaId;

    @Schema(description = "收件人详细地址")
    @ExcelProperty("收件人详细地址")
    private String receiverDetailAddress;

    @Schema(description = "自提门店编号", example = "24448")
    private Long pickUpStoreId;

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

    @Schema(description = "售后状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer refundStatus;

    @Schema(description = "退款金额，单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "23373")
    @ExcelProperty("退款金额")
    private Double refundPrice;

    @Schema(description = "优惠劵编号", example = "20033")
    private Long couponId;

    @Schema(description = "优惠劵减免金额，单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "14111")
    private Integer couponPrice;

    @Schema(description = "使用的积分", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer usePoint;

    @Schema(description = "积分抵扣的金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Integer pointPrice;

    @Schema(description = "赠送的积分", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer givePoint;

    @Schema(description = "退还的使用的积分", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer refundPoint;

    @Schema(description = "VIP 减免金额，单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "15488")
    private Integer vipPrice;

    @Schema(description = "秒杀活动编号", example = "9127")
    private Long seckillActivityId;

    @Schema(description = "砍价活动编号", example = "4171")
    private Long bargainActivityId;

    @Schema(description = "砍价记录编号", example = "11074")
    private Long bargainRecordId;

    private Long combinationActivityId;

    @Schema(description = "拼团团长编号", example = "23766")
    private Long combinationHeadId;

    @Schema(description = "拼团记录编号", example = "17475")
    private Long combinationRecordId;

    @Schema(description = "店铺id", example = "21281")
    private Long shopId;

    @Schema(description = "商户id", example = "25201")
    private Long merchantId;

    @Schema(description = "支付积分")
    @ExcelProperty("支付积分")
    private Double payIntegral;

    @Schema(description = "用户获得积分")
    private Long increaseIntegral;

    @Schema(description = "退还的使用的积分")
    @ExcelProperty("退还的使用的积分")
    private Double refundIntegral;

    @Schema(description = "实付人民币，单位：分")
    private Integer payRmb;

    @Schema(description = "订阅物流信息，未订阅是0，已订阅是1", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer subscriptionLogisticsInfo;

    @Schema(description = "发货备注", example = "你猜")
    @ExcelProperty("发货备注")
    private String deliveryRemark;

    @Schema(description = "物流签收时间")
    @ExcelProperty("物流签收时间")
    private LocalDateTime receivingTime;

    @Schema(description = "发货信息附件")
    private String attachment;

    @Schema(description = "订单支付时间")
    @ExcelProperty("订单支付时间")
    private LocalDateTime payTime;

    @Schema(description = "订单完成时间")
    @ExcelProperty("订单完成时间")
    private LocalDateTime finishTime;

    @Schema(description = "订单取消时间")
    @ExcelProperty("订单取消时间")
    private LocalDateTime cancelTime;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}