package lakala

// 业务访问路由
const (
	BaseTestUrl = "https://test.wsmsd.cn/sit/htkregistration" // 测试基础链路
	BaseProdUrl = "https://htkactvi.lakala.com/registration"  // 正式基础链路

	IncomingAction     = "merchant"          // 进件
	OrganizationAction = "organization"      // 获取城市code
	BankList           = "bank"              // 银行列表查询
	MerchantMcc        = "customer/category" // 银行列表查询
	FileUpload         = "file/upload"       // 文件上传

)

// 业务访问路由2
const (
	BaseTestChangeUrl = "https://test.wsmsd.cn/sit/htkmerchants" // 测试基础链路
	BaseProdChangeUrl = "https://tkapi.lakala.com/htkmerchants"  // 正式基础链路

	BaseTestQueryReviewStatus = "https://test.wsmsd.cn/sit/htk-api" // 测试查询审核状态路由
	BaseProdQueryReviewStatus = "https://htkapi.lakala.com/api"     // 正式查询审核状态路由

	UpdateFeeQuery            = "channel/customer/update/fee"                        // 商户费率查询-变更
	UpdateSettleChange        = "channel/customer/update/settle"                     // 商户结算变更-查询
	UpdateBaseChange          = "channel/customer/update/basic"                      // 商户基本信息变更
	QueryChangeReviewStatus   = "customer/update/review"                             // 获取商户审核状态
	CheckImgIsSupplement      = "open/merchant/isUploadPhoto"                        // 查看当前商户是否补充照片
	ImgIsSupplement           = "open/merchant/imgSup"                               // 当前商户补充照片
	ReportStatus              = "open/merchant/getMerchant"                          // 银联商户报备状态
	TerminalStatus            = "open/merchant/getTerm"                              // 银联终端报备状态
	SupplementBusinessLicense = "channel/customer/update/supplement/businessLicense" // 变更营业执照
	UnionPayMerInfo           = "open/merchant/unionPayMerInfo"                      // 是否为失信人
	GetMerchantInfo           = "open/merchant/info"                                 // 获取商户信息
	GetTerminalInfo           = "open/terminal/info"                                 // 获取商户信息
)

const (
	IncomingToken = "incoming"
	ModifiedToken = "modified"
	NotToken      = "no"
	SignToken     = "sign"

	ResultKey = "fakeData"
)

// IncomingTokenActive 区分路由使用的token
var IncomingTokenActive = map[string]string{
	IncomingAction:            IncomingToken,
	OrganizationAction:        IncomingToken,
	MerchantMcc:               IncomingToken,
	FileUpload:                IncomingToken,
	TokenActive:               NotToken,
	UpdateFeeQuery:            ModifiedToken,
	UpdateSettleChange:        ModifiedToken,
	UpdateBaseChange:          ModifiedToken,
	QueryChangeReviewStatus:   ModifiedToken,
	CheckImgIsSupplement:      ModifiedToken,
	ImgIsSupplement:           ModifiedToken,
	ReportStatus:              ModifiedToken,
	TerminalStatus:            ModifiedToken,
	SupplementBusinessLicense: ModifiedToken,
	UnionPayMerInfo:           ModifiedToken,
	GetMerchantInfo:           IncomingToken,
	GetTerminalInfo:           IncomingToken,
}

const (
	MerchantTypeEnterprise = "TP_MERCHANT" // 企业
	MerchantTypePerson     = "TP_PERSONAL" // 个人
	BankTypeEnterprise     = "57"          // 对公银行账户
	BankTypePerson         = "58"          // 对私银行账户
)

