package com.hzs.common.domain.sale.ext;

import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.domain.member.account.CuMemberTrade;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.common.domain.sale.order.*;
import com.hzs.common.domain.system.config.BdGrade;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

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

/**
 * 订单扩展表
 */
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Data
public class SaOrderExt extends SaOrder {

    private static final long serialVersionUID = -3941401700355967975L;

    /**
     * 会员编号
     */
    private String memberCode;
    /**
     * 会员姓名
     */
    private String memberName;
    /**
     * 会员电话
     */
    private String memberPhone;
    /**
     * 服务编号
     */
    private String memberServiceCode;
    /**
     * 会员昵称
     */
    private String memberNickName;
    /**
     * 所属体系
     */
    private Long memberPkVertex;

    /**
     * 部分撤单时，记录回退的金额
     */
    private BigDecimal backOrderAmount;

    /**
     * 创建人编号
     */
    private String creatorCode;
    /**
     * 创建人姓名
     */
    private String creatorName;
    /**
     * 创建人服务编号
     */
    private String creatorServiceCode;
    /**
     * 创建人昵称
     */
    private String creatorNickName;
    /**
     * 创建人体系
     */
    private Long creatorPkVertex;

    /**
     * 结算国
     */
    private Integer pkSettleCountry;


    /**
     * 审核状态（0=待提交，1=待审核，2=审核通过，3=审核驳回）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.APPROVE_RECHARGE_OPERATION)
    private Integer approveStatus;
    /**
     * 审核状态（0=待提交，1=待审核，2=审核通过，3=审核驳回）
     */
    private String approveStatusVal;
    /**
     * 驳回信息
     */
    private String rejectMsg;

    /**
     * 报单中心ID
     */
    private Long pkCenterCode;

    /**
     * 店铺等级
     */
    private Integer pkStoreLevel;

    /**
     * 订单明细表
     */
    private List<SaOrderItems> orderItemsList;

    /**
     * 订单明细扩展列表
     */
    private List<SaOrderItemsExt> orderItemsExtList;

    /**
     * 新零售明细表
     */
    private List<SaOrderWaresExt> orderWaresExtList;

    /**
     * 渠道类型（0=直销订单，后续根据 EMerchantType 枚举来）
     */
    private Integer merchantType;

    /**
     * 汇率
     */
    private BigDecimal inExchangeRate;

    /**
     * 业务类型
     */
    private Integer editType;

    /**
     * 提货码
     */
    private String selfCode;

    /**
     * 公司
     */
    private Integer pkCorp;

    /**
     * 省显示
     */
    private String recProvinceVal;
    /**
     * 市显示
     */
    private String recCityVal;
    /**
     * 县显示
     */
    private String recCountyVal;
    /**
     * 订单支付明细
     */
    private List<CuMemberTrade> tradeList;

    /**
     * 所属专区
     */
    private Integer specialArea;

    /**
     * 订单状态
     */
    private String orderStatusVal;

    private Boolean deductFlag;

    /**
     * 会员等级（旧）
     */
    private Integer pkGradeOld;
    /**
     * 会员等级
     */
    private Integer pkGrade;

    /**
     * 撤单标记（true=撤单，其它为正常）
     */
    private Boolean cancelBool;

    /**
     * 是否更新标记
     */
    private Integer updateFlag;

    /**
     * 最新等级
     */
    private BdGrade newGrade;

    /**
     * 需要添加的升级记录列表
     */
    private List<CuMemberLevel> createLevelList;
    /**
     * 需要删除的升级记录列表
     */
    private List<CuMemberLevel> deleteLevelList;


}
