package cn.pluss.platform.dto;

import cn.pluss.platform.entity.MerchantBaseInfo;
import cn.pluss.platform.entity.MerchantChannelStatus;
import cn.pluss.platform.entity.MerchantMemberCode;
import cn.pluss.platform.entity.MerchantOrder;
import lombok.Data;

@Data
public class MerChantOrderDTO {
    /**
     * 0 扫码 1现金 2：会员卡        1、反扫收款；2、收款码；3、会员充值；4、POS；5、反扫会员充值；6、扫码王、QR68机具收款 7：H5 8：升级收费 9小程序 10表示小程序线上店订单 11:缴费通 99 插件
     */
    private String type;
	//订单编号
	private String orderNumber;
	//商家编码
    private String merchantCode;
    //商家名称
    private String merchantName;
    //交易金额
    private Double consumeFee;
    //会员编码
    private String memberCode;
    //店铺id
    private String storeId;
    //店铺名称
    private String storeName;
    //员工编码
    private String userId;
    
    private String staffName;
    
    //支付码
    private String authCode;
    //备注信息
    private String remark;
    //支付方式编码
    private String payTypeCode;
    //支付方式名名称
    private String payTypeName;
    
    
    /**
     * 通道切换字段 0 支付宝微信官方通道 1乐刷通道 2：随行付通道 3:瑞银信 4：银盛
     */
    private String aisleSwitch;

    /**
     * 上游渠道商户编号 通用
     */
    private String channelNo;

    /**
     * @description:设备号
     * @date: 2021/12/22 16:01
     */
    private String deviceNo;
    /**
     * timestamp时间戳（pos机）
     */
    private String timestamp;
    /**
     * 唯一识别码(pos机)
     */
    private String appId;
    /**
     * 签名（pos）
     */
    private String token;
    /**
     * 请求标识，用于唯一标识当前请求(pos,uuid)
     */
    private String requestId;
    /**
     * 设备号
     */
    private String sn;

    /**
     * @description:
     * @date: 2021/8/23 18:36
     */
    private MerchantBaseInfo merchantBaseInfo;


    private MerchantChannelStatus channelStatus;


    private MerchantMemberCode mercMenberCode;

    /**
     * 参数转换
     * @param memberRechargeDTO
     * @param merchantOrder
     * @param channelStatus
     */
    public void conver(MemberRechargeDTO memberRechargeDTO, MerchantOrder merchantOrder, MerchantChannelStatus channelStatus) {
        this.orderNumber = merchantOrder.getOrderNumber();
        this.merchantCode = merchantOrder.getMerchantCode();
        this.merchantName = merchantOrder.getMerchantName();
        this.consumeFee = merchantOrder.getConsumeFee();
        this.channelNo = channelStatus.getMerchantId();
        this.storeId = memberRechargeDTO.getStoreId();
        this.authCode = memberRechargeDTO.getAuthCode();
        this.aisleSwitch = merchantOrder.getAisleSwitch();
        this.storeName = merchantOrder.getStoreName();
    }
}
