package models import ( "encoding/hex" "errors" "fmt" "mtp2_if/db" "mtp2_if/global/e" "mtp2_if/utils" "strconv" "time" ) // Loginaccount 登录账户表 type Loginaccount struct { Loginid int64 `json:"loginid" xorm:"LOGINID" binding:"required"` // 登陆账号 Userid int64 `json:"userid" xorm:"USERID"` // 用户ID Loginfailnum int32 `json:"loginfailnum" xorm:"LOGINFAILNUM"` // 连续登录失败次数(登录成功时清零) Password string `json:"-" xorm:"PASSWORD"` // 登陆密码 Loginusertype int32 `json:"loginusertype" xorm:"LOGINUSERTYPE"` // 登录账号类型 - 1:投资者 2:机构交易员 Loginstatus int32 `json:"loginstatus" xorm:"LOGINSTATUS"` // 登录账号状态 1:正常 2:冻结(停用) 3:无效(注销) Lastlogintime time.Time `json:"lastlogintime" xorm:"LASTLOGINTIME"` // 最新登录时间 Lastloginmode int32 `json:"lastloginmode" xorm:"LASTLOGINMODE"` // 最新登录方式(客户端类型) - 0:保留为未填终端类型 1:PC管理端 2:PC交易端 3:手机客户端_安卓 4:网页客户端 5:微信客户端 6:手机客户端_苹果 7:网上开户客户端 8:无效终端编号 9:报价终端(中江) Lastloginip string `json:"-" xorm:"LASTLOGINIP"` // 最新登录地址 Loginport int32 `json:"-" xorm:"LOGINPORT"` // 最新登录端口 Lastloginremark string `json:"-" xorm:"LASTLOGINREMARK"` // 最新登录描述 Modifytime time.Time `json:"-" xorm:"MODIFYTIME"` // 修改时间 Modifierid int64 `json:"-" xorm:"MODIFIERID"` // 修改人 Pwdwrongcount int32 `json:"pwdwrongcount" xorm:"PWDWRONGCOUNT"` // 密码错误次数 Unfreezetime time.Time `json:"unfreezetime" xorm:"UNFREEZETIME"` // 账户解冻时间 Haslogined int32 `json:"haslogined" xorm:"HASLOGINED"` // 是否已登录 - 0:未登录 1:已登录 Hasupdatedpwd int32 `json:"hasupdatedpwd" xorm:"HASUPDATEDPWD"` // 是否已更改密码 - 0:未修改 1:已修改 Logincode string `json:"logincode" xorm:"LOGINCODE"` // 登录代码 Canoutin int32 `json:"canoutin" xorm:"CANOUTIN"` // 是否可出入金 - 0:不可 1:可 Clientroleid int32 `json:"-" xorm:"CLIENTROLEID"` // 终端角色ID Taaccountrighttype int32 `json:"taaccountrighttype" xorm:"TAACCOUNTRIGHTTYPE"` // 资金账号权限类型 - 1:不选默认为所有权限 2:不选默认为无权限 Mobile string `json:"mobile" xorm:"MOBILE"` // 手机号码(加密存储) Accountname string `json:"-" xorm:"ACCOUNTNAME"` // 账户名称 Modifysrc int32 `json:"-" xorm:"MODIFYSRC"` // 审核来源 - 1:管理端 2:终端 Relateduserid int64 `json:"relateduserid" xorm:"RELATEDUSERID"` // 关联用户ID(机构) } // TableName is LOGINACCOUNT func (Loginaccount) TableName() string { return "LOGINACCOUNT" } // Taaccount 资金账户表 - 导历史 type Taaccount struct { Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账户ID Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 货币ID Changeflag int32 `json:"changeflag" xorm:"'CHANGEFLAG'"` // 变动标志(当前账户资金有任何变动更新为1系统结算时更新0;供清算时使用) 0:无变动 1:有变动 // Password string `json:"password" xorm:"'PASSWORD'"` // 资金密码 Password string `json:"-" xorm:"'PASSWORD'"` // 资金密码 Tradestatus int32 `json:"tradestatus" xorm:"'TRADESTATUS'"` // 交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销 Signstatus int32 `json:"signstatus" xorm:"'SIGNSTATUS'"` // 签约状态 - 1:未签约 2:签约待审核 3:签约中 4:已签约 5:解约待审核 6:解约中 7:已解约 8:已解绑 9:绑卡中 Ismain int32 `json:"ismain" xorm:"'ISMAIN'"` // 是否母账号 0:不是母账户 1:是母账户 Parentaccountid int64 `json:"parentaccountid" xorm:"'PARENTACCOUNTID'"` // 所属根账号 Relateduserid int64 `json:"relateduserid" xorm:"'RELATEDUSERID'"` // 关联用户 Relatedaccountstatus int32 `json:"relatedaccountstatus" xorm:"'RELATEDACCOUNTSTATUS'"` // 关联用户交易权限状态 - 1:正常(可交易) 2:受限(可平仓,不可建仓) 3:冻结(不可交易) Taaccounttype int32 `json:"taaccounttype" xorm:"'TAACCOUNTTYPE'"` // 账号类型 - 1:外部账号 2:内部账号 3:内部做市自营账号 4:内部做市接单账号 Isreckonaccount int32 `json:"isreckonaccount" xorm:"'ISRECKONACCOUNT'"` // 是否机构分润账号 0:不是 1:是 Ismarketaccount int32 `json:"ismarketaccount" xorm:"'ISMARKETACCOUNT'"` // 是否机构接单账号 0:不是 1:是 Balance float64 `json:"balance" xorm:"'BALANCE'"` // 期初余额 Orifreezemargin float64 `json:"orifreezemargin" xorm:"'ORIFREEZEMARGIN'"` // 期初冻结保证金 Oriusedmargin float64 `json:"oriusedmargin" xorm:"'ORIUSEDMARGIN'"` // 期初占用保证金 Oriotherfreezemargin float64 `json:"oriotherfreezemargin" xorm:"'ORIOTHERFREEZEMARGIN'"` // 期初其他冻结保证金(出金冻结资金 交割买方冻结 申购冻结 全款买入 商城买入) Orifreezecharge float64 `json:"orifreezecharge" xorm:"'ORIFREEZECHARGE'"` // 期初手续费冻结 Orimortgagecredit float64 `json:"orimortgagecredit" xorm:"'ORIMORTGAGECREDIT'"` // 期初授信金额 Oriothercredit float64 `json:"oriothercredit" xorm:"'ORIOTHERCREDIT'"` // 期初其它授信金额 Orioutamountfreeze float64 `json:"orioutamountfreeze" xorm:"'ORIOUTAMOUNTFREEZE'"` // 期初出金冻结 Currentbalance float64 `json:"currentbalance" xorm:"'CURRENTBALANCE'"` // 期末余额 Freezemargin float64 `json:"freezemargin" xorm:"'FREEZEMARGIN'"` // 冻结保证金 Usedmargin float64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金 Otherfreezemargin float64 `json:"otherfreezemargin" xorm:"'OTHERFREEZEMARGIN'"` // 其他冻结保证金(交割买方冻结 申购冻结 全款买入 商城买入) Freezecharge float64 `json:"freezecharge" xorm:"'FREEZECHARGE'"` // 手续费冻结 Mortgagecredit float64 `json:"mortgagecredit" xorm:"'MORTGAGECREDIT'"` // 授信金额 Othercredit float64 `json:"othercredit" xorm:"'OTHERCREDIT'"` // 其它授信金额 Outamountfreeze float64 `json:"outamountfreeze" xorm:"'OUTAMOUNTFREEZE'"` // 出金冻结 Inamount float64 `json:"inamount" xorm:"'INAMOUNT'"` // 今日入金金额(包括三方入金) Outamount float64 `json:"outamount" xorm:"'OUTAMOUNT'"` // 今日出金金额(包括三方出金) Paycharge float64 `json:"paycharge" xorm:"'PAYCHARGE'"` // 今日手续费支出 Closepl float64 `json:"closepl" xorm:"'CLOSEPL'"` // 今日平仓盈亏 Creditincrease float64 `json:"creditincrease" xorm:"'CREDITINCREASE'"` // 今日授信增加 Creditdecrease float64 `json:"creditdecrease" xorm:"'CREDITDECREASE'"` // 今日授信减少 Othercreditincrease float64 `json:"othercreditincrease" xorm:"'OTHERCREDITINCREASE'"` // 今日其它授信增加 Othercreditdecrease float64 `json:"othercreditdecrease" xorm:"'OTHERCREDITDECREASE'"` // 今日其它授信减少 Transferamount float64 `json:"transferamount" xorm:"'TRANSFERAMOUNT'"` // 今日划转金额(母子账号资金划转,从划入账号为正,从账号划出为负) Otherpay float64 `json:"otherpay" xorm:"'OTHERPAY'"` // 其他支出(交割付款 申购付款 全款买入 商城买入 卖家退货) Otherincome float64 `json:"otherincome" xorm:"'OTHERINCOME'"` // 其他收入(交割收款 申购收款 全款卖出 商城卖出 买家退货 会员手续费收入) Outthreshold float64 `json:"outthreshold" xorm:"'OUTTHRESHOLD'"` // 出金阈值 Tradestatuschangetime time.Time `json:"tradestatuschangetime" xorm:"'TRADESTATUSCHANGETIME'"` // 激活时间 Changetime time.Time `json:"changetime" xorm:"'CHANGETIME'"` // 账户状态变更时间 Thirdinamount float64 `json:"thirdinamount" xorm:"'THIRDINAMOUNT'"` // 今日三方入金 Thirdoutamount float64 `json:"thirdoutamount" xorm:"'THIRDOUTAMOUNT'"` // 今日三方出金 Capitalbalance float64 `json:"capitalbalance" xorm:"'CAPITALBALANCE'"` // 本金余额[外部子账户实际出入金余额] Fromaccountid int64 `json:"fromaccountid" xorm:"'FROMACCOUNTID'"` // 所属上级账户 Sublevelpath string `json:"sublevelpath" xorm:"'SUBLEVELPATH'"` // 账号层级路径(逗号分隔,首尾加逗号) Serivcegroup int64 `json:"serivcegroup" xorm:"'SERIVCEGROUP'"` // 服务分组 Accountname string `json:"accountname" xorm:"'ACCOUNTNAME'"` // 账户名称 Accountflag int32 `json:"accountflag" xorm:"'ACCOUNTFLAG'"` // 账户标识 - 0\1 (默认为0, 当上级账户与本账户的关联用户均为自己时更新为1) REMAINAMOUNT float64 `json:"remainamount" xorm:"-"` // 融资额(从融资合同中统计) CURAMOUNT float64 `json:"curamount" xorm:"-"` // 总市值(从持仓中统计) } // TableName is TAACCOUNT func (Taaccount) TableName() string { return "TAACCOUNT" } // Hedgeouttaaccount 对冲外部资金账户表 - 导历史 type Hedgeouttaaccount struct { Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账号[外部母账户] Hedgeaccountcode string `json:"hedgeaccountcode" xorm:"'HEDGEACCOUNTCODE'"` // 对冲账号 Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd) Prebalance float64 `json:"prebalance" xorm:"'PREBALANCE'"` // 期初余额 Balance float64 `json:"balance" xorm:"'BALANCE'"` // 期末余额 Usedmargin float64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金 Freezemargin float64 `json:"freezemargin" xorm:"'FREEZEMARGIN'"` // 冻结保证金 Freezecharge float64 `json:"freezecharge" xorm:"'FREEZECHARGE'"` // 手续费冻结 Otherfreezemargin float64 `json:"otherfreezemargin" xorm:"'OTHERFREEZEMARGIN'"` // 其他冻结保证金(交割买方冻结 申购冻结 全款买入 商城买入) Inamount float64 `json:"inamount" xorm:"'INAMOUNT'"` // 今日入金金额(包括三方入金) Outamount float64 `json:"outamount" xorm:"'OUTAMOUNT'"` // 今日出金金额(包括三方出金) Paycharge float64 `json:"paycharge" xorm:"'PAYCHARGE'"` // 今日手续费支出 Closepl float64 `json:"closepl" xorm:"'CLOSEPL'"` // 今日平仓盈亏 Positionprofit float64 `json:"positionprofit" xorm:"'POSITIONPROFIT'"` // 结算盈亏 } // TableName is HEDGE_OUTTAACCOUNT func (Hedgeouttaaccount) TableName() string { return "HEDGE_OUTTAACCOUNT" } // Logintaaccount 登录账户资金权限表 - 自营会员 type Logintaaccount struct { Loginid int64 `json:"loginid" xorm:"'LOGINID'" binding:"required"` // 登录账号ID Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账号ID Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人 } // TableName is LOGINTAACCOUNT func (Logintaaccount) TableName() string { return "LOGINTAACCOUNT" } // Arearolemarket 机构角色市场权限表 type Arearolemarket struct { Areauserid int64 `json:"areauserid" xorm:"'AREAUSERID'" binding:"required"` // 机构用户ID Roletype int32 `json:"roletype" xorm:"'ROLETYPE'" binding:"required"` // 角色类型 - 6:自营会员 7:经纪会员 Marketid int32 `json:"marketid" xorm:"'MARKETID'" binding:"required"` // 市场ID Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人ID Spotrighttype int32 `json:"spotrighttype" xorm:"'SPOTRIGHTTYPE'"` // 现货权限类型 - 0:无 1:可挂可摘 2:可挂 3:可摘 [现货类](卖大厅) Buyspotrighttype int32 `json:"buyspotrighttype" xorm:"'BUYSPOTRIGHTTYPE'"` // 现货权限类型 - 0:无 1:可挂可摘 2:可挂 3:可摘 [现货类](买大厅) } // TableName is AREAROLEMARKET func (Arearolemarket) TableName() string { return "AREAROLEMARKET" } // Taaccountmarket 资金账号市场权限表 type Taaccountmarket struct { Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账号ID Marketid int32 `json:"marketid" xorm:"'MARKETID'" binding:"required"` // 市场ID Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人 Spotrighttype int32 `json:"spotrighttype" xorm:"'SPOTRIGHTTYPE'"` // 现货权限类型 - 0:无1:可挂可摘 2:可挂 3:可摘 [现货类](卖大厅) Buyspotrighttype int32 `json:"buyspotrighttype" xorm:"'BUYSPOTRIGHTTYPE'"` // 现货权限类型 - 0:无1:可挂可摘 2:可挂 3:可摘 [现货类](买大厅) } // TableName is TAACCOUNTMARKET func (Taaccountmarket) TableName() string { return "TAACCOUNTMARKET" } // Useraccount 用户表 type Useraccount struct { Userid int64 `json:"userid" xorm:"USERID" binding:"required"` // 用户ID Usertype int32 `json:"usertype" xorm:"USERTYPE"` // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台) Modifystatus int32 `json:"modifystatus" xorm:"MODIFYSTATUS"` // 变更状态 1 未变更 2 变更中 3 变更待审核 4 变更待复核(投资者) Accountname string `json:"accountname" xorm:"ACCOUNTNAME"` // 账户名称(机构名称) Parentuserid int64 `json:"parentuserid" xorm:"PARENTUSERID"` // 所属机构ID Broker int64 `json:"broker" xorm:"BROKER"` // 所属经纪人ID Subarealevelpath string `json:"subarealevelpath" xorm:"SUBAREALEVELPATH"` // 子机构层级路径(逗号分隔,首尾加逗号) Refereeuserid int64 `json:"refereeuserid" xorm:"REFEREEUSERID"` // 推荐人ID Memberuserid int64 `json:"memberuserid" xorm:"MEMBERUSERID"` // 所属会员ID Accountstatus int32 `json:"accountstatus" xorm:"ACCOUNTSTATUS"` // 账户状态 - 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:停用(注销) 7:注销(删除) Reckonaccountid int64 `json:"reckonaccountid" xorm:"RECKONACCOUNTID"` // 默认结算资金账号ID(机构分润使用) 作废 Createtime time.Time `json:"-" xorm:"CREATETIME"` // 创建时间 Creatorid int64 `json:"-" xorm:"CREATORID"` // 创建人 Audittime time.Time `json:"-" xorm:"AUDITTIME"` // 审核时间 Audituserid int64 `json:"-" xorm:"AUDITUSERID"` // 审核人 Auditremark string `json:"auditremark" xorm:"AUDITREMARK"` // 审核备注 Canceltime time.Time `json:"-" xorm:"CANCELTIME"` // 销户时间 Canceluserid int64 `json:"-" xorm:"CANCELUSERID"` // 销户人 Modifytime time.Time `json:"-" xorm:"MODIFYTIME"` // 修改时间 Modifierid int64 `json:"-" xorm:"MODIFIERID"` // 修改人 Modifyremark string `json:"modifyremark" xorm:"MODIFYREMARK"` // 变更备注 Maxinvestornum int64 `json:"maxinvestornum" xorm:"MAXINVESTORNUM"` // 最大用户数(经纪会员下投资者个数) Hasauth int32 `json:"hasauth" xorm:"HASAUTH"` // 是否已实名认证 - 0:未认证 1:已认证 2:已提交(待审核) 3:已拒绝 Refercount int32 `json:"refercount" xorm:"REFERCOUNT"` // 推荐总人数 Refernum string `json:"refernum" xorm:"REFERNUM"` // 推荐码 Isanonymous int32 `json:"isanonymous" xorm:"ISANONYMOUS"` // 是否匿名下单 - 0:否 1:是 Parenttopuser string `json:"parenttopuser" xorm:"PARENTTOPUSER"` // 上级顶级机构 [092=0,1时,默认为1, 092=2时若自已为顶级,则填入自己,自己不为顶级,填入ParentUserID的"ParentTopUser"] Subaccountlevel int32 `json:"subaccountlevel" xorm:"SUBACCOUNTLEVEL"` // 子账户层数 Applysrc int32 `json:"-" xorm:"APPLYSRC"` // 申请来源 - 1:管理端 2:终端 Auditsrc int32 `json:"-" xorm:"AUDITSRC"` // 审核来源 - 1:管理端 2:终端 Rootuserid int64 `json:"rootuserid" xorm:"ROOTUSERID"` // 根用户ID Canrecommend int32 `json:"canrecommend" xorm:"CANRECOMMEND"` // 是否可推荐 - 0:不可 1;可 LineCSAccount string `json:"linecsaccount" xorm:"LINECSACCOUNT"` // Line客服账号 TodayRefercount int `json:"todayrefercount" xorm:"-"` // 今日推荐人数 CURSCORE int64 `json:"curscore" xorm:"-"` // 积分 IsSigned bool `json:"issigned" xorm:"-"` // 今日是否已签到 MemberLineCSAccount string `json:"memberlinecsaccount" xorm:"-"` // 所属会员Line客服账号 } // TableName is USERACCOUNT func (Useraccount) TableName() string { return "USERACCOUNT" } // Userinfo 用户信息表 type Userinfo struct { Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业 Customername string `json:"customername" xorm:"'CUSTOMERNAME'"` // 客户名称(企业名称) Userstatus int32 `json:"userstatus" xorm:"'USERSTATUS'"` // 用户状态 - 1:正常 2:注销 Usertype int32 `json:"usertype" xorm:"'USERTYPE'"` // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 Openmode int32 `json:"openmode" xorm:"'OPENMODE'"` // 开户方式 - 1:管理端开户 2:网上开户注册(会员官网) 3:微信开户 4:网页交易端注册 5:安卓手机端注册 6:苹果手机端注册 7:PC交易端注册 8:微信快速开户 9:支付宝快速开户 10:手机号快速开户 Cardtypeid int32 `json:"cardtypeid" xorm:"'CARDTYPEID'"` // 证件类型ID Cardnum string `json:"cardnum" xorm:"'CARDNUM'"` // 证件号码(加密存储) Halfbodyphotourl string `json:"halfbodyphotourl" xorm:"'HALFBODYPHOTOURL'"` // 半身照地址 Cardfrontphotourl string `json:"cardfrontphotourl" xorm:"'CARDFRONTPHOTOURL'"` // 证件正面图片地址 Cardbackphotourl string `json:"cardbackphotourl" xorm:"'CARDBACKPHOTOURL'"` // 证件背面图片地址 Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它 Bizscope string `json:"bizscope" xorm:"'BIZSCOPE'"` // 企业经营范围(企业) Legalpersonname string `json:"legalpersonname" xorm:"'LEGALPERSONNAME'"` // 法人姓名(企业) Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人 Sex int32 `json:"sex" xorm:"'SEX'"` // 用户性别 0: 女 1: 男 Telphone string `json:"telphone" xorm:"'TELPHONE'"` // 联系电话(加密存储) Mobile string `json:"mobile" xorm:"'MOBILE'"` // 手机号码(加密存储) Fax string `json:"fax" xorm:"'FAX'"` // 传真(加密存储) Email string `json:"email" xorm:"'EMAIL'"` // 邮件(加密存储) Qq string `json:"qq" xorm:"'QQ'"` // QQ(加密存储 Wechat string `json:"wechat" xorm:"'WECHAT'"` // 微信(加密存储) Countryid int32 `json:"countryid" xorm:"'COUNTRYID'"` // 国家 Provinceid int32 `json:"provinceid" xorm:"'PROVINCEID'"` // 省ID Cityid int32 `json:"cityid" xorm:"'CITYID'"` // 市ID Districtid int32 `json:"districtid" xorm:"'DISTRICTID'"` // 地区ID Company string `json:"company" xorm:"'COMPANY'"` // 公司(个人) Address string `json:"address" xorm:"'ADDRESS'"` // 地址 Postalcode string `json:"postalcode" xorm:"'POSTALCODE'"` // 邮政编码 Createtime time.Time `json:"-" xorm:"'CREATETIME'"` // 创建时间 Creatorid int64 `json:"-" xorm:"'CREATORID'"` // 创建人 Modifiertime time.Time `json:"-" xorm:"'MODIFIERTIME'"` // 修改时间 Modifierid int64 `json:"-" xorm:"'MODIFIERID'"` // 修改人 Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Wskhinfo string `json:"wskhinfo" xorm:"'WSKHINFO'"` // 开户申请信息(JSON) Signpdfurl string `json:"signpdfurl" xorm:"'SIGNPDFURL'"` // 签约pdf文件 Legalcardfrontphotourl string `json:"legalcardfrontphotourl" xorm:"'LEGALCARDFRONTPHOTOURL'"` // 法人身份证正面照地址 Legalcardbackphotourl string `json:"legalcardbackphotourl" xorm:"'LEGALCARDBACKPHOTOURL'"` // 法人身份证背面照地址 Otherurl string `json:"otherurl" xorm:"'OTHERURL'"` // 其它图片地址[使用分号分隔] Hasencrypt int32 `json:"hasencrypt" xorm:"'HASENCRYPT'"` // 数据是否已加密 - 0:未加密 1:已加密 Bankname string `json:"bankname" xorm:"'BANKNAME'"` // 银行名称 Bankaccount string `json:"bankaccount" xorm:"'BANKACCOUNT'"` // 银行帐号 (加密存储) Bankcardfrontphotourl string `json:"bankcardfrontphotourl" xorm:"'BANKCARDFRONTPHOTOURL'"` // 银行卡正面照地址 Needinvoice int32 `json:"needinvoice" xorm:"'NEEDINVOICE'"` // 是否需要发票 - 0:不需要 1:需要 Bankid string `json:"bankid" xorm:"'BANKID'"` // 银行编码 Attachment1 string `json:"attachment1" xorm:"'ATTACHMENT1'"` // 附件1 Attachment2 string `json:"attachment2" xorm:"'ATTACHMENT2'"` // 附件2 Bankaccountname string `json:"bankaccountname" xorm:"'BANKACCOUNTNAME'"` // 收款人名称 Headurl string `json:"headurl" xorm:"'HEADURL'"` // 头像地址 Nickname string `json:"nickname" xorm:"'NICKNAME'"` // 昵称:默认为名称脱敏(张**) 或 手机号脱敏(139****9999) Mobile2 string `json:"mobile2" xorm:"'MOBILE2'"` // 手机号码[明文-尚志] Province string `json:"province" xorm:"'PROVINCE'"` // 省 City string `json:"city" xorm:"'CITY'"` // 市 District string `json:"district" xorm:"'DISTRICT'"` // 地区 Bankbankname string `json:"bankbankname" xorm:"'BANKBANKNAME'"` // 银行名称(bankid关联查询的name) } // TableName is USERINFO func (Userinfo) TableName() string { return "USERINFO" } // Quoter 报价商表 type Quoter struct { Quoterid int64 `json:"quoterid" xorm:"'QUOTERID'" binding:"required"` // 报价商ID(自增ID) Quotername string `json:"quotername" xorm:"'QUOTERNAME'" binding:"required"` // 报价商名称 Areauserid int64 `json:"areauserid" xorm:"'AREAUSERID'" binding:"required"` // 所属机构ID Tradeproperty int32 `json:"tradeproperty" xorm:"'TRADEPROPERTY'"` // 交易属性 Defaultmakerid int64 `json:"defaultmakerid" xorm:"'DEFAULTMAKERID'"` // 默认做市商ID(UserID) Quoterstatus int32 `json:"quoterstatus" xorm:"'QUOTERSTATUS'"` // 报价商状态 - 1:正常 2:注销 Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人 Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 Matchmode int32 `json:"matchmode" xorm:"'MATCHMODE'"` // 对手模式: 1-经纪会员自接 2:按对手关系[收益权用] } // TableName is QUOTER func (Quoter) TableName() string { return "QUOTER" } // Arearole 机构角色表 type Arearole struct { Userid int64 `json:"userid" xorm:"USERID" binding:"required"` // 机构用户ID其他做市关系,都设置为 1 Roletype int32 `json:"roletype" xorm:"ROLETYPE" binding:"required"` // 角色类型 - 1:交易所 2:运营机构 3:营销中心 4:仓库机构 5:三方服务机构 6:自营会员 7:经纪会员 8:做市会员 9:产业会员 10:金融机构 11:商城店铺 12:子机构 13:报价商 14:积分服务商 15:供货商 16:圈内会员 17:物流机构 18:报价配置机构 19:场外期权做市商 20:组织机构 21:顶级机构 22:业务员 23:跟单员 24:交易员 25:客户 98:代理 99:门店 Tradeaccountid int64 `json:"tradeaccountid" xorm:"TRADEACCOUNTID"` // 默认交易资金账号ID(做市会员被动接单使用、商城店铺默认资金账 号、圈内会员默认资金账号) - 作废, 使用UserReckonAccount Createtime time.Time `json:"-" xorm:"CREATETIME"` // 创建时间 Creatorid int64 `json:"-" xorm:"CREATORID"` // 创建人ID Modifytime time.Time `json:"-" xorm:"MODIFYTIME"` // 修改时间 Modifierid int64 `json:"-" xorm:"MODIFIERID"` // 修改人ID Shoppassword string `json:"shoppassword" xorm:"SHOPPASSWORD"` // 商城店铺登陆密码(商城店铺角色使用) Isreturnscore int32 `json:"isreturnscore" xorm:"ISRETURNSCORE"` // 是否返还积分 [经纪会员-辽东湾] - 0:不返还 1:返还 Transurl string `json:"transurl" xorm:"TRANSURL"` // 物流地址(物流机构) Outuserid string `json:"outuserid" xorm:"OUTUSERID"` // 外部账户[场外期权做市商] Parentuserid int64 `json:"parentuserid" xorm:"PARENTUSERID"` // 上级组织机构(组织机构) Rootuserid int64 `json:"rootuserid" xorm:"ROOTUSERID"` // 顶级组织机构用户ID(组织机构) Sublevelpath string `json:"sublevelpath" xorm:"SUBLEVELPATH"` // 组织机构层级路径(逗号分隔,首尾加逗号) Orgtype int32 `json:"orgtype" xorm:"ORGTYPE"` // 组织机构类型 1:机构\分支节点 2:交易员\叶子节点 3:部门\分支节点 Fromuserid int64 `json:"fromuserid" xorm:"FROMUSERID"` // 所属机构(组织机构)( OrgType = 1时为自己, = 2\3时取上级机构的所属机构) Suborgtype int32 `json:"suborgtype" xorm:"SUBORGTYPE"` // 子机构类型(千海金) - 0:机构 1:代理 2:门店 } // TableName is AREAROLE func (Arearole) TableName() string { return "AREAROLE" } // 获取目标账号的相关角色信息 func (r *Arearole) GetAreaRolesByUserID(UserID int) ([]Arearole, error) { areaRoles := make([]Arearole, 0) if err := db.GetEngine().Where("USERID = ?", UserID).Find(&areaRoles); err != nil { return nil, err } return areaRoles, nil } // 获取目标账号的相关角色信息 func (r *Arearole) GetAreaRoles(UserID int, RoleType int) ([]Arearole, error) { areaRoles := make([]Arearole, 0) session := db.GetEngine().Where("USERID = ?", UserID) if RoleType > 0 { session = session.And("ROLETYPE = ?", RoleType) } if err := session.Find(&areaRoles); err != nil { return nil, err } return areaRoles, nil } // Taaccountlog 资金账户记账流水表 - 导历史 type Taaccountlog struct { Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 流水ID(220+Unix秒时间戳(10位)+xxxxxx) Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账户ID Relationorderid string `json:"relationorderid" xorm:"'RELATIONORDERID'"` // 关联单号 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Goodsid int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 币种ID Amount float64 `json:"amount" xorm:"'AMOUNT'" binding:"required"` // 资金金额 Amountadjusttype int32 `json:"amountadjusttype" xorm:"'AMOUNTADJUSTTYPE'" binding:"required"` // 资金调整类型(默认值为0) - 0:系统 1:单边账调整 2:人工调整 Balance float64 `json:"balance" xorm:"'BALANCE'" binding:"required"` // 期初余额 Currentbalance float64 `json:"currentbalance" xorm:"'CURRENTBALANCE'" binding:"required"` // 期末余额(变动后金额) Createtime time.Time `json:"createtime" xorm:"'CREATETIME'" binding:"required"` // 发生时间 Operatetype int32 `json:"operatetype" xorm:"'OPERATETYPE'" binding:"required"` // 资金操作类型 (AccountFundCmdOp)- 101:入金 102:入金手续费 103:出金 104:出金冻结 105:出金解冻 106:出金手续费 107:出金手续费冻结 108:出金手续费解冻 201:交易冻结 202:交易解冻 203:交易占用 204:交易解占用 205:交易手续费冻结 206:交易手续费解冻 207:交易手续费 208:交易货款 209:交易盈亏 301:交割冻结 302:交割解冻 303:交割手续费 304:交割手续费冻结 305:交割手续费解冻 306:交割货款 307:交割税款 401:结算盈亏 402:结算递延费 403:分润收入 404:延期分润 501:授信增加 502:授信减少 503:转积分 504:转入 505:转出 506:转出冻结 507:转出解冻 601:履约金额冻结 602:履约最大冻结 603:履约金额解冻 604:履约扣款 605:履约收款 606:履约违约手续费 607:履约违约收入 608:履约最大扣款 701:供应链金融冻结 702:供应链金融解冻 703:供应链金融最大冻结 704:供应链金融利息 705:供应链金融货款 706:供应链金融押金 707:供应链金融最大扣款 801:仓单贸易冻结 802:仓单贸易解冻 803:仓单贸易首付款 804:仓单贸易最大扣款 901:商城扣款冻结 902:商城扣款解冻 903:商城扣款 904:商城收款 1001:期权冻结 1002:期权解冻 1003:期权权力金 1004:期权手续费冻结 1005:期权手续费解冻 1006:期权手续费 1007:期权盈亏 1101:营销扣款 1102:营销收款 Moneyticket int64 `json:"moneyticket" xorm:"'MONEYTICKET'"` // 资金流水号:银行端流水号 Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Businesscode int32 `json:"businesscode" xorm:"'BUSINESSCODE'"` // 业务编号 } // TableName is TAACCOUNTLOG func (Taaccountlog) TableName() string { return "TAACCOUNTLOG" } // Histaaccountlog 历史资金账户记账流水表 type Histaaccountlog struct { Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 流水ID(220+Unix秒时间戳(10位)+xxxxxx) Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账户ID Relationorderid string `json:"relationorderid" xorm:"'RELATIONORDERID'"` // 关联单号 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Goodsid int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 币种ID Amount float64 `json:"amount" xorm:"'AMOUNT'" binding:"required"` // 资金金额 Amountadjusttype int32 `json:"amountadjusttype" xorm:"'AMOUNTADJUSTTYPE'" binding:"required"` // 资金调整类型(默认值为0) - 0:系统 1:单边账调整 2:人工调整 Balance float64 `json:"balance" xorm:"'BALANCE'" binding:"required"` // 期初余额 Currentbalance float64 `json:"currentbalance" xorm:"'CURRENTBALANCE'" binding:"required"` // 期末余额(变动后金额) Createtime time.Time `json:"createtime" xorm:"'CREATETIME'" binding:"required"` // 发生时间 Operatetype int32 `json:"operatetype" xorm:"'OPERATETYPE'" binding:"required"` // 资金操作类型 (AccountFundCmdOp)- 101:入金 102:入金手续费 103:出金 104:出金冻结 105:出金解冻 106:出金手续费 107:出金手续费冻结 108:出金手续费解冻 201:交易冻结 202:交易解冻 203:交易占用 204:交易解占用 205:交易手续费冻结 206:交易手续费解冻 207:交易手续费 208:交易货款 209:交易盈亏 301:交割冻结 302:交割解冻 303:交割手续费 304:交割手续费冻结 305:交割手续费解冻 306:交割货款 307:交割税款 401:结算盈亏 402:结算递延费 403:分润收入 404:延期分润 501:授信增加 502:授信减少 503:转积分 504:转入 505:转出 506:转出冻结 507:转出解冻 601:履约金额冻结 602:履约最大冻结 603:履约金额解冻 604:履约扣款 605:履约收款 606:履约违约手续费 607:履约违约收入 608:履约最大扣款 701:供应链金融冻结 702:供应链金融解冻 703:供应链金融最大冻结 704:供应链金融利息 705:供应链金融货款 706:供应链金融押金 707:供应链金融最大扣款 801:仓单贸易冻结 802:仓单贸易解冻 803:仓单贸易首付款 804:仓单贸易最大扣款 901:商城扣款冻结 902:商城扣款解冻 903:商城扣款 904:商城收款 1001:期权冻结 1002:期权解冻 1003:期权权力金 1004:期权手续费冻结 1005:期权手续费解冻 1006:期权手续费 1007:期权盈亏 1101:营销扣款 1102:营销收款 Moneyticket int64 `json:"moneyticket" xorm:"'MONEYTICKET'"` // 资金流水号:银行端流水号 Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Businesscode int32 `json:"businesscode" xorm:"'BUSINESSCODE'"` // 业务编号 Histradedate string `json:"histradedate" xorm:"'HISTRADEDATE'" binding:"required"` // 历史交易日 Isvaliddata int32 `json:"isvaliddata" xorm:"'ISVALIDDATA'"` // 是否有效 - 0:无效 1:有效 } // TableName is HIS_TAACCOUNTLOG func (Histaaccountlog) TableName() string { return "HIS_TAACCOUNTLOG" } // Userfavoritegoods 用户商品收藏表 type Userfavoritegoods struct { Userid int64 `json:"-" xorm:"'USERID'" binding:"required"` // 用户 Goodsid int64 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID Marketid int32 `json:"-" xorm:"'MARKETID'"` // 市场ID Modifytime time.Time `json:"-" xorm:"'MODIFYTIME'"` // 修改时间 } // TableName is USERFAVORITEGOODS func (Userfavoritegoods) TableName() string { return "USERFAVORITEGOODS" } // Messageboard 留言簿表 type Messageboard struct { Messageboardid int64 `json:"messageboardid" xorm:"'MESSAGEBOARDID'" binding:"required"` // 留言簿ID(SEQ_MessageBoard) Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID Message string `json:"message" xorm:"'MESSAGE'"` // 留言信息 Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间 Contactnum string `json:"contactnum" xorm:"'CONTACTNUM'"` // 联系电话 } // TableName is MESSAGEBOARD func (Messageboard) TableName() string { return "MESSAGEBOARD" } // Wskhuserinfo 网上开户用户表 (开户成功删除记录) type Wskhuserinfo struct { Userid int64 `json:"userid" xorm:"USERID" binding:"required"` // 用户ID(自增ID)SEQ_WSKH_USERINFO Username string `json:"username" xorm:"USERNAME"` // 用户姓名 Sex int32 `json:"sex" xorm:"SEX"` // 性别 - 0:女 1:男 Cardtype int32 `json:"cardtype" xorm:"CARDTYPE"` // 证件类型 Cardnum string `json:"cardnum" xorm:"CARDNUM"` // 证件号码 (加密存储) Cardaddress string `json:"cardaddress" xorm:"CARDADDRESS"` // 证件地址 (加密存储) Mobilephone string `json:"mobilephone" xorm:"MOBILEPHONE"` // 手机号码 (加密存储) Wechat string `json:"wechat" xorm:"WECHAT"` // 微信号 (加密存储) Email string `json:"email" xorm:"EMAIL"` // Email地址(加密存储) Ipaddress string `json:"ipaddress" xorm:"IPADDRESS"` // IP地址 Halfbodyphotourl string `json:"halfbodyphotourl" xorm:"HALFBODYPHOTOURL"` // 半身照地址 Cardfrontphotourl string `json:"cardfrontphotourl" xorm:"CARDFRONTPHOTOURL"` // 正面证件照地址 Cardbackphotourl string `json:"cardbackphotourl" xorm:"CARDBACKPHOTOURL"` // 背面证件照地址 Bankid string `json:"bankid" xorm:"BANKID"` // 银行编码 Bankname string `json:"bankname" xorm:"BANKNAME"` // 银行名称 Bankaccount string `json:"bankaccount" xorm:"BANKACCOUNT"` // 银行帐号 (加密存储) Bankcardfrontphotourl string `json:"bankcardfrontphotourl" xorm:"BANKCARDFRONTPHOTOURL"` // 银行卡正面照地址 Bankcardbackphotourl string `json:"bankcardbackphotourl" xorm:"BANKCARDBACKPHOTOURL"` // 银行卡背面照地址 Areacode string `json:"areacode" xorm:"AREACODE"` // 机构代码 Areaid int64 `json:"areaid" xorm:"AREAID"` // 机构Id Memberareaid int64 `json:"memberareaid" xorm:"MEMBERAREAID"` // 所属会员ID Brokerid string `json:"brokerid" xorm:"BROKERID"` // 经纪人ID(加密存储) Accountid int64 `json:"accountid" xorm:"ACCOUNTID"` // 交易系统帐号Id (加密存储) Logincode string `json:"logincode" xorm:"LOGINCODE"` // 登录帐号 (加密存储) Openmode int32 `json:"openmode" xorm:"OPENMODE"` // 开户方式 - 1:管理端开户 2:网上开户注册(会员官网-手机号) 3:微信开户 4:网页交易端注册 5:安卓手机端注册 6:苹果手机端注册 7:PC交易端注册 8:微信快速开户 9:支付宝快速开户 10:手机号快速开户 11:网上开户注册(会员官网-微信认证) 12:网上开户注册(会员官网-支付宝认证) Userstate int32 `json:"userstate" xorm:"USERSTATE"` // 开户状态 - 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过 Remark string `json:"remark" xorm:"REMARK"` // 备注 Isvalidate string `json:"isvalidate" xorm:"ISVALIDATE"` // 是否有效 (删除后标记为失效) - 0:无效 1:有效 Createtime time.Time `json:"createtime" xorm:"CREATETIME"` // 开户申请时间 Modifiedtime time.Time `json:"modifiedtime" xorm:"MODIFIEDTIME"` // 修改时间 Modifiedby int64 `json:"modifiedby" xorm:"MODIFIEDBY"` // 修改人帐号 Removebeforestatus int32 `json:"removebeforestatus" xorm:"REMOVEBEFORESTATUS"` // REMOVEBEFORESTATUS Cusbankid string `json:"cusbankid" xorm:"CUSBANKID"` // 签约类型 Cusbankname string `json:"cusbankname" xorm:"CUSBANKNAME"` // 签约类型名称 Signpdfurl string `json:"signpdfurl" xorm:"SIGNPDFURL"` // 签约pdf文件 Referral string `json:"referral" xorm:"REFERRAL"` // 推荐人编码 Subbranch string `json:"subbranch" xorm:"SUBBRANCH"` // 开户支行 Bankpictureurl string `json:"bankpictureurl" xorm:"BANKPICTUREURL"` // 银行卡正面地址 Auditime time.Time `json:"auditime" xorm:"AUDITIME"` // 审核时间 Auditedby time.Time `json:"auditedby" xorm:"AUDITEDBY"` // 审核人 Videourl string `json:"videourl" xorm:"VIDEOURL"` // 视频地址 Signedstatus int32 `json:"signedstatus" xorm:"SIGNEDSTATUS"` // 账户一号签签约状态 Userinfotype int32 `json:"userinfotype" xorm:"USERINFOTYPE"` // 用户信息类型 - 1:个人 2:企业 Customername string `json:"customername" xorm:"CUSTOMERNAME"` // 客户名称(企业名称) Biznature int32 `json:"biznature" xorm:"BIZNATURE"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它 Bizscope string `json:"bizscope" xorm:"BIZSCOPE"` // 企业经营范围(企业) Legalpersonname string `json:"legalpersonname" xorm:"LEGALPERSONNAME"` // 法人姓名(企业) Contactname string `json:"contactname" xorm:"CONTACTNAME"` // 联系人 Countryid int32 `json:"countryid" xorm:"COUNTRYID"` // 国家 Provinceid int32 `json:"provinceid" xorm:"PROVINCEID"` // 省 Cityid int32 `json:"cityid" xorm:"CITYID"` // 市 Districtid int32 `json:"districtid" xorm:"DISTRICTID"` // 地区 Postalcode string `json:"postalcode" xorm:"POSTALCODE"` // 邮政编码 Company string `json:"company" xorm:"COMPANY"` // 公司(个人) Legalcardfrontphotourl string `json:"legalcardfrontphotourl" xorm:"LEGALCARDFRONTPHOTOURL"` // 法人身份证正面照地址 Legalcardbackphotourl string `json:"legalcardbackphotourl" xorm:"LEGALCARDBACKPHOTOURL"` // 法人身份证背面照地址 Otherurl string `json:"otherurl" xorm:"OTHERURL"` // 其它图片地址[使用分号分隔] Usertype int32 `json:"usertype" xorm:"USERTYPE"` // 用户类型 - 1:投资者 2:机构 Qq string `json:"qq" xorm:"QQ"` // QQ(加密存储 Telphone string `json:"telphone" xorm:"TELPHONE"` // 联系电话(加密存储) Attachment1 string `json:"attachment1" xorm:"ATTACHMENT1"` // 附件1 Attachment2 string `json:"attachment2" xorm:"ATTACHMENT2"` // 附件2 Bankaccountname string `json:"bankaccountname" xorm:"BANKACCOUNTNAME"` // 收款人名称 Nickname string `json:"nickname" xorm:"NICKNAME"` // 昵称:默认为手机号脱敏(139****9999) 或 名称脱敏(张**) Headurl string `json:"headurl" xorm:"HEADURL"` // 头像地址 Mobile2 string `json:"mobile2" xorm:"MOBILE2"` // 手机号码[明文-尚志] Biztype int32 `json:"biztype" xorm:"BIZTYPE"` // 企业类型 - 1:进口/生产 2:销售 3:零售 4:运输 5:仓储 Proxystatementurl string `json:"proxystatementurl" xorm:"PROXYSTATEMENTURL"` // 授权委托书 Contactcardfrontphotourl string `json:"contactcardfrontphotourl" xorm:"CONTACTCARDFRONTPHOTOURL"` // 联系人证件正面图片地址 Contactcardbackphotourl string `json:"contactcardbackphotourl" xorm:"CONTACTCARDBACKPHOTOURL"` // 联系人证件背面图片地址 Attachment3 string `json:"attachment3" xorm:"ATTACHMENT3"` // 附件3 Attachment4 string `json:"attachment4" xorm:"ATTACHMENT4"` // 附件4 Attachment5 string `json:"attachment5" xorm:"ATTACHMENT5"` // 附件5 Auditsrc int32 `json:"auditsrc" xorm:"AUDITSRC"` // 审核来源 - 1:管理端 2:终端 Taxpayernum string `json:"taxpayernum" xorm:"TAXPAYERNUM"` // 纳税人识别号 } // TableName is WSKH_USERINFO func (Wskhuserinfo) TableName() string { return "WSKH_USERINFO" } // Systemmanager 系统管理员表 type Systemmanager struct { Autoid int32 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 自增ID Reletype int32 `json:"reletype" xorm:"'RELETYPE'"` // 用户类型 - 1- 交易所管理员 2- 机构管理员 3-子机构管理员 Logincode string `json:"logincode" xorm:"'LOGINCODE'"` // 用户登录账号,唯一索引 Username string `json:"username" xorm:"'USERNAME'"` // 用户姓名 Password string `json:"password" xorm:"'PASSWORD'"` // 加密方式采用 用户名+密码 ,采用 SHA 算法 Areauserid int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构ID Pwdexpdate time.Time `json:"pwdexpdate" xorm:"'PWDEXPDATE'"` // 密码失效日期 Managerstatus int32 `json:"managerstatus" xorm:"'MANAGERSTATUS'"` // 用户状态: 1启用 2停用 3锁定(密码错误时锁定) Loginstatus int32 `json:"loginstatus" xorm:"'LOGINSTATUS'"` // 登录状态:1未登录 2已登录 Isdefault int32 `json:"isdefault" xorm:"'ISDEFAULT'"` // 是否默认管理员 - 0:不是默认 1:默认管理员 Logintime time.Time `json:"logintime" xorm:"'LOGINTIME'"` // 登录时间 Loginip string `json:"loginip" xorm:"'LOGINIP'"` // 登录IP Loginport int64 `json:"loginport" xorm:"'LOGINPORT'"` // 登录端口 Loginfailnum int64 `json:"loginfailnum" xorm:"'LOGINFAILNUM'"` // 登录失败次数 Uploginid int64 `json:"uploginid" xorm:"'UPLOGINID'"` // 修改人ID Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Onymac int32 `json:"onymac" xorm:"'ONYMAC'"` // 是否启用MAC地址 - 0:否 1:是 Managertype int32 `json:"managertype" xorm:"'MANAGERTYPE'"` // 账号类型 - 1:管理员 2:交易员 } // TableName is SYSTEMMANAGER func (Systemmanager) TableName() string { return "SYSTEMMANAGER" } // GetLoginAccount 获取登录账户信息 func GetLoginAccount(loginID int) (*Loginaccount, error) { var loginaccount Loginaccount // var loginaccount Loginaccount has, err := db.GetEngine().Where("LOGINID = ?", loginID).Get(&loginaccount) if err != nil { return nil, err } if !has { return nil, nil } return &loginaccount, nil } // GetLoginAccountByLoginCode 通过登录代码查询登录账号信息 func GetLoginAccountByLoginCode(loginCode string) (*Loginaccount, error) { engine := db.GetEngine() // 如果要使用 *Loginaccount, 则应初始化后再使用 // var loginaccount *Loginaccount loginaccount := &Loginaccount{} // var loginaccount Loginaccount has, err := engine.Where("LOGINCODE = ?", loginCode).Get(loginaccount) if err != nil { return nil, err } if has { return loginaccount, nil } return nil, nil } // GetLoginAccountByMobile2 通过手机号码查询登录账号信息(三方认证表 userauthinfo) func GetLoginAccountByMobile2(mobile string) (*Loginaccount, error) { engine := db.GetEngine() var loginaccount Loginaccount var has bool // 手机号码需要AES加密 key, _ := hex.DecodeString(utils.AESSecretKey) if mobileEncrypted, err := utils.AESEncrypt([]byte(mobile), key); err == nil { // 加密成功后进行查询 has, err = engine.Join("INNER", "USERAUTHINFO", "USERAUTHINFO.LOGINID = LOGINACCOUNT.LOGINID"). Where("USERAUTHINFO.AUTHID = ?", hex.EncodeToString(mobileEncrypted)).Get(&loginaccount) if err != nil { return nil, err } } if has { return &loginaccount, nil } return nil, nil } // GetLoginAccountByMobile 通过手机号码查询登录账号信息 func GetLoginAccountByMobile(mobile string) (*Loginaccount, error) { engine := db.GetEngine() var loginaccount Loginaccount var has bool // 手机号码需要AES加密 key, _ := hex.DecodeString(utils.AESSecretKey) if mobileEncrypted, err := utils.AESEncrypt([]byte(mobile), key); err == nil { // 加密成功后进行查询 has, err = engine.Join("INNER", "USERINFO", "USERINFO.USERID = LOGINACCOUNT.USERID"). Where("USERINFO.USERSTATUS = 1 and USERINFO.MOBILE = ?", hex.EncodeToString(mobileEncrypted)).Get(&loginaccount) if err != nil { return nil, err } } if has { return &loginaccount, nil } return nil, nil } // GetLoginAccountByMobile 通过手机号码查询登录账号信息 func GetLoginAccount2(mobile string) (*Loginaccount, error) { engine := db.GetEngine() var loginaccount Loginaccount var has bool // 手机号码需要AES加密 key, _ := hex.DecodeString(utils.AESSecretKey) if mobileEncrypted, err := utils.AESEncrypt([]byte(mobile), key); err == nil { // 加密成功后进行查询 has, err = engine.Where("LOGINSTATUS = 1 and MOBILE = ?", hex.EncodeToString(mobileEncrypted)).Get(&loginaccount) if err != nil { return nil, err } } if has { return &loginaccount, nil } return nil, nil } // GetUserAccount 获取用户账户信息 func GetUserAccount(userID int) (*Useraccount, error) { engine := db.GetEngine() var userAccount Useraccount has, err := engine.Where("USERID = ?", userID).Get(&userAccount) if err != nil { // 查询失败 return nil, err } if !has { return nil, nil } // 统计今日推荐人数 type tmp struct { TodayRefercount int `xorm:"TODAYREFERCOUNT"` } t := new(tmp) sql := fmt.Sprintf("select count(t.userid) TODAYREFERCOUNT from useraccount t where to_char(t.createtime, 'yyyymmdd') = to_char(sysdate, 'yyyymmdd') and t.REFEREEUSERID = %v", userAccount.Userid) if _, err := engine.SQL(sql).Get(t); err != nil { return nil, err } userAccount.TodayRefercount = t.TodayRefercount // 当前积分 type tmp1 struct { CURSCORE int64 `json:"curscore" xorm:"CURSCORE"` // 期末积分 } t1 := new(tmp1) sql = fmt.Sprintf("select t.CURSCORE from THJ_USERSCORE t where t.USERID = %v", userAccount.Userid) if _, err := engine.SQL(sql).Get(t1); err != nil { return nil, err } userAccount.CURSCORE = t1.CURSCORE // 今日是否已签到 p := new(Thjsignin) userAccount.IsSigned, _ = engine.Where("userid = ?", userAccount.Userid).And("tradedate = to_char(sysdate, 'yyyymmdd')").Get(p) // 所属会员Line客服账号 var p1 Useraccount _, err = engine.Where("USERID = ?", userAccount.Memberuserid).Get(&p1) if err == nil { // 查询到有所属会员 userAccount.MemberLineCSAccount = p1.LineCSAccount } return &userAccount, nil } // GetUserInfo 获取用户信息 func GetUserInfo(userID int) (*Userinfo, error) { engine := db.GetEngine() var userInfo Userinfo userinfos := make([]Userinfo, 0) err := engine.Table("USERINFO U"). Select(` U.*, D1.DIVISIONNAME PROVINCE, D2.DIVISIONNAME CITY, D3.DIVISIONNAME DISTRICT, BB.BANKNAME BANKBANKNAME `). Join("LEFT", "DIVISION D1", "D1.AUTOID = U.PROVINCEID"). Join("LEFT", "DIVISION D2", "D2.AUTOID = U.CITYID"). Join("LEFT", "DIVISION D3", "D3.AUTOID = U.DISTRICTID"). Join("LEFT", "BANK_BANKINFO BB", "BB.BANKID = U.BANKID"). Where("u.USERID = ?", userID).Find(&userinfos) if err != nil { // 查询失败 return nil, err } if len(userinfos) > 0 { userInfo = userinfos[0] } else { return nil, errors.New("无目标用户信息") } // 解密手机号码 key, _ := hex.DecodeString(utils.AESSecretKey) if len(userInfo.Mobile) > 0 { if s1, err := hex.DecodeString(userInfo.Mobile); err == nil { // hex -> []byte if s2, err := utils.AESDecrypt(s1, key); err == nil { // FIXME: - 临时操作 - 解决导入数据手机号码被加密两次的问题 if h, err := hex.DecodeString(string(s2)); err == nil { if s3, err := utils.AESDecrypt(h, key); err == nil { userInfo.Mobile2 = string(s3) } else { userInfo.Mobile2 = string(s2) } } else { userInfo.Mobile2 = string(s2) } } } } return &userInfo, nil } // GetUserInfoByLoginID 通过登录账号获取用户信息的方法 func GetUserInfoByLoginID(loginID int) (*Userinfo, error) { engine := db.GetEngine() var userInfo Userinfo _, err := engine.Table("USERINFO U").Join("INNER", "LOGINACCOUNT L", "L.USERID = U.USERID").Where("L.LOGINID = ?", loginID).Get(&userInfo) if err != nil { // 查询失败 return nil, err } return &userInfo, nil } // GetUserInfoByIdCardNo 通过身份证(加密后)获取用户信息的方法 func GetUserInfoByIdCardNo(idCardNo string) ([]Userinfo, error) { engine := db.GetEngine() infos := make([]Userinfo, 0) err := engine.Where("CARDNUM", idCardNo).In("USERSTATUS", []int64{1, 3}).Find(&infos) return infos, err } // GetUserInfoByMobile 通过手机号码(加密后)获取用户信息的方法 func GetUserInfoByMobile(mobile string) ([]Userinfo, error) { engine := db.GetEngine() infos := make([]Userinfo, 0) err := engine.Where("MOBILE", mobile).In("USERSTATUS", []int64{1, 3}).Find(&infos) return infos, err } // GetUserInfoByIDS 批量获取用户信息. func GetUserInfoByIDS(userids []int64) ([]Userinfo, error) { engine := db.GetEngine() infos := make([]Userinfo, 0) err := engine.In("USERID", userids).Find(&infos) return infos, err } // GetUserAccountByAccountID 通过资金账户获取账户信息 func GetUserAccountByAccountID(accountID int) (*Useraccount, error) { engine := db.GetEngine() infos := make([]Useraccount, 0) if err := engine.Table("USERACCOUNT U"). Join("INNER", "TAACCOUNT TA", "TA.RELATEDUSERID = U.USERID"). Where("TA.ACCOUNTID = ?", accountID).Find(&infos); err != nil { return nil, err } if len(infos) > 0 { return &infos[0], nil } return nil, nil } // GetUserInfoByAccountID 通过资金账户获取用户信息 func GetUserInfoByAccountID(accountID int) (*Userinfo, error) { engine := db.GetEngine() infos := make([]Userinfo, 0) if err := engine.Table("USERINFO U"). Join("INNER", "TAACCOUNT TA", "TA.RELATEDUSERID = U.USERID"). Where("TA.ACCOUNTID = ?", accountID).Find(&infos); err != nil { return nil, err } if len(infos) > 0 { return &infos[0], nil } return nil, nil } // GetUserFavoriteGoodses 获取用户商品收藏信息 func GetUserFavoriteGoodses(userID int) ([]Userfavoritegoods, error) { engine := db.GetEngine() favoriteGoodses := make([]Userfavoritegoods, 0) if err := engine.Where("USERID = ?", userID).Find(&favoriteGoodses); err != nil { return nil, err } return favoriteGoodses, nil } // InsertUserFavoriteGoods 新增用户商品收藏信息 func InsertUserFavoriteGoods(userID int, goodsID int) error { engine := db.GetEngine() userfavoritegoods := &Userfavoritegoods{ Userid: int64(userID), Goodsid: int64(goodsID), } has, err := engine.Get(userfavoritegoods) if err != nil { return err } if !has { // 不存在时则插入一条新记录 // userfavoritegoods.Modifytime = time.Now() if _, err := engine.Insert(userfavoritegoods); err != nil { return err } } return nil } // DelUserFavoriteGoods 删除用户商品收藏信息 func DelUserFavoriteGoods(userID int, goodsID int) error { engine := db.GetEngine() userfavoritegoods := &Userfavoritegoods{ Userid: int64(userID), Goodsid: int64(goodsID), } if _, err := engine.Delete(userfavoritegoods); err != nil { return err } return nil } // GetMessageBoard 获取用户留言板信息 func GetMessageBoard(userID int) ([]Messageboard, error) { engine := db.GetEngine() messageBoards := make([]Messageboard, 0) if err := engine.Where("USERID = ?", userID).Desc("CREATETIME").Find(&messageBoards); err != nil { return nil, err } return messageBoards, nil } // InsertMessageBoard 新增用户留言板信息 func InsertMessageBoard(userID int, message, contactNum string) int { engine := db.GetEngine() // 一天最多只能新增3条留言 messageBoard := new(Messageboard) total, err := engine.Where("USERID = ? and (CREATETIME >=TRUNC(SYSDATE) and CREATETIME < TRUNC(SYSDATE)+1)", userID).Count(messageBoard) if err != nil { return e.ERROR_OPERATION_FAILED } if total >= 3 { return e.ERROR_ADD_MAX_3 } // 由于XORM对ORACLE支持不行,有时间字段更新的直接使用SQL语句执行 sql := fmt.Sprintf("insert into MESSAGEBOARD (MESSAGEBOARDID, USERID, MESSAGE, CONTACTNUM ,CREATETIME) values (SEQ_MessageBoard.nextval, %d, '%s', '%s', (select sysdate from dual))", userID, message, contactNum) if _, err := engine.Exec(sql); err != nil { return e.ERROR_OPERATION_FAILED } return 0 } // GetUsersByUserType 获取批量指定类型的用户信息 // 输入 userType int 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 func GetUsersByUserType(userType int) ([]Userinfo, error) { engine := db.GetEngine() userInfos := make([]Userinfo, 0) if err := engine.Where("USERTYPE = ?", userType).Find(&userInfos); err != nil { return nil, err } return userInfos, nil } // GetTaAccountsByType 获取指定用户的资金账户列表 // 输入 userID int 关联用户ID // 输入 taAccountType int 账号类型 - 1:外部账号 2:内部账号 3:内部做市自营账号 4:内部做市接单账号 func GetTaAccountsByType(userID, taAccountType int) ([]Taaccount, error) { engine := db.GetEngine() taAccounts := make([]Taaccount, 0) session := engine.Where("TRADESTATUS <> 7 and RELATEDUSERID = ?", userID) if taAccountType != 0 { session = session.And("TAACCOUNTTYPE = ?", taAccountType) } if err := session.Find(&taAccounts); err != nil { return nil, err } return taAccounts, nil } // GetTaAccountsByLoginID 通过登录账号获取对应资金账户列表的方法,一般用于获取自己的资金账号时使用 // 输入 loginID int 登录账号 // 输入 taAccountType int 账号类型 - 1:外部账号 2:内部账号 3:内部做市自营账号 4:内部做市接单账号 func GetTaAccountsByLoginID(loginID, taAccountType int) ([]Taaccount, error) { engine := db.GetEngine() taAccounts := make([]Taaccount, 0) // 注意:获取自身的资金账号列表,先要从LoginTAAccount表中判断是否有关联关系,如没配置关系则直接从TaAccount表中获取 loginTaAccounts := make([]Logintaaccount, 0) if err := engine.Where("LOGINID = ?", loginID).Find(&loginTaAccounts); err != nil { return nil, err } if len(loginTaAccounts) > 0 { // 获取资金账号ID列表 accountIDs := "" for _, v := range loginTaAccounts { if len(accountIDs) == 0 { accountIDs = strconv.Itoa(int(v.Accountid)) } else { accountIDs += "," + strconv.Itoa(int(v.Accountid)) } } // 获取资金账号列表 session := engine.Where(fmt.Sprintf("TRADESTATUS <> 7 and ACCOUNTID in (%s)", accountIDs)) if taAccountType != 0 { session = session.And("TAACCOUNTTYPE = ?", taAccountType) } if err := session.Find(&taAccounts); err != nil { return nil, err } } else { // 获取登录账户信息 loginAccount, err := GetLoginAccount(loginID) if err != nil { return nil, err } if loginAccount == nil { return make([]Taaccount, 0), nil } // 资金账号权限类型 - 1:不选默认为所有权限 2:不选默认为无权限 if loginAccount.Taaccountrighttype == 2 { return make([]Taaccount, 0), nil } // 直接从TaAccount表中获取 session := engine.Table("TAACCOUNT"). Join("INNER", "LOGINACCOUNT L", "L.USERID = TAACCOUNT.RELATEDUSERID and TAACCOUNT.TRADESTATUS <> 7"). Where("L.LOGINID = ?", loginID) if taAccountType != 0 { session = session.And("TAACCOUNT.TAACCOUNTTYPE = ?", taAccountType) } if err := session.Find(&taAccounts); err != nil { return nil, err } } return taAccounts, nil } // GetTaAccountByID 通过AccountID获取资金账户信息 func GetTaAccountByID(accountID int) (*Taaccount, error) { engine := db.GetEngine() var taaccount Taaccount has, err := engine.Where("TRADESTATUS <> 7 and ACCOUNTID = ?", accountID).Get(&taaccount) if err != nil { return nil, err } if !has { return nil, nil } return &taaccount, nil } // GetTaAccountByUserID 通过UserID获取资金账户信息 func GetTaAccountByUserID(userID int) (*Taaccount, error) { engine := db.GetEngine() var taaccount Taaccount has, err := engine.Where("TA.TRADESTATUS <> 7 and USERID = ?", userID).Get(&taaccount) if err != nil { return nil, err } if !has { return nil, nil } return &taaccount, nil } // InsertWSKHUserInfo 新增网上开户账户信息(客户资料申请) func InsertWSKHUserInfo(userinfo Wskhuserinfo) error { engine := db.GetEngine() // 加密数据 key, _ := hex.DecodeString(utils.AESSecretKey) // 证件号码 if len(userinfo.Cardnum) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Cardnum), key); err == nil { userinfo.Cardnum = hex.EncodeToString(encrypted) } } // 证件地址 if len(userinfo.Cardaddress) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Cardaddress), key); err == nil { userinfo.Cardaddress = hex.EncodeToString(encrypted) } } // 手机 if len(userinfo.Mobilephone) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Mobilephone), key); err == nil { userinfo.Mobilephone = hex.EncodeToString(encrypted) } } // 微信 if len(userinfo.Wechat) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Wechat), key); err == nil { userinfo.Wechat = hex.EncodeToString(encrypted) } } // 邮件 if len(userinfo.Email) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Email), key); err == nil { userinfo.Email = hex.EncodeToString(encrypted) } } // 银行帐号 if len(userinfo.Bankaccount) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Bankaccount), key); err == nil { userinfo.Bankaccount = hex.EncodeToString(encrypted) } } // 经纪人ID if len(userinfo.Brokerid) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Brokerid), key); err == nil { userinfo.Brokerid = hex.EncodeToString(encrypted) } } // 登录帐号 if len(userinfo.Logincode) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Logincode), key); err == nil { userinfo.Logincode = hex.EncodeToString(encrypted) } } // 自增ID seqMap, err := engine.QueryString("SELECT SEQ_WSKH_USERINFO.nextval USERID FROM dual") if err != nil { return err } if len(seqMap) <= 0 { return errors.New("获取自增ID错误") } userID, _ := strconv.Atoi(seqMap[0]["USERID"]) userinfo.Userid = int64(userID) // 插入数据 if _, err = engine.Insert(&userinfo); err != nil { return err } return nil } // UpdateWSKHUserInfo 修改网上开户账户信息(客户资料申请) func UpdateWSKHUserInfo(userinfo Wskhuserinfo) error { engine := db.GetEngine() // 加密数据 key, _ := hex.DecodeString(utils.AESSecretKey) // 证件号码 if len(userinfo.Cardnum) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Cardnum), key); err == nil { userinfo.Cardnum = hex.EncodeToString(encrypted) } } // 证件地址 if len(userinfo.Cardaddress) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Cardaddress), key); err == nil { userinfo.Cardaddress = hex.EncodeToString(encrypted) } } // 手机 if len(userinfo.Mobilephone) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Mobilephone), key); err == nil { userinfo.Mobilephone = hex.EncodeToString(encrypted) } } // 微信 if len(userinfo.Wechat) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Wechat), key); err == nil { userinfo.Wechat = hex.EncodeToString(encrypted) } } // 邮件 if len(userinfo.Email) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Email), key); err == nil { userinfo.Email = hex.EncodeToString(encrypted) } } // 银行帐号 if len(userinfo.Bankaccount) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Bankaccount), key); err == nil { userinfo.Bankaccount = hex.EncodeToString(encrypted) } } // 经纪人ID if len(userinfo.Brokerid) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Brokerid), key); err == nil { userinfo.Brokerid = hex.EncodeToString(encrypted) } } // 登录帐号 if len(userinfo.Logincode) > 0 { if encrypted, err := utils.AESEncrypt([]byte(userinfo.Logincode), key); err == nil { userinfo.Logincode = hex.EncodeToString(encrypted) } } // 修改数据 // 由于表的主键未定义成ID,所以这里需要用where来过滤 userID := userinfo.Userid userinfo.Userid = 0 // m := make(map[string]interface{}) // j, _ := json.Marshal(userinfo) // json.Unmarshal(j, &m) // delete(m, "USERID") if _, err := engine.Where("USERID = ?", userID).Update(&userinfo); err != nil { return err } return nil } // DeleteWSKHUserInfo 删除网上开户账户信息(客户资料申请) func DeleteWSKHUserInfo(userID int) error { if userID == 0 { return errors.New("userID为0") } sql := fmt.Sprintf("DELETE FROM WSKH_USERINFO WHERE USERSTATE = 1 AND USERID = %d", userID) if _, err := db.GetEngine().Exec(sql); err != nil { return err } return nil } // GetWSKHUserInfos 获取开户信息列表 func GetWSKHUserInfos(userName string) ([]Wskhuserinfo, error) { engine := db.GetEngine() userInfos := make([]Wskhuserinfo, 0) session := engine.Table("WSKH_USERINFO") if len(userName) > 0 { session = session.Where(fmt.Sprintf("USERNAME like '%%%s%%'", userName)) } if err := session.Find(&userInfos); err != nil { return nil, err } return userInfos, nil } // GetUserInfos 获取用户信息 // 输入 userName string 客户名称,支持模糊查询 func GetUserInfos(userName string) ([]Userinfo, error) { engine := db.GetEngine() userInfos := make([]Userinfo, 0) session := engine.Table("USERINFO") if len(userName) > 0 { session = session.Where(fmt.Sprintf("CUSTOMERNAME like '%%%s%%'", userName)) } if err := session.Find(&userInfos); err != nil { return nil, err } return userInfos, nil } // UpdateUserAccountStatus 更新用户 func UpdateUserAccountStatus(userID, accountStatus int) error { engine := db.GetEngine() if accountStatus != 4 && accountStatus != 6 { return errors.New("错误的状态值") } // 要同时改UserAccount表和UserInfo表的状态 useraccount := Useraccount{Accountstatus: int32(accountStatus)} if _, err := engine.Table("USERACCOUNT"). Where("USERID = ?", userID). Update(&useraccount); err != nil { return err } // UserInfo表的状态为1-正常;2-注销; 3-停用 userStatus := 1 if accountStatus == 6 { userStatus = 3 } userinfo := Userinfo{Userstatus: int32(userStatus)} if _, err := engine.Table("USERINFO"). Where("USERID = ?", userID). Update(&userinfo); err != nil { return err } // Loginaccount表的状态为1-正常;2-冻结(停用);3-无效(注销) loginStatus := 1 if accountStatus == 6 { loginStatus = 2 } Loginaccount := Loginaccount{Loginstatus: int32(loginStatus)} if _, err := engine.Table("LOGINACCOUNT"). Where("USERID = ?", userID). Update(&Loginaccount); err != nil { return err } return nil } // GetSysteMmanagerByLoginCode 通过LoginCode获取管理端账号 func GetSysteMmanagerByLoginCode(loginCode string) (*Systemmanager, error) { tmp := make([]Systemmanager, 0) if err := db.GetEngine().Where("LOGINCODE = ?", loginCode).Find(&tmp); err != nil { return nil, err } if len(tmp) == 0 { return nil, nil } return &tmp[0], nil } // GetHedgeOutTaAccount 母账户资金账户获取对冲外部资金账户信息 func GetHedgeOutTaAccount(accountID int) (*Hedgeouttaaccount, error) { var rst Hedgeouttaaccount has, err := db.GetEngine().Where("ACCOUNTID = ?", accountID).Get(&rst) if err != nil { return nil, err } if !has { return nil, nil } return &rst, nil } type RelatedTaAccount struct { Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户ID Relateduserid int64 `json:"-" xorm:"'RELATEDUSERID'" form:"relateduserid"` // 关联用户 } func (r *RelatedTaAccount) calc() { } func (r *RelatedTaAccount) buildSql() string { var sqlId utils.SQLVal = ` select t.accountid from taaccount t where t.RELATEDUSERID = %v ` sqlId.FormatParam(r.Relateduserid) return sqlId.String() } // GetDataEx func (r *RelatedTaAccount) GetDataEx() (interface{}, error) { sData := make([]RelatedTaAccount, 0) err := db.GetEngine().SQL(r.buildSql()).Find(&sData) for i := range sData { sData[i].calc() } return sData, err } // UpdateUserHeadUrl 更新用户头像地址 func UpdateUserHeadUrl(userID int, headurl string) error { engine := db.GetEngine() userinfo := Userinfo{Headurl: headurl} if _, err := engine.Table("USERINFO"). Where("USERID = ?", userID). Update(&userinfo); err != nil { return err } return nil } // UpdateUserInfoWechatAndEmail 更新用户微信号和邮箱地址 func UpdateUserInfoWechatAndEmail(wechat, email *string, userid int) (err error) { if wechat == nil && email == nil { return } w := "" if wechat != nil && len(*wechat) > 0 { w, err = EncryptField(*wechat) if err != nil { return } } u := "" if email != nil && len(*email) > 0 { u, err = EncryptField(*email) if err != nil { return } } sql := "UPDATE userinfo SET" if wechat != nil { sql += fmt.Sprintf(" wechat='%v'", w) } if wechat == nil && email != nil { sql += fmt.Sprintf(" email='%v'", u) } else if wechat != nil && email != nil { sql += fmt.Sprintf(" ,email='%v'", u) } sql += fmt.Sprintf(" WHERE userid=%v", userid) _, err = db.GetEngine().Exec(sql) return } // Gtwithholdsigninfo 代扣签约信息表 type Gtwithholdsigninfo struct { ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账户ID USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 用户ID ACCOUNTSIGNSTATUS int32 `json:"accountsignstatus" xorm:"ACCOUNTSIGNSTATUS"` // 账户签约状态 - 1:未签约 3:签约中 4:已签约 6:解约中 7:已解约 JFXMBH string `json:"jfxmbh" xorm:"JFXMBH"` // 缴费项目编号(变更\解约) JFHM string `json:"jfhm" xorm:"JFHM"` // 用户编号(变更\解约) KHMC string `json:"khmc" xorm:"KHMC"` // 客户名称 RWJGH string `json:"rwjgh" xorm:"RWJGH"` // 入网机构号 KHHHH string `json:"khhhh" xorm:"KHHHH"` // 开户行行号 ZHLX string `json:"zhlx" xorm:"ZHLX"` // 账户类型 KKZH string `json:"kkzh" xorm:"KKZH"` // 扣款账号 YCKFXE float64 `json:"yckfxe" xorm:"YCKFXE"` // 一次扣费限额 XYQSRQ string `json:"xyqsrq" xorm:"XYQSRQ"` // 协议签署日期(yyyy-mm-dd) XYSXRQ string `json:"xysxrq" xorm:"XYSXRQ"` // 协议生效日(yyyy-mm-dd) XYDQRQ string `json:"xydqrq" xorm:"XYDQRQ"` // 协议到期日期(yyyy-mm-dd) JFRMC string `json:"jfrmc" xorm:"JFRMC"` // 缴费人名称 JFRZJLX string `json:"jfrzjlx" xorm:"JFRZJLX"` // 缴费人证件类型 JFRZJHM string `json:"jfrzjhm" xorm:"JFRZJHM"` // 缴费人证件号码 LXDH string `json:"lxdh" xorm:"LXDH"` // 联系电话 ADDR string `json:"addr" xorm:"ADDR"` // 地址 KKSJDW string `json:"kksjdw" xorm:"KKSJDW"` // 扣款时间单位(TU00:年,TU01:月,TU002:日) KKSJBC string `json:"kksjbc" xorm:"KKSJBC"` // 扣款时间步长(无限额默认填99) KKZQNKFXE float64 `json:"kkzqnkfxe" xorm:"KKZQNKFXE"` // 扣款周期内扣费限额(无限额默认填 0) KKZQNXZBS int32 `json:"kkzqnxzbs" xorm:"KKZQNXZBS"` // 扣款周期内限制笔数(无限额默认填 0) FILEDNAME string `json:"filedname" xorm:"FILEDNAME"` // 协议附件名称(变更\解约) - 协议签约 XYDRRQ string `json:"xydrrq" xorm:"XYDRRQ"` // 协议导入时间(变更\解约) - 协议签约 DXYZM string `json:"dxyzm" xorm:"DXYZM"` // 短信验证码 - 短信签约 DXSQH string `json:"dxsqh" xorm:"DXSQH"` // 申请号 - 短信签约 REMARK string `json:"remark" xorm:"REMARK"` // 备注 CZRMC string `json:"czrmc" xorm:"CZRMC"` // 操作人名称(变更\解约) DGJFHM string `json:"dgjfhm" xorm:"DGJFHM"` // 缴费号码(变更\解约) DGJFMC string `json:"dgjfmc" xorm:"DGJFMC"` // 缴费名称(变更\解约) BYZD2 string `json:"byzd2" xorm:"BYZD2"` // 备用字段2(变更\解约) BYZD3 string `json:"byzd3" xorm:"BYZD3"` // 备用字段3(变更\解约) BYZD4 string `json:"byzd4" xorm:"BYZD4"` // 备用字段4(变更\解约) BYZD5 string `json:"byzd5" xorm:"BYZD5"` // 备用字段5(变更\解约) QYZT string `json:"qyzt" xorm:"QYZT"` // 签约状态 - 00- 签约成功 01- 签约失败 10- 解约成功 11- 解约失败 20- 变更成功 21- 变更失败 QYXYH string `json:"qyxyh" xorm:"QYXYH"` // 签约协议号 UPDATETIME time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间 } func (r *Gtwithholdsigninfo) calc() { } func (r *Gtwithholdsigninfo) buildSql() string { var sqlId utils.SQLVal = ` select t.accountid, t.userid, t.accountsignstatus, t.jfxmbh, t.jfhm, t.khmc, t.rwjgh, t.khhhh, t.zhlx, t.kkzh, t.yckfxe, t.xyqsrq, t.xysxrq, t.xydqrq, t.jfrmc, t.jfrzjlx, t.jfrzjhm, t.lxdh, t.addr, t.kksjdw, t.kksjbc, t.kkzqnkfxe, t.kkzqnxzbs, t.filedname, t.xydrrq, t.dxyzm, t.dxsqh, t.remark, t.czrmc, t.dgjfhm, t.dgjfmc, t.byzd2, t.byzd3, t.byzd4, t.byzd5, t.qyzt, t.qyxyh, t.updatetime from GT_WithholdSignInfo t where t.userid = %v order by t.updatetime desc ` sqlId.FormatParam(r.USERID) return sqlId.String() } // GetDataEx 从数据库中查询数据 func (r *Gtwithholdsigninfo) GetDataEx() (interface{}, error) { e := db.GetEngine() s := e.SQL(r.buildSql()) sData := make([]Gtwithholdsigninfo, 0) if err := s.Find(&sData); err != nil { return nil, err } for i := range sData { sData[i].calc() } return sData, nil } // Gtwithholddepositapply 代扣入金申请表 type Gtwithholddepositapply struct { AUTOID int64 `json:"autoid" xorm:"AUTOID"` // 自增ID(SEQ_GT_WITHHOLDDEPOSITAPPLY) ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账户ID USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 用户ID JFXMBH string `json:"jfxmbh" xorm:"JFXMBH"` // 缴费项目编号 TRANDATE string `json:"trandate" xorm:"TRANDATE"` // 交易日期(yyyymmdd) TRANTIME string `json:"trantime" xorm:"TRANTIME"` // 交易时间(hhmmss) DEDUCTIONBNUM string `json:"deductionbnum" xorm:"DEDUCTIONBNUM"` // 扣费批次号(缴费项目编号_YYYYMMDD_01) BILLINGSNUM string `json:"billingsnum" xorm:"BILLINGSNUM"` // 收费单位流水号(生成唯一的流水号) DGJFHM string `json:"dgjfhm" xorm:"DGJFHM"` // 缴费号码 BILLAMOUNT string `json:"billamount" xorm:"BILLAMOUNT"` // 账单金额 CZRMC string `json:"czrmc" xorm:"CZRMC"` // 操作人名称 CODE string `json:"code" xorm:"CODE"` // 状态码 0-解析成功 1-解析失败 MESSAGE string `json:"message" xorm:"MESSAGE"` // 状态码描述 CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间 BILLRESULT string `json:"billresult" xorm:"BILLRESULT" form:"billresult"` // 批扣结果 - 0-扣费成功、1-扣费失败 UPDATETIME time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间 CLIENTSERIALNO string `json:"clientserialno" xorm:"CLIENTSERIALNO"` // 客户端流水号 BILLRESULTREMARK string `json:"billresultremark" xorm:"BILLRESULTREMARK"` // 批扣结果描述 BeginDate string `json:"-" xorm:"-" form:"begindate"` // 开始交易日 EndDate string `json:"-" xorm:"-" form:"enddate"` // 结束交易日 PageEx `xorm:"extends"` // 页码信息 } func (r *Gtwithholddepositapply) calc() { } func (r *Gtwithholddepositapply) buildSql() string { var sqlId utils.SQLVal = ` select t.autoid, t.accountid, t.userid, t.jfxmbh, t.trandate, t.trantime, t.deductionbnum, t.billingsnum, t.dgjfhm, t.billamount, t.czrmc, t.code, t.message, t.createtime, t.billresult, t.updatetime, t.clientserialno, t.billresultremark from GT_WithholdDepositApply t where t.userid = %v ` sqlId.FormatParam(r.USERID) if r.BeginDate != "" && r.EndDate != "" { sqlId.JoinFormat(" AND (t.trandate >= '%v' AND t.trandate <= '%v')", r.BeginDate, r.EndDate) } sqlId.AndEx("t.billresult", r.BILLRESULT, r.BILLRESULT != "") sqlId.OrderByDesc("t.createtime") sqlId.Page(r.Page, r.PageSize) return sqlId.String() } func (r *Gtwithholddepositapply) GetDataByPage() (interface{}, error, int, int, int) { sData := make([]Gtwithholddepositapply, 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 }