// 业务类型
const (
	Bpos                = "BPOS"                   // 传统POS
	Zpos                = "ZPOS"                   // 电签POS
	Zpos4G              = "ZPOS4G"                 // 电签POS4G
	SuperPos            = "SUPER_POS"              // 智能pos
	BWizard             = "B_WIZARD"               // 传统语音大POS
	PaperCode           = "PAPER_CODE"             // 码牌
	WechartPay          = "WECHAT_PAY"             // 专业化扫码
	ScanningGunPay      = "SCANNING_GUN_PAY"       // Q码精灵
	EasyPayment         = "EASY_PAYMENT"           // 缴费易
	LiantuoEle          = "LIANTUO_ELF"            // 联拓小精灵
	B2BSkm              = "B2B_SKM"                // B2B收款码
	B2Bsyt              = "B2B_SYT"                // B2B收银台
	Klyx                = "KLYX"                   // 云音箱
	QrCode              = "QRCODE"                 // 收款王
	MoneyBox            = "MONEY_BOX"              // 收钱宝盒
	App                 = "APP"                    // APP收款
	SuperPosPro         = "SUPER_POS_PRO"          // 智能PosPro
	BusinessCloudPrint  = "BUSINESS_CLOUD_PRINT"   // 拉生意云打印
	YouKeLiLi           = "YOU_KE_LI_LI"           // 油客里里
	LeYouKe             = "LE_YOU_KE"              // 乐友客
	XiaoYiScanCodeOrder = "XIAOYI_SCAN_CODE_ORDER" // 小易扫码点餐
	JxCashier           = "JX_CASHIER"             // 吉祥收银
	LKLScrm             = "LKL_SCRM"               // 拉卡拉SCRM
	NakeCashier         = "NAKE_CASHIER"           // 纳客收银
	YinXiangLi          = "YIN_XIANG_LI"           // 银响力
	EasyToPay           = "EASY_TO_PAY"            // 即易付
	UHuoYunOrder        = "U_HUO_YUN_ORDER"        // 优获云点单
	YiXiangRetailV10    = "YIXIANG_RETAIL_V10"     // 易享零售V10
	AiBaoCashier        = "AIBAO_CASHIER"          // 爱宝收银
	MicroSuperPos       = "MICRO_SUPER_POS"        // 微智能
	HuiYingDoor         = "HUI_YING_DOOR"          // 慧盈门
	ZhiBaiWei           = "ZHI_BAI_WEI"            // 智百威
	YunZhangGui         = "YUN_ZHANG_GUI"          // 云掌柜
	YunchaoTechBc       = "YUNCHAO_TECH_BC"        // 云超科技线下
	PullBusiness        = "PULL_BUSINESS"          // 拉生意收款宝
	WanliNiuRetail      = "WANLI_NIU_RETAIL"       // 万里牛零售
	SmartTourism        = "SMART_TOURISM"          // 智慧旅游
	YiSanCashier        = "YI_SAN_CASHIER"         // 壹叁收银机
	ZhiFu               = "ZHI_FU"                 // 智付
	SiXunTianStore      = "SI_XUN_TIAN_STORE"      // 思迅天店
	SmartYouke          = "SMART_YOUKE"            // 智慧油客
	MobilePos           = "MOBILE_POS"             // 手机POS
	HuiButler           = "HUI_BUTLER"             // 惠管家
	ChangYueBao         = "CHANG_YUE_BAO"          // 场约宝
	FourNineEightPost   = "FOUR_NINE_EIGHT_POST"   // 四九八-邮政
	YerSanWu            = "YER_SAN_WU"             // 惠元付
	TianZhiXing         = "TIAN_ZHI_XING"          // 天之星
	TongZhiParking      = "TONG_ZHI_PARKING"       // 统智停车
	TongZhiWuGuan       = "TONG_ZHI_WU_GUAN"       // 统智物管
	YfYm                = "YF_YM"                  // 御风云码
	YingCe              = "YING_CE"                // 鹰策油站
	YinBao              = "YIN_BAO"                // 银豹
	Jhpay               = "JHPAY"                  // 聚合支付
	YiMaTong            = "YI_MA_TONG"             // 逸码通
	YiMaTongPlus        = "YI_MA_TONG_PLUS"        // 逸码通PLUS
	GaiHuaTengFei       = "GAI_HUA_TENG_FEI"       // 盖华腾飞
)

// Attchments.Type 附件类型
const (
	IdCardFront           = "ID_CARD_FRONT"           // 身份证正⾯（必传）
	IdCardBehind          = "ID_CARD_BEHIND"          // 身份证反⾯（必传）
	BusinessLicence       = "BUSINESS_LICENCE"        // 营业执照照⽚（企业必传）
	BankCard              = "BANK_CARD"               // 银行卡（对私必传，企业对公传）
	AgreeMent             = "AGREE_MENT"              // 协议（入网协议必传）
	OpeningPermit         = "OPENING_PERMIT"          // 开户许可证（企业对公需要传，对私不传）
	CheckstandImg         = "CHECKSTAND_IMG"          // 收银台照片(必传)
	ShopOutsideImg        = "SHOP_OUTSIDE_IMG"        // 上传门头照片(必传)
	ShopInsideImg         = "SHOP_INSIDE_IMG"         // 商铺内部照片(必传)
	Others                = "OTHERS"                  // 其他 无对应类型图片，请传其他类型
	SettleIdCardFront     = "SETTLE_ID_CARD_FRONT"    // 结算人身份证人像面
	SettleIdCardBehind    = "SETTLE_ID_CARD_BEHIND"   // 结算人身份证国徽面
	LetterOfAuthorization = "LETTER_OF_AUTHORIZATION" // 法人授权涵
)

// BizContentParam.FeeCode
const (
	CreditCard              = "CREDIT_CARD"                // 贷记卡费率（云闪付必传）
	DebitCard               = "DEBIT_CARD"                 // 借记卡费率（云闪付必传，此费率类型必须上送封顶值 topFee）
	Wechat                  = "WECHAT"                     // 微信（必传）
	LineWechat              = "LINE_WECHAT"                // 线上微信(资金类业务不需要传)
	Alipay                  = "ALIPAY"                     // 支付宝（必传）
	UnionpayWalletDebitFee  = "UNIONPAY_WALLET_DEBIT_FEE"  // 银联二维码借记卡（此费率类型必须上送封顶值 topFee）资金类业务同借记卡费率）
	UnionpayWalletCreditFee = "UNIONPAY_WALLET_CREDIT_FEE" // 银联二维码贷记卡（资金类业务同贷记卡费率）
	YSFDiscountDebitFee     = "YSF_DISCOUNT_DEBIT_FEE"     // 云闪付借记-优惠（资金类业务不需要传）
	YSFDiscountCreditFee    = "YSF_DISCOUNT_CREDIT_FEE"    // 云闪付贷记-优惠（资金类业务不需要传）
	YLDiscountDebitFee      = "YL_DISCOUNT_DEBIT_FEE"      // 银联二维码借记-优惠（资金类业务不需要传）
	YLDiscountCreditFee     = "YL_DISCOUNT_CREDIT_FEE"     // 银联二维码贷记-优惠（资金类业务不需要传）
	AlipayDiscountFee       = "ALIPAY_DISCOUNT_FEE"        // 支付宝优惠费率（资金类业务不需要传）
	ScanPaySecond           = "SCAN_PAY_SECOND"            // 扫码d0费率（扫码D0结算必传）
	CardSecond              = "CARD_SECOND"                // 刷卡D0费率（刷卡D0结算必传）
	MerWithdrawalSecond     = "MER_WITHDRAWAL_SECOND"      // 商户秒提费率
	YSFLe1000               = "YSF_LE_1000"                // 云闪付小额优惠费率（资金类业务不需要传）
)

