package models import ( "mtp2_if/db" "mtp2_if/utils" ) // Bankcusbankextendconfig 托管银行扩展配置表 type Bankcusbankextendconfig struct { CUSBANKID string `json:"cusbankid" xorm:"CUSBANKID" form:"cusbankid" binding:"required"` // 托管银行编号 EXTENDBIZTYPE int32 `json:"extendbiztype" xorm:"EXTENDBIZTYPE" form:"extendbiztype"` // 扩展业务类型 - 1:签约 2:入金 3:出金 4:签约信息修改 FIELDID int64 `json:"fieldid" xorm:"FIELDID"` // 字段ID ISMANDATORY int32 `json:"ismandatory" xorm:"ISMANDATORY"` // 是否必填 - 0:不必填 1:必填 FIELDCODE string `json:"fieldcode" xorm:"FIELDCODE"` // 字段代码 FIELDNAME string `json:"fieldname" xorm:"FIELDNAME"` // 字段名称 STATUS int32 `json:"status" xorm:"STATUS"` // 状态 - 0:正常 1:注销 FIELDTYPE int32 `json:"fieldtype" xorm:"FIELDTYPE"` // 字段类型 - 1:扩展字段 2:协议字段 USABLETYPE int32 `json:"usabletype" xorm:"USABLETYPE"` // 可用类型 - 1:通用 2:机构专用 3:投资者专用 } func (r *Bankcusbankextendconfig) calc() {} func (r *Bankcusbankextendconfig) buildSql() string { var sqlId utils.SQLVal = ` SELECT t.cusbankid, t.extendbiztype, t.fieldid, t.ismandatory, e.fieldcode, e.fieldname, e.status, e.fieldtype, e.usabletype FROM Bank_Cusbankextendconfig t LEFT JOIN BANK_EXTENDFIELD e ON e.fieldid = t.fieldid WHERE 1=1 ` sqlId.And("t.cusbankid", r.CUSBANKID) sqlId.AndEx("t.extendbiztype", r.EXTENDBIZTYPE, r.EXTENDBIZTYPE > 0) sqlId.OrderBy("t.fieldid") return sqlId.String() } // GetDataEx 获取掉期商品订单详情(交易确认书) func (r *Bankcusbankextendconfig) GetDataEx() (interface{}, error) { sData := make([]Bankcusbankextendconfig, 0) err := db.GetEngine().SQL(r.buildSql()).Find(&sData) for i := range sData { sData[i].calc() } return sData, err } // Bankbranchnuminfo 银行支行联行号信息表 type Bankbranchnuminfo struct { BRANCHNUM string `json:"branchnum" xorm:"BRANCHNUM"` // 支行行号 BRANCHNAME string `json:"branchname" xorm:"BRANCHNAME" form:"branchname" binding:"required"` // 支行名称 BRANCHPROVINCE string `json:"branchprovince" xorm:"BRANCHPROVINCE"` // 省份 BRANCHCITY string `json:"branchcity" xorm:"BRANCHCITY"` // 市县 ISEXPIRED string `json:"isexpired" xorm:"ISEXPIRED"` // 是否过期 PageEx `xorm:"extends"` // 页码信息 } func (r *Bankbranchnuminfo) calc() { } func (r *Bankbranchnuminfo) buildSql() string { var sqlId utils.SQLVal = ` select t.branchnum, t.branchname, t.branchprovince, t.branchcity from BANK_BRANCHNUMINFO t where t.branchname like '%%%v%%' ` sqlId.FormatParam(r.BRANCHNAME) sqlId.Page(r.Page, r.PageSize) return sqlId.String() } func (r *Bankbranchnuminfo) GetDataByPage() (interface{}, error, int, int, int) { sData := make([]Bankbranchnuminfo, 0) err := db.GetEngine().SQL(r.buildSql()).Find(&sData) total := 0 for i := range sData { sData[i].calc() total = sData[i].Total } return sData, err, r.Page, r.PageSize, total } type GetAmtInByPaidUrlRsp struct { ChannelMode string `json:"channelmode"` // 渠道类型:ChillPay,PayerMax,AsiaPay URL string `json:"url"` // 支付跳转地址 Params string `json:"params"` // 支付参数,只有 AsiaPay 渠道需要 } func GetAmtInByPaid(accountId int, exchticket string, channelMode string) (rsp *GetAmtInByPaidUrlRsp, err error) { engine := db.GetEngine() var has bool // 尝试 ChillPay if channelMode == "ChillPay" || channelMode == "" { var rec Chillpayamtinrec has, err = engine.Where("accountid = ? and exch_seq = ? and deal_status = 2", accountId, exchticket).Get(&rec) if err != nil { return } if has { rsp = &GetAmtInByPaidUrlRsp{ ChannelMode: "ChillPay", URL: rec.PAYMENTURL, } return } } // 尝试 PayerMax if channelMode == "PayerMax" || channelMode == "" { var rec Payermaxamtinrec has, err = engine.Where("accountid = ? and exch_seq = ? and deal_status = 2", accountId, exchticket).Get(&rec) if err != nil { return } if has { rsp = &GetAmtInByPaidUrlRsp{ ChannelMode: "PayerMax", URL: rec.REDIRECTURL, } return } } // 尝试 Asia Pay if channelMode == "AsiaPay" || channelMode == "" { var rec Asiapayamtinrec has, err = engine.Where("accountid = ? and exch_seq = ? and deal_status = 2", accountId, exchticket).Get(&rec) if err != nil { return } if has { rsp = &GetAmtInByPaidUrlRsp{ ChannelMode: "AsiaPay", URL: rec.REDIRECTURL, Params: rec.REDIRECTPARAMS, } return } } return } func GetCusBankInfos() ([]Bankcusbankinfo, error) { engine := db.GetEngine() infos := make([]Bankcusbankinfo, 0) if err := engine.Find(&infos); err != nil { return nil, err } return infos, nil } // PaymentCenterHybridConfig 支付中心混合支付渠道配置信息 type PaymentCenterHybridConfig struct { CHANNEL_CODE string `json:"channel_code"` // 渠道代码 CHANNEL_NAME string `json:"channel_name"` // 渠道名称 CAN_AMT_IN int32 `json:"can_amt_in"` // 入金是否可用 0-不可用 1-可用 CAN_AMT_OUT int32 `json:"can_amt_out"` // 出金是否可用 0-不可用 1-可用 BankInfos []Hybridbankinfo `json:"bank_infos"` // 混合支付银行信息列表 } func GetPaymentCenterHybridConfig() (paymentCenterHybridConfigs []PaymentCenterHybridConfig, err error) { engine := db.GetEngine() paymentCenterHybridConfigs = make([]PaymentCenterHybridConfig, 0) hybridchannelconfigs := make([]Hybridchannelconfig, 0) if err = engine.Find(&hybridchannelconfigs); err != nil { return } for _, item := range hybridchannelconfigs { paymentCenterHybridConfig := PaymentCenterHybridConfig{ CHANNEL_CODE: item.CHANNEL_CODE, CHANNEL_NAME: item.CHANNEL_NAME, CAN_AMT_IN: item.CAN_AMT_IN, CAN_AMT_OUT: item.CAN_AMT_OUT, } hybridbankinfos := make([]Hybridbankinfo, 0) if err = engine.Where("CHANNEL_CODE = ? AND IS_ENABLED = 1", item.CHANNEL_CODE).Find(&hybridbankinfos); err != nil { return } paymentCenterHybridConfig.BankInfos = hybridbankinfos paymentCenterHybridConfigs = append(paymentCenterHybridConfigs, paymentCenterHybridConfig) } return } // Hybridreceiveronboard 混合支付出金接收者表 type Hybridreceiveronboard struct { CHANNEL_CODE string `json:"channel_code" xorm:"CHANNEL_CODE"` // 渠道代码 ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账户ID RECEIVERTYPE string `json:"receiver_type" xorm:"RECEIVERTYPE"` // 接收者类型 // 个人-Individual 企业-Organization NAME string `json:"name" xorm:"NAME"` // 名称 / 企业名称 TAXID string `json:"cert_no" xorm:"TAXID"` // 证件号码 TELNUMBER string `json:"phone_number" xorm:"TELNUMBER"` // 电话号码 BANK string `json:"bank_code" xorm:"BANK"` // 银行代码 BANKACCOUNT string `json:"bank_account" xorm:"BANKACCOUNT"` // 银行卡号 BANK_NAME string `json:"bank_name" xorm:"BANK_NAME"` // 银行名称 USERID int64 `json:"-" xorm:"-"` // 用户ID } func (r *Hybridreceiveronboard) calc() {} func (r *Hybridreceiveronboard) buildSql() string { var sqlId utils.SQLVal = ` select t.channel_code, t.accountid, t.id, t.receivertype, t.name, t.taxid, t.telnumber, t.bank, t.bankaccount, t.email, t.datecreated, t.datemodified, t.relationship, t.status, b.bank_name from HYBRID_RECEIVERONBOARD t inner join HYBRID_BANKINFO b on b.channel_code = t.channel_code inner join taaccount ta on ta.accountid = t.accountid inner join useraccount u on u.userid = ta.userid ` sqlId.And("u.userid", r.USERID) return sqlId.String() } func (r *Hybridreceiveronboard) GetDataEx() (interface{}, error) { sData := make([]Hybridreceiveronboard, 0) err := db.GetEngine().SQL(r.buildSql()).Find(&sData) for i := range sData { sData[i].calc() } return sData, err }