package com.bonus.core.account.v3.mq.send.model;

import cn.hutool.core.util.ObjectUtil;
import com.bonus.constant.LeConstants;
import com.bonus.core.account.v3.mq.send.dto.RepAccMqDTO;
import com.bonus.core.common.encrypt.LeNiuDecryptDataProcess;
import com.bonus.core.common.encrypt.LeNiuDecryptField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@ApiModel("账户模块Mq消息体格式")
@LeNiuDecryptDataProcess
public class RepAccMqModel implements Serializable {
   private static final long serialVersionUID = 1L;
   @ApiModelProperty("商户号")
   private Long merchantId;
   @ApiModelProperty("语言标准")
   private String country;
   @ApiModelProperty("语言")
   private String language;
   @ApiModelProperty("变动流水号")
   private Long flowId;
   @ApiModelProperty("人员Id")
   private Long custId;
   @ApiModelProperty("人员编号")
   private String custNum;
   @ApiModelProperty("人员姓名")
   @LeNiuDecryptField
   private String custName;
   @ApiModelProperty("组织Id")
   private Long orgId;
   @ApiModelProperty("组织名称")
   private String orgName;
   @ApiModelProperty("组织全称")
   private String orgFullName;
   @ApiModelProperty("人员类别编号")
   private Integer psnType;
   @ApiModelProperty("人员类别名称")
   private String psnTypeName;
   @ApiModelProperty("交易金额")
   private BigDecimal flowAmount;
   @ApiModelProperty("实际交易金额")
   private BigDecimal flowRealAmount;
   @ApiModelProperty("管理费")
   private BigDecimal manageCost;
   @ApiModelProperty("钱包总余额（可用总余额）")
   private BigDecimal accTotalBal;
   @ApiModelProperty("钱包总余额(包括钱包冻结金额)")
   private BigDecimal accAllBal;
   @ApiModelProperty("支付时间")
   private LocalDateTime payTime;
   @ApiModelProperty("交易类型")
   private Integer flowType;
   @ApiModelProperty("备注")
   private String remark;
   @ApiModelProperty("操作员")
   private String optname;
   @ApiModelProperty("充值来源")
   private Integer rechargeSource;
   @ApiModelProperty("充值设备类型 1-多功能终端 2-现金充值机")
   private Integer machineType;
   @ApiModelProperty("支付渠道")
   private Integer payChannel;
   @ApiModelProperty("支付方式")
   private Integer payType;
   @ApiModelProperty("批量操作批次号")
   private String batchNum;
   @ApiModelProperty("充值来源具体操作")
   private Integer rechargeOperate;
   @ApiModelProperty("设备sn")
   private String mchSn;
   @ApiModelProperty("设备sn")
   private String machineSn;
   @ApiModelProperty("提现来源")
   private Integer withdrawSource;
   @ApiModelProperty("操作来源(清空)")
   private Integer operateSource;
   @ApiModelProperty("关联原记录交易id")
   private Long originTradeId;
   @ApiModelProperty("钱包使用情况")
   private List<RepAccMqDetailModel> walletDetail;
   @ApiModelProperty("食堂Id")
   private Long canteenId;
   @ApiModelProperty("食堂名称")
   private String canteenName;
   @ApiModelProperty("档口Id")
   private Long shopstallId;
   @ApiModelProperty("档口名称")
   private String shopstallName;
   @ApiModelProperty("机器编号")
   private String mchNum;
   @ApiModelProperty("机器名称")
   private String mchName;
   @ApiModelProperty("订单时间")
   private LocalDateTime ordTime;
   @ApiModelProperty("核身方式")
   private Integer nuClearMode;
   @ApiModelProperty("是否在线 1 是 2 否")
   private Integer ifOnline;
   @ApiModelProperty("订单来源类型")
   private Integer sourceType;

   public void assembleParam(RepAccMqDTO repAccMqDTO) {
      this.canteenId = repAccMqDTO.getCanteenId();
      this.canteenName = repAccMqDTO.getCanteenName();
      this.shopstallId = repAccMqDTO.getShopstallId();
      this.shopstallName = repAccMqDTO.getShopstallName();
      this.mchNum = repAccMqDTO.getMchNum();
      this.mchName = repAccMqDTO.getMchName();
      this.ordTime = ObjectUtil.isNull(repAccMqDTO.getOrdTime()) ? this.payTime : repAccMqDTO.getOrdTime();
      this.nuClearMode = repAccMqDTO.getNuClearMode();
      this.ifOnline = ObjectUtil.isNull(repAccMqDTO.getIfOnline()) ? LeConstants.COMMON_YES : repAccMqDTO.getIfOnline();
      this.sourceType = repAccMqDTO.getSourceType();
   }