// MerchantIncomingReq 商户进件
type MerchantIncomingReq struct {
	UserNo             string           `json:"userNo" validate:"required"`              // 商户归属用户信息 合作机构信息 由拓客SAAS提供
	Email              string           `json:"email" validate:"required"`               // 商户邮箱
	BusiCode           string           `json:"busiCode" validate:"required"`            // 根据商务侧业务开放取值，见附录业务类型表
	MerRegName         string           `json:"merRegName" validate:"required"`          // 与营业执照名称一致，当营业执照名称超过20个字时，注册名称可以适当缩减到20字以内
	MerType            string           `json:"merType" validate:"required"`             // TP_MERCHANT:企业  TP_PERSONAL:⼩微个⼈
	MerName            string           `json:"merName" validate:"required"`             // 商户名称(经营名称)
	MerAddr            string           `json:"merAddr" validate:"required"`             // 去掉省，市区后的详细地址
	ProvinceCode       string           `json:"provinceCode"  validate:"required"`       // 省代码
	CityCode           string           `json:"cityCode" validate:"required"`            // 市代码
	CountyCode         string           `json:"countyCode" validate:"required"`          // 区县代码
	LicenseName        string           `json:"licenseName"`                             // 营业执照名称
	LicenseNo          string           `json:"licenseNo"`                               // 营业执照号码 微商户可不传，其他必传
	LicenseDtStart     string           `json:"licenseDtStart"`                          // 微商户可不传， 其他必传，格式yyyy-MM-dd
	LicenseDtEnd       string           `json:"licenseDtEnd"`                            // 微商户可不传， 其他必传， 格式yyyy-MM-dd 长期传：9999-12-31
	Latitude           string           `json:"latitude" validate:"required"`            // 进件所在地址经度
	Longtude           string           `json:"longtude" validate:"required"`            // 进件所在地址纬度
	Source             string           `json:"source" validate:"required"`              // 进件来源	必传	String	20	进件来源	APP, H5 （2选1）
	BusinessContent    string           `json:"businessContent" validate:"required"`     // 商户经营内容  营业执照上的经营内容（20字以内）
	LarName            string           `json:"larName"  validate:"required"`            // 法人姓名
	LarIdType          string           `json:"larIdType" validate:"required"`           // 01 身份证 ，02 护照，03 港澳通行证，04 台胞证，10 外国人永久居留身份证，11 港妨澳居民居住证，12 台湾居民居住证，13 执行事务合伙人，99 其它证件
	LarIdCard          string           `json:"larIdCard" validate:"required"`           // 法⼈证件号码
	LarIdCardStart     string           `json:"larIdCardStart" validate:"required"`      // 证件开始日期格式yyyy-MM-dd
	LarIdCardEnd       string           `json:"larIdCardEnd" validate:"required"`        // 证件过期日期 格式yyyy-MM-dd 长期传：9999-12-31
	ContactMobile      string           `json:"contactMobile" validate:"required"`       // 商户联系⼈⼿机号码
	ContactName        string           `json:"contactName" validate:"required"`         // 商户联系⼈姓名
	OpenningBankCode   string           `json:"openningBankCode" validate:"required"`    // 结算账户开户⾏号 通过【银行列表查询】接口获取 对应 branchBankNo字段，无对应支行可传地区支行
	OpenningBankName   string           `json:"openningBankName"  validate:"required"`   // 结算账户开户⾏名称
	ClearingBankCode   string           `json:"clearingBankCode"  validate:"required"`   // 结算账户清算⾏号
	SettleProvinceCode string           `json:"settleProvinceCode"  validate:"required"` // 结算信息省份代码 通过【地区信息→获取银行地区查询】接口获取 对应 code字段
	SettleProvinceName string           `json:"settleProvinceName"  validate:"required"` // 结算信息城市代码 通过【地区信息→获取银行地区查询】接口获取 对应 name字段
	SettleCityCode     string           `json:"settleCityCode"  validate:"required"`     // 结算信息城市代码
	SettleCityName     string           `json:"settleCityName"  validate:"required"`     // 结算信息城市名称
	AccountNo          string           `json:"accountNo"  validate:"required"`          // 结算人银行卡号
	AccountName        string           `json:"accountName"  validate:"required"`        // 结算人账户名称
	AccountType        string           `json:"accountType"  validate:"required"`        // 结算账户类型 57 对公 58 对私
	AccountIdCard      string           `json:"accountIdCard"  validate:"required"`      // 结算⼈证件号码
	BizContent         BizContentParam  `json:"bizContent"  validate:"required"`         // 业务扩展信息
	Attchments         []AttchmentsList `json:"attchments"  validate:"required"`         // 附件信息集合
	SettleType         string           `json:"settleType"  validate:"required"`         // 结算类型 D0秒到， D1次日结算
	//SettlementType     string           `json:"settlementType"  validate:"required"`     // 结算方式 MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算到银行卡,REGULAR:定时结算（仅企业商户支持）
	AccountIdDtStart string `json:"accountIdDtStart"` // 结算⼈证件开始时间 可选
	AccountIdDtEnd   string `json:"accountIdDtEnd"`   // 结算⼈证件过期时间 可选
}

type BizContentParam struct {
	ActivityId string `json:"activityId" validate:"required"` // 归属活动信息 由拓客SAAS分配
	Fees       []Fees `json:"fees"`                           // 费率集合
	Mcc        string `json:"mcc" validate:"required"`        // 商户MCC编号
	TermNum    string `json:"termNum" validate:"required"`    // 终端数量
}

