| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- 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
- }
- }
- // 尝试混合支付
- if channelMode == "hybrid" || channelMode == "" {
- var rec Hybridamtrec
- has, err = engine.Where("TRADE_ACCT = ? and exch_seq = ? and deal_status = 2", accountId, exchticket).Get(&rec)
- if err != nil {
- return
- }
- if has {
- rsp = &GetAmtInByPaidUrlRsp{
- ChannelMode: "hybrid",
- URL: rec.PAYMENT_URL,
- }
- 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
- }
|