| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543 |
- /**
- * @Author: zou.yingbin
- * @Create : 2021/6/1 14:14
- * @Modify : 2021/6/1 14:14
- */
- package models
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/mtpcache"
- "mtp2_if/utils"
- "strconv"
- )
- // 大连千海金
- // QhjAreaRole 角色查询
- type QhjAreaRole struct {
- FROMUSERID int64 `json:"fromuserid" xorm:"FROMUSERID"` // 所属机构(组织机构)( OrgType = 1时为自己, = 2\3时取上级机构的所属机构)
- SUBORGTYPE int32 `json:"suborgtype" xorm:"SUBORGTYPE"` // 子机构类型(千海金) - 0:机构 1:代理 2:门店
- USERID int64 `json:"userid" xorm:"USERID"` // 机构用户ID其他做市关系,都设置为 1
- ROLETYPE int32 `json:"roletype" xorm:"ROLETYPE"` // 角色类型 - 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 string `json:"createtime" xorm:"CREATETIME"` // 创建时间
- CREATORID int64 `json:"creatorid" xorm:"CREATORID"` // 创建人ID
- MODIFYTIME string `json:"modifytime" xorm:"MODIFYTIME"` // 修改时间
- MODIFIERID int64 `json:"modifierid" 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:部门\分支节点
- }
- func (r *QhjAreaRole) calc() {
- }
- func (r *QhjAreaRole) buildSql() string {
- var sqlId utils.SQLVal = "select * from arearole t where 1=1"
- sqlId.AndEx("t.USERID", r.USERID, r.USERID > 0)
- sqlId.AndEx("t.ROLETYPE", r.ROLETYPE, r.ROLETYPE > 0)
- sqlId.AndEx("t.SUBORGTYPE", r.SUBORGTYPE, r.SUBORGTYPE > 0)
- sqlId.AndEx("t.FROMUSERID", r.FROMUSERID, r.FROMUSERID > 0)
- return sqlId.String()
- }
- // GetDataEx 获取角色查询
- func (r *QhjAreaRole) GetData() ([]QhjAreaRole, error) {
- sData := make([]QhjAreaRole, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjContract 千海金融资明细(合同)
- type QhjContract struct {
- USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
- SCFCONTRACTID string `json:"scfcontractid" xorm:"SCFCONTRACTID"` // SCF合同ID(310+Unix秒时间戳(10位)+xxxxxx)
- SCFCONTRACTTYPE int32 `json:"scfcontracttype" xorm:"SCFCONTRACTTYPE"` // 合同类型 - 1:仓单回购 2:仓单质押 3:合作套保 4:资金贷款 5:融资单
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID [5:融资单]
- CONTRACTCONFIRMTIME string `json:"contractconfirmtime" xorm:"CONTRACTCONFIRMTIME"` // 合同确认时间(时间)
- WRQTY float64 `json:"wrqty" xorm:"WRQTY"` // 仓单数量(数量)
- TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格(成本价格)
- LENDERAMOUNT float64 `json:"lenderamount" xorm:"LENDERAMOUNT"` // 贷款金额(总额|订单总额)
- MARGINRATIO float64 `json:"marginratio" xorm:"MARGINRATIO"` // 保证金比率(首付比例)
- INITMARGIN float64 `json:"initmargin" xorm:"'INITMARGIN'"` // 初始保证金(首付款)
- RECOVEREDMARGIN float64 `json:"recoveredmargin" xorm:"'RECOVEREDMARGIN'"` // 已追缴保证金
- REMAINAMOUNT float64 `json:"remainamount" xorm:"'REMAINAMOUNT'"` // 合同剩余金额(融资额)
- TOTALINTEREST float64 `json:"totalinterest" xorm:"'TOTALINTEREST'"` // 已计总利息(利息)
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 商品单位id
- CURRISKLEVEL int32 `json:"currisklevel" xorm:"'CURRISKLEVEL'"` // 风险级别 - 1:正常 2:追加货款 3:支付尾款
- RECKONRECOVERMARGIN float64 `json:"reckonrecovermargin" xorm:"'RECKONRECOVERMARGIN'"` // 结算应追缴保底金(结算时到过风险率时临时存储) - [仓单回购\仓单质押]
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
- SCFCONTRACTSTATUS int32 `json:"scfcontractstatus" xorm:"'SCFCONTRACTSTATUS'"` // 合同状态 - 1:待确认 2:已确认 3:确认拒绝 4:已支付保证金 5:已激活 6:已违约 7:到期结束 8:延期结束 9:违约结束 10:已注销 11:已关闭 99:未提交
- PAYAMOUNT float64 `json:"payamount" xorm:"'PAYAMOUNT'"` // 已付(已付货款)
- USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称
- ENUMDICNAME string `json:"enumdicname"` // 单位名称
- }
- func (r *QhjContract) calc() {
- r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
- // 已付(已付货款) = 已追缴保证金 + 初始保证金
- r.PAYAMOUNT = r.RECOVEREDMARGIN + r.INITMARGIN
- if r.SCFCONTRACTSTATUS == 10 || r.SCFCONTRACTSTATUS == 11 {
- // 当合同关闭时, 利息重置为0
- r.TOTALINTEREST = 0
- }
- }
- func (r *QhjContract) buildSql() string {
- var sqlId utils.SQLVal = "select t.borroweruserid userid," +
- " to_char(t.scfcontractid) scfcontractid," +
- " t.scfcontracttype," +
- " t.goodsid," +
- " to_char(t.contractconfirmtime, 'yyyy-mm-dd hh24:mi:ss') contractconfirmtime," +
- " t.wrqty," +
- " t.tradeprice," +
- " t.lenderamount," +
- " t.marginratio," +
- " s.initmargin," +
- " s.recoveredmargin," +
- " s.remainamount," +
- " s.totalinterest," +
- " s.currisklevel," +
- " s.reckonrecovermargin," +
- " s.scfcontractstatus," +
- " g.goodscode," +
- " g.goodsname," +
- " g.decimalplace," +
- " g.goodunitid" +
- " from scf_contract t" +
- " left join scf_contractinfo s" +
- " on t.scfcontractid = s.scfcontractid" +
- " left join goods g" +
- " on t.goodsid = g.goodsid" +
- " where 1=1"
- sqlId.AndEx("t.borroweruserid", r.USERID, r.USERID > 0)
- sqlId.AndEx("t.SCFCONTRACTID", r.SCFCONTRACTID, len(r.SCFCONTRACTID) > 0)
- return sqlId.String()
- }
- // GetDataEx 获取融资明细(合同)
- func (r *QhjContract) GetDataEx() (interface{}, error) {
- sData := make([]QhjContract, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjContractLog 融资明细流水log
- type QhjContractLog struct {
- LOGID string `json:"logid" xorm:"LOGID"` // LogID(315+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- SCFCONTRACTID int64 `json:"scfcontractid" xorm:"SCFCONTRACTID"` // SCF合同ID(310+Unix秒时间戳(10位)+xxxxxx)
- AMOUNTTYPE int32 `json:"amounttype" xorm:"AMOUNTTYPE"` // 资金类型 - 1:首付款 2:尾款 3:利息 4:追加款
- AMOUNT float64 `json:"amount" xorm:"AMOUNT"` // 支付金额
- REMAINAMOUNT float64 `json:"remainamount" xorm:"REMAINAMOUNT"` // 剩余货款
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
- FilterType string `json:"-"` // 资金类型
- }
- func (r *QhjContractLog) calc() {
- }
- func (r *QhjContractLog) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.LOGID," +
- " t.SCFCONTRACTID," +
- " t.AMOUNTTYPE," +
- " t.AMOUNT," +
- " t.REMAINAMOUNT," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME" +
- " FROM SCF_CONTRACTAMOUNTLOG t" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.SCFCONTRACTID", r.SCFCONTRACTID, r.SCFCONTRACTID > 0)
- sqlId.JoinEx(len(r.FilterType) > 0, fmt.Sprintf(" and t.AMOUNTTYPE in(%v)", r.FilterType))
- return sqlId.String()
- }
- // GetDataEx 获取融资明细流水log
- func (r *QhjContractLog) GetDataEx() (interface{}, error) {
- sData := make([]QhjContractLog, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjRStrategy 定投规则策略
- type QhjRStrategy struct {
- REGULARLYCYCLE int32 `json:"regularlycycle" xorm:"REGULARLYCYCLE"` // 定投频率 - 1:每周 2:每月
- REGULARLYCYCLEVALUE string `json:"regularlycyclevalue" xorm:"REGULARLYCYCLEVALUE"` // 定投频率值 - 每周几(0-6) 或 每月几号(<=28)
- REGULARLYMODE int32 `json:"regularlymode" xorm:"REGULARLYMODE"` // 定投方式 - 1:按数量 2:按金额
- REGULARLYMODEVALUE float64 `json:"regularlymodevalue" xorm:"REGULARLYMODEVALUE"` // 定投方式值 - 数量或金额
- REMARK string `json:"remark" xorm:"REMARK"` // 备注
- REGULARLYSTRATEGYSTATUS int32 `json:"regularlystrategystatus" xorm:"REGULARLYSTRATEGYSTATUS"` // 策略状态 - 1:正常 2:暂停 3:终止
- TRIGGERTOTALTIMES string `json:"triggertotaltimes" xorm:"TRIGGERTOTALTIMES"` // 累计定投总次数
- TRIGGERSUCCESSTIMES string `json:"triggersuccesstimes" xorm:"TRIGGERSUCCESSTIMES"` // 累计定投成功次数
- TRIGGERTOTALQTY float64 `json:"triggertotalqty" xorm:"TRIGGERTOTALQTY"` // 累计定投数量(成功) [按小数位放大值]
- TRIGGERTOTALAMOUNT float64 `json:"triggertotalamount" xorm:"TRIGGERTOTALAMOUNT"` // 累计定投金额(成功)
- LASTEFFECTTRADEDATE string `json:"lasteffecttradedate" xorm:"LASTEFFECTTRADEDATE"` // 最新生效交易日
- LASTSTOPTRADEDATE string `json:"laststoptradedate" xorm:"LASTSTOPTRADEDATE"` // 最新暂停交易日
- LASTTRIGGERTRADEDATE string `json:"lasttriggertradedate" xorm:"LASTTRIGGERTRADEDATE"` // 最新触发交易日
- NEXTTRIGGERDATE string `json:"nexttriggerdate" xorm:"NEXTTRIGGERDATE"` // 下次触发日期
- NEXTTRIGGERQTY float64 `json:"nexttriggerqty" xorm:"NEXTTRIGGERQTY"` // 下次触发数量 [按小数位放大值]
- NEXTTRIGGERAMOUNT float64 `json:"nexttriggeramount" xorm:"NEXTTRIGGERAMOUNT"` // 下次触发金额
- UPDATORID string `json:"updatorid" xorm:"UPDATORID"` // 更新人
- UPDATESRC int32 `json:"updatesrc" xorm:"UPDATESRC"` // 更新来源 - 1:管理端 2:终端
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
- REGULARLYSTRATEGYID int64 `json:"regularlystrategyid" xorm:"REGULARLYSTRATEGYID"` // 定投策略ID (SEQ_QHJ_REGULARLYSTRATEGY)
- USERID int64 `json:"userid" xorm:"USERID"` // 所属用户ID
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 用户资金账户
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 定投商品ID
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 定投商品代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 定投商品名称
- GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 定投商品单位id
- CURRENCYID int32 `json:"currencyid" xorm:"'CURRENCYID'"` // 币种id
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
- QTYDECIMALPLACE int `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
- LOGINCODE string `json:"logincode" xorm:"'LOGINCODE'"` // 账号(登录代码)
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户类型 1-个人 2-企业
- MOBILE string `json:"-" xorm:"'MOBILE'"` // 电话号码(用户资料里的电话)
- USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称(userid对应的名称)
- ACCOUNTNAME string `json:"accountname"` // 账号名称(ACCOUNTID对应的名称)
- ENUMDICNAME string `json:"enumdicname"` // 单位名称
- CURRENCYNAME string `json:"currencyname"` // 币种名称
- FilterStatus string `json:"-"` // 状态过滤条件
- FilterName string `json:"-"` // 模糊搜索
- }
- func (r *QhjRStrategy) calc() {
- //r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
- r.CURRENCYNAME = mtpcache.GetCurrencyName(r.CURRENCYID)
- ZoomByDecimal(r.QTYDECIMALPLACE, &r.TRIGGERTOTALQTY, &r.NEXTTRIGGERQTY)
- if r.REGULARLYMODE == 1 {
- ZoomByDecimal(r.QTYDECIMALPLACE, &r.REGULARLYMODEVALUE)
- }
- if r.LOGINCODE == "" {
- r.LOGINCODE = DecryptField(r.MOBILE)
- }
- }
- func (r *QhjRStrategy) buildSql() string {
- var sqlId utils.SQLVal = "with k as (select t.userid, wm_concat(t.logincode) logincode from loginaccount t group by t.userid)" +
- "SELECT t.REGULARLYCYCLE," +
- " t.REGULARLYCYCLEVALUE," +
- " t.REGULARLYMODE," +
- " t.REGULARLYMODEVALUE," +
- " t.REMARK," +
- " t.REGULARLYSTRATEGYSTATUS," +
- " t.TRIGGERTOTALTIMES," +
- " t.TRIGGERSUCCESSTIMES," +
- " t.TRIGGERTOTALQTY," +
- " t.TRIGGERTOTALAMOUNT," +
- " t.LASTEFFECTTRADEDATE," +
- " t.LASTSTOPTRADEDATE," +
- " t.LASTTRIGGERTRADEDATE," +
- " to_char(t.NEXTTRIGGERDATE, 'yyyy-mm-dd hh24:mi:ss') NEXTTRIGGERDATE," +
- " t.NEXTTRIGGERQTY," +
- " t.NEXTTRIGGERAMOUNT," +
- " t.UPDATORID," +
- " t.UPDATESRC," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " t.REGULARLYSTRATEGYID," +
- " t.USERID," +
- " t.ACCOUNTID," +
- " t.GOODSID," +
- " g.goodscode," +
- " g.goodsname," +
- " g.decimalplace," +
- " g.qtydecimalplace," +
- " g.goodunitid," +
- " ta.accountname," +
- " k.logincode," +
- " ui.userinfotype," +
- " ui.mobile," +
- " u.accountname username" +
- " FROM QHJ_REGULARLYSTRATEGY t" +
- " LEFT JOIN GOODS g" +
- " on t.goodsid = g.goodsid" +
- " LEFT JOIN TAACCOUNT ta" +
- " on t.accountid = ta.accountid" +
- " LEFT JOIN USERINFO ui on t.userid=ui.userid" +
- " LEFT JOIN USERACCOUNT u on t.userid=u.userid" +
- " LEFT JOIN k on t.userid=k.userid" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.USERID", r.USERID, r.USERID > 0)
- sqlId.AndEx("t.goodsid", r.GOODSID, r.GOODSID > 0)
- if len(r.FilterName) > 0 {
- sqlId.JoinFormat(" and (k.logincode like '%%%v%%' or u.accountname like '%%%v%%')", r.FilterName, r.FilterName)
- }
- sqlId.JoinEx(len(r.FilterStatus) > 0, fmt.Sprintf(" and t.REGULARLYSTRATEGYSTATUS in(%v)", r.FilterStatus))
- sqlId.Join(" order by t.UPDATETIME desc")
- return sqlId.String()
- }
- // GetDataEx 获取定投规则策略
- func (r *QhjRStrategy) GetDataEx() (interface{}, error) {
- sData := make([]QhjRStrategy, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjRSTriggerLog 定投规则策略触发记录
- type QhjRSTriggerLog struct {
- TRADEID string `json:"tradeid" xorm:"TRADEID"` // 成交单ID
- LOGID string `json:"logid" xorm:"LOGID"` // LogID(SEQ_QHJ_RSTRIGGERLOG)
- REGULARLYSTRATEGYID int64 `json:"regularlystrategyid" xorm:"REGULARLYSTRATEGYID"` // 定投策略ID
- USERID int64 `json:"userid" xorm:"USERID"` // 所属用户ID
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 用户资金账户
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 定投商品ID
- REGULARLYCYCLE int32 `json:"regularlycycle" xorm:"REGULARLYCYCLE"` // 定投频率 - 1:每周 2:每月
- REGULARLYCYCLEVALUE string `json:"regularlycyclevalue" xorm:"REGULARLYCYCLEVALUE"` // 定投频率值 - 每周几(0-6) 或 每月几号(<=28)
- REGULARLYMODE int32 `json:"regularlymode" xorm:"REGULARLYMODE"` // 定投方式 - 1:按数量 2:按金额
- REGULARLYMODEVALUE float64 `json:"regularlymodevalue" xorm:"REGULARLYMODEVALUE"` // 定投方式值 - 数量或金额
- TRIGGERTIME string `json:"triggertime" xorm:"TRIGGERTIME"` // 触发时间
- TRIGGERTRADEDATE string `json:"triggertradedate" xorm:"TRIGGERTRADEDATE"` // 触发交易日
- TRIGGERQTY float64 `json:"triggerqty" xorm:"TRIGGERQTY"` // 触发数量
- TRIGGERAMOUNT float64 `json:"triggeramount" xorm:"TRIGGERAMOUNT"` // 触发金额
- TRIGGERSTATUS int32 `json:"triggerstatus" xorm:"TRIGGERSTATUS"` // 触发状态 - 1:成功 2:失败
- RETCODE string `json:"retcode" xorm:"RETCODE"` // 错误码
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 定投商品代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 定投商品名称
- GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 定投商品单位id
- CURRENCYID int32 `json:"currencyid" xorm:"'CURRENCYID'"` // 币种id
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
- QTYDECIMALPLACE int `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
- LOGINCODE string `json:"logincode" xorm:"'LOGINCODE'"` // 账号(登录代码)
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户类型 1-个人 2-企业
- MOBILE string `json:"-" xorm:"'MOBILE'"` // 电话号码(用户资料里的电话)
- USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称(userid对应的名称)
- ACCOUNTNAME string `json:"accountname"` // 账号名称(ACCOUNTID对应的名称)
- ENUMDICNAME string `json:"enumdicname"` // 单位名称
- CURRENCYNAME string `json:"currencyname"` // 币种名称
- BeginDate string `json:"-"` // 开始交易日
- EndDate string `json:"-"` // 结束交易日
- FilterName string `json:"-"` // 模糊搜索
- }
- func (r *QhjRSTriggerLog) calc() {
- //r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
- r.CURRENCYNAME = mtpcache.GetCurrencyName(r.CURRENCYID)
- ZoomByDecimal(r.QTYDECIMALPLACE, &r.TRIGGERQTY)
- if r.REGULARLYMODE == 1 {
- ZoomByDecimal(r.QTYDECIMALPLACE, &r.REGULARLYMODEVALUE)
- }
- if r.LOGINCODE == "" {
- r.LOGINCODE = DecryptField(r.MOBILE)
- }
- }
- func (r *QhjRSTriggerLog) buildSql() string {
- var sqlId utils.SQLVal = "with k as (select t.userid, wm_concat(t.logincode) logincode from loginaccount t group by t.userid)" +
- "SELECT t.TRADEID," +
- " t.LOGID," +
- " t.REGULARLYSTRATEGYID," +
- " t.USERID," +
- " t.ACCOUNTID," +
- " t.GOODSID," +
- " t.REGULARLYCYCLE," +
- " t.REGULARLYCYCLEVALUE," +
- " t.REGULARLYMODE," +
- " t.REGULARLYMODEVALUE," +
- " to_char(t.TRIGGERTIME, 'yyyy-mm-dd hh24:mi:ss') TRIGGERTIME," +
- " t.TRIGGERTRADEDATE," +
- " t.TRIGGERQTY," +
- " t.TRIGGERAMOUNT," +
- " t.TRIGGERSTATUS," +
- " t.RETCODE," +
- " g.goodscode," +
- " g.goodsname," +
- " g.decimalplace," +
- " g.qtydecimalplace," +
- " g.goodunitid," +
- " ta.accountname," +
- " ta.currencyid," +
- " k.logincode," +
- " ui.userinfotype," +
- " ui.mobile," +
- " u.accountname username" +
- " FROM QHJ_RSTRIGGERLOG t" +
- " LEFT JOIN GOODS g" +
- " on t.goodsid = g.goodsid" +
- " LEFT JOIN TAACCOUNT ta" +
- " on t.accountid = ta.accountid" +
- " LEFT JOIN k on t.userid=k.userid" +
- " LEFT JOIN USERACCOUNT u on t.userid=u.userid" +
- " LEFT JOIN USERINFO ui on t.userid=ui.userid" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.USERID", r.USERID, r.USERID > 0)
- sqlId.AndEx("t.REGULARLYSTRATEGYID", r.REGULARLYSTRATEGYID, r.REGULARLYSTRATEGYID > 0)
- sqlId.AndEx("ui.USERINFOTYPE", r.USERINFOTYPE, r.USERINFOTYPE > 0)
- sqlId.AndEx("t.goodsid", r.GOODSID, r.GOODSID > 0)
- if len(r.BeginDate) > 0 {
- sqlId.JoinFormat(" and t.TRIGGERTRADEDATE >=%v", r.BeginDate)
- }
- if len(r.EndDate) > 0 {
- sqlId.JoinFormat(" and t.TRIGGERTRADEDATE <=%v", r.EndDate)
- }
- if len(r.FilterName) > 0 {
- sqlId.JoinFormat(" and (k.logincode like '%%%v%%' or u.accountname like '%%%v%%')", r.FilterName, r.FilterName)
- }
- return sqlId.String()
- }
- // GetDataEx 获取定投规则策略触发记录
- func (r *QhjRSTriggerLog) GetDataEx() (interface{}, error) {
- sData := make([]QhjRSTriggerLog, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // UserReceiveInfo 用户收货信息
- type UserReceiveInfo struct {
- AUTOID int32 `json:"autoid" xorm:"AUTOID"` // AutoID
- USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
- RECEIVERNAME string `json:"receivername" xorm:"RECEIVERNAME"` // 提货人姓名
- CARDTYPEID int32 `json:"cardtypeid" xorm:"CARDTYPEID"` // 证件类型
- CARDNUM string `json:"cardnum" xorm:"CARDNUM"` // 证件号码(加密存储)
- PHONENUM string `json:"phonenum" xorm:"PHONENUM"` // 提货人联系方式(加密存储)
- ADDRESS string `json:"address" xorm:"ADDRESS"` // 提货人详细地址
- TAKEREMARK string `json:"takeremark" xorm:"TAKEREMARK"` // 提货备注
- COUNTRYID int32 `json:"countryid" xorm:"COUNTRYID"` // 国家
- PROVINCEID int32 `json:"provinceid" xorm:"PROVINCEID"` // 省
- CITYID int32 `json:"cityid" xorm:"CITYID"` // 市
- DISTRICTID int32 `json:"districtid" xorm:"DISTRICTID"` // 地区
- ISDEFAULT int32 `json:"isdefault" xorm:"ISDEFAULT"` // 是否默认地址 - 0:否 1:是
- HASENCRYPT int32 `json:"hasencrypt" xorm:"HASENCRYPT"` // 数据是否已加密 - 0:未加密 1:已加密
- COUNTRYNAME string `json:"countryname"` // 国家名称
- CITYNAME string `json:"cityname"` // 城市名称
- PROVINCENAME string `json:"provincename"` // 省名称
- DISTRICTNAME string `json:"districtname"` // 地区名称
- }
- func (r *UserReceiveInfo) calc() {
- // 加密过的长度 > 16, 否则是未加密的
- if len(r.CARDNUM) > 16 {
- r.CARDNUM = DecryptField(r.CARDNUM)
- }
- if len(r.PHONENUM) > 16 {
- r.PHONENUM = DecryptField(r.PHONENUM)
- }
- r.COUNTRYNAME = mtpcache.GetDivisionName(r.COUNTRYID)
- r.CITYNAME = mtpcache.GetDivisionName(r.CITYID)
- r.PROVINCENAME = mtpcache.GetDivisionName(r.PROVINCEID)
- r.DISTRICTNAME = mtpcache.GetDivisionName(r.DISTRICTID)
- }
- func (r *UserReceiveInfo) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.AUTOID," +
- " t.USERID," +
- " t.RECEIVERNAME," +
- " t.CARDTYPEID," +
- " t.CARDNUM," +
- " t.PHONENUM," +
- " t.ADDRESS," +
- " t.TAKEREMARK," +
- " t.COUNTRYID," +
- " t.PROVINCEID," +
- " t.CITYID," +
- " t.DISTRICTID," +
- " t.ISDEFAULT," +
- " t.HASENCRYPT" +
- " FROM USERRECEIVEINFO t" +
- " WHERE 1 = 1"
- sqlId.And("t.USERID", r.USERID)
- return sqlId.String()
- }
- // GetDataEx 获取用户收货信息
- func (r *UserReceiveInfo) GetDataEx() (interface{}, error) {
- sData := make([]UserReceiveInfo, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // UserCollectConfig 提现账户设置
- type UserCollectConfig struct {
- COLLECTCONFIGID string `json:"collectconfigid" xorm:"COLLECTCONFIGID"` // 收款账户配置ID(SEQ_USERCOLLECTCONFIG)
- USERID int64 `json:"userid" xorm:"USERID"` // 收款人用户ID
- COLLECTACCOUNTNO string `json:"collectaccountno" xorm:"COLLECTACCOUNTNO"` // 收款人账户
- COLLECTACCOUNTNAME string `json:"collectaccountname" xorm:"COLLECTACCOUNTNAME"` // 收款人账户名称
- COLLECTBANKNAME string `json:"collectbankname" xorm:"COLLECTBANKNAME"` // 收款人开户行
- COLLECTBRANCHBANKNAME string `json:"collectbranchbankname" xorm:"COLLECTBRANCHBANKNAME"` // 收款人开户支行
- REMARK string `json:"remark" xorm:"REMARK"` // 备注
- ACCOUNTSTATUS int32 `json:"accountstatus" xorm:"ACCOUNTSTATUS"` // 账户状态 - 1:正常 2:停用 3:注销
- }
- func (r *UserCollectConfig) calc() {
- // 加密后的长度是32的倍数
- if len(r.COLLECTACCOUNTNO)%32 == 0 {
- r.COLLECTACCOUNTNO = DecryptField(r.COLLECTACCOUNTNO)
- }
- }
- func (r *UserCollectConfig) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.COLLECTCONFIGID," +
- " t.USERID," +
- " t.COLLECTACCOUNTNO," +
- " t.COLLECTACCOUNTNAME," +
- " t.COLLECTBANKNAME," +
- " t.COLLECTBRANCHBANKNAME," +
- " t.REMARK," +
- " t.ACCOUNTSTATUS" +
- " FROM USERCOLLECTCONFIG t" +
- " WHERE 1 = 1"
- sqlId.And("t.USERID", r.USERID)
- return sqlId.String()
- }
- // GetDataEx 获取提现账户设置
- func (r *UserCollectConfig) GetDataEx() (interface{}, error) {
- sData := make([]UserCollectConfig, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjTradeGoodsPickup 提货单
- type QhjTradeGoodsPickup struct {
- AUDITSRC int32 `json:"auditsrc" xorm:"AUDITSRC"` // 更新来源 - 1:管理端 2:终端
- STOREUSERID int64 `json:"storeuserid" xorm:"STOREUSERID"` // 门店用户ID (千海金)
- ARTRADEDATE string `json:"artradedate" xorm:"ARTRADEDATE"` // 自动收货交易日(yyyyMMdd)
- EXPRESSCOMPANY string `json:"expresscompany" xorm:"EXPRESSCOMPANY"` // 物流公司
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
- AUDITTRADEDATE string `json:"audittradedate" xorm:"AUDITTRADEDATE"` // 审核交易日(yyyyMMdd)
- EXPRESSNUM string `json:"expressnum" xorm:"EXPRESSNUM"` // 物流单号
- TAKEORDERID string `json:"takeorderid" xorm:"TAKEORDERID"` // 提货单号(905+Unix秒时间戳(10位)+xxxxxx)
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 账户ID
- GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
- QTY float64 `json:"qty" xorm:"QTY"` // 交易商品总手数(交易商品 - 69模式按成交量放大) - 明细表的交易商品手数汇总
- REQTIME string `json:"reqtime" xorm:"REQTIME"` // 提货申请时间
- RECIVERNAME string `json:"recivername" xorm:"RECIVERNAME"` // 提货人姓名
- CARDTYPEID int32 `json:"cardtypeid" xorm:"CARDTYPEID"` // 提货人证件类型
- CARDNUM string `json:"cardnum" xorm:"CARDNUM"` // 提货人证件号码
- PHONENUM string `json:"phonenum" xorm:"PHONENUM"` // 提货人联系方式
- TAKEMODE int32 `json:"takemode" xorm:"TAKEMODE"` // 提货方式 - 2:自提 3:配送(邮寄)
- ADDRESS string `json:"address" xorm:"ADDRESS"` // 提货人详细地址
- TAKEREMARK string `json:"takeremark" xorm:"TAKEREMARK"` // 提货备注
- TAKEORDERSTATUS int32 `json:"takeorderstatus" xorm:"TAKEORDERSTATUS"` // 提货状态 - 1:备货中 2:待取货(自提) 3:已取货(自提) 4:待收货(邮寄) 5:已收货(邮寄) 6:自动收货(邮寄) 7:已拒绝 8:已撤销
- AUDITER int32 `json:"auditer" xorm:"AUDITER"` // 审核人
- AUDITTIME string `json:"audittime" xorm:"AUDITTIME"` // 审核时间(发货时间 | 备货完成时间 都是这个字段)
- CONFIRMTIME string `json:"confirmtime" xorm:"'CONFIRMTIME'"` // 取货时间 或 收货时间
- CHECKREMARK string `json:"checkremark" xorm:"CHECKREMARK"` // 审核备注
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- HANDLESTATUS int32 `json:"handlestatus" xorm:"HANDLESTATUS"` // 处理状态
- AMOUNT float64 `json:"amount" xorm:"AMOUNT"` // 提货金额
- COUNTRYID int32 `json:"countryid" xorm:"COUNTRYID"` // 国家
- PROVINCEID int32 `json:"provinceid" xorm:"PROVINCEID"` // 省
- CITYID int32 `json:"cityid" xorm:"CITYID"` // 市
- DISTRICTID int32 `json:"districtid" xorm:"DISTRICTID"` // 地区
- PICKUPGOODSID string `json:"pickupgoodsid" xorm:"PICKUPGOODSID"` // 提货商品ID
- GOODSAGREEUNIT float64 `json:"goodsagreeunit" xorm:"GOODSAGREEUNIT"` // 交易商品乘数
- PICKUPGOODSAGREEUNIT float64 `json:"pickupgoodsagreeunit" xorm:"PICKUPGOODSAGREEUNIT"` // 提货商品合约乘数
- PICKUPRATIO float64 `json:"pickupratio" xorm:"PICKUPRATIO"` // 提货系数
- PICKUPGOODSQTY float64 `json:"pickupgoodsqty" xorm:"PICKUPGOODSQTY"` // 提货商品手数(数量)
- GOODSQTY float64 `json:"goodsqty" xorm:"GOODSQTY"` // 交易商品手数(69模式按成交量小数位放大取整)
- PREPAREDAYS int32 `json:"preparedays" xorm:"PREPAREDAYS"` // 备货期(天)-提货单明细表
- PICKUPGOODSNAME string `json:"pickupgoodsname" xorm:"PICKUPGOODSNAME"` // 提货商品名称
- PICKUPGOODSUNITID int32 `json:"pickupgoodsunitid" xorm:"PICKUPGOODSUNITID"` // 单位ID(提货商品)
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
- QTYDECIMALPLACE int `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 商品数量小数位
- LOGINCODE string `json:"logincode" xorm:"'LOGINCODE'"` // 账号(登录代码, 有可能为空)
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 客户类型 1-个人 2-企业
- MOBILE string `json:"-" xorm:"'MOBILE'"` // 手机号码(userinfo表中的手机号码)
- ENUMDICNAME string `json:"enumdicname"` // 单位名称(提货商品)
- USERNAME string `json:"username"` // 用户名称
- STOREUSERNAME string `json:"storeusername"` // 门店用户名称
- COUNTRYNAME string `json:"countryname"` // 国家名称
- CITYNAME string `json:"cityname"` // 城市名称
- PROVINCENAME string `json:"provincename"` // 省名称
- DISTRICTNAME string `json:"districtname"` // 地区名称
- }
- func (r *QhjTradeGoodsPickup) calc() {
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.PICKUPGOODSUNITID)
- r.STOREUSERNAME = mtpcache.GetUserNameByUserId(r.STOREUSERID)
- r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- r.COUNTRYNAME = mtpcache.GetDivisionName(r.COUNTRYID)
- r.CITYNAME = mtpcache.GetDivisionName(r.CITYID)
- r.PROVINCENAME = mtpcache.GetDivisionName(r.PROVINCEID)
- r.DISTRICTNAME = mtpcache.GetDivisionName(r.DISTRICTID)
- if len(r.LOGINCODE) == 0 {
- // 如果登录代码为空, 取手机号码显示
- r.LOGINCODE = DecryptField(r.MOBILE)
- }
- ZoomByDecimal(r.QTYDECIMALPLACE, &r.GOODSQTY)
- ZoomByDecimal(r.QTYDECIMALPLACE, &r.QTY)
- }
- func (r *QhjTradeGoodsPickup) buildSql() string {
- var sqlId utils.SQLVal = "with tmp as (select t.userid, wm_concat(t.logincode) logincode from loginaccount t group by t.userid)" +
- "SELECT t.AUDITSRC," +
- " t.STOREUSERID," +
- " t.ARTRADEDATE," +
- " t.EXPRESSCOMPANY," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " t.AUDITTRADEDATE," +
- " t.EXPRESSNUM," +
- " to_char(t.TAKEORDERID) TAKEORDERID," +
- " t.ACCOUNTID," +
- " t.GOODSID," +
- " t.USERID," +
- " t.QTY," +
- " to_char(t.REQTIME, 'yyyy-mm-dd hh24:mi:ss') REQTIME," +
- " t.RECIVERNAME," +
- " t.CARDTYPEID," +
- " t.CARDNUM," +
- " t.PHONENUM," +
- " t.TAKEMODE," +
- " decode(t.takemode, 3, t.address, u.address) address," +
- " t.TAKEREMARK," +
- " t.TAKEORDERSTATUS," +
- " t.AUDITER," +
- " to_char(t.AUDITTIME, 'yyyy-mm-dd hh24:mi:ss') AUDITTIME," +
- " to_char(t.CONFIRMTIME, 'yyyy-mm-dd hh24:mi:ss') CONFIRMTIME," +
- " t.CHECKREMARK," +
- " t.TRADEDATE," +
- " t.MARKETID," +
- " t.HANDLESTATUS," +
- " t.AMOUNT," +
- " decode(t.takemode, 3, t.COUNTRYID, u.countryid) COUNTRYID," +
- " decode(t.takemode, 3, t.PROVINCEID, u.provinceid) PROVINCEID," +
- " decode(t.takemode, 3, t.CITYID, u.cityid) CITYID," +
- " decode(t.takemode, 3, t.DISTRICTID, u.districtid) DISTRICTID," +
- " k.PICKUPGOODSID," +
- " k.GOODSAGREEUNIT," +
- " k.PICKUPGOODSAGREEUNIT," +
- " k.PICKUPRATIO," +
- " k.PICKUPGOODSQTY," +
- " k.GOODSQTY," +
- " k.PREPAREDAYS," +
- " g.PICKUPGOODSNAME," +
- " g.PICKUPGOODSUNITID," +
- " g2.goodsname," +
- " g2.decimalplace," +
- " g2.qtydecimalplace," +
- " g2.goodscode," +
- " u2.userinfotype," +
- " u2.mobile," +
- " tmp.logincode" +
- " FROM TRADE_GOODSPICKUP t" +
- " LEFT JOIN TRADE_GOODSPICKUPDETAIL k" +
- " on t.takeorderid = k.takeorderid" +
- " LEFT JOIN PICKUPGOODS g" +
- " on k.pickupgoodsid = g.pickupgoodsid" +
- " LEFT JOIN GOODS g2" +
- " on t.goodsid = g2.goodsid" +
- " LEFT JOIN USERINFO u" +
- " on t.storeuserid = u.userid" +
- " LEFT JOIN USERINFO u2" +
- " on t.userid = u2.userid" +
- " LEFT JOIN tmp on t.userid=tmp.userid" +
- " WHERE 1 = 1"
- // 获取角色=20组织的角色数据, 判断机构类型
- m := QhjAreaRole{USERID: r.USERID, ROLETYPE: 20}
- d, _ := m.GetData()
- if len(d) > 0 {
- v := d[0]
- if v.SUBORGTYPE == 0 {
- // 机构(企业) 查所有, 即不过淲userid
- } else if v.SUBORGTYPE == 2 {
- // 门店查询
- sqlId.And("t.storeuserid", r.USERID)
- } else {
- sqlId.And("t.USERID", r.USERID)
- }
- } else {
- sqlId.And("t.USERID", r.USERID)
- }
- sqlId.AndEx("t.TAKEORDERSTATUS", r.TAKEORDERSTATUS, r.TAKEORDERSTATUS > 0)
- return sqlId.String()
- }
- // GetDataEx 获取提货单
- func (r *QhjTradeGoodsPickup) GetDataEx() (interface{}, error) {
- sData := make([]QhjTradeGoodsPickup, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjPickGoods 提货商品
- type QhjPickGoods struct {
- PICKUPGOODSID string `json:"pickupgoodsid" xorm:"PICKUPGOODSID"` // 提货商品ID
- PICKUPGOODSNAME string `json:"pickupgoodsname" xorm:"PICKUPGOODSNAME"` // 提货商品名称
- PICKUPGOODSUNITID int32 `json:"pickupgoodsunitid" xorm:"PICKUPGOODSUNITID"` // 单位ID
- PICKUPGOODSAGREEUNIT float64 `json:"pickupgoodsagreeunit" xorm:"PICKUPGOODSAGREEUNIT"` // 合约乘数
- PICKUPGOODSDESC string `json:"pickupgoodsdesc" xorm:"PICKUPGOODSDESC"` // 描述
- IMAGEADDRESS string `json:"imageaddress" xorm:"IMAGEADDRESS"` // 图片
- REMARK string `json:"remark" xorm:"REMARK"` // 备注
- MODIFYSRC int32 `json:"modifysrc" xorm:"MODIFYSRC"` // 修改来源 - 1:管理端 2:终端
- MODIFIERID int64 `json:"modifierid" xorm:"MODIFIERID"` // 修改人
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
- PREPAREDAYS int32 `json:"preparedays" xorm:"PREPAREDAYS"` // 备货期(天)
- PICKUPGOODSSTATUS int32 `json:"pickupgoodsstatus" xorm:"PICKUPGOODSSTATUS"` // 状态 - 1:正常 2:停用 3:注销
- GOODSID int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品id
- PICKUPRATIO float64 `json:"pickupratio" xorm:"'PICKUPRATIO'"` // 提货系数
- MODIFIERNAME string `json:"modifiername"` // 修改人名称
- FilterStatus string `json:"-"` // 状态过淲
- ENUMDICNAME string `json:"enumdicname"` // 单位名称(提货商品)
- }
- func (r *QhjPickGoods) calc() {
- if r.MODIFYSRC == 1 {
- r.MODIFIERNAME = mtpcache.GetSystemmangerLoginCode(r.MODIFIERID)
- } else {
- r.MODIFIERNAME = mtpcache.GetLoginCodeByLoginId(r.MODIFIERID)
- }
- if r.MODIFIERNAME == "" {
- r.MODIFIERNAME = mtpcache.GetUserNameByUserId(r.MODIFIERID)
- }
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.PICKUPGOODSUNITID)
- }
- func (r *QhjPickGoods) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.PICKUPGOODSID," +
- " t.PICKUPGOODSNAME," +
- " t.PICKUPGOODSUNITID," +
- " t.PICKUPGOODSAGREEUNIT," +
- " to_char(t.PICKUPGOODSDESC) PICKUPGOODSDESC," +
- " to_char(t.IMAGEADDRESS) IMAGEADDRESS," +
- " t.REMARK," +
- " t.MODIFYSRC," +
- " t.MODIFIERID," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " t.PREPAREDAYS," +
- " t.PICKUPGOODSSTATUS," +
- " c.goodsid," +
- " c.pickupratio" +
- " FROM PICKUPGOODS t" +
- " INNER JOIN GOODSPICKUPCONFIG c on t.pickupgoodsid=c.pickupgoodsid" +
- " WHERE 1 = 1"
- sqlId.AndEx("c.goodsid", r.GOODSID, r.GOODSID > 0)
- if len(r.FilterStatus) > 0 {
- sqlId.Join(fmt.Sprintf(" and t.PICKUPGOODSSTATUS in(%v)", r.FilterStatus))
- }
- return sqlId.String()
- }
- // GetDataEx 获取提货商品
- func (r *QhjPickGoods) GetDataEx() (interface{}, error) {
- sData := make([]QhjPickGoods, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjPickArea 提货门店
- type QhjPickArea struct {
- ISRETURNSCORE int32 `json:"-" xorm:"ISRETURNSCORE"` // 是否返还积分 [经纪会员-辽东湾] - 0:不返还 1:返还
- ORGTYPE int32 `json:"-" xorm:"ORGTYPE"` // 组织机构类型 1:机构\分支节点 2:交易员\叶子节点 3:部门\分支节点
- ROLETYPE int32 `json:"-" xorm:"ROLETYPE"` // 角色类型
- SUBORGTYPE int32 `json:"suborgtype" xorm:"SUBORGTYPE"` // 子机构类型(千海金) - 0:机构 1:代理 2:门店
- CREATORID int64 `json:"-" xorm:"CREATORID"` // 创建人ID
- FROMUSERID int64 `json:"fromuserid" xorm:"FROMUSERID"` // 所属机构(组织机构)( OrgType = 1时为自己, = 2\3时取上级机构的所属机构)
- MODIFIERID int64 `json:"-" xorm:"MODIFIERID"` // 修改人ID
- PARENTUSERID int64 `json:"-" xorm:"PARENTUSERID"` // 上级组织机构(组织机构)
- ROOTUSERID int64 `json:"-" xorm:"ROOTUSERID"` // 顶级组织机构用户ID(组织机构)
- TRADEACCOUNTID int64 `json:"-" xorm:"TRADEACCOUNTID"` // 默认交易资金账号ID(做市会员被动接单使用、商城店铺默认资金账 号、圈内会员默认资金账号) - 作废, 使用UserReckonAccount
- USERID int64 `json:"userid" xorm:"USERID"` // 机构用户ID 其他做市关系,都设置为 1
- CREATETIME string `json:"-" xorm:"CREATETIME"` // 创建时间
- MODIFYTIME string `json:"-" xorm:"MODIFYTIME"` // 修改时间
- OUTUSERID string `json:"-" xorm:"OUTUSERID"` // 外部账户[场外期权做市商]
- SHOPPASSWORD string `json:"-" xorm:"SHOPPASSWORD"` // 商城店铺登陆密码(商城店铺角色使用)
- SUBLEVELPATH string `json:"-" xorm:"SUBLEVELPATH"` // 组织机构层级路径(逗号分隔,首尾加逗号)
- TRANSURL string `json:"-" xorm:"TRANSURL"` // 物流地址(物流机构)
- COUNTRYID int32 `json:"countryid" xorm:"COUNTRYID"` // 国家
- PROVINCEID int32 `json:"provinceid" xorm:"PROVINCEID"` // 省
- CITYID int32 `json:"cityid" xorm:"CITYID"` // 市
- DISTRICTID int32 `json:"districtid" xorm:"DISTRICTID"` // 地区
- ADDRESS string `json:"address" xorm:"'ADDRESS'"` // 详细地址
- USERNAME string `json:"username"` // 机构用户名称(门店门称)
- FROMUSERNAME string `json:"fromusername"` // 所属机构名称
- COUNTRYNAME string `json:"countryname"` // 国家名称
- CITYNAME string `json:"cityname"` // 城市名称
- PROVINCENAME string `json:"provincename"` // 省名称
- DISTRICTNAME string `json:"districtname"` // 地区名称
- }
- func (r *QhjPickArea) calc() {
- r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- r.FROMUSERNAME = mtpcache.GetUserNameByUserId(r.FROMUSERID)
- r.COUNTRYNAME = mtpcache.GetDivisionName(r.COUNTRYID)
- r.CITYNAME = mtpcache.GetDivisionName(r.CITYID)
- r.PROVINCENAME = mtpcache.GetDivisionName(r.PROVINCEID)
- r.DISTRICTNAME = mtpcache.GetDivisionName(r.DISTRICTID)
- }
- func (r *QhjPickArea) buildSql() string {
- var sqlId utils.SQLVal = "SELECT distinct t.FROMUSERID," +
- " t.SUBORGTYPE," +
- " t.USERID," +
- " t.ROLETYPE," +
- " t.TRADEACCOUNTID," +
- " to_char(t.CREATETIME, 'yyyy-mm-dd hh24:mi:ss') CREATETIME," +
- " t.CREATORID," +
- " to_char(t.MODIFYTIME, 'yyyy-mm-dd hh24:mi:ss') MODIFYTIME," +
- " t.MODIFIERID," +
- " t.SHOPPASSWORD," +
- " t.ISRETURNSCORE," +
- " t.TRANSURL," +
- " t.OUTUSERID," +
- " t.PARENTUSERID," +
- " t.ROOTUSERID," +
- " t.SUBLEVELPATH," +
- " t.ORGTYPE," +
- " u.countryid," +
- " u.provinceid," +
- " u.cityid," +
- " u.districtid," +
- " u.address" +
- " FROM AREAROLE t" +
- " LEFT JOIN USERINFO u on t.userid=u.userid" +
- " WHERE 1 = 1"
- sqlId.And("t.SUBORGTYPE", 2)
- sqlId.And("t.roletype", 99)
- return sqlId.String()
- }
- // GetDataEx 获取机构角色
- func (r *QhjPickArea) GetDataEx() (interface{}, error) {
- sData := make([]QhjPickArea, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjBankAccountSign 签约银行
- type QhjBankAccountSign struct {
- ACCOUNTTYPE int32 `json:"accounttype" xorm:"ACCOUNTTYPE"` // 账户类型(UserType)
- BANKACCOUNTTYPE int32 `json:"bankaccounttype" xorm:"BANKACCOUNTTYPE"` // 银行账户类型 - 1-对私; 2-对公
- BANKCARDTYPE int32 `json:"bankcardtype" xorm:"BANKCARDTYPE"` // 银行卡类型
- DIRECT int32 `json:"direct" xorm:"DIRECT"` // 方向(可以判断那方先发起的签约)
- SIGNSTATUS int32 `json:"signstatus" xorm:"SIGNSTATUS"` // 签约状态 - 1:未签约 2:签约待审核 3:签约中 4:已签约 5:解约待审核 6:解约中 7:已解约 8:已解绑 9:绑卡中 10:审核拒绝 11:换签待审核
- AUDITID int64 `json:"auditid" xorm:"AUDITID"` // 审核人
- ACCOUNTCODE string `json:"accountcode" xorm:"ACCOUNTCODE"` // 资金账号
- ACCOUNTNAME string `json:"accountname" xorm:"ACCOUNTNAME"` // 资金账号对应的账号名(UserName)
- APPLICATIONTIME string `json:"applicationtime" xorm:"APPLICATIONTIME"` // 最后一次更新的时间
- APPLYEXCHTICKET string `json:"applyexchticket" xorm:"APPLYEXCHTICKET"` // 申请流水
- AUDITTIME string `json:"audittime" xorm:"AUDITTIME"` // 审核时间
- BANKACCOUNTNAME string `json:"bankaccountname" xorm:"BANKACCOUNTNAME"` // 签约银行卡账号名
- BANKACCOUNTNO string `json:"bankaccountno" xorm:"BANKACCOUNTNO"` // 银行卡号
- BANKCHILDACCOUNT string `json:"bankchildaccount" xorm:"BANKCHILDACCOUNT"` // 银行子账号(签约成功后,很多银行会返回对应的这个虚拟账号)
- BANKCITY string `json:"bankcity" xorm:"BANKCITY"` // 开户行城市
- BANKID string `json:"bankid" xorm:"BANKID"` // 签约银行ID
- BANKPROVINCE string `json:"bankprovince" xorm:"BANKPROVINCE"` // 开户行省份
- BRANCHBANKID string `json:"branchbankid" xorm:"BRANCHBANKID"` // 签约银行支行号
- BRANCHBANKNAME string `json:"branchbankname" xorm:"BRANCHBANKNAME"` // 签约银行支行名称
- CARDNO string `json:"cardno" xorm:"CARDNO"` // 证件号码
- CARDTYPE string `json:"cardtype" xorm:"CARDTYPE"` // 证件类型
- CURRENCY string `json:"currency" xorm:"CURRENCY"` // 币种
- CUSBANKID string `json:"cusbankid" xorm:"CUSBANKID"` // 托管银行编号
- EXCHTICKET string `json:"exchticket" xorm:"EXCHTICKET"` // 最后一次签约成功的流水号
- EXTENDINFO string `json:"extendinfo" xorm:"EXTENDINFO"` // 扩展信息(JSON字符串)
- MOBILEPHONE string `json:"mobilephone" xorm:"MOBILEPHONE"` // 手机号
- NETADDR string `json:"netaddr" xorm:"NETADDR"` // 调转网址
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间(签解约更新时间)
- RELATEDUSERID int64 `json:"relateduserid" xorm:"'RELATEDUSERID'"` // 关联使用者userid
- BANKNAME string `json:"bankname" xorm:"'BANKNAME'"` // 签约银行名称
- DEALSTATUS int32 `json:"dealstatus" xorm:"'DEALSTATUS'"` // Log处理状态
- REMARK string `json:"remark" xorm:"'REMARK'"` // Log备注
- CUSBANKNAME string `json:"cusbankname" xorm:"CUSBANKNAME"` // 托管银行名称
- ISMIX int32 `json:"ismix" xorm:"ISMIX"` // 是否混合渠道 - 0:否, 1:是(出入金不同外部接口)
- ACCOUNTNAME2 string `json:"accountname2"` // 资金账号对应的账号名(UserName) - 密文
- BANKACCOUNTNAME2 string `json:"bankaccountname2"` // 签约银行卡账号名 - 密文
- CARDNO2 string `json:"cardno2"` // 证件号码 - 密文
- BANKACCOUNTNO2 string `json:"bankaccountno2"` // 银行卡号 - 密文
- MOBILEPHONE2 string `json:"mobilephone2"` // 手机号 - 密文
- }
- func (r *QhjBankAccountSign) calc() {
- r.ACCOUNTNAME2 = r.ACCOUNTNAME
- r.BANKACCOUNTNAME2 = r.BANKACCOUNTNAME
- r.CARDNO2 = r.CARDNO
- r.BANKACCOUNTNO2 = r.BANKACCOUNTNO
- r.MOBILEPHONE2 = r.MOBILEPHONE
- r.ACCOUNTNAME = DecryptField(r.ACCOUNTNAME)
- r.BANKACCOUNTNAME = DecryptField(r.BANKACCOUNTNAME)
- r.CARDNO = DecryptField(r.CARDNO)
- r.BANKACCOUNTNO = DecryptField(r.BANKACCOUNTNO)
- r.MOBILEPHONE = DecryptField(r.MOBILEPHONE)
- }
- func (r *QhjBankAccountSign) buildSql() string {
- var sqlId utils.SQLVal = `SELECT t.ACCOUNTCODE,
- t.CUSBANKID,
- t.SIGNSTATUS,
- t.CURRENCY,
- t.ACCOUNTTYPE,
- t.ACCOUNTNAME,
- t.BANKCARDTYPE,
- t.BANKACCOUNTNO,
- t.BANKACCOUNTTYPE,
- t.BANKCHILDACCOUNT,
- t.BANKID,
- t.BRANCHBANKID,
- t.BRANCHBANKNAME,
- t.BANKACCOUNTNAME,
- t.CARDTYPE,
- t.CARDNO,
- t.BANKPROVINCE,
- t.BANKCITY,
- t.DIRECT,
- t.MOBILEPHONE,
- t.EXTENDINFO,
- t.EXCHTICKET,
- to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME,
- to_char(t.APPLICATIONTIME, 'yyyy-mm-dd hh24:mi:ss') APPLICATIONTIME,
- t.NETADDR,
- t.AUDITID,
- to_char(t.AUDITTIME, 'yyyy-mm-dd hh24:mi:ss') AUDITTIME,
- t.APPLYEXCHTICKET,
- ta.accountid,
- ta.relateduserid,
- b.bankname,
- ci.cusbankname,
- ci.ISMIX,
- slog.dealstatus DEALSTATUS,
- slog.remark REMARK
- FROM BANK_ACCOUNTSIGN t
- INNER JOIN TAACCOUNT ta
- on t.accountcode = to_char(ta.accountid)
- LEFT JOIN BANK_BANKINFO b on t.bankid=b.bankid
- LEFT JOIN bank_cusbankinfo ci ON ci.cusbankid = t.CUSBANKID
- LEFT JOIN (SELECT b.*, ROW_NUMBER() OVER (PARTITION BY b.exchticket ORDER BY b.createtime DESC) AS row_num
- FROM BANK_ACCOUNTSIGNLOG b) slog ON slog.exchticket = t.applyexchticket AND slog.row_num = 1
- WHERE 1 = 1
- and ta.taaccounttype = 2`
- sqlId.And("ta.RELATEDUSERID", r.RELATEDUSERID)
- sqlId.OrderByDesc("t.APPLICATIONTIME")
- return sqlId.String()
- }
- // GetDataEx 获取签约银行
- func (r *QhjBankAccountSign) GetDataEx() (interface{}, error) {
- sData := make([]QhjBankAccountSign, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjBankInfo 银行信息列表
- type QhjBankInfo struct {
- STATUS int32 `json:"status" xorm:"STATUS"` // 状态 - 0:正常 1:注销
- ORDERINDEX int64 `json:"orderindex" xorm:"ORDERINDEX"` // 排序顺序
- BANKID string `json:"bankid" xorm:"BANKID"` // 银行ID
- BANKNAME string `json:"bankname" xorm:"BANKNAME"` // 银行名称
- CLEARBANKNO string `json:"clearbankno" xorm:"CLEARBANKNO"` // 清算系统银行编号
- }
- func (r *QhjBankInfo) calc() {
- }
- func (r *QhjBankInfo) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.BANKID,t.BANKNAME,t.CLEARBANKNO,t.STATUS,t.ORDERINDEX FROM BANK_BANKINFO t WHERE 1=1 and t.status=0 order by t.orderindex"
- return sqlId.String()
- }
- // GetData 获取银行信息列表
- func (r *QhjBankInfo) GetData() ([]QhjBankInfo, error) {
- sData := make([]QhjBankInfo, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // GetDataEx 获取银行信息列表
- func (r *QhjBankInfo) GetDataEx() (interface{}, error) {
- return r.GetData()
- }
- func (r *QhjBankInfo) buildSql2(cusbankid string) string {
- var sqlId utils.SQLVal = "SELECT t.BANKID,t.BANKNAME,t.CLEARBANKNO,t.STATUS,t.ORDERINDEX FROM BANK_BANKINFO t WHERE 1=1" +
- " and t.status=0 and t.bankid in (select bankid from bank_cusbanksignbank b where b.cusbankid='%v')" +
- " order by t.orderindex"
- sqlId.FormatParam(cusbankid)
- return sqlId.String()
- }
- // GetDataByID 获取银行信息列表By渠道ID
- func (r *QhjBankInfo) GetDataByID(cusbankid string) ([]QhjBankInfo, error) {
- sData := make([]QhjBankInfo, 0)
- err := db.GetEngine().SQL(r.buildSql2(cusbankid)).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjReckonPriceLog 结算价(定投价)
- type QhjReckonPriceLog struct {
- LASTRECKONPRICE float64 `json:"lastreckonprice" xorm:"LASTRECKONPRICE"` // 上日结算价
- NEXTDNLIMITPRICE float64 `json:"nextdnlimitprice" xorm:"NEXTDNLIMITPRICE"` // 下个交易日跌停价
- NEXTUPLIMITPRICE float64 `json:"nextuplimitprice" xorm:"NEXTUPLIMITPRICE"` // 下个交易日涨停价
- RECKONPRICE float64 `json:"reckonprice" xorm:"RECKONPRICE"` // 今日结算价(定投价)
- UPDOWNRATE float64 `json:"updownrate" xorm:"UPDOWNRATE"` // 今日涨跌幅
- UPDOWNRATE_2D float64 `json:"updownrate_2d" xorm:"UPDOWNRATE_2D"` // 连续两日涨跌幅
- UPDOWNRATE_3D float64 `json:"updownrate_3d" xorm:"UPDOWNRATE_3D"` // 连续三日涨跌幅
- TOTALHOLDERQTY int32 `json:"totalholderqty" xorm:"TOTALHOLDERQTY"` // 总持仓数
- TOTALSTOCK int32 `json:"totalstock" xorm:"TOTALSTOCK"` // 总库存
- UPDOWNCOUNT int32 `json:"updowncount" xorm:"UPDOWNCOUNT"` // 连续涨(跌)停天数 (涨跌停标志变为0时值归0,变成涨停或是跌停时值为1,连续涨停天数+1,连续跌停天数+1)
- UPDOWNFLAG int32 `json:"updownflag" xorm:"UPDOWNFLAG"` // 连续涨跌停标志 - 0:无涨跌停 -1:跌停 1:涨停
- GOODSID int64 `json:"goodsid" xorm:"GOODSID" form:"goodsid"` // 商品ID
- NEXTTRADE string `json:"nexttrade" xorm:"NEXTTRADE"` // 下个交易日
- RECKONTIME string `json:"reckontime" xorm:"RECKONTIME"` // 结算时间
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 交易日
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
- }
- func (r *QhjReckonPriceLog) calc() {
- }
- func (r *QhjReckonPriceLog) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.TRADEDATE," +
- " t.GOODSID," +
- " to_char(t.RECKONTIME, 'yyyy-mm-dd hh24:mi:ss') RECKONTIME," +
- " t.LASTRECKONPRICE," +
- " t.RECKONPRICE," +
- " t.UPDOWNRATE," +
- " t.UPDOWNFLAG," +
- " t.UPDOWNCOUNT," +
- " t.UPDOWNRATE_2D," +
- " t.UPDOWNRATE_3D," +
- " t.NEXTTRADE," +
- " t.NEXTUPLIMITPRICE," +
- " t.NEXTDNLIMITPRICE," +
- " t.TOTALHOLDERQTY," +
- " t.TOTALSTOCK," +
- " g.goodsname," +
- " g.decimalplace," +
- " g.goodscode" +
- " FROM RECKON_PRICELOG t" +
- " LEFT JOIN GOODS g on t.goodsid=g.goodsid" +
- " INNER JOIN MARKET m on g.marketid=g.marketid" +
- " WHERE 1 = 1 and m.marketid=69201"
- sqlId.AndEx("t.GOODSID", r.GOODSID, r.GOODSID > 0)
- if r.TRADEDATE != "" {
- sqlId.AndEx("t.TRADEDATE", r.TRADEDATE, len(r.TRADEDATE) > 0)
- } else {
- sqlId.JoinFormat(" and t.TRADEDATE = (select max(TRADEDATE) from RECKON_PRICELOG)")
- }
- return sqlId.String()
- }
- // GetDataEx 获取结算价(定投价)
- func (r *QhjReckonPriceLog) GetDataEx() (interface{}, error) {
- sData := make([]QhjReckonPriceLog, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjCustomer 客户资料
- type QhjCustomer struct {
- USERID int64 `json:"userid" xorm:"'USERID'"` // 用户ID
- MEMBERUSERID int64 `json:"memberuserid" xorm:"'MEMBERUSERID'"` // 所属机构ID(所属会员)
- PARENTUSERID int64 `json:"parentuserid" xorm:"'PARENTUSERID'"` // 上级机构(所属机构)
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 客户类型 1-个人 2-企业
- CUSTOMERNAME string `json:"customername" xorm:"'CUSTOMERNAME'"` // 客户名称
- CARDTYPE int32 `json:"cardtype" xorm:"'CARDTYPE'"` // 证件类型
- CARDNUM string `json:"cardnum" xorm:"'CARDNUM'"` // 证件号码
- MOBILE string `json:"mobile" xorm:"'MOBILE'"` // 手机号码
- TELPHONE string `json:"telphone" xorm:"'TELPHONE'"` // 联系电话
- ADDRESS string `json:"address" xorm:"'ADDRESS'"` // 通讯地址
- REMARK string `json:"remark" xorm:"'REMARK'"` // 备注
- STATUS int32 `json:"status" xorm:"'STATUS'"` // 账户状态 - 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:注销
- STATUSDESC string `json:"statusdesc"` // 账户状态中文描述
- ATTACHMENT1 string `json:"attachment1" xorm:"'ATTACHMENT1'"` // 附件1
- ATTACHMENT2 string `json:"attachment2" xorm:"'ATTACHMENT2'"` // 附件2
- CARDFRONTPHOTOURL string `json:"cardfrontphotourl" xorm:"'CARDFRONTPHOTOURL'"` // 证件正面图片地址
- CARDBACKPHOTOURL string `json:"cardbackphotourl" xorm:"'CARDBACKPHOTOURL'"` // 证件反面图片地址
- PROXYSTATEMENTURL string `json:"proxystatementurl" xorm:"'PROXYSTATEMENTURL'"` // 授权委托书
- COUNTRYID int32 `json:"countryid" xorm:"'COUNTRYID'"` // 国家
- PROVINCEID int32 `json:"provinceid" xorm:"'PROVINCEID'"` // 省
- CITYID int32 `json:"cityid" xorm:"'CITYID'"` // 市
- DISTRICTID int32 `json:"districtid" xorm:"'DISTRICTID'"` // 区域
- CREATETIME string `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
- MODIFYTIME string `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间
- AUDITTIME string `json:"audittime" xorm:"'AUDITTIME'"` // 审核时间
- NICKNAME string `json:"nickname" xorm:"'NICKNAME'"` // 昵称
- TAXPAYERNUM string `json:"taxpayernum" xorm:"'taxpayernum'"` // 纳税人识别号
- LEGALPERSONNAME string `json:"legalpersonname" xorm:"'legalpersonname'"` // 法人姓名(企业)
- CONTACTNAME string `json:"contactname" xorm:"'contactname'"` // 联系人
- EMAIL string `json:"email" xorm:"'EMAIL'"` // 邮件
- USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称
- LOGINCODE string `json:"logincode" xorm:"'LOGINCODE'"` // 登录账号(代码)
- COUNTRYNAME string `json:"countryname"` // 国家名称
- CITYNAME string `json:"cityname"` // 城市名称
- PROVINCENAME string `json:"provincename"` // 省名称
- DISTRICTNAME string `json:"districtname"` // 地区名称
- CARDTYPENAME string `json:"cardtypename"` // 证件类型名称
- MEMBERUSERNAME string `json:"memberusername"` // 所属会员名称
- PARENTUSERNAME string `json:"parentusername"` //所属机构名称
- QUERYTYPE int32 `json:"-"` // 查询类型(1:未提交(网上开户表) 2:待审核(网上开户表) 3:正常 4:停用)
- IncludeSub int32 `json:"-"` // 包子机构客户 1-包含
- }
- func (r *QhjCustomer) calc() {
- r.MEMBERUSERNAME = mtpcache.GetUserNameByUserId(r.MEMBERUSERID)
- if len(r.USERNAME) == 0 {
- r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- }
- r.PARENTUSERNAME = mtpcache.GetUserNameByUserId(r.PARENTUSERID)
- r.COUNTRYNAME = mtpcache.GetDivisionName(r.COUNTRYID)
- r.CITYNAME = mtpcache.GetDivisionName(r.CITYID)
- r.PROVINCENAME = mtpcache.GetDivisionName(r.PROVINCEID)
- r.DISTRICTNAME = mtpcache.GetDivisionName(r.DISTRICTID)
- switch r.QUERYTYPE {
- case 1, 2: // 网上开户表
- r.ADDRESS = DecryptField(r.ADDRESS)
- r.TELPHONE = DecryptField(r.TELPHONE)
- case 3, 4: // 正式表
- r.TELPHONE = DecryptField(r.TELPHONE)
- }
- r.CARDNUM = DecryptField(r.CARDNUM)
- r.MOBILE = DecryptField(r.MOBILE)
- r.EMAIL = DecryptField(r.EMAIL)
- if len(r.LOGINCODE) == 0 {
- r.LOGINCODE = r.MOBILE
- }
- }
- func (r *QhjCustomer) level() int32 {
- if r.IncludeSub > 0 {
- // 层级, 最多20层
- return 20
- }
- return 1
- }
- func (r *QhjCustomer) buildSql() string {
- if r.QUERYTYPE == 1 || r.QUERYTYPE == 2 {
- return r.buildSqlWskh()
- }
- return r.buildSqlNormal()
- }
- func (r *QhjCustomer) buildSqlWskh() string {
- var sqlId utils.SQLVal = "with tmp as" +
- " (select t.userid, wm_concat(t.logincode) logincode" +
- " from loginaccount t" +
- " group by t.userid)" +
- "select a.*" +
- " from (select t.userid," +
- " t.memberareaid MEMBERUSERID," +
- " t.USERINFOTYPE," +
- " t.username," +
- " t.CUSTOMERNAME," +
- " t.NICKNAME," +
- " t.CARDTYPE," +
- " t.CARDNUM," +
- " t.mobilephone MOBILE," +
- " t.TELPHONE," +
- " t.cardaddress ADDRESS," +
- " t.REMARK," +
- " t.ATTACHMENT1," +
- " t.ATTACHMENT2," +
- " t.CARDFRONTPHOTOURL," +
- " t.CARDBACKPHOTOURL," +
- " t.proxystatementurl," +
- " t.userstate status," +
- " t.countryid," +
- " t.provinceid," +
- " t.districtid," +
- " to_char(t.createtime, 'yyyy-mm-dd hh24:mi:ss') createtime," +
- " t.cityid," +
- " to_char(t.modifiedtime, 'yyyy-mm-dd hh24:mi:ss') modifytime," +
- " to_char(t.auditime, 'yyyy-mm-dd hh24:mi:ss') audittime," +
- " t.taxpayernum," +
- " t.legalpersonname," +
- " t.contactname," +
- " t.email," +
- " t.areaid parentuserid," +
- " t.logincode" +
- " from wskh_userinfo t" +
- " start with t.areaid = %v" +
- " connect by prior t.userid = t.areaid" +
- " and t.usertype in(2,6)" +
- " and level <= %v) a" +
- " left join tmp k" +
- " on a.userid = k.userid" +
- " where 1 = 1 and a.status in(%v)"
- status := DecodeStr(r.QUERYTYPE == 1, "1", "2,4,5")
- sqlId.FormatParam(r.USERID, r.level(), status)
- sqlId.AndEx("a.USERINFOTYPE", r.USERINFOTYPE, r.USERINFOTYPE > 0)
- sqlId.JoinEx(len(r.CUSTOMERNAME) > 0, fmt.Sprintf(` and a.customername like '%%%v%%'`, r.CUSTOMERNAME))
- sqlId.JoinEx(len(r.NICKNAME) > 0, fmt.Sprintf(` and a.nickname like '%%%v%%'`, r.NICKNAME))
- return sqlId.String()
- }
- func (r *QhjCustomer) buildSqlNormal() string {
- var sqlId utils.SQLVal = "with tmp as" +
- " (select t.userid, wm_concat(t.logincode) logincode" +
- " from loginaccount t" +
- " group by t.userid)" +
- "select a.*," +
- " k.logincode," +
- " u.USERINFOTYPE," +
- " u.CUSTOMERNAME," +
- " u.NICKNAME," +
- " u.CARDTYPEID CARDTYPE," +
- " e.enumdicname CARDTYPENAME," +
- " u.CARDNUM," +
- " u.MOBILE," +
- " u.TELPHONE," +
- " u.ADDRESS," +
- " u.REMARK," +
- " u.ATTACHMENT1," +
- " u.ATTACHMENT2," +
- " u.CARDFRONTPHOTOURL," +
- " u.CARDBACKPHOTOURL," +
- " u.proxystatementurl," +
- " u.countryid," +
- " u.provinceid," +
- " u.districtid," +
- " u.taxpayernum," +
- " u.legalpersonname," +
- " u.contactname," +
- " u.email," +
- " u.cityid" +
- " from (select t.userid," +
- " t.usertype," +
- " t.parentuserid," +
- " t.memberuserid," +
- " t.accountstatus status," +
- " to_char(t.createtime, 'yyyy-mm-dd hh24:mi:ss') createtime," +
- " to_char(t.modifytime, 'yyyy-mm-dd hh24:mi:ss') modifytime," +
- " to_char(t.audittime, 'yyyy-mm-dd hh24:mi:ss') audittime" +
- " from useraccount t" +
- " start with t.usertype=6 and t.parentuserid = %v" +
- " connect by prior t.userid = t.parentuserid" +
- " and t.usertype = 6" +
- " and level <= %v) a" +
- " left join tmp k" +
- " on a.userid = k.userid" +
- " left join userinfo u" +
- " on a.userid = u.userid" +
- " left join enumdicitem e" +
- " on u.cardtypeid = e.enumitemname" +
- " and e.enumdiccode = 'certificatetype'" +
- " where 1=1 and a.status in(%v)"
- status := DecodeStr(r.QUERYTYPE == 3, "4", "6")
- sqlId.FormatParam(r.USERID, r.level(), status)
- sqlId.AndEx("u.USERINFOTYPE", r.USERINFOTYPE, r.USERINFOTYPE > 0)
- sqlId.JoinEx(len(r.CUSTOMERNAME) > 0, fmt.Sprintf(` and u.customername like '%%%v%%'`, r.CUSTOMERNAME))
- sqlId.JoinEx(len(r.NICKNAME) > 0, fmt.Sprintf(` and u.nickname like '%%%v%%'`, r.NICKNAME))
- return sqlId.String()
- }
- // GetDataEx 获取客户资料
- func (r *QhjCustomer) GetDataEx() (interface{}, error) {
- sData := make([]QhjCustomer, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].QUERYTYPE = r.QUERYTYPE
- sData[i].calc()
- }
- return sData, err
- }
- // QhjCusBankInfo 托管银行信息
- type QhjCusBankInfo struct {
- CUSBANKID string `json:"cusbankid" xorm:"CUSBANKID"` // 托管银行编号(对应清算中心TRAN_NO)
- CUSBANKNAME string `json:"cusbankname" xorm:"CUSBANKNAME"` // 银行业务名称
- CUSBANKSHORTNAME string `json:"cusbankshortname" xorm:"CUSBANKSHORTNAME"` // 银行业务简称
- EXCHBANKID string `json:"exchbankid" xorm:"EXCHBANKID"` // 交易所开户银行ID
- EXCHPAYBANKACCNO string `json:"exchpaybankaccno" xorm:"EXCHPAYBANKACCNO"` // 交易所支出结算账户
- EXCHPAYBANKACCNAME string `json:"exchpaybankaccname" xorm:"EXCHPAYBANKACCNAME"` // 交易所支出结算账户户名
- CURRENCY string `json:"currency" xorm:"CURRENCY"` // 币种
- CANSIGN int32 `json:"cansign" xorm:"CANSIGN"` // 是否可签约 - 0:不可 1:可以
- CANRELEASE int32 `json:"canrelease" xorm:"CANRELEASE"` // 是否可解约 - 0:不可 1:可以
- CANINAMOUNT int32 `json:"caninamount" xorm:"CANINAMOUNT"` // 是否可入金 - 0:不可 1:可以
- CANOUTAMOUNT int32 `json:"canoutamount" xorm:"CANOUTAMOUNT"` // 是否可出金 - 0:不可 1:可以
- RISKINFO string `json:"riskinfo" xorm:"RISKINFO"` // 签约风险提示书
- CANSIGN2 int32 `json:"cansign2" xorm:"CANSIGN2"` // 是否可签约(网银端) - 0:不可 1:可以
- CANRELEASE2 int32 `json:"canrelease2" xorm:"CANRELEASE2"` // 是否可解约(网银端) - 0:不可 1:可以
- CANINAMOUNT2 int32 `json:"caninamount2" xorm:"CANINAMOUNT2"` // 是否可入金(网银端) - 0:不可 1:可以
- CANOUTAMOUNT2 int32 `json:"canoutamount2" xorm:"CANOUTAMOUNT2"` // 是否可出金(网银端) - 0:不可 1:可以
- CANBINDCARD int32 `json:"canbindcard" xorm:"CANBINDCARD"` // 是否可绑卡与解卡 - 0:不可 1:可以
- ISNEEDCLEAR int32 `json:"isneedclear" xorm:"ISNEEDCLEAR"` // 是否需要清算 - 0:不需要 1:需要
- CANMODIFYPHONE int32 `json:"canmodifyphone" xorm:"CANMODIFYPHONE"` // 是否可修改手机号 - 0:不可 1:可以
- CANMODIFYSIGNINFO int32 `json:"canmodifysigninfo" xorm:"CANMODIFYSIGNINFO"` // 是否可修改签约信息 - 0:不可 1:可以
- ISNEEDCHECK int32 `json:"isneedcheck" xorm:"ISNEEDCHECK"` // 是否需要对账 - 0:需要 1:不需要 [不需要界面配置]
- CANMODIFYBANKCARD int32 `json:"canmodifybankcard" xorm:"CANMODIFYBANKCARD"` // 是否可修改银行卡号 - 0:不可 1:可以
- CANALLOT int32 `json:"canallot" xorm:"CANALLOT"` // 是否支持跨行调拨 - 0:不支持 1:支持
- CANALLOTQUERY int32 `json:"canallotquery" xorm:"CANALLOTQUERY"` // 是否支持跨行调拨查询 - 0:不支持 1:支持
- ISMIX int32 `json:"ismix" xorm:"ISMIX"` // 是否混合渠道 - 0:否 1:是
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- SIGNSTATUS int32 `json:"signstatus" xorm:"SIGNSTATUS"` // 当前签到/签退状态 - 1:签到 2:签退
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 当前签到/签退更新时间
- LASTSIGNINTIME string `json:"lastsignintime" xorm:"LASTSIGNINTIME"` // 最后签到时间
- LASTSIGNOUTTIME string `json:"lastsignouttime" xorm:"LASTSIGNOUTTIME"` // 最后签退时间
- LASTCHECKTIME string `json:"lastchecktime" xorm:"LASTCHECKTIME"` // 最后对账时间
- LASTCHECKSTATUS int32 `json:"lastcheckstatus" xorm:"LASTCHECKSTATUS"` // 最后对账状态 - 对账状态 - 1:未对账 2:对账成功 3:对账失败
- LASTCLEARTIME string `json:"lastcleartime" xorm:"LASTCLEARTIME"` // 最后清算时间
- LASTCLEARSTATUS int32 `json:"lastclearstatus" xorm:"LASTCLEARSTATUS"` // 最后清算状态 - 1:未清算 2:清算成功 3:清算失败 4:清算部分成功
- }
- func (r *QhjCusBankInfo) calc() {
- }
- func (r *QhjCusBankInfo) buildSql() string {
- var sqlId utils.SQLVal = "with tmp as" +
- " (select *" +
- " from (select row_number() over(partition by t.cusbankid order by t.tradedate desc) cn," +
- " t.CUSBANKID id2," +
- " t.TRADEDATE," +
- " t.SIGNSTATUS," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " to_char(t.LASTSIGNINTIME, 'yyyy-mm-dd hh24:mi:ss') LASTSIGNINTIME," +
- " to_char(t.LASTSIGNOUTTIME, 'yyyy-mm-dd hh24:mi:ss') LASTSIGNOUTTIME," +
- " to_char(t.LASTCHECKTIME, 'yyyy-mm-dd hh24:mi:ss') LASTCHECKTIME," +
- " t.LASTCHECKSTATUS," +
- " to_char(t.LASTCLEARTIME, 'yyyy-mm-dd hh24:mi:ss') LASTCLEARTIME," +
- " t.LASTCLEARSTATUS" +
- " from bank_cusbankstatus t)" +
- " where cn = 1)" +
- "SELECT t.CUSBANKID," +
- " t.CUSBANKNAME," +
- " t.CUSBANKSHORTNAME," +
- " t.EXCHBANKID," +
- " t.EXCHPAYBANKACCNO," +
- " t.EXCHPAYBANKACCNAME," +
- " t.CURRENCY," +
- " t.CANSIGN," +
- " t.CANRELEASE," +
- " t.CANINAMOUNT," +
- " t.CANOUTAMOUNT," +
- " to_char(t.RISKINFO) RISKINFO," +
- " t.CANSIGN2," +
- " t.CANRELEASE2," +
- " t.CANINAMOUNT2," +
- " t.CANOUTAMOUNT2," +
- " t.CANBINDCARD," +
- " t.ISNEEDCLEAR," +
- " t.CANMODIFYPHONE," +
- " t.CANMODIFYSIGNINFO," +
- " t.ISNEEDCHECK," +
- " t.CANMODIFYBANKCARD," +
- " t.CANALLOT," +
- " t.CANALLOTQUERY," +
- " t.ISMIX," +
- " tmp.*" +
- " FROM BANK_CUSBANKINFO t" +
- " LEFT JOIN tmp" +
- " on t.cusbankid = tmp.id2" +
- " WHERE 1 = 1"
- return sqlId.String()
- }
- // GetData 获取托管银行信息
- func (r *QhjCusBankInfo) GetData() ([]QhjCusBankInfo, error) {
- sData := make([]QhjCusBankInfo, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // GetDataEx 获取托管银行信息
- func (r *QhjCusBankInfo) GetDataEx() (interface{}, error) {
- return r.GetData()
- }
- func (r *QhjCusBankInfo) buildSql2(areauserid int64, configtype int) string {
- var sqlId utils.SQLVal = "with tmp as" +
- " (select *" +
- " from (select row_number() over(partition by t.cusbankid order by t.tradedate desc) cn," +
- " t.CUSBANKID id2," +
- " t.TRADEDATE," +
- " t.SIGNSTATUS," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " to_char(t.LASTSIGNINTIME, 'yyyy-mm-dd hh24:mi:ss') LASTSIGNINTIME," +
- " to_char(t.LASTSIGNOUTTIME, 'yyyy-mm-dd hh24:mi:ss') LASTSIGNOUTTIME," +
- " to_char(t.LASTCHECKTIME, 'yyyy-mm-dd hh24:mi:ss') LASTCHECKTIME," +
- " t.LASTCHECKSTATUS," +
- " to_char(t.LASTCLEARTIME, 'yyyy-mm-dd hh24:mi:ss') LASTCLEARTIME," +
- " t.LASTCLEARSTATUS" +
- " from bank_cusbankstatus t)" +
- " where cn = 1)" +
- "SELECT t.CUSBANKID," +
- " t.CUSBANKNAME," +
- " t.CUSBANKSHORTNAME," +
- " t.EXCHBANKID," +
- " t.EXCHPAYBANKACCNO," +
- " t.EXCHPAYBANKACCNAME," +
- " t.CURRENCY," +
- " t.CANSIGN," +
- " t.CANRELEASE," +
- " t.CANINAMOUNT," +
- " t.CANOUTAMOUNT," +
- " to_char(t.RISKINFO) RISKINFO," +
- " t.CANSIGN2," +
- " t.CANRELEASE2," +
- " t.CANINAMOUNT2," +
- " t.CANOUTAMOUNT2," +
- " t.CANBINDCARD," +
- " t.ISNEEDCLEAR," +
- " t.CANMODIFYPHONE," +
- " t.CANMODIFYSIGNINFO," +
- " t.ISNEEDCHECK," +
- " t.CANMODIFYBANKCARD," +
- " t.CANALLOT," +
- " t.CANALLOTQUERY," +
- " t.ISMIX," +
- " tmp.*" +
- " FROM BANK_CUSBANKINFO t" +
- " LEFT JOIN tmp on t.cusbankid = tmp.id2" +
- " INNER JOIN tce_areacusbankconfig ta on t.cusbankid = ta.cusbankid" +
- " WHERE 1 = 1"
- sqlId.And("ta.areauserid", areauserid)
- sqlId.And("ta.configtype", configtype)
- return sqlId.String()
- }
- // GetAreaData 获取机构托管银行信息
- func (r *QhjCusBankInfo) GetAreaData(areauserid int64, configtype int) ([]QhjCusBankInfo, error) {
- sData := make([]QhjCusBankInfo, 0)
- err := db.GetEngine().SQL(r.buildSql2(areauserid, configtype)).Find(&sData)
- return sData, err
- }
- // QhjCusBankSignBank 托管银行签约关系
- type QhjCusBankSignBank struct {
- CUSBANKID string `json:"cusbankid" xorm:"CUSBANKID"` // 托管银行ID
- BANKID string `json:"bankid" xorm:"BANKID"` // 银行ID
- }
- func (r *QhjCusBankSignBank) calc() {
- }
- func (r *QhjCusBankSignBank) buildSql() string {
- var sqlId utils.SQLVal = "select t.* from bank_cusbanksignbank t left join Bank_BankInfo c on t.bankid = c.bankid order by t.cusbankid, c.orderindex"
- return sqlId.String()
- }
- // GetData 获取托管银行签约关系
- func (r *QhjCusBankSignBank) GetData() ([]QhjCusBankSignBank, error) {
- sData := make([]QhjCusBankSignBank, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // GetDataEx 获取托管银行签约关系
- func (r *QhjCusBankSignBank) GetDataEx() (interface{}, error) {
- return r.GetData()
- }
- // QhjCusBankSignBankEx 托管银行签约银行详细
- type QhjCusBankSignBankEx struct {
- QhjCusBankInfo
- Banklst []QhjBankInfo // 银行列表
- }
- // GetDataEx 获取托管银行签约银行详细
- func (r *QhjCusBankSignBankEx) GetDataEx() (interface{}, error) {
- sData := make([]QhjCusBankSignBankEx, 0)
- a := QhjCusBankSignBank{}
- relateData, _ := a.GetData()
- if len(relateData) == 0 {
- return sData, nil
- }
- b := QhjCusBankInfo{}
- bData, _ := b.GetData()
- c := QhjBankInfo{}
- cData, _ := c.GetData()
- for _, vb := range bData {
- // 托管银行
- v := QhjCusBankSignBankEx{QhjCusBankInfo: vb, Banklst: make([]QhjBankInfo, 0)}
- for _, vr := range relateData {
- // 托管关系
- if vb.CUSBANKID == vr.CUSBANKID {
- for _, vc := range cData {
- if vc.BANKID == vr.BANKID {
- v.Banklst = append(v.Banklst, vc)
- }
- }
- }
- }
- if len(v.Banklst) > 0 {
- sData = append(sData, v)
- }
- }
- return sData, nil
- }
- // MemberCusBankInfo 机构托管银行签约银行详细
- type MemberCusBankInfo struct {
- QhjCusBankInfo
- Banklst []QhjBankInfo // 银行列表
- MEMBERUSERID int64 `json:"-" form:"MEMBERUSERID"` // 所属机构ID
- CONFIGTYPE int `json:"-" form:"CONFIGTYPE"` // 配置类型
- }
- // GetDataEx 获取机构托管银行签约银行详细
- func (r *MemberCusBankInfo) GetDataEx() (interface{}, error) {
- sData := make([]MemberCusBankInfo, 0)
- // 获取机构渠道配置
- b := QhjCusBankInfo{}
- bData, _ := b.GetAreaData(r.MEMBERUSERID, r.CONFIGTYPE)
- for _, vb := range bData {
- // 托管银行
- v := MemberCusBankInfo{QhjCusBankInfo: vb}
- // 获取渠道对应银行
- c := QhjBankInfo{}
- cData, _ := c.GetDataByID(vb.CUSBANKID)
- v.Banklst = cData
- sData = append(sData, v)
- }
- return sData, nil
- }
- // QhjSiteColumnDetail 资讯
- type QhjSiteColumnDetail struct {
- ID int64 `json:"id" xorm:"ID"` // ID(SEQ_SITE_COLUMNDETAIL)
- COLUMNID int64 `json:"columnid" xorm:"COLUMNID"` // 所属栏目
- USERID int64 `json:"userid" xorm:"USERID"` // 用户ID(默认为0, 核心为为机构用户ID)
- TITLE string `json:"title" xorm:"TITLE"` // 标题
- COVERIMAGE string `json:"coverimage" xorm:"COVERIMAGE"` // 封面图片
- AUTHOR string `json:"author" xorm:"AUTHOR"` // 作者
- BRIEF string `json:"brief" xorm:"BRIEF"` // 简介
- CONTEXT string `json:"context" xorm:"CONTEXT"` // 内容
- STATUS int32 `json:"status" xorm:"STATUS"` // 状态 - 1:暂存 10:待审核 20:审核通过 30:审核拒绝
- ISTOP int32 `json:"istop" xorm:"ISTOP"` // 是否置顶 - 0:不置 1:置顶
- HITS int64 `json:"hits" xorm:"HITS"` // 点击数
- PUBLISHDATE string `json:"publishdate" xorm:"PUBLISHDATE"` // 发布日期
- CREAEDATE string `json:"creaedate" xorm:"CREAEDATE"` // 创建时间
- CREATORID int64 `json:"creatorid" xorm:"CREATORID"` // 创建人
- UPDATEDATE string `json:"updatedate" xorm:"UPDATEDATE"` // 修改时间
- MODIFIERID int64 `json:"modifierid" xorm:"MODIFIERID"` // 操作人
- ISSHOW int32 `json:"isshow" xorm:"ISSHOW"` // 是否展示 - 0:不展示 1:展示
- SRCID string `json:"srcid" xorm:"SRCID"` // 来源ID
- SRCNAME string `json:"srcname" xorm:"SRCNAME"` // 来源名称
- SRCURL string `json:"srcurl" xorm:"SRCURL"` // 来源网址
- SRCLOGO string `json:"srclogo" xorm:"SRCLOGO"` // 来源LOGO
- USERNAME string `json:"username"` // 用户名称
- }
- func (r *QhjSiteColumnDetail) calc() {
- if r.USERID > 0 {
- r.USERNAME = mtpcache.GetUserNameByUserId(r.USERID)
- }
- }
- func (r *QhjSiteColumnDetail) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.ID," +
- " t.COLUMNID," +
- " t.USERID," +
- " t.TITLE," +
- " t.COVERIMAGE," +
- " t.AUTHOR," +
- " t.BRIEF," +
- " to_char(t.CONTEXT) CONTEXT," +
- " t.STATUS," +
- " t.ISTOP," +
- " t.HITS," +
- " to_char(t.PUBLISHDATE, 'yyyy-mm-dd hh24:mi:ss') PUBLISHDATE," +
- " to_char(t.CREAEDATE, 'yyyy-mm-dd hh24:mi:ss') CREAEDATE," +
- " t.CREATORID," +
- " to_char(t.UPDATEDATE, 'yyyy-mm-dd hh24:mi:ss') UPDATEDATE," +
- " t.MODIFIERID," +
- " GM.MEMBERID SRCID," +
- " GM.MEMBERNAME SRCNAME," +
- " GM.MEMBERTAGS SRCURL," +
- " GM.IMAGEURL SRCLOGO," +
- " t.ISSHOW" +
- " FROM SITE_COLUMNDETAIL t" +
- " LEFT JOIN GZ_MEMBERINFO GM ON T.SRCID = GM.MEMBERID" +
- " WHERE 1 = 1"
- sqlId.And("t.USERID", r.USERID)
- return sqlId.String()
- }
- // GetDataEx 获取资讯
- func (r *QhjSiteColumnDetail) GetDataEx() (interface{}, error) {
- sData := make([]QhjSiteColumnDetail, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjAccountOutInApply 充值提现(出入金)
- type QhjAccountOutInApply struct {
- EXECUTETYPE int32 `json:"executetype" xorm:"EXECUTETYPE"` // 申请类型 - 1:出金 2:入金 3: 单边账调整:入金; 4:单边账调整:出金 5:外部母账户调整:入金 6:外部母账户调整:出金 7:外部子账户:入金 8:外部子账户:出金
- AMOUNT float64 `json:"amount" xorm:"AMOUNT"` // 金额
- CURRENCY string `json:"currency" xorm:"CURRENCY"` // 币种
- CHARGE float64 `json:"charge" xorm:"CHARGE"` // 手续费
- ACCOUNTPWD string `json:"accountpwd" xorm:"ACCOUNTPWD"` // 资金密码
- UPDATETIME string `json:"updatetime" xorm:"UPDATETIME"` // 更新时间(申请时间)
- BANKID string `json:"bankid" xorm:"BANKID"` // 银行编号
- BRANCHBANKID string `json:"branchbankid" xorm:"BRANCHBANKID"` // 银行支行号
- BRANCHBANKNAME string `json:"branchbankname" xorm:"BRANCHBANKNAME"` // 银行支行名称
- BANKACCOUNTNO string `json:"bankaccountno" xorm:"BANKACCOUNTNO"` // 银行卡号
- BANKACCOUNTNAME string `json:"bankaccountname" xorm:"BANKACCOUNTNAME"` // 银行账户名
- EXTENDINFO string `json:"extendinfo" xorm:"EXTENDINFO"` // 扩展信息
- AUDITID int64 `json:"auditid" xorm:"AUDITID"` // 审核人
- AUDITTIME string `json:"audittime" xorm:"AUDITTIME"` // 审核时间
- REMARK string `json:"remark" xorm:"REMARK"` // 备注
- NETADDR string `json:"netaddr" xorm:"NETADDR"` // 调转网址
- ACCOUNTTICKET string `json:"accountticket" xorm:"ACCOUNTTICKET"` // 最新账户服务流水号
- CHECKERRORFLAG int32 `json:"checkerrorflag" xorm:"CHECKERRORFLAG"` // 对账差错标志 - 1:为单边账;其它为正常出入金
- REMARK2 string `json:"remark2" xorm:"REMARK2"` // 备注(失败原因)
- REAUDITID int64 `json:"reauditid" xorm:"REAUDITID"` // 复审人
- REAUDITTIME string `json:"reaudittime" xorm:"REAUDITTIME"` // 复审时间
- REAUDITREMARK string `json:"reauditremark" xorm:"REAUDITREMARK"` // 复审备注
- APPLYREMARK string `json:"applyremark" xorm:"APPLYREMARK"` // 申请备注
- RELATEDORDERID string `json:"relatedorderid" xorm:"RELATEDORDERID"` // 三方关联ID
- CAPAMOUNTOUT float64 `json:"capamountout" xorm:"CAPAMOUNTOUT"` // 出金(劣后本金) - 外部子账户
- INFAMOUNT float64 `json:"infamount" xorm:"INFAMOUNT"` // 劣后金额(自有)
- PRIAMOUNT float64 `json:"priamount" xorm:"PRIAMOUNT"` // 优先金额(授信)
- BANK_APPLY_TICKET string `json:"bank_apply_ticket" xorm:"BANK_APPLY_TICKET"` // 银行申请流水
- CERTIFICATEPHOTOURL string `json:"certificatephotourl" xorm:"CERTIFICATEPHOTOURL"` // 凭证地址
- SOUCREAMOUNT float64 `json:"soucreamount" xorm:"SOUCREAMOUNT"` // 原始出入金金额
- SOUCRECURRENCYID int64 `json:"soucrecurrencyid" xorm:"SOUCRECURRENCYID"` // 原始出入金币种
- ACCOUNTCODE string `json:"accountcode" xorm:"ACCOUNTCODE"` // 资金账号
- CUSBANKID string `json:"cusbankid" xorm:"CUSBANKID"` // 托管银行编号
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- EXCHTICKET string `json:"exchticket" xorm:"EXCHTICKET"` // 银行服务流水号
- EXTOPERATEID int64 `json:"extoperateid" xorm:"EXTOPERATEID"` // 交易服务流水号
- BANKTICKET string `json:"bankticket" xorm:"BANKTICKET"` // 银行流水
- APPLYSTATUS int32 `json:"applystatus" xorm:"APPLYSTATUS"` // 申请状态 - 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: 复审通过,账户冻结金额检查中;
- USERID int64 `json:"userid" xorm:"'USERID'"` // 用户id
- LOGINCODE string `json:"logincode" xorm:"'LOGINCODE'"` // 登录账号(账号)
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 账户类型 1-个人 2-企业
- ACCOUNTNAME string `json:"accountname" xorm:"'ACCOUNTNAME'"` // 用户名称(名称)
- MOBILE string `json:"-" xorm:"'MOBILE'"` // 手机号
- BANKNAME string `json:"bankname" xorm:"BANKNAME"` // 银行名称
- CUSBANKNAME string `json:"cusbankname" xorm:"CUSBANKNAME"` // 托管银行名称
- CUSBANKSHORTNAME string `json:"cusbankshortname" xorm:"CUSBANKSHORTNAME"` // 托管银行简称
- BeginDate string `json:"-"` // 开始日期(yyyymmdd)
- EndDate string `json:"-"` // 结束日期(yyyymmdd)
- FilterName string `json:"-"` // 账户(模糊匹配)
- QUERYTYPE int32 `json:"-"` // 查询类型 1-提现 2-充值
- STATUS int32 `json:"-"` // 查询状态 1-待审核 2-审核通过 3-审核拒绝
- }
- func (r *QhjAccountOutInApply) calc() {
- r.BANKACCOUNTNAME = DecryptField(r.BANKACCOUNTNAME)
- r.BANKACCOUNTNO = DecryptField(r.BANKACCOUNTNO)
- if len(r.LOGINCODE) == 0 {
- r.LOGINCODE = DecryptField(r.MOBILE)
- }
- }
- func (r *QhjAccountOutInApply) buildSql() string {
- var sqlId utils.SQLVal = "with tmp as(select t.userid, wm_concat(t.logincode) logincode from loginaccount t group by t.userid)" +
- "SELECT t.EXECUTETYPE," +
- " t.AMOUNT," +
- " t.CURRENCY," +
- " t.CHARGE," +
- " t.ACCOUNTPWD," +
- " to_char(t.UPDATETIME, 'yyyy-mm-dd hh24:mi:ss') UPDATETIME," +
- " t.BANKID," +
- " t.BRANCHBANKID," +
- " t.BRANCHBANKNAME," +
- " t.BANKACCOUNTNO," +
- " t.BANKACCOUNTNAME," +
- " t.EXTENDINFO," +
- " t.AUDITID," +
- " to_char(t.AUDITTIME, 'yyyy-mm-dd hh24:mi:ss') AUDITTIME," +
- " t.REMARK," +
- " t.NETADDR," +
- " t.ACCOUNTTICKET," +
- " t.CHECKERRORFLAG," +
- " t.REMARK2," +
- " t.REAUDITID," +
- " to_char(t.REAUDITTIME, 'yyyy-mm-dd hh24:mi:ss') REAUDITTIME," +
- " t.REAUDITREMARK," +
- " t.APPLYREMARK," +
- " t.RELATEDORDERID," +
- " t.CAPAMOUNTOUT," +
- " t.INFAMOUNT," +
- " t.PRIAMOUNT," +
- " t.BANK_APPLY_TICKET," +
- " to_char(t.CERTIFICATEPHOTOURL) CERTIFICATEPHOTOURL," +
- " t.SOUCREAMOUNT," +
- " t.SOUCRECURRENCYID," +
- " t.ACCOUNTCODE," +
- " t.CUSBANKID," +
- " t.TRADEDATE," +
- " t.EXCHTICKET," +
- " t.EXTOPERATEID," +
- " t.BANKTICKET," +
- " t.APPLYSTATUS," +
- " u.userid," +
- " u.accountname," +
- " ui.userinfotype," +
- " ui.mobile," +
- " tmp.logincode," +
- " bb.bankname," +
- " bc.CUSBANKNAME," +
- " bc.CUSBANKSHORTNAME" +
- " FROM BANK_ACCOUNTOUTINAPPLY t" +
- " INNER JOIN TAACCOUNT ta on t.accountcode=to_char(ta.accountid)" +
- " INNER JOIN USERACCOUNT u on ta.relateduserid=u.userid" +
- " INNER JOIN USERINFO ui on u.userid=ui.userid" +
- " INNER JOIN BANK_CUSBANKINFO bc on bc.cusbankid=t.CUSBANKID" +
- " LEFT JOIN tmp on u.userid=tmp.userid" +
- " LEFT JOIN bank_bankinfo bb ON bb.bankid=t.bankid" +
- " WHERE 1 = 1"
- sqlId.And("u.userid", r.USERID)
- sqlId.AndEx("t.EXECUTETYPE", r.QUERYTYPE, r.QUERYTYPE > 0)
- switch r.STATUS {
- case 1:
- sqlId.JoinFormat(" and t.APPLYSTATUS in(%v)", InStr(1, 2))
- case 2:
- sqlId.JoinFormat(" and t.APPLYSTATUS in(%v)", InStr(11, 18, 24, 25))
- case 3:
- sqlId.JoinFormat(" and t.APPLYSTATUS in(%v)", InStr(3, 12, 21))
- }
- if len(r.BeginDate) > 0 {
- sqlId.Join(fmt.Sprintf(" and t.UPDATETIME >= to_date(%v,'yyyymmdd')", r.BeginDate))
- }
- if len(r.EndDate) > 0 {
- sqlId.Join(fmt.Sprintf(" and t.UPDATETIME <= to_date(%v,'yyyymmdd')", r.EndDate))
- }
- if len(r.FilterName) > 0 {
- sqlId.Join(fmt.Sprintf(" and (tmp.logincode like '%%%v%%' or u.accountname like '%%%v%%')", r.FilterName, r.FilterName))
- }
- sqlId.OrderByDesc("t.updatetime")
- return sqlId.String()
- }
- // GetDataEx 获取充值提现(出入金)
- func (r *QhjAccountOutInApply) GetDataEx() (interface{}, error) {
- sData := make([]QhjAccountOutInApply, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- type DBINT64 int64
- func (r *DBINT64) FromDB(bytes []byte) error {
- d, err := strconv.ParseInt(string(bytes), 10, 64)
- if err == nil {
- *r = DBINT64(d)
- }
- return err
- }
- func (r *DBINT64) ToDB() ([]byte, error) {
- d := strconv.FormatInt(int64(*r), 10)
- return []byte(d), nil
- }
- // QhjPayOrder 待付款单据
- type QhjPayOrder struct {
- OPERATETYPE int32 `json:"operatetype" xorm:"OPERATETYPE"` // 买委托操作类型 - 1:正常下单 16:融资买入
- TRADEID string `json:"tradeid" xorm:"TRADEID"` // 成交单号(101+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- BUYORDERID string `json:"buyorderid" xorm:"BUYORDERID"` // 买方委托单号
- BUYACCOUNTID int64 `json:"buyaccountid" xorm:"BUYACCOUNTID"` // 买方账号ID[报价币种]
- SELLORDERID string `json:"sellorderid" xorm:"SELLORDERID"` // 卖方委托单号
- SELLACCOUNTID int64 `json:"sellaccountid" xorm:"SELLACCOUNTID"` // 卖方账号ID[报价币种]
- TRADEAMOUNT float64 `json:"tradeamount" xorm:"TRADEAMOUNT"` // 成交金额(优惠后金额)
- TRADECHARGE float64 `json:"tradecharge" xorm:"TRADECHARGE"` // 成交手续费(买方)
- PAYFLAG int32 `json:"payflag" xorm:"PAYFLAG"` // 付款标识 - 1:未支付 2:已支付 3:已过期 4:已撤销 5:结算过期 6:预售终止
- CREATETIME string `json:"createtime" xorm:"CREATETIME"` // 创建时间
- PAYTIME string `json:"paytime" xorm:"PAYTIME"` // 付款时间
- PAYLIMITEDTIME string `json:"paylimitedtime" xorm:"PAYLIMITEDTIME"` // 支付期限
- OFFAMOUNT float64 `json:"offamount" xorm:"OFFAMOUNT"` // 优惠金额
- TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格
- TRADEQTY float64 `json:"tradeqty" xorm:"TRADEQTY"` // 成交数量
- PAYAMOUNT float64 `json:"payamount" xorm:"PAYAMOUNT"` // 支付金额
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- GOODUNITID int32 `json:"goodunitid" xorm:"'GOODUNITID'"` // 商品单位id
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 商品报价小数位
- QTYDECIMALPLACE int `json:"qtydecimalplace" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
- ADVANCERATIO float64 `json:"advanceratio" xorm:"ADVANCERATIO"` // 首付比率
- ENUMDICNAME string `json:"enumdicname"` // 单位名称
- FilterPayFlag string `json:"-"` // 付款标识筛选
- }
- func (r *QhjPayOrder) calc() {
- r.ENUMDICNAME = mtpcache.GetEnumDicitemName(r.GOODUNITID)
- zoomFun := NewZoomFun(r.QTYDECIMALPLACE)
- zoomFun(&r.TRADEQTY)
- }
- func (r *QhjPayOrder) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.OPERATETYPE," +
- " to_char(t.TRADEID) TRADEID," +
- " t.TRADEDATE," +
- " t.MARKETID," +
- " t.GOODSID," +
- " to_char(t.BUYORDERID) BUYORDERID," +
- " t.BUYACCOUNTID," +
- " to_char(t.SELLORDERID) SELLORDERID," +
- " t.SELLACCOUNTID," +
- " t.TRADEAMOUNT," +
- " t.TRADECHARGE," +
- " t.PAYFLAG," +
- " to_char(t.CREATETIME, 'yyyy-mm-dd hh24:mi:ss') CREATETIME," +
- " to_char(t.PAYTIME, 'yyyy-mm-dd hh24:mi:ss') PAYTIME," +
- " to_char(t.PAYLIMITEDTIME, 'yyyy-mm-dd hh24:mi:ss') PAYLIMITEDTIME," +
- " t.OFFAMOUNT," +
- " t.TRADEPRICE," +
- " t.TRADEQTY," +
- " t.PAYAMOUNT," +
- " t.ADVANCERATIO," +
- " g.goodscode," +
- " g.decimalplace," +
- " g.qtydecimalplace," +
- " g.goodunitid," +
- " g.goodsname" +
- " FROM TRADE_PAYORDER t" +
- " LEFT JOIN GOODS g on t.goodsid=g.goodsid" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.BUYACCOUNTID", r.BUYACCOUNTID, r.BUYACCOUNTID > 0)
- sqlId.AndEx("t.TRADEID", r.TRADEID, len(r.TRADEID) > 0)
- //sqlId.AndEx("t.PAYFLAG", r.PAYFLAG, r.PAYFLAG > 0)
- sqlId.JoinEx(r.FilterPayFlag != "", fmt.Sprintf(" and t.PAYFLAG in(%v)", r.FilterPayFlag))
- return sqlId.String()
- }
- // GetDataEx 获取待付款单据
- func (r *QhjPayOrder) GetDataEx() (interface{}, error) {
- sData := make([]QhjPayOrder, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // Qhjgoodsex 交易商品扩展表(千海金)
- type Qhjgoodsex struct {
- Goodsid int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID(自增ID SEQ_GOODS)
- Minamount float64 `json:"minamount" xorm:"MINAMOUNT"` // 最小购买金额
- Canfinance int32 `json:"canfinance" xorm:"CANFINANCE"` // 是否支持融资 - 0:不支持 1:支持【69:铂金宝】
- Canregularlybuy int32 `json:"canregularlybuy" xorm:"CANREGULARLYBUY"` // 是否支持定投 - 0:不支持 1:支持【69:铂金宝】
- Regularlybuyminqty float64 `json:"regularlybuyminqty" xorm:"REGULARLYBUYMINQTY"` // 定投最小数量
- Regularlybuyminamount float64 `json:"regularlybuyminamount" xorm:"REGULARLYBUYMINAMOUNT"` // 定投最小金额
- Deliverygoodsid int32 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID
- Wrstandardid int32 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
- Spotgoodsbrandid int32 `json:"spotgoodsbrandid" xorm:"SPOTGOODSBRANDID"` // 现货品牌ID - 存“DGFactoryItem”表"DGFactoryItemID"
- Defaulttradeuserid int64 `json:"defaulttradeuserid" xorm:"DEFAULTTRADEUSERID"` // 默认交易用户ID
- VISIBILITYFORPERSONAL int32 `json:"visibilityforpersonal" xorm:"'VISIBILITYFORPERSONAL'"` // 个人客户是否可见 - 0:不可见 1:可见
- VISIBILITYFORENTERPRISE int32 `json:"visibilityforenterprise" xorm:"'VISIBILITYFORENTERPRISE'"` // 企业客户是否可见 - 0:不可见 1:可见
- }
- func (r *Qhjgoodsex) calc() {
- }
- func (r *Qhjgoodsex) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.GOODSID," +
- " t.MINAMOUNT," +
- " t.CANFINANCE," +
- " t.CANREGULARLYBUY," +
- " t.REGULARLYBUYMINQTY / power(10,nvl(g.qtydecimalplace,0)) REGULARLYBUYMINQTY," +
- " t.REGULARLYBUYMINAMOUNT," +
- " t.DELIVERYGOODSID," +
- " t.WRSTANDARDID," +
- " t.SPOTGOODSBRANDID," +
- " t.DEFAULTTRADEUSERID," +
- " t.VISIBILITYFORPERSONAL," +
- " t.VISIBILITYFORENTERPRISE" +
- " FROM QHJ_GOODSEX t" +
- " LEFT JOIN GOODS g on t.goodsid=g.goodsid" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.GOODSID", r.Goodsid, r.Goodsid > 0)
- return sqlId.String()
- }
- // GetDataEx 获取交易商品扩展表(千海金)
- func (r *Qhjgoodsex) GetDataEx() (interface{}, error) {
- sData := make([]Qhjgoodsex, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjParentAreaList 所属机构列表
- type QhjParentAreaList struct {
- USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
- USERTYPE int32 `json:"usertype" xorm:"USERTYPE"` // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
- ACCOUNTNAME string `json:"accountname" xorm:"ACCOUNTNAME"` // 账户名称(机构名称)
- }
- func (r *QhjParentAreaList) calc() {
- }
- func (r *QhjParentAreaList) buildSql() string {
- var sqlId utils.SQLVal = "select t.userid, t.accountname, t.usertype" +
- " from useraccount t" +
- " where 1 = 1" +
- " and t.accountstatus = 4" +
- " and t.usertype = 2"
- sqlId.JoinFormat(" and t.subarealevelpath like '%%,%v,%%'", r.USERID)
- sqlId.Join(" order by t.userid")
- return sqlId.String()
- }
- // GetDataEx 获取所属机构列表
- func (r *QhjParentAreaList) GetDataEx() (interface{}, error) {
- sData := make([]QhjParentAreaList, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjAreaFinanceConfig 企业配置表
- type QhjAreaFinanceConfig struct {
- ADDITIONALRATIO float64 `json:"additionalratio" xorm:"ADDITIONALRATIO" form:"additionalratio"` // 追加款比例
- ADVANCERATIO float64 `json:"advanceratio" xorm:"ADVANCERATIO" form:"advanceratio"` // 预付款比例
- ALARMRATIO float64 `json:"alarmratio" xorm:"ALARMRATIO" form:"alarmratio"` // 告警比例
- CONSUMPTIONDIRECTREWARD float64 `json:"consumptiondirectreward" xorm:"CONSUMPTIONDIRECTREWARD" form:"consumptiondirectreward"` // 消费直推奖励值
- CONSUMPTIONINDIRECTREWARD float64 `json:"consumptionindirectreward" xorm:"CONSUMPTIONINDIRECTREWARD" form:"consumptionindirectreward"` // 消费间推奖励值
- DAYINTERESTRATE float64 `json:"dayinterestrate" xorm:"DAYINTERESTRATE" form:"dayinterestrate"` // 日利率
- PROMOTIONVALUE float64 `json:"promotionvalue" xorm:"PROMOTIONVALUE" form:"promotionvalue"` // 推广奖励值(固定)
- CONSUMPTIONENABLED int32 `json:"consumptionenabled" xorm:"CONSUMPTIONENABLED" form:"consumptionenabled"` // 是否启用消费奖励 - 0:不启用 1:启用
- CONSUMPTIONMODEL int32 `json:"consumptionmodel" xorm:"CONSUMPTIONMODEL" form:"consumptionmodel"` // 消费奖励方式 - 1:比率 2:固定
- MODIFYSRC int32 `json:"modifysrc" xorm:"MODIFYSRC" form:"modifysrc"` // 审核来源 - 1:管理端 2:终端
- SCORECONFIGVALUE1 int32 `json:"scoreconfigvalue1" xorm:"SCORECONFIGVALUE1" form:"scoreconfigvalue1"` // 提货积分配置1
- SCORECONFIGVALUE2 int32 `json:"scoreconfigvalue2" xorm:"SCORECONFIGVALUE2" form:"scoreconfigvalue2"` // 提货积分配置2
- MODIFIERID int64 `json:"modifierid" xorm:"MODIFIERID" form:"modifierid"` // 修改人ID
- USERID int64 `json:"userid" xorm:"USERID" form:"userid"` // 机构用户ID其他做市关系,都设置为 1
- CUSTOMERSERVICENUM string `json:"customerservicenum" xorm:"CUSTOMERSERVICENUM" form:"customerservicenum"` // 客服电话
- DISABLECONSUMPTIONTIPS string `json:"disableconsumptiontips" xorm:"DISABLECONSUMPTIONTIPS" form:"disableconsumptiontips"` // 关闭消费奖励提示
- MODIFYTIME string `json:"modifytime" xorm:"MODIFYTIME" form:"modifytime"` // 修改时间
- USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称
- }
- func (r *QhjAreaFinanceConfig) calc() {
- }
- func (r *QhjAreaFinanceConfig) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.CUSTOMERSERVICENUM," +
- " t.SCORECONFIGVALUE1," +
- " t.SCORECONFIGVALUE2," +
- " t.CONSUMPTIONENABLED," +
- " t.PROMOTIONVALUE," +
- " t.CONSUMPTIONMODEL," +
- " t.CONSUMPTIONDIRECTREWARD," +
- " t.CONSUMPTIONINDIRECTREWARD," +
- " t.DISABLECONSUMPTIONTIPS," +
- " t.USERID," +
- " t.ADVANCERATIO," +
- " t.ALARMRATIO," +
- " t.ADDITIONALRATIO," +
- " t.DAYINTERESTRATE," +
- " to_char(t.MODIFYTIME, 'yyyy-mm-dd hh24:mi:ss') MODIFYTIME," +
- " t.MODIFIERID," +
- " t.MODIFYSRC," +
- " u.accountname username" +
- " FROM AREAFINANCECONFIG t" +
- " LEFT JOIN USERACCOUNT u on t.userid=u.userid" +
- " WHERE 1 = 1"
- if r.USERID > 0 {
- if r.USERID == 1 {
- // =1 ,其他做市关系
- sqlId.AndEx("t.userid", r.USERID, r.USERID > 0)
- } else {
- areaUserId := mtpcache.GetAreaUserId(r.USERID, 0)
- sqlId.AndEx("t.userid", areaUserId, areaUserId > 0)
- }
- }
- return sqlId.String()
- }
- // GetDataEx 获取企业配置表
- func (r *QhjAreaFinanceConfig) GetDataEx() (interface{}, error) {
- sData := make([]QhjAreaFinanceConfig, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjMyTeamEx 我的团队(含层次结构)
- type QhjMyTeamEx struct {
- QhjMyTeam
- SubList []QhjMyTeamEx
- }
- func (r *QhjMyTeamEx) addSub(lst []QhjMyTeam) {
- for i := range lst {
- if r.USERID == lst[i].REFEREEUSERID {
- v := QhjMyTeamEx{QhjMyTeam: lst[i], SubList: make([]QhjMyTeamEx, 0)}
- v.addSub(lst)
- r.SubList = append(r.SubList, v)
- }
- }
- }
- // QhjMyTeam 我的团队
- type QhjMyTeam struct {
- LEVEL int32 `json:"-" xorm:"'LEVEL'"` // 层级
- USERID int64 `json:"userid" xorm:"'USERID'"` // 用户id
- ACCOUNTNAME string `json:"accountname" xorm:"'ACCOUNTNAME'"` // 用户名称
- REFEREEUSERID int64 `json:"refereeuserid" xorm:"'REFEREEUSERID'"` // 推荐人id
- REFERNUM string `json:"refernum" xorm:"'REFERNUM'"` // 推荐码
- CREATETIME string `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
- ACCOUNTSTATUS int32 `json:"accountstatus" xorm:"'ACCOUNTSTATUS'"` // 账户状态 - 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:停用(注销) 7:注销(删除)
- MOBILE string `json:"mobile" xorm:"'MOBILE'"` // 手机号码
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户类型 1-个人 2-企业
- }
- func (r *QhjMyTeam) calc() {
- r.MOBILE = DecryptField(r.MOBILE)
- }
- func (r *QhjMyTeam) buildSql() string {
- var sqlId utils.SQLVal = "select level," +
- " t.userid," +
- " t.accountname," +
- " t.refereeuserid," +
- " t.refernum," +
- " to_char(t.createtime, 'yyyy-dd-mm hh24:mi:ss') createtime," +
- " t.accountstatus," +
- " ui.mobile," +
- " ui.userinfotype" +
- " from useraccount t" +
- " left join userinfo ui" +
- " on t.userid = ui.userid" +
- " start with t.userid = %v" +
- "connect by prior t.userid = t.refereeuserid" +
- " and level <= 3" +
- " order by level"
- sqlId.FormatParam(r.USERID)
- return sqlId.String()
- }
- // GetDataEx 获取我的团队
- func (r *QhjMyTeam) GetDataEx() (interface{}, error) {
- sData := make([]QhjMyTeam, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- sDataEx := make([]QhjMyTeamEx, 0)
- // 构建顶层
- for i := range sData {
- if sData[i].LEVEL == 1 {
- v := QhjMyTeamEx{QhjMyTeam: sData[i], SubList: make([]QhjMyTeamEx, 0)}
- sDataEx = append(sDataEx, v)
- }
- }
- // 递归构建层级
- for i := range sDataEx {
- sDataEx[i].addSub(sData)
- }
- return sDataEx, err
- }
- // QhjTeamOrder 团队订单
- type QhjTeamOrder struct {
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL" form:"buyorsell"` // 方向 - 0:买 1:卖
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 交易日(yyyyMMdd)
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID" form:"accountid"` // 账户ID[报价币种]
- GOODSID int32 `json:"goodsid" xorm:"GOODSID" form:"goodsid"` // 商品ID
- TRADETIME string `json:"tradetime" xorm:"TRADETIME" form:"tradetime"` // 成交时间
- TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE" form:"tradeprice"` // 成交价格
- TRADEQTY float64 `json:"tradeqty" xorm:"TRADEQTY" form:"tradeqty"` // 成交数量
- TRADEAMOUNT float64 `json:"tradeamount" xorm:"TRADEAMOUNT" form:"tradeamount"` // 成交金额[账户币种,用于所有权]
- MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID
- ACCOUNTNAME string `json:"accountname" xorm:"ACCOUNTNAME" form:"accountname"` // 账户名称
- REFEREEUSERID int64 `json:"refereeuserid" xorm:"REFEREEUSERID" form:"refereeuserid"` // 推荐人ID
- USERID int64 `json:"userid" xorm:"USERID" form:"userid"` // 用户ID
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE" form:"goodscode"` // 商品代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME" form:"goodsname"` // 商品名称
- GOODUNITID int32 `json:"goodunitid" xorm:"GOODUNITID" form:"goodunitid"` // 报价单位ID
- AGREEUNIT float64 `json:"agreeunit" xorm:"AGREEUNIT" form:"agreeunit"` // 合约乘数
- DECIMALPLACE int32 `json:"decimalplace" xorm:"DECIMALPLACE" form:"decimalplace"` // 报价小数位
- QTYDECIMALPLACE int32 `json:"qtydecimalplace" xorm:"QTYDECIMALPLACE" form:"qtydecimalplace"` // 成交量小数位
- MARKETNAME string `json:"marketname" xorm:"MARKETNAME" form:"marketname"` // 市场名称
- TRADEMODE int32 `json:"trademode" xorm:"TRADEMODE" form:"trademode"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
- ENUMDICNAME string `json:"enumdicname" xorm:"'ENUMDICNAME'"` // 单位名称
- PageEx `xorm:"extends"` // 页码信息
- FilterName string `json:"-" form:"filtername"` // 名称(模糊匹配)
- }
- func (r *QhjTeamOrder) calc() {
- }
- func (r *QhjTeamOrder) buildSql() string {
- var sqlId utils.SQLVal = "select t.accountid," +
- " t.goodsid," +
- " t.tradedate," +
- " t.tradeprice," +
- " t.tradeqty / power(10, nvl(g.qtydecimalplace, 0)) tradeqty," +
- " t.tradeamount," +
- " to_char(t.tradetime, 'yyyy-mm-dd hh24:mi:ss') tradetime," +
- " t.buyorsell," +
- " u.userid," +
- " u.accountname," +
- " u.refereeuserid," +
- " g.goodscode," +
- " g.goodsname," +
- " g.marketid," +
- " g.goodunitid," +
- " g.qtydecimalplace," +
- " g.decimalplace," +
- " g.agreeunit," +
- " m.marketname," +
- " m.trademode," +
- " e.enumdicname" +
- " from %v t" +
- " inner join taaccount ta" +
- " on t.accountid = ta.accountid" +
- " inner join useraccount u" +
- " on ta.relateduserid = u.userid" +
- " left join goods g" +
- " on t.goodsid = g.goodsid" +
- " left join market m" +
- " on g.marketid = m.marketid" +
- " left join enumdicitem e" +
- " on g.goodunitid = e.enumitemname" +
- " and e.enumdiccode = 'goodsunit'" +
- " where 1 = 1"
- sqlId.Join(" and t.tradetype <> 28") // tradetype 28-提货成交, 过滤掉
- sqlId.AndEx("u.refereeuserid", r.USERID, r.USERID > 0)
- sqlId.AndEx("m.trademode", r.TRADEMODE, r.TRADEMODE > 0)
- sqlCur := fmt.Sprintf(sqlId.String(), "trade_tradedetail")
- sqlHis := fmt.Sprintf(sqlId.String(), "his_trade_tradedetail")
- if len(r.FilterName) > 0 {
- sqlCur += fmt.Sprintf(" and u.accountname like '%%%v%%'", r.FilterName)
- sqlHis += fmt.Sprintf(" and u.accountname like '%%%v%%'", r.FilterName)
- }
- sqlHis += " and t.isvaliddata=1"
- strSql := sqlCur + " union all " + sqlHis
- strSql += " order by tradetime desc"
- sqlId = utils.SQLVal(strSql)
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- // GetDataEx 获取团队订单
- func (r *QhjTeamOrder) GetDataEx() (interface{}, error) {
- sData := make([]QhjTeamOrder, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // GetDataByPage 获取团队订单
- func (r *QhjTeamOrder) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]QhjTeamOrder, 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
- }
- // QhjBrokerRewardLog 我的奖励
- type QhjBrokerRewardLog struct {
- LOGID string `json:"logid" xorm:"LOGID" form:"logid"` // 奖励流水ID(912+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- REWARDTYPE int32 `json:"rewardtype" xorm:"REWARDTYPE" form:"rewardtype"` // 奖励类型 - 1:推广 2:消费1级 3:消费2级
- USERID int64 `json:"userid" xorm:"USERID" form:"userid"` // 经纪人用户ID
- REWARDAMOUNT float64 `json:"rewardamount" xorm:"REWARDAMOUNT" form:"rewardamount"` // 奖励金额
- SRCUSERID string `json:"srcuserid" xorm:"SRCUSERID" form:"srcuserid"` // 来源用户ID(推广账户)
- SRCTRADEID string `json:"srctradeid" xorm:"SRCTRADEID" form:"srctradeid"` // 来源成交单ID [消费奖励] - 排除提货成交
- SRCGOODSID string `json:"srcgoodsid" xorm:"SRCGOODSID" form:"srcgoodsid"` // 来源商品ID [消费奖励]
- SRCAMOUNT float64 `json:"srcamount" xorm:"SRCAMOUNT" form:"srcamount"` // 成交金额 [消费奖励] (金额)
- SRCTIME string `json:"srctime" xorm:"SRCTIME" form:"srctime"` // 来源时间 (成交时间) [消费奖励]
- REWARDMODEL int32 `json:"rewardmodel" xorm:"REWARDMODEL" form:"rewardmodel"` // 消费奖励方式 - 1:比率 2:固定
- REWARDVALUE float64 `json:"rewardvalue" xorm:"REWARDVALUE" form:"rewardvalue"` // 配置奖励值
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 交易日(yyyyMMdd)
- MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID
- CREATETIME string `json:"createtime" xorm:"CREATETIME" form:"createtime"` // 创建时间(时间)
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID" form:"accountid"` // 资金账号ID
- MMUSERID string `json:"mmuserid" xorm:"MMUSERID" form:"mmuserid"` // 做市商用户ID
- MMACCOUNTID string `json:"mmaccountid" xorm:"MMACCOUNTID" form:"mmaccountid"` // 做市商资金账号ID
- HANDLESTATUS int32 `json:"handlestatus" xorm:"HANDLESTATUS" form:"handlestatus"` // 处理状态
- SRCUSERNAME string `json:"srcusername" xorm:"'SRCUSERNAME'"` // 推广账户名称
- BeginDate string `json:"-" form:"begindate"` // 开始交易日
- EndDate string `json:"-" form:"enddate"` // 结束交易日
- }
- func (r *QhjBrokerRewardLog) calc() {
- }
- func (r *QhjBrokerRewardLog) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.LOGID," +
- " t.REWARDTYPE," +
- " t.USERID," +
- " t.REWARDAMOUNT," +
- " t.SRCUSERID," +
- " to_char(t.SRCTRADEID) SRCTRADEID," +
- " t.SRCGOODSID," +
- " t.SRCAMOUNT," +
- " to_char(t.SRCTIME, 'yyyy-mm-dd hh24:mi:ss') SRCTIME," +
- " t.REWARDMODEL," +
- " t.REWARDVALUE," +
- " t.TRADEDATE," +
- " t.MARKETID," +
- " to_char(t.CREATETIME, 'yyyy-mm-dd hh24:mi:ss') CREATETIME," +
- " t.ACCOUNTID," +
- " t.MMUSERID," +
- " t.MMACCOUNTID," +
- " t.HANDLESTATUS," +
- " u.accountname SRCUSERNAME" +
- " FROM BROKERREWARDLOG t" +
- " LEFT JOIN USERACCOUNT u on t.srcuserid=u.userid" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.USERID", r.USERID, r.USERID > 0)
- if r.BeginDate != "" {
- sqlId.JoinFormat(" and to_char(t.CREATETIME, 'yyyymmdd') >= '%v'", r.BeginDate)
- }
- if r.EndDate != "" {
- sqlId.JoinFormat(" and to_char(t.CREATETIME, 'yyyymmdd') <= '%v'", r.EndDate)
- }
- return sqlId.String()
- }
- // GetDataEx 获取我的奖励
- func (r *QhjBrokerRewardLog) GetDataEx() (interface{}, error) {
- sData := make([]QhjBrokerRewardLog, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjScoreLog 积分流水
- type QhjScoreLog struct {
- LOGID string `json:"logid" xorm:"LOGID" form:"logid"` // 流水ID(211+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 交易日(yyyyMMdd)
- USERID int64 `json:"userid" xorm:"USERID" form:"userid"` // 用户ID
- SCORETYPE int32 `json:"scoretype" xorm:"SCORETYPE" form:"scoretype"` // 积分类型 - 1:提货积分
- SCOREVALUE float64 `json:"scorevalue" xorm:"SCOREVALUE" form:"scorevalue"` // 积分
- RELATEDORDERID string `json:"relatedorderid" xorm:"RELATEDORDERID" form:"relatedorderid"` // 关联单号(ScoreType=1为Trade_GoodsPickup)
- RELATEDAMOUNT float64 `json:"relatedamount" xorm:"RELATEDAMOUNT" form:"relatedamount"` // 关联金额
- SCORECONFIGVALUE1 int32 `json:"scoreconfigvalue1" xorm:"SCORECONFIGVALUE1" form:"scoreconfigvalue1"` // 积分配置1
- SCORECONFIGVALUE2 int32 `json:"scoreconfigvalue2" xorm:"SCORECONFIGVALUE2" form:"scoreconfigvalue2"` // 积分配置1
- GOODSID int64 `json:"goodsid" xorm:"GOODSID" form:"goodsid"` // 商品ID
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID" form:"accountid"` // 账户ID
- MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID
- CREATETIME string `json:"createtime" xorm:"CREATETIME" form:"createtime"` // 创建时间(时间)
- HASUPLOADED int32 `json:"hasuploaded" xorm:"HASUPLOADED" form:"hasuploaded"` // 是否已同步(千海金) 0:未同步 1;已同步
- UPLOADEDTIME string `json:"uploadedtime" xorm:"UPLOADEDTIME" form:"uploadedtime"` // 同步时间
- BeginDate string `json:"-" form:"begindate"` // 开始交易日
- EndDate string `json:"-" form:"enddate"` // 结束交易日
- LastNum int `json:"-" form:"lastnum"` // 最近多少条
- }
- func (r *QhjScoreLog) calc() {
- }
- func (r *QhjScoreLog) buildSql() string {
- var sqlId utils.SQLVal = "SELECT t.LOGID," +
- " t.TRADEDATE," +
- " t.USERID," +
- " t.SCORETYPE," +
- " t.SCOREVALUE," +
- " to_char(t.RELATEDORDERID) RELATEDORDERID," +
- " t.RELATEDAMOUNT," +
- " t.SCORECONFIGVALUE1," +
- " t.SCORECONFIGVALUE2," +
- " t.GOODSID," +
- " t.ACCOUNTID," +
- " t.MARKETID," +
- " to_char(t.CREATETIME, 'yyyy-mm-dd hh24:mi:ss') CREATETIME," +
- " t.HASUPLOADED," +
- " to_char(t.UPLOADEDTIME, 'yyyy-mm-dd hh24:mi:ss') UPLOADEDTIME" +
- " FROM QHJ_SCORELOG t" +
- " WHERE 1 = 1"
- sqlId.AndEx("t.USERID", r.USERID, r.USERID > 0)
- if r.BeginDate != "" {
- sqlId.JoinFormat(" and to_char(t.CREATETIME, 'yyyymmdd') >= '%v'", r.BeginDate)
- }
- if r.EndDate != "" {
- sqlId.JoinFormat(" and to_char(t.CREATETIME, 'yyyymmdd') <= '%v'", r.EndDate)
- }
- sqlId.Join(" order by t.CREATETIME desc")
- if r.LastNum > 0 {
- sqlId.Page(1, r.LastNum)
- }
- return sqlId.String()
- }
- // GetDataEx 获取积分流水
- func (r *QhjScoreLog) GetDataEx() (interface{}, error) {
- sData := make([]QhjScoreLog, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjContractRemainAmount 融资额
- type QhjContractRemainAmount struct {
- ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账号
- REMAINACOUNT float64 `json:"remainacount" xorm:"'REMAINACOUNT'"` // 融资额(合同剩余金额)
- FilterAccId string `json:"-"` // 资金账号列表
- }
- func (r *QhjContractRemainAmount) calc() {
- }
- func (r *QhjContractRemainAmount) buildSql() string {
- var sqlId utils.SQLVal = "select t.borroweraccountid accountid, sum(s.remainamount) remainamount" +
- " from scf_contract t" +
- " inner join scf_contractinfo s" +
- " on t.scfcontractid = s.scfcontractid" +
- " where 1 = 1 and t.scfcontracttype=5"
- sqlId.JoinEx(r.FilterAccId != "", fmt.Sprintf(" and t.borroweraccountid in (%v)", r.FilterAccId))
- sqlId.Join(" group by t.borroweraccountid")
- return sqlId.String()
- }
- // GetDataEx 获取融资额
- func (r *QhjContractRemainAmount) GetData() ([]QhjContractRemainAmount, error) {
- sData := make([]QhjContractRemainAmount, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjBrokerApply 经济人申请表
- type QhjBrokerApply struct {
- APPLYSRC int32 `json:"applysrc" xorm:"APPLYSRC" form:"applysrc"` // 申请来源 - 1:管理端 2:终端
- APPLYSTATUS int32 `json:"applystatus" xorm:"APPLYSTATUS" form:"applystatus"` // 申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
- AUDITSRC int32 `json:"auditsrc" xorm:"AUDITSRC" form:"auditsrc"` // 审核来源 - 1:管理端 2:终端
- APPLICANTID int64 `json:"applicantid" xorm:"APPLICANTID" form:"applicantid"` // 申请人
- AUDITORID int64 `json:"auditorid" xorm:"AUDITORID" form:"auditorid"` // 审核人
- BROKERAPPLYID int64 `json:"brokerapplyid" xorm:"BROKERAPPLYID" form:"brokerapplyid"` // 申请ID(SEQ_BROKERAPPLY)
- USERID int64 `json:"userid" xorm:"USERID" form:"userid"` // 申请人用户ID
- APPLYTIME string `json:"applytime" xorm:"APPLYTIME" form:"applytime"` // 申请时间
- AUDITREMARK string `json:"auditremark" xorm:"AUDITREMARK" form:"auditremark"` // 审核备注
- AUDITTIME string `json:"audittime" xorm:"AUDITTIME" form:"audittime"` // 审核时间
- AUDITTRADEDATE string `json:"audittradedate" xorm:"AUDITTRADEDATE" form:"audittradedate"` // 审核交易日(yyyyMMdd)
- CARDBACKPHOTOURL string `json:"cardbackphotourl" xorm:"CARDBACKPHOTOURL" form:"cardbackphotourl"` // 证件背面图片地址
- CARDFRONTPHOTOURL string `json:"cardfrontphotourl" xorm:"CARDFRONTPHOTOURL" form:"cardfrontphotourl"` // 证件正面图片地址
- CARDNUM string `json:"cardnum" xorm:"CARDNUM" form:"cardnum"` // 证件号码(加密存储) 注:数据库没存证件类型字段,产品说类型固定为身份证
- CUSTOMERNAME string `json:"customername" xorm:"CUSTOMERNAME" form:"customername"` // 姓名
- REMARK string `json:"remark" xorm:"REMARK" form:"remark"` // 备注
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 交易日(yyyyMMdd)
- BrokerExInfo `xorm:"extends"`
- FilterStatus string `json:"-" form:"filterstatus"` // 筛选条件
- }
- func (r *QhjBrokerApply) calc() {
- r.MOBILE = DecryptField(r.MOBILE)
- r.CARDNUM = DecryptField(r.CARDNUM)
- if r.LOGINCODE == "" {
- r.LOGINCODE = r.MOBILE
- }
- }
- func (r *QhjBrokerApply) buildSql() string {
- var sqlId utils.SQLVal = "with k as (select t.userid, wm_concat(t.logincode) logincode from loginaccount t group by t.userid)" +
- "SELECT t.CUSTOMERNAME," +
- " t.CARDNUM," +
- " t.CARDFRONTPHOTOURL," +
- " t.CARDBACKPHOTOURL," +
- " t.BROKERAPPLYID," +
- " t.USERID," +
- " t.TRADEDATE," +
- " t.APPLYSRC," +
- " t.APPLICANTID," +
- " t.REMARK," +
- " to_char(t.APPLYTIME, 'yyyy-mm-dd hh24:mi:ss') APPLYTIME," +
- " t.APPLYSTATUS," +
- " t.AUDITTRADEDATE," +
- " t.AUDITORID," +
- " t.AUDITSRC," +
- " to_char(t.AUDITTIME, 'yyyy-mm-dd hh24:mi:ss') AUDITTIME," +
- " t.AUDITREMARK," +
- " u.accountname USERNAME," +
- " u.parentuserid," +
- " u.refereeuserid," +
- " u.refernum," +
- " ui.userinfotype," +
- " ui.mobile," +
- " u2.accountname PARENTUSERNAME," +
- " k.logincode," +
- " u.subarealevelpath" +
- " FROM BROKERAPPLY t" +
- " INNER JOIN USERACCOUNT u on t.userid=u.userid" +
- " INNER JOIN USERINFO ui on t.userid=ui.userid" +
- " LEFT JOIN k on t.userid=k.userid" +
- " LEFT JOIN USERACCOUNT u2 on u.parentuserid=u2.userid" +
- " WHERE 1 = 1"
- sqlId.And("u.USERID", r.USERID)
- sqlId.JoinEx(r.FilterStatus != "", fmt.Sprintf(" and t.APPLYSTATUS in(%v)", r.FilterStatus))
- sqlId.Join(" order by t.APPLYTIME desc")
- sqlId.Page(1, 1) // 按申请时间倒序后取最近一条
- return sqlId.String()
- }
- // GetData 获取经济人申请表
- func (r *QhjBrokerApply) GetData() ([]QhjBrokerApply, error) {
- sData := make([]QhjBrokerApply, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // GetDataEx 获取经济人申请表
- func (r *QhjBrokerApply) GetDataEx() (interface{}, error) {
- sData := make([]QhjBrokerApply, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // QhjBrokerInfo 经纪人信息
- type QhjBrokerInfo struct {
- USERID int64 `json:"userid" xorm:"'USERID'" form:"userid"` // 用户id
- REFERNUM string `json:"refernum" xorm:"'REFERNUM'"` // 推荐码
- CANRECOMMEND int32 `json:"canrecommend" xorm:"'CANRECOMMEND'"` // 是否经纪人 0-不是 1-是
- USERINFOTYPE int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户类型 1-个人 2-企业
- }
- func (r *QhjBrokerInfo) buildSql() string {
- var sqlId utils.SQLVal = "select t.userid, t.refernum, t.canrecommend, ui.userinfotype" +
- " from useraccount t" +
- " inner join userinfo ui" +
- " on t.userid = ui.userid" +
- " where 1 = 1"
- sqlId.And("t.userid", r.USERID)
- return sqlId.String()
- }
- // GetData 获取经济人信息
- func (r *QhjBrokerInfo) GetData() ([]QhjBrokerInfo, error) {
- sData := make([]QhjBrokerInfo, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- return sData, err
- }
- // QhjBrokerApplyEx 经纪人信息和申请纪录
- type QhjBrokerApplyEx struct {
- QhjBrokerInfo
- APPLYLIST []QhjBrokerApply `json:"applylist"` // 经纪人申请记录(只返回最新一条)
- }
- // GetDataEx 获取经纪人信息和申请纪录
- func (r *QhjBrokerApplyEx) GetDataEx() (interface{}, error) {
- sData := make([]QhjBrokerApplyEx, 0)
- if sInfo, err := r.QhjBrokerInfo.GetData(); err == nil && len(sInfo) > 0 {
- vInfo := sInfo[0]
- val := QhjBrokerApplyEx{QhjBrokerInfo: vInfo, APPLYLIST: make([]QhjBrokerApply, 0)}
- m := QhjBrokerApply{USERID: r.USERID}
- if sApply, err := m.GetData(); err == nil {
- val.APPLYLIST = append(val.APPLYLIST, sApply...)
- }
- sData = append(sData, val)
- }
- return sData, nil
- }
|