type Fees struct {
	FeeCode  string `json:"feeCode" validate:"required"`  // 费率类型
	FeeValue string `json:"feeValue" validate:"required"` // 费率值
	TopFee   string `json:"topFee"`                       // 封顶值
}

type AttchmentsList struct {
	Id   string `json:"id" validate:"required"`   // ⽂件编号，附件上传接⼝返回的编号(upload接口返回的url字段)
	Type string `json:"type" validate:"required"` // 附件类型
}

type MerchantIncomingResp struct {
	MerchantNo string `json:"merchant_no"` // 内部商户编号 同拓客其他接口需要使用的customerNo
	Status     string `json:"status"`      // 商户状态  WAIT_AUDI（提交成功待审核）
}

// MerchantObj 商户集合信息
type MerchantObj struct {
	Customer     *CustomerObj       `json:"customer"`     // 商户基础信息	Customer对象	Customer对象
	CustomerFee  []*CustomerFeeObj  `json:"customerFee"`  // 商户费率信息	array	CustomerFee对象
	Pos          *PosObj            `json:"pos"`          // 商户终端信息，绑定才有	Pos	Pos
	SettleCard   *SettleCardObj     `json:"settleCard"`   // 商户结算信息	CustomerSettleCard对象	CustomerSettleCard对象
	TerminalInfo []*TerminalInfoObj `json:"terminalInfo"` // 终端信息集合	array	terminalInfo对象
	ShopInfoList []*ShopInfoListObj `json:"shopInfoList"` // 网点信息	array	ShopInfo对象
	ProductVos   []*ProductVoObj    `json:"productVos"`   // 已有产品信息	array	CustomerProductVo对象
	ExternalNo   string             `json:"external_no"`  // 外部编号	String	varchar(32)
}

// CustomerObj 商户基础信息
type CustomerObj struct {
	ActiveNo           string  `json:"activeNo"`           // 激活码	string
	ActivityTime       string  `json:"activityTime"`       // 激活时间	string(date-time)
	AgencyNo           int64   `json:"agencyNo"`           // 服务商编号    integer(int64)
	AgentNo            int64   `json:"agentNo"`            // 合作方编号    integer(int64)
	AgreementStatus    string  `json:"agreementStatus"`    // 协议签署状态	string
	BizContent         string  `json:"bizContent"`         // 商户经营范围	string
	BzPos              string  `json:"bzPos"`              // POS类型	string
	ChannelType        string  `json:"channelType"`        // 商户类型 TP_MERCHANT:企业，TP_PERSONAL:小微,可用值:TP_MERCHANT,TP_PERSONAL	string
	CloseTime          string  `json:"closeTime"`          // 撤机时间	string(date-time)
	ContactManName     string  `json:"contactManName"`     // 联系人改名	string
	CreateTime         int64   `json:"createTime"`         // string(date-time)
	CustomerName       string  `json:"customerName"`       // 商户名称	string
	CustomerNo         int64   `json:"customerNo"`         // 商户编号	integer(int64)
	CustomerStatus     string  `json:"customerStatus"`     // 商户状态 OPEN:开通，CLOSE:关闭，LOSS:流失,WAIT_AUDI:审核中,REJECT:审核拒绝,REVIEW_FAIL:复核失败,REVIEW_AUDIT:复核审核中,ACTIVITY:激活	string
	AuditRemark        string  `json:"auditRemark"`        // 拒绝原因 商户状态为REJECT返回
	ExternalCustomerNo string  `json:"externalCustomerNo"` // 外部商户编号	string
	IdentityNo         string  `json:"identityNo"`         // 商户身份证号	string
	IdentityNoExpire   string  `json:"identityNoExpire"`   // 商户身份证号有效期	string
	IsStandard         string  `json:"isStandard"`         // 是否达标 TRUE：是 FALSE：否	string
	LegalName          string  `json:"legalName"`          // 法人姓名	string
	LicenseNo          string  `json:"licenseNo"`          // 营业执照号	string
	Mailbox            string  `json:"mailbox"`            // 邮箱	string
	MccCode            string  `json:"mccCode"`            // 商户类别码	string
	MerLicenseExpire   string  `json:"merLicenseExpire"`   // 营业执照号有效期	string
	MerName            string  `json:"merName"`            // 企业名称	string
	MerchantSource     string  `json:"merchantSource"`     // 商户来源 AGENT:服务商平台，APP:APP平台，H5:H5平台	string
	OpenTime           int64   `json:"openTime"`           // 入网时间	string(date-time)
	Optimistic         int64   `json:"optimistic"`         // integer(int32)
	PhoneNo            string  `json:"phoneNo"`            // 商户手机号	string
	Platform           string  `json:"platform"`           // 平台标识,可用值:LKL	string
	PosSn              string  `json:"posSn"`              // 机具序列号	string
	Position           string  `json:"position"`           // string
	RewardMode         string  `json:"rewardMode"`         // 刷够返奖励模式,可用值:TO_MERCHANT,TO_AGENT	string
	StandardFee        float64 `json:"standardFee"`        // 提现费等固定费用    number(double)
	StandardTime       string  `json:"standardTime"`       // 达标时间	string(date-time)
	TermNo             string  `json:"termNo"`             // 虚拟终端号	string
	TermNum            int32   `json:"termNum"`            // 终端数量    integer(int32)
	UpdateTime         int64   `json:"updateTime"`         // string(date-time)
	YsfDiscount        string  `json:"ysfDiscount"`        // 云闪付小额优惠[FALSE:否,TRUE:是]	string
	ProvinceName       string  `json:"provinceName"`       // 省份名称	string
	CityName           string  `json:"cityName"`           // 城市名称	string
	CountyName         string  `json:"countyName"`         // 区名称	string
	ReceiveDetail      string  `json:"receiveDetail"`      // 详细地址	string
}