   public Long getMerchantId() {
      return this.merchantId;
   }

   public String getCountry() {
      return this.country;
   }

   public String getLanguage() {
      return this.language;
   }

   public Long getFlowId() {
      return this.flowId;
   }

   public Long getCustId() {
      return this.custId;
   }

   public String getCustNum() {
      return this.custNum;
   }

   public String getCustName() {
      return this.custName;
   }

   public Long getOrgId() {
      return this.orgId;
   }

   public String getOrgName() {
      return this.orgName;
   }

   public String getOrgFullName() {
      return this.orgFullName;
   }

   public Integer getPsnType() {
      return this.psnType;
   }

   public String getPsnTypeName() {
      return this.psnTypeName;
   }

   public BigDecimal getFlowAmount() {
      return this.flowAmount;
   }

   public BigDecimal getFlowRealAmount() {
      return this.flowRealAmount;
   }

   public BigDecimal getManageCost() {
      return this.manageCost;
   }

   public BigDecimal getAccTotalBal() {
      return this.accTotalBal;
   }

   public BigDecimal getAccAllBal() {
      return this.accAllBal;
   }

   public LocalDateTime getPayTime() {
      return this.payTime;
   }

   public Integer getFlowType() {
      return this.flowType;
   }

   public String getRemark() {
      return this.remark;
   }

   public String getOptname() {
      return this.optname;
   }

   public Integer getRechargeSource() {
      return this.rechargeSource;
   }

   public Integer getMachineType() {
      return this.machineType;
   }

   public Integer getPayChannel() {
      return this.payChannel;
   }

   public Integer getPayType() {
      return this.payType;
   }

   public String getBatchNum() {
      return this.batchNum;
   }

   public Integer getRechargeOperate() {
      return this.rechargeOperate;
   }

   public String getMchSn() {
      return this.mchSn;
   }

   public String getMachineSn() {
      return this.machineSn;
   }

   public Integer getWithdrawSource() {
      return this.withdrawSource;
   }

   public Integer getOperateSource() {
      return this.operateSource;
   }

   public Long getOriginTradeId() {
      return this.originTradeId;
   }

   public List<RepAccMqDetailModel> getWalletDetail() {
      return this.walletDetail;
   }

   public Long getCanteenId() {
      return this.canteenId;
   }

   public String getCanteenName() {
      return this.canteenName;
   }

   public Long getShopstallId() {
      return this.shopstallId;
   }

   public String getShopstallName() {
      return this.shopstallName;
   }

   public String getMchNum() {
      return this.mchNum;
   }

   public String getMchName() {
      return this.mchName;
   }

   public LocalDateTime getOrdTime() {
      return this.ordTime;
   }

   public Integer getNuClearMode() {
      return this.nuClearMode;
   }

   public Integer getIfOnline() {
      return this.ifOnline;
   }

   public Integer getSourceType() {
      return this.sourceType;
   }

   public RepAccMqModel setMerchantId(final Long merchantId) {
      this.merchantId = merchantId;
      return this;
   }

   public RepAccMqModel setCountry(final String country) {
      this.country = country;
      return this;
   }

   public RepAccMqModel setLanguage(final String language) {
      this.language = language;
      return this;
   }

   public RepAccMqModel setFlowId(final Long flowId) {
      this.flowId = flowId;
      return this;
   }

   public RepAccMqModel setCustId(final Long custId) {
      this.custId = custId;
      return this;
   }

   public RepAccMqModel setCustNum(final String custNum) {
      this.custNum = custNum;
      return this;
   }

   public RepAccMqModel setCustName(final String custName) {
      this.custName = custName;
      return this;
   }

   public RepAccMqModel setOrgId(final Long orgId) {
      this.orgId = orgId;
      return this;
   }

   public RepAccMqModel setOrgName(final String orgName) {
      this.orgName = orgName;
      return this;
   }

   public RepAccMqModel setOrgFullName(final String orgFullName) {
      this.orgFullName = orgFullName;
      return this;
   }

