package com.leromro.core.domain;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.leromro.common.annotation.Sensitive;
import io.swagger.annotations.ApiOperation;
import lombok.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
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;
import java.time.LocalTime;
import java.util.Date;

/**
 * 志愿者的订单对象 l_volunteer_order
 * 
 * @author ruoyi
 * @date 2025-04-09
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("l_second_order")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SecondOrder", description = "小订单")
public class SecondOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 小订单表id */
    @Excel(name = "小订单id")
    @ApiModelProperty("主键 小订单表id")
    private Long secondOrderId;

    /** 订单id */
    @Excel(name = "主订单id")
    @ApiModelProperty("订单id")
    private Long mainOrderId;

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

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

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

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

    @Excel(name = "志愿者结算状态10 未结算 20已结算")
    @ApiModelProperty("志愿者结算状态: 10 未结算 20已结算")
    private String volunteerSettlementStatus;

    /** 区域公司id */
    @Excel(name = "区域公司id")
    @ApiModelProperty("区域公司id")
    private Long areaDistributionId;

    /** 服务中心id */
    @Excel(name = "服务中心id")
    @ApiModelProperty("服务中心id")
    private Long serviceCenterId;

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

    /** 服务记录照片拼接 */
    @Excel(name = "志愿者文字评价")
    @ApiModelProperty("志愿者文字评价")
    private String volunteerReview;

    /** 服务记录照片拼接 */
    @Excel(name = "志愿者图片记录")
    @ApiModelProperty("志愿者图片记录")
    private String volunteerPicture;

    /** 服务记录照片拼接 */
    @Excel(name = "用户文字评价")
    @ApiModelProperty("用户文字评价")
    private String userReview;

    /** 服务记录照片拼接 */
    @Excel(name = "用户图片记录")
    @ApiModelProperty("用户图片记录")
    private String userPicture;

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

    /** 工作开始时间 HH:ss */
    @JsonFormat(pattern = "HH:ss")
    @Excel(name = "工作开始时间 HH:ss", width = 30, dateFormat = "HH:ss")
    @ApiModelProperty("工作开始时间 HH:ss")
    private LocalTime workStartTime;

    /** 结束时间 */
    @JsonFormat(pattern = "HH:ss")
    @Excel(name = "结束时间", width = 30, dateFormat = "HH:ss")
    @ApiModelProperty("结束时间")
    private LocalTime workEndTime;

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

    /** 服务第几次 */
    @Excel(name = "服务第几次")
    @ApiModelProperty("服务第几次")
    private Long workNumber;

    /** 服务时长（小时） */
    @Excel(name = "服务时长", readConverterExp = "小=时")
    @ApiModelProperty("服务时长（小时）")
    private Integer serviceDuration;

    /** 服务地址表外键 */
    @Excel(name = "服务地址表外键")
    @ApiModelProperty("服务地址表外键")
    private Long addressId;   /** 服务地址表外键 */

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

    /** 评分 */
    @Excel(name = "评分")
    @ApiModelProperty("评分")
    private Integer score;

    /** 评分 */
    @Excel(name = "服务礼仪")
    @ApiModelProperty("服务礼仪")
    private Integer protocolScore;

    /** 评分 */
    @Excel(name = "服装整洁")
    @ApiModelProperty("服装整洁")
    private Integer clothingScore;

    /** 评分 */
    @Excel(name = "专业能力")
    @ApiModelProperty("专业能力")
    private Integer abilityScore;

    /** 评分 */
    @Excel(name = "服务质量")
    @ApiModelProperty("服务质量")
    private Integer qualityScore;

    /** 评分 */
    @Excel(name = "志愿者主键id")
    @ApiModelProperty("志愿者主键id")
    private Long volunteerInfoId;

    @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;

    @TableField("longitude")
    @ApiModelProperty("经度")
    private String longitude;

    @TableField("latitude")
    @ApiModelProperty("纬度")
    private String latitude;

    @TableField("out_trade_no")
    @ApiModelProperty("业务单号")
    private String outTradeNo;

    @TableField("allot_status")
    @ApiModelProperty("分配状态：10 未分配到服务中心  20 已分配到服务中心")
    private String allotStatus;


    @ApiModelProperty("订单创建时间")
    private Date secondOrderCreateTime;
    /**
     * 区域抽成比例，如0.7
     */
    @ApiModelProperty("区域抽成比例")
    private BigDecimal areaDistributionRatio;

    /**
     * 区域抽成金额（元）
     */
    @ApiModelProperty("区域抽成金额（元）")
    private BigDecimal areaDistributionAmount;

    /**
     * 区域结算状态 10未结算 20审核中 30审核未通过 40打款中 50已结算
     */
    @ApiModelProperty("区域结算状态 10未结算 20审核中 30审核未通过 40打款中 50已结算")
    private String areaSettlementStatus;

    /**
     * 区域结算时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("区域结算时间")
    private Date areaSettlementTime;

    /**
     * 区域管理结算操作用户id
     */
    @ApiModelProperty("区域管理结算操作用户id")
    private Long areaSettlementUserId;

    /**
     * 区域管理费用付款方式 1银行卡
     */
    @ApiModelProperty("区域管理费用付款方式 1银行卡")
    private String areaPayerMethod;

    /**
     * 区域管理费用付款账户
     */
    @ApiModelProperty("区域管理费用付款账户")
    private String areaPayerAccount;

    /**
     * 区域管理费用付款银行名称
     */
    @ApiModelProperty("区域管理费用付款银行名称")
    private String areaPayerAccountBankName;

    /**
     * 区域收款方式 1银行卡
     */
    @ApiModelProperty("区域收款方式 1银行卡")
    private String areaPayeeMethod;

    /**
     * 区域收款账号
     */
    @ApiModelProperty("区域收款账号")
    private String areaPayeeAccount;

    /**
     * 区域收款银行名称
     */
    @ApiModelProperty("区域收款银行名称")
    private String areaPayeeBankName;

    /**
     * 区域收款人姓名
     */
    @ApiModelProperty("区域收款人姓名")
    private String areaPayeeName;

    /**
     * 服务中心抽成比例
     */
    @ApiModelProperty("服务中心抽成比例")
    private BigDecimal serviceCentreDistributionRatio;

    /**
     * 服务中心抽成金额（元）
     */
    @ApiModelProperty("服务中心抽成金额（元）")
    private BigDecimal serviceCentreDistributionAmount;

    /**
     * 服务中心费用结算状态 10未结算 20审核中 30审核未通过 40打款中 50已结算
     */
    @ApiModelProperty("服务中心费用结算状态 10未结算 20审核中 30审核未通过 40打款中 50已结算")
    private String serviceCentreSettlementStatus;

    /**
     * 服务中心费用结算时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("服务中心费用结算时间")
    private Date serviceCentreSettlementTime;

    /**
     * 服务中心结算操作用户id
     */
    @ApiModelProperty("服务中心结算操作用户id")
    private Long serviceCentreSettlementUserId;

    /**
     * 服务中心费用付款方式 1银行卡
     */
    @ApiModelProperty("服务中心费用付款方式 1银行卡")
    private String serviceCentrePayerMethod;

    /**
     * 服务中心费用付款账户
     */
    @ApiModelProperty("服务中心费用付款账户")
    private String serviceCentrePayerAccount;

    /**
     * 服务中心费用付款银行名称
     */
    @ApiModelProperty("服务中心费用付款银行名称")
    private String serviceCentrePayerBankName;

    /**
     * 服务中心收款方式 1银行卡
     */
    @ApiModelProperty("服务中心收款方式 1银行卡")
    private String serviceCentrePayeeMethod;

    /**
     * 服务中心收款账号
     */
    @ApiModelProperty("服务中心收款账号")
    private String serviceCentrePayeeAccount;

    /**
     * 服务中心收款银行名称
     */
    @ApiModelProperty("服务中心收款银行名称")
    private String serviceCentrePayeeBankName;

    /**
     * 服务中心收款人姓名
     */
    @ApiModelProperty("服务中心收款人姓名")
    private String serviceCentrePayeeName;
}