// CustomerFeeObj 商户费率信息
type CustomerFeeObj struct {
	Id                     int64   `json:"id"`                     // integer(int64)
	CardType               string  `json:"cardType"`               // 卡类型, 可用值:CREDIT_CARD, QR_CORD, DEBIT_CARD, YSF_LE_1000_CREDIT, YSF_LE_1000_DEBIT    string
	CreateTime             int64   `json:"createTime"`             // string(date-time)
	CustomerNo             int64   `json:"customerNo"`             // 商户编号    integer(int64)
	DayLimit               float64 `json:"dayLimit"`               // 日限额    number(double)
	ExternalCustomerNo     string  `json:"externalCustomerNo"`     // string
	FeeRate                float64 `json:"feeRate"`                // 费率    number(double)
	MaxAmt                 float64 `json:"maxAmt"`                 // 手续费最多值    number(double)
	MinAmt                 float64 `json:"minAmt"`                 // 手续费最小值    number(double)
	MonthLimit             float64 `json:"monthLimit"`             // 月限额    number(double)
	Optimistic             int64   `json:"optimistic"`             // integer(int32)
	PerLimi                float64 `json:"perLimi"`                // 单笔限额    number(double)
	SecondFee              float64 `json:"secondFee"`              // 秒到手续费    number(double)
	TransSettleType        string  `json:"transSettleType"`        // 结算类型, 可用值:D0, D1, T1    string
	TransType              string  `json:"transType"`              // 交易类型    string
	TremNo                 string  `json:"tremNo"`                 // 终端号    string    根据transType判断是刷卡还是扫码的终端号信息
	UpdateTime             int64   `json:"updateTime"`             // string(date-time)
	CustomerManagementFee  float64 `json:"customerManagementFee"`  // 商户管理费费率    number(double)
	CustomerManagementdFee float64 `json:"customerManagementdFee"` // 商户管理费d    number(double)
	CustomerManagementeFee float64 `json:"customerManagementeFee"` // 商户管理费e    number(double)
	CustomerManagementfFee float64 `json:"customerManagementfFee"` // 商户管理费f    number(double)
}

// PosObj 绑定才有
type PosObj struct {
	ActiveNo     string `json:"activeNo"`     // 激活码	string
	ActivityFlag string `json:"activityFlag"` // 活动标识	string
	OpenTime     string `json:"openTime"`     // 开通时间	string
	PosSn        string `json:"posSn"`        // 终端序列号	string
	PosType      string `json:"posType"`      // 终端类型	string
	TermNo       string `json:"termNo"`       // 拉卡拉虚拟终端号	string

}

// SettleCardObj 结算信息
type SettleCardObj struct {
	AbleStatus         string `json:"able_status"`        // 可用状态 ,可用值:ENABLE,DISABLE	string
	AccountKind        string `json:"accountKind"`        // 账户性质。57：对公 58：对私	string
	AccountName        string `json:"accountName"`        // 开户名	string
	AccountNo          string `json:"accountNo"`          // 开户账号	string
	AuditStatus        string `json:"auditStatus"`        // 审核状态	string
	BankName           string `json:"bankName"`           // 开户行名称	string
	BankNo             string `json:"bankNo"`             // 开户行编号	string
	CityCode           string `json:"cityCode"`           // 城市编号	string
	CityName           string `json:"cityName"`           // 城市名称	string
	ClearingBankNo     string `json:"clearingBankNo"`     // 清算行号	string
	CountyCode         string `json:"countyCode"`         // 区编号	string
	CountyName         string `json:"countyName"`         // 区名称	string
	CreateTime         int64  `json:"createTime"`         // string(date-time)
	ExternalCustomerNo string `json:"externalCustomerNo"` // string
	Id                 int64  `json:"id"`                 // integer(int64)
	IdCard             string `json:"idCard"`             // 身份证号	string
	Optimistic         int64  `json:"optimistic"`         // integer(int32)
	OwnNo              string `json:"ownNo"`              // 所有者	string
	ProvinceCode       string `json:"provinceCode"`       // 省份编号	string
	ProvinceName       string `json:"provinceName"`       // 省份名称	string
	UpdateTime         int64  `json:"updateTime"`         // string(date-time)
	Validate           string `json:"validate"`           // string

}

// ShopInfoListObj 网点信息
type ShopInfoListObj struct {
	ShopId            int64  `json:"shopId"`            // 网点编号	Long
	ShopName          string `json:"shopName"`          // 门店名称	String
	ShopAddress       string `json:"shopAddress"`       // 门店地址	String
	ProvinceCode      string `json:"provinceCode"`      // 省份编号	String
	ProvinceName      string `json:"provinceName"`      // 省份名称	String
	CityCode          string `json:"cityCode"`          // 城市编号	String
	CityName          string `json:"cityName"`          // 城市名称	String
	ShopDistCode      string `json:"shopDistCode"`      // 区编号	String
	ShopDistName      string `json:"shopDistName"`      // 区名称	String
	ShopContactName   string `json:"shopContactName"`   // 联系人	String
	ShopContactMobile string `json:"shopContactMobile"` // 联系人手机	String
}

// TerminalInfoObj 终端信息集合
type TerminalInfoObj struct {
	CoreTermId     int64    `json:"coreTermId"`   // 三代终端编号	Long
	TermTypeCode   int      `json:"termTypeCode"` // 终端分类	Integer
	TermTypeName   string   `json:"termTypeName"` // 终端分类名称	string
	TermNoList     []string `json:"termNoList"`   // 终端号	List<String>
	ActiveNoVoList []struct {
		BusiTypeCode string `json:"busiTypeCode"` // 业务类别码	String
		TermNo       string `json:"termNo"`       // 终端号	String
		ActiveNo     string `json:"activeNo"`     // 终端激活码	String
	} `json:"activeNoVoList"` //激活码	List<ActiveNoVo>
}

