package com.leromro.core.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.leromro.common.annotation.Excel;
import com.leromro.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 订单主对象 l_orders
 * 
 * @author ruoyi
 * @date 2025-04-09
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("l_main_orders")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MainOrders", description = "主订单")
public class MainOrders extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单id */
    @ApiModelProperty("订单id")
    @TableField("main_order_id")
    @TableId
    private Long mainOrderId;

    /** 下单用户id */
    @Excel(name = "下单用户id")
    @ApiModelProperty("下单用户id")
    private Long userId;

    /** 服务单价 */
    @Excel(name = "下单单价")
    @ApiModelProperty("单价")
    private BigDecimal serviceOnePrice;

    /** 服务总价 */
    @Excel(name = "下单总价")
    @ApiModelProperty("总价")
    private BigDecimal serviceTotalPrice;


    /**  0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待确认  */
    @Excel(name = " 订单状态 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款  ")
    @ApiModelProperty("订单状态 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款  ")
    private String orderStatus;

    /** 服务大类别 */
    @Excel(name = "服务总评分")
    @ApiModelProperty("服务总评分")
    private Long score;

    /** 服务大类别 */
    @Excel(name = "服务大类别")
    @ApiModelProperty("服务大类别")
    private Long serviceCategory;

    /** 服务大类别 */
    @Excel(name = "单次服务数量")
    @ApiModelProperty("单次服务数量")
    private Long singleQuantity;

    /** 总次数 */
    @Excel(name = "总次数")
    @ApiModelProperty("总次数")
    private Long totalTimes;

    /** 已完成次数 */
    @Excel(name = "已完成次数")
    @ApiModelProperty("已完成次数")
    private Long finishTimes;

    /** 预计开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预计开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("预计开始日期")
    private LocalDate serviceStartDate;

    /** 预计结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预计结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("预计结束日期")
    private LocalDate serviceFinishDate;
    @ApiModelProperty("单词服务时长")
    private Integer serviceDuration;

    /** 支付金额 */
    @Excel(name = "支付金额")
    @ApiModelProperty("支付金额")
    private BigDecimal paymentAmount;

    /** 订单支付方式：0余额 ，1微信，2支付宝 */
    @Excel(name = "订单支付方式：0 未支付，1余额 ，2微信，3支付宝")
    @ApiModelProperty("订单支付方式：0 未支付，1余额 ，2微信，3支付宝")
    private String paymentMethod;

    /** 志愿者id */
    @Excel(name = "志愿者id")
    @ApiModelProperty("志愿者id")
    private Long volunteerId;

    /** 受服务地址id */
    @Excel(name = "受服务地址id")
    @ApiModelProperty("受服务地址id")
    private Long addressId;

    /** 受服务地址id */
    @Excel(name = "受服务地址")
    @ApiModelProperty("受服务地址")
    private String address;

    /** 详细地址 */
    @TableField("address_longitude")
    @ApiModelProperty("收货地址经度")
    private String addressLongitude;

    /** 详细地址 */
    @TableField("address_latitude")
    @ApiModelProperty("收货地址纬度")
    private String addressLatitude;

    /** 受服务地址id */
    @Excel(name = "受服务地址人姓名")
    @ApiModelProperty("受服务地址人姓名")
    private String clientName;

    /** 受服务地址id */
    @Excel(name = "受服务地址手机号")
    @ApiModelProperty("受服务地址手机号")
    private String clientTelephone;

    /** 省级区划编号 */
    @TableField("province_code")
    @ApiModelProperty("省级区划编号")
    private String provinceCode;

    /** 省级名称 */
    @TableField("province_name")
    @ApiModelProperty("省级名称")
    private String provinceName;

    /** 市级编号 */
    @TableField("city_code")
    @ApiModelProperty("市级编号")
    private String cityCode;

    /** 市级名称 */
    @TableField("city_name")
    @ApiModelProperty("市级名称")
    private String cityName;

    /** 区级区划编号 */
    @TableField("district_code")
    @ApiModelProperty("区级区划编号")
    private String districtCode;

    /** 区级名称 */
    @TableField("district_name")
    @ApiModelProperty("区级名称")
    private String districtName;

    /** 是否删除 0未删除，1已删除 */
    @Excel(name = "是否删除 0未删除，1已删除")
    @ApiModelProperty("是否删除 0未删除，1已删除")
    private Integer isDelete;

    @ApiModelProperty("业务id")
    private Long businessManagementId;

    @ApiModelProperty("志愿者信息主键")
    private Long volunteerInfoId;

    @TableField("out_trade_no")
    @ApiModelProperty("商户订单号")
    private String outTradeNo;

    @ApiModelProperty("区域公司id")
    private Long areaDistributionId;

    @ApiModelProperty("服务中心id")
    private Long serviceCenterId;
    /**
     * 分配状态：10 未分配到服务中心   20已分配到服务中心   30匹配到多个服务中心
     */
/*    @ApiModelProperty("分配状态：10 未分配到服务中心   20已分配到服务中心   30匹配到多个服务中心")
    private String allotStatus;*/

    /**
     * 区域抽成金额（元）
     */
  /*  @ApiModelProperty("订单所属的服务中心id")
    private Long deptId;*/

}
