package com.hz.his.dto.order;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * 总订单
 * @author wzh
 */
@Data
public class OrdersTotalDto {

    /** 订单id */
    private String id;
    /** 订单编号,以S开头, SyyyyMMdd0000000(前缀从字典获取) */
    private String orderNo;
    /** 订单类型(OrderTotalConstants)*/
    private String type;
    /** 状态(OrderTotalConstants) */
    private Integer status;

    /** 支付状态(OrderTotalConstants) */
    private Integer payStatus;

    /** 支付时间 */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date payTime;

    /** 退款状态 */
    private Integer refundStatus;

    /** 取消时间/作废时间 */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date cancelTime;

    /** 订单总金额,以元为存储(全部金额,包括优惠价格) */
    private BigDecimal total;
    /** 应付总金额,以元为存储(payTotal+其他支付模式) */
    private BigDecimal shouldTotal;
    /** 已支付总金额,以元为存储(payTotal+其他支付模式) */
    private BigDecimal actualTotal;


    /** 已支付现金金额(微信/支付宝支付/其他),以元为存储 默认:0 */
    private BigDecimal payTotal;
    /** 已支付储值金金额 默认:0 */
    private BigDecimal payRecharge;
    /** 已支付增值金金额 默认:0 */
    private BigDecimal payIncrement;

    /** 优惠金额,以元为存储 */
    private BigDecimal discountTotal;

    /** 活动规则优惠总金额 */
    private BigDecimal activityTotal;

    /** 赠送金额 */
    private BigDecimal givingAmount;
    /** 赠送金额类型(GivingAmountType) */
    private String givingType;

    /** 所属门店标识(Shop)(操作人的门店名称) */
    private String shopId;
    /** 所属门店名称(操作人的门店名称) */
    private String shopName;
    /** 操作类型(0:系统管理员,1:员工,3:第三方平台) */
    private Integer operatorType;
    /** 下单操作人标识(Employee) */
    private String operatorId;
    /** 下单操作人名称 */
    private String operatorName;

    /** 开发人门店标识(Shop,没有传值默认用户绑定销售顾问的门店) */
    private String developerShopId;
    /** 开发人门店名称(没有传值默认用户绑定销售顾问的门店) */
    private String developerShopName;
    /** 开发人标识(Shop,没有传值默认用户绑定销售顾问的标识)*/
    private String developerId;
    /** 开发人名称(没有传值默认用户绑定销售顾问的名称) */
    private String developerName;


    /*平台来源**/
    /** 来源应用appId(创建订单平台,系统默认) 必填*/
    private String appId;
    /** 来源应用编码(商户设置平台编码,系统默认,代码必填) 必填*/
    private String appIdCode;
    /*销售订单来源,销售可以选择*/
    /** 订单来源代码(默认:应用appId)
     * 销售平台编码,例如:淘宝,在电商平台设置里面,在第三方平台配置,必填,crm默认填crm
     * */
    private String sourceCode;
    /** 订单来源名称(冗余) ,必填,rm默认填crm*/
    private String sourceName;
    /** 第三方订单号 crm必填,填crm的订单号*/
    private String sourceOrderNo;
    /** 兑换码(第三方兑换码) */
    private String conversionCode;

    /** 订单渠道来源类型(OrderTotalConstants) */
    private String channelType;
    /** 订单渠道标识(渠道/用户) crm必填,三少说 */
    private String commonId;
    /** 订单渠道来源名称(渠道/用户) */
    private String commonName;

    /** 科室编码 */
    private String departmentCode;
    /** 科室名称 */
    private String departmentName;

    /** 美容师标识 */
    private String beauticianId;
    /** 美容师名称 */
    private String beauticianName;

    /** 医生标识 */
    private String doctorId;
    /** 医生名称 */
    private String doctorName;

    /** 同步状态0否1是 ,必填,如果要同步到领建必填1,否则0*/
    private int hisSynStatus;
    /** 同步his订单号 */
    private String hisOrderId;
    /** 预约订单标识 */
    private String appointmentId;

    /** 剩余储值金,以元保留2位小数为单位存储加密后的字符串 */
    private String storedValueFund;

    /** 剩余增值金,以元保留2位小数为单位存储加密后的字符串 */
    private String valueAddedFund;

    /** 剩余积分,以元保留2位小数为单位存储加密后的字符串 */
    private String integral;

    /** 会员等级 */
    private String userLevel;

    /** CID */
    private String CIQ;

    /** 订单备注 */
    private String remarks;

    /** 订单推荐人标识 crm必填,三少说*/
    private String inviteeId;

    /** 订单推荐人名称(冗余) crm必填,三少说*/
    private String inviteeName;

    /** 订单推荐人所属类型(UserChannelType) */
    private String userBelongingType;

    /** 用户Id 必填*/
    private String userId;

    /** 同步状态(OrderTotalConstants) */
    private Integer syncStatus;

    /** 康博佳标识(KoapOrderTotal) */
    private String koapOrderId;

    /**订单总金额的折后金额*/
    private BigDecimal disTotal;

    private OrderInfoDto orderInfo;

    private List<String> activityIds;
}