// ProductVoObj 已有产品信息
type ProductVoObj struct {
	Product     string `json:"product"`     // 商户产品	String
	ProductName string `json:"productName"` // 商户产品名称	String
}

// TerminalInfo 获取终端信息
type TerminalInfo struct {
	Customer   TerminalCustomer `json:"customer"`
	Pos        TerminalPos      `json:"pos"`
	ExternalNo string           `json:"externalNo"`
}

type TerminalPos struct {
	ActivityFlag     string `json:"activityFlag"`     // 活动标识	string
	AgencyNo         int64  `json:"agencyNo"`         // 服务商编号    integer(int64)
	AgentNo          int64  `json:"agentNo"`          // 合作方编号    integer(int64)
	AllotTime        string `json:"allotTime"`        // 分配时间
	AntiActivateFlag string `json:"antiActivateFlag"` // 反激活状态
	BindTime         string `json:"bindTime"`         // pos激活时间
	CreateTime       string `json:"createTime"`       //
	DepositType      string `json:"depositType"`      // 押金类型,可用值:DEPOSIT_TYPE_299,DEPOSIT_TYPE_DQ_100,DEPOSIT_TYPE_DQ_NONE,DEPOSIT_TYPE_NONE,DEPOSIT_TYPE_KLB_99
	FeeRateType      string `json:"feeRateType"`      //
	Id               string `json:"id"`               //
	IncomeUserNo     string `json:"incomeUserNo"`     //
	Optimistic       int64  `json:"optimistic"`       //
	Platform         string `json:"platform"`         // 平台标识
	PosModel         string `json:"posModel"`         // 机具型号
	PosName          string `json:"posName"`          // pos机名称
	PosSn            string `json:"posSn"`            // 机具编号
	PosType          string `json:"posType"`          // 机具类型,可用值:BPOS,ZPOS
	PurchaseAgencyNo string `json:"purchaseAgencyNo"` // 采购服务商编号
	Status           string `json:"status"`           // 状态：INIT:未分配 ALLOCATE:己分配 BIND:己绑定 ACTIVE:己激活,可用值:INIT,ALLOCATE,BIND,ACTIVE,UN_ACTIVE
	SyncStatus       string `json:"sync_status"`      // 是否同步服务费管理平台 YES 同步 NO 未同步,可用值:YES,NO
	TermNo           string `json:"termNo"`           // 拉卡拉虚拟终端号
	UpdateTime       string `json:"updateTime"`       //
	ActiveNo         string `json:"activeNo"`         // 激活码	string
	OpenTime         string `json:"openTime"`         // 开通时间	string
}
type TerminalCustomer struct {
	AgencyNo           int64  `json:"agencyNo"`           // 服务商编号    integer(int64)
	AgentNo            int64  `json:"agentNo"`            // 合作方编号    integer(int64)
	CustomerName       string `json:"customerName"`       // 商户名称	string
	CustomerNo         string `json:"customerNo"`         // 商户编号	integer(int64)
	ExternalCustomerNo string `json:"externalCustomerNo"` // 外部商户编号	string
	TermNo             string `json:"termNo"`             // 虚拟终端号	string
}

// OrganizationList 获取城市组织代码
type OrganizationList struct {
	Id         int64  `json:"id"`
	CreateTime string `json:"createTime"`
	Optimistic int64  `json:"optimistic"`
	Code       string `json:"code"`
	Name       string `json:"name"`
	ParentCode string `json:"parentCode"`
}

// BankListResult 返回的银行列表
type BankListResult struct {
	BranchBankNo   string `json:"branchBankNo"`
	ClearNo        string `json:"clearNo"`
	BankNo         string `json:"bankNo"`
	AreaCode       string `json:"areaCode"`
	BranchBankName string `json:"branchBankName"`
}

// BusinessResult 商户类别查询
type BusinessResult struct {
	Code          string `json:"code"`          // 编码
	Name          string `json:"name"`          //名称
	BusinessScene int    `json:"businessScene"` //类别的业务场景
	CreateTime    string `json:"createTime"`
	UpdateTime    string `json:"updateTime"`
}

// MerchantFeeResp 费率查询
type MerchantFeeResp struct {
	Fees []struct {
		Discount         bool   `json:"discount"`         // 是否优惠费率
		FeeRate          string `json:"feeRate"`          // 费率
		FeeRateMax       string `json:"feeRateMax"`       // 费率最⼤值
		FeeRateMin       string `json:"feeRateMin"`       // 费率最⼩值
		FeeType          string `json:"feeType"`          // 费率类型
		FeeTypeName      string `json:"feeTypeName"`      // 费率类型名称
		FixedValue       string `json:"fixedValue"`       // 固定值
		IsUpper          string `json:"isUpper"`          // 是否封顶[TRUE是/FALSE不是]
		LogicConfig      string `json:"logicConfig"`      //
		MaxAmt           string `json:"maxAmt"`           // ⼿续费最⼤值
		MinAmt           string `json:"minAmt"`           // ⼿续费最⼩值
		RateType         string `json:"rateType"`         // 费率区间类型 RANG：区间，   FIXE：   定值
		RegionValueLogic string `json:"regionValueLogic"` //
		TmpMaxAmt        string `json:"tmpMaxAmt"`        // 模板⼿续费最⼤值
		TmpMinAmt        string `json:"tmpMinAmt"`        // 模板⼿续费最⼩值
		Unit             string `json:"unit"`             // 单位[元/笔 或 %]
	} `json:"fees"` // 费率信息列表
	SettleType         string        `json:"settleType"`     // 结算周期
	SettleTypeList     []interface{} `json:"settleTypeList"` // 结算周期可选列表[D0:秒到,D1:D+1到账]
	WithdrawalType     string        `json:"withdrawalType"` // 提款类型
	WithdrawalTypeList []struct {
		Key   string      `json:"key"`
		Value interface{} `json:"value"`
	} `json:"withdrawalTypeList"` // 提款类型[SECOND:秒到;AMOUNT:秒提]
}