   public RepAccMqModel setPsnType(final Integer psnType) {
      this.psnType = psnType;
      return this;
   }

   public RepAccMqModel setPsnTypeName(final String psnTypeName) {
      this.psnTypeName = psnTypeName;
      return this;
   }

   public RepAccMqModel setFlowAmount(final BigDecimal flowAmount) {
      this.flowAmount = flowAmount;
      return this;
   }

   public RepAccMqModel setFlowRealAmount(final BigDecimal flowRealAmount) {
      this.flowRealAmount = flowRealAmount;
      return this;
   }

   public RepAccMqModel setManageCost(final BigDecimal manageCost) {
      this.manageCost = manageCost;
      return this;
   }

   public RepAccMqModel setAccTotalBal(final BigDecimal accTotalBal) {
      this.accTotalBal = accTotalBal;
      return this;
   }

   public RepAccMqModel setAccAllBal(final BigDecimal accAllBal) {
      this.accAllBal = accAllBal;
      return this;
   }

   public RepAccMqModel setPayTime(final LocalDateTime payTime) {
      this.payTime = payTime;
      return this;
   }

   public RepAccMqModel setFlowType(final Integer flowType) {
      this.flowType = flowType;
      return this;
   }

   public RepAccMqModel setRemark(final String remark) {
      this.remark = remark;
      return this;
   }

   public RepAccMqModel setOptname(final String optname) {
      this.optname = optname;
      return this;
   }

   public RepAccMqModel setRechargeSource(final Integer rechargeSource) {
      this.rechargeSource = rechargeSource;
      return this;
   }

   public RepAccMqModel setMachineType(final Integer machineType) {
      this.machineType = machineType;
      return this;
   }

   public RepAccMqModel setPayChannel(final Integer payChannel) {
      this.payChannel = payChannel;
      return this;
   }

   public RepAccMqModel setPayType(final Integer payType) {
      this.payType = payType;
      return this;
   }

   public RepAccMqModel setBatchNum(final String batchNum) {
      this.batchNum = batchNum;
      return this;
   }

   public RepAccMqModel setRechargeOperate(final Integer rechargeOperate) {
      this.rechargeOperate = rechargeOperate;
      return this;
   }

   public RepAccMqModel setMchSn(final String mchSn) {
      this.mchSn = mchSn;
      return this;
   }

   public RepAccMqModel setMachineSn(final String machineSn) {
      this.machineSn = machineSn;
      return this;
   }

   public RepAccMqModel setWithdrawSource(final Integer withdrawSource) {
      this.withdrawSource = withdrawSource;
      return this;
   }

   public RepAccMqModel setOperateSource(final Integer operateSource) {
      this.operateSource = operateSource;
      return this;
   }

   public RepAccMqModel setOriginTradeId(final Long originTradeId) {
      this.originTradeId = originTradeId;
      return this;
   }

   public RepAccMqModel setWalletDetail(final List<RepAccMqDetailModel> walletDetail) {
      this.walletDetail = walletDetail;
      return this;
   }

   public RepAccMqModel setCanteenId(final Long canteenId) {
      this.canteenId = canteenId;
      return this;
   }

   public RepAccMqModel setCanteenName(final String canteenName) {
      this.canteenName = canteenName;
      return this;
   }

   public RepAccMqModel setShopstallId(final Long shopstallId) {
      this.shopstallId = shopstallId;
      return this;
   }

   public RepAccMqModel setShopstallName(final String shopstallName) {
      this.shopstallName = shopstallName;
      return this;
   }

   public RepAccMqModel setMchNum(final String mchNum) {
      this.mchNum = mchNum;
      return this;
   }

   public RepAccMqModel setMchName(final String mchName) {
      this.mchName = mchName;
      return this;
   }

   public RepAccMqModel setOrdTime(final LocalDateTime ordTime) {
      this.ordTime = ordTime;
      return this;
   }

   public RepAccMqModel setNuClearMode(final Integer nuClearMode) {
      this.nuClearMode = nuClearMode;
      return this;
   }

   public RepAccMqModel setIfOnline(final Integer ifOnline) {
      this.ifOnline = ifOnline;
      return this;
   }

   public RepAccMqModel setSourceType(final Integer sourceType) {
      this.sourceType = sourceType;
      return this;
   }
}