// FeeChangeReq 费率变更请求信息
type FeeChangeReq struct {
	Attachments           []AttachmentDto `json:"attachments"`           // 附件信息集合	body	false	array	AttachmentDto
	Fees                  []FeeInfoDto    `json:"fees"`                  // 费率列表	body	true	array	FeeInfoDto
	ProductCode           string          `json:"productCode"`           // 产品类型	body	true	string
	SettleType            string          `json:"settleType"`            // 结算⽅式,可⽤值:D0,D1	body	false	string	 (D0改D1传终端费率，D1改D0传终端费率和D0费率）
	WithdrawalType        string          `json:"withdrawalType"`        // 提款类型,可用值[SECOND:秒到;AMOUNT:秒提]	body	false	string
	SettlementType        string          `json:"settlementType"`        // 结算方式	body	false	String	MANUAL:手动结算,AUTOMATIC:自动结算,REGULAR:定时结算（仅企业商户支持）
	RegularSettlementTime string          `json:"regularSettlementTime"` // 定时结算时间	body	false	int	定时结算必传 格式为 HHmm 例如结算时间为下午3点 传入值为 1500
}

// AttachmentDto 附件集合信息
type AttachmentDto struct {
	ImgPath        string `json:"imgPath"` // 图片路径 通过图片上传接口获取图片地址信息
	ImgType        string `json:"imgType"`
	OpenplatformId string `json:"openplatformId"`
	ShowPath       string `json:"showPath"`
}

// FeeInfoDto 费率集合信息
type FeeInfoDto struct {
	Fee     float64 `json:"fee"`
	FeeType string  `json:"feeType"`
	TopFee  float64 `json:"top_feel"`
}

// FeeChangeResp 费率变更返回信息
type FeeChangeResp struct {
	Body struct {
		Message         string `json:"message"`
		ReviewRelatedId int    `json:"reviewRelatedId"` // 变更凭证id[变更结果可通过id进行查询]
	} `json:"body"`
	StatusCode      string `json:"statusCode"`
	StatusCodeValue int    `json:"statusCodeValue"`
}

type CahngePublic struct {
	Message         string `json:"message"`
	ReviewRelatedId int64  `json:"reviewRelatedId"` // 变更凭证id[变更结果可通过id进行查询]
}

// UpdateSettleInfoReq 商户结算信息变更
type UpdateSettleInfoReq struct {
	AccountKind        string          `json:"accountKind"`        // 账户性质[57：对公 58：对私]	body	false	string
	AccountName        string          `json:"accountName"`        // 开户名	body	false	string
	AccountNo          string          `json:"accountNo"`          // 银⾏卡号	body	false	string
	Attachments        []AttachmentDto `json:"attachments"`        // 附件信息集合	body	false	array	AttachmentDto
	BankName           string          `json:"bankName"`           // 银⾏名称	body	false	string	通过【银行列表查询】接口获取 对应 branchBankName字段
	BankNo             string          `json:"bankNo"`             // 银⾏编码	body	false	string	通过【银行列表查询】接口获取 对应 branchBankNo字段
	ClearingBankNo     string          `json:"clearingBankNo"`     // ⽀⾏编码	body	false	string	通过【银行列表查询】接口获取 对应 clearNo字段
	IdentityNo         string          `json:"identityNo"`         // 身份证号	body	false	string
	IsLegalPerson      bool            `json:"isLegalPerson"`      // 是否法⼈进件	body	false	boolean	 不传默认法人
	ReviewRelatedId    int64           `json:"reviewRelatedId"`    // 审核关联数据id	body	false	integer(int64)
	SettleCityCode     string          `json:"settleCityCode"`     // 结算市代码	body	false	string	通过【地区信息→获取银行地区查询】接口获取 对应 code字段
	SettleCityName     string          `json:"settleCityName"`     // 结算市名称	body	false	string	通过【地区信息→获取银行地区查询】接口获取 对应 name字段
	SettleCountyCode   string          `json:"settleCountyCode"`   // 结算区代码	body	false	string	通过【地区信息→获取银行地区查询】接口获取 对应 code字段
	SettleCountyName   string          `json:"settleCountyName"`   // 结算区名称	body	false	string	通过【地区信息→获取银行地区查询】接口获取 对应 name字段
	SettleProvinceCode string          `json:"settleProvinceCode"` // 结算省份代码	body	false	string	通过【地区信息→获取银行地区查询】接口获取 对应 code字段
	SettleProvinceName string          `json:"settleProvinceName"` // 结算省份名称	body	false	string	通过【地区信息→获取银行地区查询】接口获取 对应 name字段
}

// UpdateBaseInfoReq 商户基本信息变更
type UpdateBaseInfoReq struct {
	CustomerNo       int64          `json:"customerNo"`       // integer(int64)    商户编号
	MerBlis          string         `json:"merBlis"`          // 营业执照号
	MerBlisName      string         `json:"merBlisName"`      // 营业执照名称
	MerBlisExpDt     string         `json:"merBlisExpDt"`     // 营业执照有效期
	MerBizName       string         `json:"merBizName"`       // 商户名称
	ProvinceCode     string         `json:"provinceCode"`     // 省份编号
	ProvinceName     string         `json:"provinceName"`     // 省份名称
	CityCode         string         `json:"cityCode"`         // 城市编号
	CityName         string         `json:"cityName"`         // 城市名称
	CountyCode       string         `json:"countyCode"`       // 区编号
	CountyName       string         `json:"countyName"`       // 区名称
	MerRegAddr       string         `json:"merRegAddr"`       // 商户详细地址
	MerContactName   string         `json:"merContactName"`   // 联系人姓名
	MerContactMobile string         `json:"merContactMobile"` // 手机号
	LarName          string         `json:"larName"`          // 法人姓名
	LarIdcard        string         `json:"larIdcard"`        // 证件号码
	LarIdcardStDt    string         `json:"larIdcardStDt"`    // 证件开始日期
	LarIdcardExpDt   string         `json:"larIdcardExpDt"`   // 证件有效期
	FileData         []FileDataList `json:"fileData"`         // 集合附件数据
	ChannelType      string         `json:"channelType"`      // 商户类型 TP_MERCHANT:企业，TP_PERSONAL:小微(只有小微变更企业需要传，其它变更不需要传)
	MerRegName       string         `json:"merRegName"`       // 注册名称(企业变更注册名称需要传)
}

type FileDataList struct {
	ImgPath  string `json:"imgPath"`  //图片地址	String	否
	ImgType  string `json:"imgType"`  //图片类型	String	否
	ShowPath string `json:"showPath"` //showPath	String	否
}

// ImgSupplementResp 查看门店是否需要补充照片
type ImgSupplementResp struct {
	Code      string `json:"code"` // 响应编码
	Data      string `json:"data"` // OpenCustomerExtImgVo
	Message   string `json:"message"`
	Timestamp int64  `json:"timestamp"`
}

type OpenCustomerExtImgVo struct {
	IsUploadPhoto string `json:"isUploadPhoto"` // 照片以补充（Y：以补充；N：未补充）
	IsShopOutside string `json:"isShopOutside"` // 门头照是否已补充（Y：以补充；N：未补充）
	IsShopInside  string `json:"isShopInside"`  // 內部照是否已补充（Y：以补充；N：未补充）
}

// ImgSupplementReq 门店补充照片
type ImgSupplementReq struct {
	Attachments []struct {
		ImgPath        string `json:"imgPath"`        // 图片地址
		ImgType        string `json:"imgType"`        // 图片类型
		OpenplatformId string `json:"openplatformId"` //
		ShowPath       string `json:"showPath"`
	} `json:"attachments"`
	ExtCustomerNo string `json:"extCustomerNo"` // 商户号
}

// OpenUnionpayMerchantVo 银联报备,商户报备查询
type OpenUnionpayMerchantVo struct {
	AgentNo            string `json:"agentNo"`            // 机构号
	OrgCode            string `json:"orgCode"`            // 代理商编号
	ExternalCustomerNo string `json:"externalCustomerNo"` // 商户编号
	CustomerName       string `json:"customerName"`       // 商户名称
	OperationType      string `json:"operationType"`      // 操作类型（I：新增；U：变更；D：注销；R：注销）
	MerStatus          string `json:"merStatus"`          // 操作类型（I：新增；U：变更；D：注销；R：注销）
	Message            string `json:"message"`            // 报备备注
	ReportTime         string `json:"reportTime"`         // 代理商编号
}

// OpenUnionpayTermVo 终端报备状态查询
type OpenUnionpayTermVo struct {
	AgentNo            int    `json:"agentNo"`            // 机构号
	OrgCode            string `json:"orgCode"`            // 代理商编号
	ExternalCustomerNo string `json:"externalCustomerNo"` // 商户编号
	CustomerName       string `json:"customerName"`       // 商户名称
	OperationType      string `json:"operationType"`      // 操作类型（I：新增；U：变更；D：注销；R：注销）
	MerStatus          string `json:"merStatus"`          // 操作类型（I：新增；U：变更；D：注销；R：注销）
	Message            string `json:"message"`            // 报备备注
	ReportTime         string `json:"reportTime"`         // 代理商编号
	PosSn              string `json:"posSn"`
}

// BusinessLicenseReq 变更营业执照
type BusinessLicenseReq struct {
	ExternalCustomerNo string `json:"externalCustomerNo"` // 商户编号 必填
	MerBlis            string `json:"merBlis"`            // 营业执照号 必填
	MerBlisName        string `json:"merBlisName"`        // 营业执照名称 必填
	MerBlisExpDt       string `json:"merBlisExpDt"`       // 营业执照有效期 必填
	LarName            string `json:"larName"`            // 法人姓名
	LarIdcard          string `json:"larIdcard"`          // 法人证件号码
	LarIdcardExpDt     string `json:"larIdcardExpDt"`     // 法人证件有效期
	FileData           []struct {
		ImgPath  string `json:"imgPath"`  // 图片地址
		ShowPath string `json:"showPath"` // showPath
		ImgType  string `json:"imgType"`  // 图片类型
	} `json:"fileData"`
}

// DishonestPerson 失信人名单
type DishonestPerson struct {
	AcqInsNum     int    `json:"acqInsNum"`     // 涉及收单机构数量
	CloseMchntNum int    `json:"closeMchntNum"` // 共共计查询到的退出记录数量
	IsInBlackList string `json:"isInBlackList"` // 是否黑名单
	SignMchntNum  int    `json:"signMchntNum"`  // 共共计查询到的商户记录数量
}
