guangzuan.go 78 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166
  1. package models
  2. import (
  3. "encoding/hex"
  4. "mtp2_if/db"
  5. "mtp2_if/utils"
  6. "strings"
  7. "time"
  8. )
  9. // Warehouseinfo 仓库信息表
  10. type GZWarehouseinfo struct {
  11. AUTOID int64 `json:"autoid" xorm:"AUTOID"` // 自增ID
  12. WAREHOUSECODE string `json:"warehousecode" xorm:"WAREHOUSECODE"` // 仓库代码
  13. WAREHOUSENAME string `json:"warehousename" xorm:"WAREHOUSENAME"` // 仓库名称
  14. WAREHOUSETYPE int32 `json:"warehousetype" xorm:"WAREHOUSETYPE"` // 仓库类型 - 1 厂库 2 自有库 3 合作库
  15. AREAUSERID int64 `json:"areauserid" xorm:"AREAUSERID"` // 所属机构
  16. WAREHOUSESTATUS int32 `json:"warehousestatus" xorm:"WAREHOUSESTATUS"` // 仓库状态 - 1:正常 2:注销 3:待审核 4:审核拒绝
  17. COUNTRYID int32 `json:"countryid" xorm:"COUNTRYID"` // 国家
  18. PROVINCEID int32 `json:"provinceid" xorm:"PROVINCEID"` // 省
  19. CITYID int32 `json:"cityid" xorm:"CITYID"` // 市
  20. DISTRICTID int32 `json:"districtid" xorm:"DISTRICTID"` // 区
  21. ADDRESS string `json:"address" xorm:"ADDRESS"` // 详细地址
  22. REMARK string `json:"remark" xorm:"REMARK"` // 审核备注
  23. CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
  24. HASVIDEO int32 `json:"hasvideo" xorm:"HASVIDEO"` // 是否有视频 - 0:无 1:有
  25. VIDEOURL string `json:"videourl" xorm:"VIDEOURL"` // 视频地址
  26. CONTACTNAME string `json:"contactname" xorm:"CONTACTNAME"` // 联系人
  27. CONTACTNUM string `json:"contactnum" xorm:"CONTACTNUM"` // 联系电话
  28. PageEx `xorm:"extends"` // 页码信息
  29. UserId int64 `json:"-" form:"userid" binding:"required"` // 用户ID
  30. Status string `json:"-" form:"status"` // 仓库状态(可多项,逗号隔开) 1:正常 2:注销 3:待审核 4:审核拒绝
  31. IsIncludeExchange bool `json:"-" form:"isincludeexchange"` // 是返回交易所仓库
  32. }
  33. // TableName is WAREHOUSEINFO
  34. func (r *GZWarehouseinfo) TableName() string {
  35. return "WAREHOUSEINFO"
  36. }
  37. func (r *GZWarehouseinfo) calc() {
  38. }
  39. func (r *GZWarehouseinfo) buildSql() string {
  40. var sqlId utils.SQLVal = `SELECT t.AUTOID,
  41. t.WAREHOUSECODE,
  42. t.WAREHOUSENAME,
  43. t.WAREHOUSETYPE,
  44. t.AREAUSERID,
  45. t.WAREHOUSESTATUS,
  46. t.COUNTRYID,
  47. t.PROVINCEID,
  48. t.CITYID,
  49. t.DISTRICTID,
  50. t.ADDRESS,
  51. t.REMARK,
  52. to_char(t.CREATETIME,'yyyy-mm-dd hh24:mi:ss') CREATETIME,
  53. t.HASVIDEO,
  54. t.VIDEOURL,
  55. t.CONTACTNAME,
  56. t.CONTACTNUM
  57. FROM WAREHOUSEINFO t
  58. WHERE (t.AREAUSERID = %v) `
  59. sqlId.FormatParam(r.UserId)
  60. if r.IsIncludeExchange {
  61. sqlId.Join(" OR (t.AREAUSERID IS NULL) OR (t.AREAUSERID = 1)")
  62. }
  63. if len(r.Status) > 0 {
  64. sqlId.JoinFormat(" and (t.WAREHOUSESTATUS in (%v))", r.Status)
  65. }
  66. sqlId.Page(r.Page, r.PageSize)
  67. return sqlId.String()
  68. }
  69. // GetDataByPage 获取团队订单
  70. func (r *GZWarehouseinfo) GetDataByPage() (interface{}, error, int, int, int) {
  71. sData := make([]GZWarehouseinfo, 0)
  72. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  73. total := 0
  74. for i := range sData {
  75. sData[i].calc()
  76. total = sData[i].Total
  77. }
  78. return sData, err, r.Page, r.PageSize, total
  79. }
  80. // MyWRPosition 我的库存
  81. type MyWRPosition struct {
  82. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES" form:"zsallproperties"` // 商品(查询字段-模糊查询)
  83. SELLUSERNAME string `json:"sellusername" xorm:"SELLUSERNAME"` // 账户名称(机构名称)
  84. SELLMOBILE string `json:"sellmobile" xorm:"SELLMOBILE"` // 手机号码(加密存储)
  85. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` //
  86. ZSCURRENCYTYPEDISPLAY string `json:"zscurrencytypedisplay" xorm:"ZSCURRENCYTYPEDISPLAY"` //
  87. ZSCURRENCYTYPEDISPLAYUNIT string `json:"zscurrencytypedisplayunit" xorm:"ZSCURRENCYTYPEDISPLAYUNIT"` //
  88. WAREHOUSENAMEDISPLAY string `json:"warehousenamedisplay" xorm:"WAREHOUSENAMEDISPLAY"` //
  89. ZSSHAPETYPEDISPLAY string `json:"zsshapetypedisplay" xorm:"ZSSHAPETYPEDISPLAY"` //
  90. ZSCOLORTYPE1DISPLAY string `json:"zscolortype1display" xorm:"ZSCOLORTYPE1DISPLAY"` //
  91. ZSCOLORTYPE2DISPLAY string `json:"zscolortype2display" xorm:"ZSCOLORTYPE2DISPLAY"` //
  92. ZSCLARITYTYPE1DISPLAY string `json:"zsclaritytype1display" xorm:"ZSCLARITYTYPE1DISPLAY"` //
  93. ZSCLARITYTYPE2DISPLAY string `json:"zsclaritytype2display" xorm:"ZSCLARITYTYPE2DISPLAY"` //
  94. ZSCUTTYPE1DISPLAY string `json:"zscuttype1display" xorm:"ZSCUTTYPE1DISPLAY"` //
  95. ZSCUTTYPE2DISPLAY string `json:"zscuttype2display" xorm:"ZSCUTTYPE2DISPLAY"` //
  96. ZSSYMMETRYTYPE1DISPLAY string `json:"zssymmetrytype1display" xorm:"ZSSYMMETRYTYPE1DISPLAY"` //
  97. ZSSYMMETRYTYPE2DISPLAY string `json:"zssymmetrytype2display" xorm:"ZSSYMMETRYTYPE2DISPLAY"` //
  98. ZSPOLISHTYPE1DISPLAY string `json:"zspolishtype1display" xorm:"ZSPOLISHTYPE1DISPLAY"` //
  99. ZSPOLISHTYPE2DISPLAY string `json:"zspolishtype2display" xorm:"ZSPOLISHTYPE2DISPLAY"` //
  100. ZSFLUORESCENCETYPE1DISPLAY string `json:"zsfluorescencetype1display" xorm:"ZSFLUORESCENCETYPE1DISPLAY"` //
  101. ZSFLUORESCENCETYPE2DISPLAY string `json:"zsfluorescencetype2display" xorm:"ZSFLUORESCENCETYPE2DISPLAY"` //
  102. ZSCERTTYPEDISPLAY string `json:"zscerttypedisplay" xorm:"ZSCERTTYPEDISPLAY"` //
  103. ZSCRYSTALTYPEDISPLAY string `json:"zscrystaltypedisplay" xorm:"ZSCRYSTALTYPEDISPLAY"` //
  104. ZSSTYLETYPEDISPLAY string `json:"zsstyletypedisplay" xorm:"ZSSTYLETYPEDISPLAY"` //
  105. ZSCZCOLOR1TYPEDISPLAY string `json:"zsczcolor1typedisplay" xorm:"ZSCZCOLOR1TYPEDISPLAY"` //
  106. ZSCZCOLOR2TYPEDISPLAY string `json:"zsczcolor2typedisplay" xorm:"ZSCZCOLOR2TYPEDISPLAY"` //
  107. ZSCZCOLOR3TYPEDISPLAY string `json:"zsczcolor3typedisplay" xorm:"ZSCZCOLOR3TYPEDISPLAY"` //
  108. WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
  109. USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
  110. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY" form:"zscategory"` // 钻石分类 - 枚举”ZSCategory“
  111. ZSCURRENCYTYPE int32 `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 枚举“ZSCurrencyType”
  112. GOODSNO string `json:"goodsno" xorm:"GOODSNO"` // 商品编号
  113. WAREHOUSEID int64 `json:"warehouseid" xorm:"WAREHOUSEID" form:"warehouseid"` // 仓库ID
  114. MARKETPRICE string `json:"marketprice" xorm:"MARKETPRICE"` // 市场价
  115. IMAGEPATH string `json:"imagepath" xorm:"IMAGEPATH"` // 商品照片(相对地址)
  116. WRPATH string `json:"wrpath" xorm:"WRPATH"` // 仓单扫描件(相对地址)
  117. REMARK string `json:"remark" xorm:"REMARK"` // 备注
  118. PRICE float64 `json:"price" xorm:"PRICE"` // 总价(价格) - 类型:1,2,3,4,5
  119. WEIGHT float64 `json:"weight" xorm:"WEIGHT"` // 总重量(克拉重量) - 类型:1,2,3,4,5
  120. WEIGHTAVG float64 `json:"weightavg" xorm:"WEIGHTAVG"` // 平均单颗重量 - 类型:1,3
  121. PRICEPER string `json:"priceper" xorm:"PRICEPER"` // 克拉单价 - 类型:1,2,3,5
  122. ZSSHAPETYPE string `json:"zsshapetype" xorm:"ZSSHAPETYPE"` // 形状 - 枚举”ZSShapeType“ - 类型:1,2,4,5 ;(1为多个,逗号分隔)
  123. ZSCOLORTYPE1 int32 `json:"zscolortype1" xorm:"ZSCOLORTYPE1"` // 颜色1 - 枚举”ZSColorType“ - 类型:1,2,3,4
  124. ZSCOLORTYPE2 int32 `json:"zscolortype2" xorm:"ZSCOLORTYPE2"` // 颜色2 - 枚举”ZSColorType“ - 类型:1,3
  125. ZSCLARITYTYPE1 int32 `json:"zsclaritytype1" xorm:"ZSCLARITYTYPE1"` // 净度1 - 枚举”ZSClarityType“ - 类型:1,2,3,4,5
  126. ZSCLARITYTYPE2 int32 `json:"zsclaritytype2" xorm:"ZSCLARITYTYPE2"` // 净度2 - 枚举”ZSClarityType“ - 类型:1,3
  127. ZSCUTTYPE1 int32 `json:"zscuttype1" xorm:"ZSCUTTYPE1"` // 切工1 - 枚举”ZSCutType“ - 类型:1,2,4,5
  128. ZSCUTTYPE2 int32 `json:"zscuttype2" xorm:"ZSCUTTYPE2"` // 切工2 - 枚举”ZSCutType“ - 类型:1
  129. ZSSYMMETRYTYPE1 int32 `json:"zssymmetrytype1" xorm:"ZSSYMMETRYTYPE1"` // 对称度1 - 枚举”ZSSymmetryType“ - 类型:1,2,4,5
  130. ZSSYMMETRYTYPE2 int32 `json:"zssymmetrytype2" xorm:"ZSSYMMETRYTYPE2"` // 对称度2 - 枚举”ZSSymmetryType“ - 类型:1
  131. ZSPOLISHTYPE1 int32 `json:"zspolishtype1" xorm:"ZSPOLISHTYPE1"` // 抛光度1 - 枚举”ZSPolishType“ - 类型:1,2,4,5
  132. ZSPOLISHTYPE2 int32 `json:"zspolishtype2" xorm:"ZSPOLISHTYPE2"` // 抛光度2 - 枚举”ZSPolishType“ - 类型:1
  133. ZSFLUORESCENCETYPE1 int32 `json:"zsfluorescencetype1" xorm:"ZSFLUORESCENCETYPE1"` // 荧光1 - 枚举”ZSFluorescenceType“ - 类型:1,2,3,4,5
  134. ZSFLUORESCENCETYPE2 int32 `json:"zsfluorescencetype2" xorm:"ZSFLUORESCENCETYPE2"` // 荧光2 - 枚举”ZSFluorescenceType” - 类型:1,3
  135. SIZE1 string `json:"size1" xorm:"SIZE1"` // 尺寸1 - 类型:2,4,5
  136. SIZE2 string `json:"size2" xorm:"SIZE2"` // 尺寸2 - 类型:2,4,5
  137. SIZE3 string `json:"size3" xorm:"SIZE3"` // 尺寸3 - 类型:2,4,5
  138. ZSCERTTYPE int32 `json:"zscerttype" xorm:"ZSCERTTYPE"` // 证书类型 - 枚举”ZSCertType“ - 类型:2,4,5
  139. CERNO string `json:"cerno" xorm:"CERNO"` // 证书编号 - 类型:2,4,5
  140. ZSCRYSTALTYPE string `json:"zscrystaltype" xorm:"ZSCRYSTALTYPE"` // 晶型范围 - 枚举“ZSCrystalType“ - 类型:3, 多个,逗号分隔
  141. CPCERTNO string `json:"cpcertno" xorm:"CPCERTNO"` // 金伯利证书编号 - 类型:3
  142. ORIGIN string `json:"origin" xorm:"ORIGIN"` // 原产地 - 类型:3
  143. KPWEIGHT string `json:"kpweight" xorm:"KPWEIGHT"` // 金伯利证书重量 - 类型:3
  144. KPPATH string `json:"kppath" xorm:"KPPATH"` // 金伯利证书图片(相对地址) - 类型:3
  145. ZSSTYLETYPE int32 `json:"zsstyletype" xorm:"ZSSTYLETYPE"` // 款式 - 类型:4
  146. STONEDESC string `json:"stonedesc" xorm:"STONEDESC"` // 配石描述 - 类型:4
  147. SETTINGMATERIAL string `json:"settingmaterial" xorm:"SETTINGMATERIAL"` // 镶嵌材料 - 类型:4
  148. ZSCZCOLOR1TYPE int32 `json:"zsczcolor1type" xorm:"ZSCZCOLOR1TYPE"` // 彩钻颜色1 - 枚举”ZSCZColor1Type“ - 类型:5
  149. ZSCZCOLOR2TYPE int32 `json:"zsczcolor2type" xorm:"ZSCZCOLOR2TYPE"` // 彩钻颜色2 - 枚举”ZSCZColor2Type“ - 类型:5
  150. ZSCZCOLOR3TYPE int32 `json:"zsczcolor3type" xorm:"ZSCZCOLOR3TYPE"` // 彩钻颜色3 - 枚举”ZSCZColor3Type“ - 类型:5
  151. ISVALID int32 `json:"isvalid" xorm:"ISVALID"` // 是否有效 - 0:无效 1:有效
  152. QTY int64 `json:"-" xorm:"QTY"`
  153. FREEZERQTY int64 `json:"-" xorm:"FREEZERQTY"`
  154. FTOTALQTY float64 `json:"ftotalqty"` // 库存数量:WRPosition表:TOTALQTY /100 , 保留两位小数
  155. FFREEZEQTY float64 `json:"ffreezeqty"` // 冻结数量:WRPosition表:FREEZEQTY/100 , 保留两位小数
  156. LADINGBILLID string `json:"ladingbillid" xorm:"LADINGBILLID"` // 提单ID(208+Unix秒时间戳(10位)+xxxxxx)
  157. SUBNUM int32 `json:"subnum" xorm:"SUBNUM"` // 提单子单号
  158. PageEx `xorm:"extends"` // 页码信息
  159. WRUSERID int64 `json:"wruserid" xorm:"WRUSERID" form:"wruserid" binding:"required"` // 登录用户ID
  160. }
  161. func (r *MyWRPosition) calc() {
  162. if r.QTY != 0 {
  163. a := SFLOAT64(float64(r.QTY) / 100)
  164. a.Round(2)
  165. r.FTOTALQTY = a.Float64()
  166. }
  167. if r.FREEZERQTY != 0 {
  168. a := SFLOAT64(float64(r.FREEZERQTY) / 100)
  169. a.Round(2)
  170. r.FFREEZEQTY = a.Float64()
  171. }
  172. }
  173. func (r *MyWRPosition) buildSql() string {
  174. var sqlId utils.SQLVal = `
  175. SELECT
  176. t.QTY,
  177. t.FREEZERQTY,
  178. to_char(t.LADINGBILLID) LADINGBILLID,
  179. t.SUBNUM,
  180. wr.*
  181. FROM WRHoldLB t
  182. INNER JOIN WRFactorType ft ON t.wrfactortypeid = ft.wrfactortypeid
  183. INNER JOIN View_GZ_WRStandard_Ex_Query wr ON ft.wrstandardid = wr.wrstandardid
  184. WHERE t.userid = %v
  185. `
  186. sqlId.FormatParam(r.WRUSERID)
  187. sqlId.AndEx("wr.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  188. sqlId.AndLike("wr.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  189. sqlId.AndEx("wr.WAREHOUSEID", r.WAREHOUSEID, r.WAREHOUSEID > 0)
  190. sqlId.Page(r.Page, r.PageSize)
  191. return sqlId.String()
  192. }
  193. func (r *MyWRPosition) GetDataByPage() (interface{}, error, int, int, int) {
  194. sData := make([]MyWRPosition, 0)
  195. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  196. total := 0
  197. for i := range sData {
  198. sData[i].calc()
  199. total = sData[i].Total
  200. }
  201. return sData, err, r.Page, r.PageSize, total
  202. }
  203. // BuyOrder 求购大厅委托单
  204. type BuyOrder struct {
  205. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES" form:"zsallproperties"` // 商品(查询字段-模糊查询)
  206. ZSTABLEDISPLAY string `json:"zstabledisplay" xorm:"ZSTABLEDISPLAY"` // 求购信息
  207. BUYUSERNAME string `json:"buyusername" xorm:"BUYUSERNAME" form:"buyusername"` // 买方
  208. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` //
  209. ZSCURRENCYTYPEDISPLAY string `json:"zscurrencytypedisplay" xorm:"ZSCURRENCYTYPEDISPLAY"` //
  210. ZSSHAPETYPEDISPLAY string `json:"zsshapetypedisplay" xorm:"ZSSHAPETYPEDISPLAY"` //
  211. ZSCOLORTYPEDISPLAY string `json:"zscolortypedisplay" xorm:"ZSCOLORTYPEDISPLAY"` //
  212. ZSCLARITYTYPEDISPLAY string `json:"zsclaritytypedisplay" xorm:"ZSCLARITYTYPEDISPLAY"` //
  213. ZSCUTTYPEDISPLAY string `json:"zscuttypedisplay" xorm:"ZSCUTTYPEDISPLAY"` //
  214. ZSSYMMETRYTYPEDISPLAY string `json:"zssymmetrytypedisplay" xorm:"ZSSYMMETRYTYPEDISPLAY"` //
  215. ZSPOLISHTYPEDISPLAY string `json:"zspolishtypedisplay" xorm:"ZSPOLISHTYPEDISPLAY"` //
  216. ZSFLUORESCENCETYPEDISPLAY string `json:"zsfluorescencetypedisplay" xorm:"ZSFLUORESCENCETYPEDISPLAY"` //
  217. ZSCRYSTALTYPEDISPLAY string `json:"zscrystaltypedisplay" xorm:"ZSCRYSTALTYPEDISPLAY"` //
  218. ZSSTYLETYPEDISPLAY string `json:"zsstyletypedisplay" xorm:"ZSSTYLETYPEDISPLAY"` //
  219. ZSCZCOLOR1TYPEDISPLAY string `json:"zsczcolor1typedisplay" xorm:"ZSCZCOLOR1TYPEDISPLAY"` //
  220. ZSCZCOLOR2TYPEDISPLAY string `json:"zsczcolor2typedisplay" xorm:"ZSCZCOLOR2TYPEDISPLAY"` //
  221. ZSCZCOLOR3TYPEDISPLAY string `json:"zsczcolor3typedisplay" xorm:"ZSCZCOLOR3TYPEDISPLAY"` //
  222. WAREHOUSEINFOSDISPLAY string `json:"warehouseinfosdisplay" xorm:"WAREHOUSEINFOSDISPLAY"` //
  223. WRTRADEORDERID string `json:"wrtradeorderid" xorm:"WRTRADEORDERID1" form:"wrtradeorderid"` // [委托单号]买委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
  224. USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
  225. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账户ID
  226. WRTRADEORDERSTATUS int32 `json:"wrtradeorderstatus" xorm:"WRTRADEORDERSTATUS"` // 委托状态 - 参考枚举'WRTradeOrderStatus' - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败WRTrade_OrderDetail、
  227. VALIDTIME string `json:"validtime" xorm:"VALIDTIME"` // 有效期限
  228. ORDERTIME string `json:"ordertime" xorm:"ORDERTIME"` // 委托时间
  229. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY" form:"zscategory"` // 钻石分类 - 枚举”ZSCategory“
  230. ZSCURRENCYTYPE string `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 多个, 逗号分隔
  231. ZSSHAPETYPE string `json:"zsshapetype" xorm:"ZSSHAPETYPE"` // 形状 - 多个, 逗号分隔
  232. ZSCOLORTYPE string `json:"zscolortype" xorm:"ZSCOLORTYPE"` // 颜色 - 两个, 逗号分隔
  233. ZSCLARITYTYPE string `json:"zsclaritytype" xorm:"ZSCLARITYTYPE"` // 净度 - 两个, 逗号分隔
  234. ZSCUTTYPE string `json:"zscuttype" xorm:"ZSCUTTYPE"` // 切工 - 两个, 逗号分隔
  235. ZSSYMMETRYTYPE string `json:"zssymmetrytype" xorm:"ZSSYMMETRYTYPE"` // 对称度 - 两个, 逗号分隔
  236. ZSPOLISHTYPE string `json:"zspolishtype" xorm:"ZSPOLISHTYPE"` // 抛光度 - 两个, 逗号分隔
  237. ZSFLUORESCENCETYPE string `json:"zsfluorescencetype" xorm:"ZSFLUORESCENCETYPE"` // 荧光 - 多个, 逗号分隔
  238. ZSSIZE string `json:"zssize" xorm:"ZSSIZE"` // 尺寸 - 两个小数, 逗号分隔
  239. ZSCRYSTALTYPE string `json:"zscrystaltype" xorm:"ZSCRYSTALTYPE"` // 晶型 - 多个,逗号分隔
  240. ORIGIN string `json:"origin" xorm:"ORIGIN"` // 原产地
  241. ZSSTYLETYPE string `json:"zsstyletype" xorm:"ZSSTYLETYPE"` // 款式 - 多个, 逗号分隔
  242. ZSCZCOLOR1TYPE string `json:"zsczcolor1type" xorm:"ZSCZCOLOR1TYPE"` // 彩钻颜色1, 逗号分隔
  243. ZSCZCOLOR2TYPE string `json:"zsczcolor2type" xorm:"ZSCZCOLOR2TYPE"` // 彩钻颜色2, 逗号分隔
  244. ZSCZCOLOR3TYPE string `json:"zsczcolor3type" xorm:"ZSCZCOLOR3TYPE"` // 彩钻颜色3, 逗号分隔
  245. REMARK string `json:"remark" xorm:"REMARK"` // 备注
  246. WAREHOUSEIDS string `json:"warehouseids" xorm:"WAREHOUSEIDS"` // 仓库ID - 多个, 逗号分隔
  247. MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
  248. PageEx `xorm:"extends"` // 页码信息
  249. }
  250. func (r *BuyOrder) calc() {
  251. }
  252. func (r *BuyOrder) buildSql() string {
  253. var sqlId utils.SQLVal = `
  254. SELECT
  255. to_char(t.WRTRADEORDERID) WRTRADEORDERID1,
  256. t.WRTRADEORDERSTATUS,
  257. to_char(t.VALIDTIME, 'yyyy-mm-dd') VALIDTIME,
  258. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
  259. q.*
  260. FROM WRTrade_OrderDetail t
  261. INNER JOIN View_GZ_BuyOrderDetail_Query q ON t.wrtradeorderid = q.wrtradeorderid
  262. WHERE t.marketid=67201 AND t.BuyOrSell = 0 AND t.WRTradeOrderStatus IN (3,7)
  263. `
  264. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  265. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  266. sqlId.AndEx("q.WRTRADEORDERID", r.WRTRADEORDERID, r.WRTRADEORDERID != "")
  267. sqlId.AndLike("q.BUYUSERNAME", r.BUYUSERNAME)
  268. sqlId.Page(r.Page, r.PageSize)
  269. return sqlId.String()
  270. }
  271. func (r *BuyOrder) GetDataByPage() (interface{}, error, int, int, int) {
  272. sData := make([]BuyOrder, 0)
  273. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  274. total := 0
  275. for i := range sData {
  276. sData[i].calc()
  277. total = sData[i].Total
  278. }
  279. return sData, err, r.Page, r.PageSize, total
  280. }
  281. // SellOrderQueryReq 钻石搜索入参
  282. type SellOrderQueryReq struct {
  283. ZSCATEGORY int32 `json:"zscategory" binding:"required"` // 钻石分类 - 枚举”ZSCategory“
  284. ZSCURRENCYTYPE []string `json:"zscurrencytype"` // 货币类型 - 枚举“ZSCurrencyType”
  285. WAREHOUSEID int64 `json:"warehouseid"` // 仓库ID
  286. WEIGHT1 float64 `json:"weight1"` // 总重量(克拉重量)-从
  287. WEIGHT2 float64 `json:"weight2"` // 总重量(克拉重量)-至
  288. WEIGHTAVG1 float64 `json:"weightavg1"` // 平均单颗重量-从
  289. WEIGHTAVG2 float64 `json:"weightavg2"` // 平均单颗重量-至
  290. ZSSHAPETYPE []string `json:"zsshapetype"` // 形状 - 枚举”ZSShapeType“ - 类型:1,2,4,5 ;(1为多个,逗号分隔)
  291. ZSCOLORTYPE []int32 `json:"zscolortype"` // 颜色
  292. ZSCLARITYTYPE []int32 `json:"zsclaritytype"` // 净度
  293. ZSCUTTYPE []int32 `json:"zscuttype"` // 切工
  294. ZSSYMMETRYTYPE []int32 `json:"zssymmetrytype"` // 对称度
  295. ZSPOLISHTYPE []int32 `json:"zspolishtype"` // 抛光度
  296. ZSFLUORESCENCETYPE []int32 `json:"zsfluorescencetype"` // 荧光
  297. ZSCERTTYPE []string `json:"zscerttype"` // 证书类型
  298. ORIGIN string `json:"origin"` // 原产地
  299. ZSSTYLETYPE []string `json:"zsstyletype"` // 款式
  300. ZSCZCOLOR1TYPE []string `json:"zsczcolor1type"` // 彩钻颜色1
  301. PageJosn // 分页
  302. }
  303. // SellOrder 出售大厅委托单
  304. type SellOrder struct {
  305. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES" form:"zsallproperties"` // 商品(查询字段-模糊查询)
  306. SELLUSERNAME string `json:"sellusername" xorm:"SELLUSERNAME" form:"sellusername"` // 卖方(查询字段-模糊查询)
  307. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` // 钻石分类 - 描述
  308. WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
  309. USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
  310. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY" form:"zscategory"` // 钻石分类 - 枚举”ZSCategory“
  311. ZSCURRENCYTYPE int32 `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 枚举“ZSCurrencyType”
  312. GOODSNO string `json:"goodsno" xorm:"GOODSNO"` // 商品编号
  313. IsQueryDiamond bool // 是否钻石查询
  314. ZSCURRENCYTYPE_S []string `json:"-"` // 货币类型 - 枚举“ZSCurrencyType”
  315. WAREHOUSEID int64 `json:"-"` // 仓库ID
  316. WEIGHT float64 `json:"-"` // 总重量(克拉重量) - 类型:1,2,3,4,5
  317. WEIGHT_END float64 `json:"-"` // 总重量(克拉重量) - 类型:1,2,3,4,5
  318. WEIGHTAVG float64 `json:"-"` // 平均单颗重量 - 类型:1,3
  319. WEIGHTAVG_END float64 `json:"-"` // 平均单颗重量 - 类型:1,3
  320. ZSSHAPETYPE []string `json:"-"` // 形状 - 枚举”ZSShapeType“ - 类型:1,2,4,5 ;(1为多个,逗号分隔)
  321. ZSCOLORTYPE1 int32 `json:"-"` // 颜色1 - 枚举”ZSColorType“ - 类型:1,2,3,4
  322. ZSCOLORTYPE2 int32 `json:"-"` // 颜色2 - 枚举”ZSColorType“ - 类型:1,3
  323. ZSCOLORTYPE []int32 `json:"-"` // 颜色
  324. ZSCLARITYTYPE1 int32 `json:"-"` // 净度1 - 枚举”ZSClarityType“ - 类型:1,2,3,4,5
  325. ZSCLARITYTYPE2 int32 `json:"-"` // 净度2 - 枚举”ZSClarityType“ - 类型:1,3
  326. ZSCLARITYTYPE []int32 `json:"-"` // 净度
  327. ZSCUTTYPE1 int32 `json:"-"` // 切工1 - 枚举”ZSCutType“ - 类型:1,2,4,5
  328. ZSCUTTYPE2 int32 `json:"-"` // 切工2 - 枚举”ZSCutType“ - 类型:1
  329. ZSCUTTYPE []int32 `json:"-"` // 切工
  330. ZSSYMMETRYTYPE1 int32 `json:"-"` // 对称度1 - 枚举”ZSSymmetryType“ - 类型:1,2,4,5
  331. ZSSYMMETRYTYPE2 int32 `json:"-"` // 对称度2 - 枚举”ZSSymmetryType“ - 类型:1
  332. ZSSYMMETRYTYPE []int32 `json:"-"` // 对称度
  333. ZSPOLISHTYPE1 int32 `json:"-"` // 抛光度1 - 枚举”ZSPolishType“ - 类型:1,2,4,5
  334. ZSPOLISHTYPE2 int32 `json:"-"` // 抛光度2 - 枚举”ZSPolishType“ - 类型:1
  335. ZSPOLISHTYPE []int32 `json:"-"` // 抛光度
  336. ZSFLUORESCENCETYPE1 int32 `json:"-"` // 荧光1 - 枚举”ZSFluorescenceType“ - 类型:1,2,3,4,5
  337. ZSFLUORESCENCETYPE2 int32 `json:"-"` // 荧光2 - 枚举”ZSFluorescenceType” - 类型:1,3
  338. ZSFLUORESCENCETYPE []int32 `json:"-"` // 荧光
  339. ZSCERTTYPE []string `json:"-"` // 证书类型
  340. ORIGIN string `json:"-"` // 原产地 - 类型:3
  341. ZSSTYLETYPE []string `json:"-"` // 款式 - 类型:4
  342. ZSCZCOLOR1TYPE []string `json:"-" xorm:"ZSCZCOLOR1TYPE"` // 彩钻颜色1 - 枚举”ZSCZColor1Type“ - 类型:5
  343. WRTRADEORDERID string `json:"wrtradeorderid" xorm:"WRTRADEORDERID1" form:"wrtradeorderid"` // 仓单贸易委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
  344. TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
  345. WRTRADETYPE int32 `json:"wrtradetype" xorm:"WRTRADETYPE"` // 仓单贸易类型 - 1:挂牌 2:摘牌 3:提货卖(文化中国) 4:提货买(文化中国)
  346. BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
  347. RELATEDWRTRADEORDERID int64 `json:"relatedwrtradeorderid" xorm:"RELATEDWRTRADEORDERID"` // 关联委托单号(摘牌委托关联挂牌委托单ID)
  348. MARKETID int64 `json:"marketid" xorm:"MARKETID"` // 市场ID
  349. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账号
  350. WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID/商品ID(77)
  351. ORDERQTY int64 `json:"-" xorm:"ORDERQTY"` // 委托数量
  352. TRADEQTY int64 `json:"-" xorm:"TRADEQTY"` // 成交数量
  353. CANCELQTY int64 `json:"cancelqty" xorm:"CANCELQTY"` // 撤销数量
  354. WRPRICETYPE int32 `json:"wrpricetype" xorm:"WRPRICETYPE"` // 价格方式 - 1:固定价 2-浮动价 - [挂牌]
  355. FIXEDPRICE float64 `json:"fixedprice" xorm:"FIXEDPRICE"` // [克拉单价]固定价格 - [挂牌]
  356. ISSPECIFIED int32 `json:"isspecified" xorm:"ISSPECIFIED"` // 是否指定对手 - 0:不指定 1:指定好友(贸易圈) 2:指定对手 - [挂牌]
  357. PRICEFACTOR float64 `json:"pricefactor" xorm:"PRICEFACTOR"` // 价格系数(浮动价时填写) - [挂牌]
  358. PRICEMOVE float64 `json:"pricemove" xorm:"PRICEMOVE"` // 升贴水(浮动价时填写) - [挂牌]
  359. FIRSTRATIO float64 `json:"firstratio" xorm:"FIRSTRATIO"` // 首付比率 - [挂牌时指定,摘牌时使用]
  360. WRTRANSFERUSERID int64 `json:"wrtransferuserid" xorm:"WRTRANSFERUSERID"` // 仓单受让用户 - [摘牌]
  361. TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格 - [摘牌] (浮动价 ((商品1价格*商品1价格系数+升贴水)* 商品1重量系数 + 商品2价格*商品2价格系数+商品2升贴水)* 商品2重量系数 ...)* 委托单价格系数 + 委托单升贴水)
  362. FREEZEFIRSTAMOUNT float64 `json:"freezefirstamount" xorm:"FREEZEFIRSTAMOUNT"` // 冻结首付金额 - [摘牌]
  363. UNFREEZEFIRSTAMOUNT float64 `json:"unfreezefirstamount" xorm:"UNFREEZEFIRSTAMOUNT"` // 解冻首付金额 - [摘牌]
  364. PERFORMANCETEMPLATEID int64 `json:"performancetemplateid" xorm:"PERFORMANCETEMPLATEID"` // 履约计划模板ID
  365. VALIDTYPE int32 `json:"validtype" xorm:"VALIDTYPE"` // 有效类型 - 1当日有效 2本周有效 3指定日期有效 4一直有效
  366. VALIDTIME time.Time `json:"validtime" xorm:"VALIDTIME"` // 有效期限
  367. ORDERTIME string `json:"ordertime" xorm:"ORDERTIME1"` // 委托时间
  368. CANCELTIME time.Time `json:"canceltime" xorm:"CANCELTIME"` // 撤销时间
  369. WRTRADEORDERSTATUS int32 `json:"wrtradeorderstatus" xorm:"WRTRADEORDERSTATUS"` // 委托状态 - 参考枚举'WRTradeOrderStatus' - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败
  370. CLIENTTICKET string `json:"-" xorm:"CLIENTTICKET"` // 客户端流水号
  371. ORDERSRC int32 `json:"-" xorm:"ORDERSRC"` // 委托来源 - 1:客户端 2:管理端 3:风控服务 4:交割服务 5:交易服务 6:交易日结
  372. CLIENTTYPE int32 `json:"-" xorm:"CLIENTTYPE"` // 客户端类型 - 0:保留为未填终端类型 1:PC管理端 2:PC交易端 3:手机客户端_安卓 4:网页客户端 5:微信客户端 6:手机客户端_苹果 7:网上开户客户端 8:无效终端编号 9:报价终端(中江)
  373. UUID string `json:"uuid" xorm:"UUID"` // 发起端唯一id
  374. CLIENTORDERTIME time.Time `json:"clientordertime" xorm:"CLIENTORDERTIME"` // 客户端委托时间
  375. RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 错误代码
  376. OPERATORID int64 `json:"-" xorm:"OPERATORID"` // 操作员ID
  377. PRICEDISPLAYMODE int32 `json:"-" xorm:"PRICEDISPLAYMODE"` // 浮动价显示方式 - 1:合并显示 2:分开显示1: 价格显示一个值 :(商品拟合价*价格系统+升贴水)2: 价格显示两个值:(商品拟合价*价格系统) 、 升贴水
  378. FREEZEMARGIN float64 `json:"freezemargin" xorm:"FREEZEMARGIN"` // 冻结保证金
  379. UNFREEZEMARGIN float64 `json:"unfreezemargin" xorm:"UNFREEZEMARGIN"` // 解冻保证金
  380. FREEZECHARGE float64 `json:"freezecharge" xorm:"FREEZECHARGE"` // 冻结手续费
  381. UNFREEZECHARGE float64 `json:"unfreezecharge" xorm:"UNFREEZECHARGE"` // 解冻手续费
  382. MARGINALGORITHM int32 `json:"marginalgorithm" xorm:"MARGINALGORITHM"` // 保证金方式 - 1:比率 2:固定
  383. MARGINVALUE float64 `json:"marginvalue" xorm:"MARGINVALUE"` // 保证金设置值
  384. CHARGEALGORITHM int32 `json:"chargealgorithm" xorm:"CHARGEALGORITHM"` // 手续费收取方式 1:比率 2:固定
  385. CHARGEALGORITHMVALUE float64 `json:"chargealgorithmvalue" xorm:"CHARGEALGORITHMVALUE"` // 手续费设置值(交易所部分)
  386. CHARGEALGORITHMVALUE2 float64 `json:"chargealgorithmvalue2" xorm:"CHARGEALGORITHMVALUE2"` // 手续费设置值(会员部分)
  387. CANBARGAIN int32 `json:"canbargain" xorm:"CANBARGAIN"` // 是否可议价 - 0:不可 1:可
  388. WRBARGAINID int64 `json:"wrbargainid" xorm:"WRBARGAINID"` // 议价申请单ID
  389. ATTACHMENT1 string `json:"attachment1" xorm:"ATTACHMENT1"` // 附件1
  390. ATTACHMENT2 string `json:"attachment2" xorm:"ATTACHMENT2"` // 附件2
  391. APPLYID int64 `json:"applyid" xorm:"APPLYID"` // 申请单ID
  392. EXCHANGERATE float64 `json:"exchangerate" xorm:"EXCHANGERATE"` // 汇率[67]
  393. ORDERAMOUNT float64 `json:"orderamount" xorm:"ORDERAMOUNT"` // 挂牌金额[账户] [67]= OrderQty * FixedPrice * ExchangeRate /100
  394. TOTALQTY float64 `json:"totalqty" xorm:"TOTALQTY"` // 总重量
  395. REMAINQTY float64 `json:"remainqty" xorm:"REMAINQTY"` // 剩余重量
  396. PageEx `xorm:"extends"` // 页码信息
  397. }
  398. func (r *SellOrder) calc() {
  399. }
  400. // buildSql 出售大厅
  401. func (r *SellOrder) buildSql() string {
  402. var sqlId utils.SQLVal = `
  403. SELECT
  404. (t.ORDERQTY / 100) TOTALQTY,
  405. ((t.ORDERQTY - t.TRADEQTY) / 100) REMAINQTY,
  406. q.ZSCATEGORYDISPLAY,
  407. q.SELLUSERNAME,
  408. q.ZSCATEGORY,
  409. q.ZSCURRENCYTYPE,
  410. q.GOODSNO,
  411. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME1,
  412. to_char(t.WRTRADEORDERID) WRTRADEORDERID1,
  413. t.*
  414. FROM WRTrade_OrderDetail t
  415. INNER JOIN View_GZ_WRStandard_Ex_Query q ON t.wrstandardid = q.wrstandardid
  416. WHERE t.marketid=67201 AND t.BuyOrSell = 1 AND t.WRTradeOrderStatus IN (3,7)
  417. `
  418. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  419. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  420. sqlId.AndEx("t.WRTRADEORDERID", r.WRTRADEORDERID, r.WRTRADEORDERID != "")
  421. sqlId.AndLike("q.SELLUSERNAME", r.SELLUSERNAME)
  422. sqlId.OrderByDesc("t.WRTRADEORDERID")
  423. sqlId.Page(r.Page, r.PageSize)
  424. return sqlId.String()
  425. }
  426. // buildQueryDiamond 钻石搜索
  427. func (r *SellOrder) buildQueryDiamond() string {
  428. var sqlId utils.SQLVal = `
  429. SELECT
  430. (t.ORDERQTY / 100) TOTALQTY,
  431. ((t.ORDERQTY - t.TRADEQTY) / 100) REMAINQTY,
  432. q.ZSCATEGORYDISPLAY,
  433. q.SELLUSERNAME,
  434. q.ZSCATEGORY,
  435. q.ZSCURRENCYTYPE,
  436. q.GOODSNO,
  437. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
  438. t.*
  439. FROM WRTrade_OrderDetail t
  440. INNER JOIN View_GZ_WRStandard_Ex_Query q ON t.wrstandardid = q.wrstandardid
  441. WHERE t.marketid=67201 AND t.BuyOrSell = 1 AND t.WRTradeOrderStatus IN (3,7)
  442. `
  443. sqlId.And("q.ZSCATEGORY", r.ZSCATEGORY)
  444. if len(r.ZSCURRENCYTYPE_S) > 0 {
  445. sqlId.JoinFormat(" AND q.ZSCURRENCYTYPE IN (%v)", strings.Join(r.ZSCURRENCYTYPE_S, ","))
  446. }
  447. sqlId.AndEx("q.WAREHOUSEID", r.WAREHOUSEID, r.WAREHOUSEID > 0)
  448. utils.AndBetween(&sqlId, "q.WEIGHT", r.WEIGHT, r.WEIGHT_END)
  449. utils.AndBetween(&sqlId, "q.WEIGHTAVG", r.WEIGHTAVG, r.WEIGHTAVG_END)
  450. sqlId.AndLikes("q.ZSSHAPETYPE", r.ZSSHAPETYPE...)
  451. for _, t := range r.ZSCOLORTYPE {
  452. sqlId.LessOrEq("q.ZSCOLORTYPE1", t)
  453. sqlId.BiggerOrEq("q.ZSCOLORTYPE2", t)
  454. }
  455. for _, t := range r.ZSCLARITYTYPE {
  456. sqlId.LessOrEq("q.ZSCLARITYTYPE1", t)
  457. sqlId.BiggerOrEq("q.ZSCLARITYTYPE2", t)
  458. }
  459. for _, t := range r.ZSCUTTYPE {
  460. sqlId.LessOrEq("q.ZSCUTTYPE1", t)
  461. sqlId.BiggerOrEq("q.ZSCUTTYPE2", t)
  462. }
  463. for _, t := range r.ZSSYMMETRYTYPE {
  464. sqlId.LessOrEq("q.ZSSYMMETRYTYPE1", t)
  465. sqlId.BiggerOrEq("q.ZSSYMMETRYTYPE2", t)
  466. }
  467. for _, t := range r.ZSPOLISHTYPE {
  468. sqlId.LessOrEq("q.ZSPOLISHTYPE1", t)
  469. sqlId.BiggerOrEq("q.ZSPOLISHTYPE2", t)
  470. }
  471. for _, t := range r.ZSFLUORESCENCETYPE {
  472. sqlId.LessOrEq("q.ZSFLUORESCENCETYPE1", t)
  473. sqlId.BiggerOrEq("q.ZSFLUORESCENCETYPE2", t)
  474. }
  475. if len(r.ZSCERTTYPE) > 0 {
  476. sqlId.JoinFormat(" AND q.ZSCERTTYPE IN (%v)", strings.Join(r.ZSCERTTYPE, ","))
  477. }
  478. sqlId.AndLike("q.ORIGIN", r.ORIGIN)
  479. if len(r.ZSSTYLETYPE) > 0 {
  480. sqlId.JoinFormat(" AND q.ZSSTYLETYPE IN (%v)", strings.Join(r.ZSSTYLETYPE, ","))
  481. }
  482. if len(r.ZSCZCOLOR1TYPE) > 0 {
  483. sqlId.JoinFormat(" AND q.ZSCZCOLOR1TYPE IN (%v)", strings.Join(r.ZSCZCOLOR1TYPE, ","))
  484. }
  485. sqlId.Page(r.Page, r.PageSize)
  486. return sqlId.String()
  487. }
  488. func (r *SellOrder) GetDataByPage() (interface{}, error, int, int, int) {
  489. sData := make([]SellOrder, 0)
  490. sql := ""
  491. if !r.IsQueryDiamond {
  492. // 出售大厅查询
  493. sql = r.buildSql()
  494. } else {
  495. // 钻石搜索
  496. sql = r.buildQueryDiamond()
  497. }
  498. err := db.GetEngine().SQL(sql).Find(&sData)
  499. total := 0
  500. for i := range sData {
  501. sData[i].calc()
  502. total = sData[i].Total
  503. }
  504. return sData, err, r.Page, r.PageSize, total
  505. }
  506. // MyBuyOrder 我的求购
  507. type MyBuyOrder struct {
  508. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES" form:"zsallproperties"` // 商品(查询字段-模糊查询)
  509. ZSTABLEDISPLAY string `json:"zstabledisplay" xorm:"ZSTABLEDISPLAY"` // 求购信息
  510. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` //
  511. ZSCURRENCYTYPEDISPLAY string `json:"zscurrencytypedisplay" xorm:"ZSCURRENCYTYPEDISPLAY"` //
  512. ZSSHAPETYPEDISPLAY string `json:"zsshapetypedisplay" xorm:"ZSSHAPETYPEDISPLAY"` //
  513. ZSCOLORTYPEDISPLAY string `json:"zscolortypedisplay" xorm:"ZSCOLORTYPEDISPLAY"` //
  514. ZSCLARITYTYPEDISPLAY string `json:"zsclaritytypedisplay" xorm:"ZSCLARITYTYPEDISPLAY"` //
  515. ZSCUTTYPEDISPLAY string `json:"zscuttypedisplay" xorm:"ZSCUTTYPEDISPLAY"` //
  516. ZSSYMMETRYTYPEDISPLAY string `json:"zssymmetrytypedisplay" xorm:"ZSSYMMETRYTYPEDISPLAY"` //
  517. ZSPOLISHTYPEDISPLAY string `json:"zspolishtypedisplay" xorm:"ZSPOLISHTYPEDISPLAY"` //
  518. ZSFLUORESCENCETYPEDISPLAY string `json:"zsfluorescencetypedisplay" xorm:"ZSFLUORESCENCETYPEDISPLAY"` //
  519. ZSCRYSTALTYPEDISPLAY string `json:"zscrystaltypedisplay" xorm:"ZSCRYSTALTYPEDISPLAY"` //
  520. ZSSTYLETYPEDISPLAY string `json:"zsstyletypedisplay" xorm:"ZSSTYLETYPEDISPLAY"` //
  521. ZSCZCOLOR1TYPEDISPLAY string `json:"zsczcolor1typedisplay" xorm:"ZSCZCOLOR1TYPEDISPLAY"` //
  522. ZSCZCOLOR2TYPEDISPLAY string `json:"zsczcolor2typedisplay" xorm:"ZSCZCOLOR2TYPEDISPLAY"` //
  523. ZSCZCOLOR3TYPEDISPLAY string `json:"zsczcolor3typedisplay" xorm:"ZSCZCOLOR3TYPEDISPLAY"` //
  524. WAREHOUSEINFOSDISPLAY string `json:"warehouseinfosdisplay" xorm:"WAREHOUSEINFOSDISPLAY"` //
  525. WRTRADEORDERID string `json:"wrtradeorderid" xorm:"WRTRADEORDERID1" form:"wrtradeorderid"` // [委托单号]买委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
  526. USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 用户ID
  527. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账户ID
  528. WRTRADEORDERSTATUS int32 `json:"wrtradeorderstatus" xorm:"WRTRADEORDERSTATUS"` // 委托状态 - 参考枚举'WRTradeOrderStatus' - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败WRTrade_OrderDetail、
  529. VALIDTIME string `json:"validtime" xorm:"VALIDTIME"` // 有效期限
  530. ORDERTIME string `json:"ordertime" xorm:"ORDERTIME"` // 委托时间
  531. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY" form:"zscategory"` // 钻石分类 - 枚举”ZSCategory“
  532. ZSCURRENCYTYPE string `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 多个, 逗号分隔
  533. ZSSHAPETYPE string `json:"zsshapetype" xorm:"ZSSHAPETYPE"` // 形状 - 多个, 逗号分隔
  534. ZSCOLORTYPE string `json:"zscolortype" xorm:"ZSCOLORTYPE"` // 颜色 - 两个, 逗号分隔
  535. ZSCLARITYTYPE string `json:"zsclaritytype" xorm:"ZSCLARITYTYPE"` // 净度 - 两个, 逗号分隔
  536. ZSCUTTYPE string `json:"zscuttype" xorm:"ZSCUTTYPE"` // 切工 - 两个, 逗号分隔
  537. ZSSYMMETRYTYPE string `json:"zssymmetrytype" xorm:"ZSSYMMETRYTYPE"` // 对称度 - 两个, 逗号分隔
  538. ZSPOLISHTYPE string `json:"zspolishtype" xorm:"ZSPOLISHTYPE"` // 抛光度 - 两个, 逗号分隔
  539. ZSFLUORESCENCETYPE string `json:"zsfluorescencetype" xorm:"ZSFLUORESCENCETYPE"` // 荧光 - 多个, 逗号分隔
  540. ZSSIZE string `json:"zssize" xorm:"ZSSIZE"` // 尺寸 - 两个小数, 逗号分隔
  541. ZSCRYSTALTYPE string `json:"zscrystaltype" xorm:"ZSCRYSTALTYPE"` // 晶型 - 多个,逗号分隔
  542. ORIGIN string `json:"origin" xorm:"ORIGIN"` // 原产地
  543. ZSSTYLETYPE string `json:"zsstyletype" xorm:"ZSSTYLETYPE"` // 款式 - 多个, 逗号分隔
  544. ZSCZCOLOR1TYPE string `json:"zsczcolor1type" xorm:"ZSCZCOLOR1TYPE"` // 彩钻颜色1, 逗号分隔
  545. ZSCZCOLOR2TYPE string `json:"zsczcolor2type" xorm:"ZSCZCOLOR2TYPE"` // 彩钻颜色2, 逗号分隔
  546. ZSCZCOLOR3TYPE string `json:"zsczcolor3type" xorm:"ZSCZCOLOR3TYPE"` // 彩钻颜色3, 逗号分隔
  547. REMARK string `json:"remark" xorm:"REMARK"` // 备注
  548. WAREHOUSEIDS string `json:"warehouseids" xorm:"WAREHOUSEIDS"` // 仓库ID - 多个, 逗号分隔
  549. MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
  550. IsHis bool `json:"-" form:"ishis"` // 是否历史查询
  551. PageEx `xorm:"extends"` // 页码信息
  552. }
  553. func (r *MyBuyOrder) calc() {
  554. }
  555. func (r *MyBuyOrder) buildSql() string {
  556. var sqlId utils.SQLVal = `
  557. SELECT
  558. to_char(t.WRTRADEORDERID) WRTRADEORDERID1,
  559. t.WRTRADEORDERSTATUS,
  560. to_char(t.VALIDTIME, 'yyyy-mm-dd') VALIDTIME,
  561. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
  562. q.*
  563. FROM WRTrade_OrderDetail t
  564. INNER JOIN View_GZ_BuyOrderDetail_Query q ON t.wrtradeorderid = q.wrtradeorderid
  565. WHERE t.marketid=67201 AND t.BuyOrSell = 0 AND t.WRTradeOrderStatus IN (3,7)
  566. `
  567. sqlId.And("t.USERID", r.USERID)
  568. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  569. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  570. sqlId.AndEx("t.WRTRADEORDERID", r.WRTRADEORDERID, r.WRTRADEORDERID != "")
  571. sqlId.OrderByDesc("t.WRTRADEORDERID")
  572. sqlId.Page(r.Page, r.PageSize)
  573. return sqlId.String()
  574. }
  575. func (r *MyBuyOrder) buildSql_His() string {
  576. var sqlId utils.SQLVal = `
  577. SELECT
  578. to_char(t.WRTRADEORDERID) WRTRADEORDERID1,
  579. t.WRTRADEORDERSTATUS,
  580. to_char(t.VALIDTIME, 'yyyy-mm-dd') VALIDTIME,
  581. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
  582. q.*
  583. FROM HIS_WRTrade_OrderDetail t
  584. INNER JOIN View_GZ_BuyOrderDetail_Query q ON t.wrtradeorderid = q.wrtradeorderid
  585. WHERE t.isvaliddata =1 AND t.marketid=67201 AND t.BuyOrSell = 0 AND t.WRTradeOrderStatus IN (3,7)
  586. `
  587. sqlId.And("t.USERID", r.USERID)
  588. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  589. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  590. sqlId.AndEx("t.WRTRADEORDERID", r.WRTRADEORDERID, r.WRTRADEORDERID != "")
  591. sqlId.OrderByDesc("t.WRTRADEORDERID")
  592. sqlId.Page(r.Page, r.PageSize)
  593. return sqlId.String()
  594. }
  595. func (r *MyBuyOrder) GetDataByPage() (interface{}, error, int, int, int) {
  596. sData := make([]MyBuyOrder, 0)
  597. sql := ""
  598. if r.IsHis {
  599. sql = r.buildSql_His()
  600. } else {
  601. sql = r.buildSql()
  602. }
  603. err := db.GetEngine().SQL(sql).Find(&sData)
  604. total := 0
  605. for i := range sData {
  606. sData[i].calc()
  607. total = sData[i].Total
  608. }
  609. return sData, err, r.Page, r.PageSize, total
  610. }
  611. // MySellOrder 我的出售
  612. type MySellOrder struct {
  613. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES" form:"zsallproperties"` // 商品(查询字段-模糊查询)
  614. WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
  615. USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 用户ID
  616. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY" form:"zscategory"` // 钻石分类 - 枚举”ZSCategory“
  617. ZSCURRENCYTYPE int32 `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 枚举“ZSCurrencyType”
  618. GOODSNO string `json:"goodsno" xorm:"GOODSNO"` // 商品编号
  619. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` // 钻石分类 - 描述
  620. WRTRADEORDERID string `json:"wrtradeorderid" xorm:"WRTRADEORDERID1" form:"wrtradeorderid"` // 仓单贸易委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
  621. TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
  622. WRTRADETYPE int32 `json:"wrtradetype" xorm:"WRTRADETYPE"` // 仓单贸易类型 - 1:挂牌 2:摘牌 3:提货卖(文化中国) 4:提货买(文化中国)
  623. BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
  624. RELATEDWRTRADEORDERID int64 `json:"relatedwrtradeorderid" xorm:"RELATEDWRTRADEORDERID"` // 关联委托单号(摘牌委托关联挂牌委托单ID)
  625. MARKETID int64 `json:"marketid" xorm:"MARKETID"` // 市场ID
  626. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账号
  627. WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID/商品ID(77)
  628. ORDERQTY int64 `json:"-" xorm:"ORDERQTY"` // 委托数量
  629. TRADEQTY int64 `json:"-" xorm:"TRADEQTY"` // 成交数量
  630. CANCELQTY int64 `json:"cancelqty" xorm:"CANCELQTY"` // 撤销数量
  631. WRPRICETYPE int32 `json:"wrpricetype" xorm:"WRPRICETYPE"` // 价格方式 - 1:固定价 2-浮动价 - [挂牌]
  632. FIXEDPRICE float64 `json:"fixedprice" xorm:"FIXEDPRICE"` // [克拉单价]固定价格 - [挂牌]
  633. ISSPECIFIED int32 `json:"isspecified" xorm:"ISSPECIFIED"` // 是否指定对手 - 0:不指定 1:指定好友(贸易圈) 2:指定对手 - [挂牌]
  634. PRICEFACTOR float64 `json:"pricefactor" xorm:"PRICEFACTOR"` // 价格系数(浮动价时填写) - [挂牌]
  635. PRICEMOVE float64 `json:"pricemove" xorm:"PRICEMOVE"` // 升贴水(浮动价时填写) - [挂牌]
  636. FIRSTRATIO float64 `json:"firstratio" xorm:"FIRSTRATIO"` // 首付比率 - [挂牌时指定,摘牌时使用]
  637. WRTRANSFERUSERID int64 `json:"wrtransferuserid" xorm:"WRTRANSFERUSERID"` // 仓单受让用户 - [摘牌]
  638. TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格 - [摘牌] (浮动价 ((商品1价格*商品1价格系数+升贴水)* 商品1重量系数 + 商品2价格*商品2价格系数+商品2升贴水)* 商品2重量系数 ...)* 委托单价格系数 + 委托单升贴水)
  639. FREEZEFIRSTAMOUNT float64 `json:"freezefirstamount" xorm:"FREEZEFIRSTAMOUNT"` // 冻结首付金额 - [摘牌]
  640. UNFREEZEFIRSTAMOUNT float64 `json:"unfreezefirstamount" xorm:"UNFREEZEFIRSTAMOUNT"` // 解冻首付金额 - [摘牌]
  641. PERFORMANCETEMPLATEID int64 `json:"performancetemplateid" xorm:"PERFORMANCETEMPLATEID"` // 履约计划模板ID
  642. VALIDTYPE int32 `json:"validtype" xorm:"VALIDTYPE"` // 有效类型 - 1当日有效 2本周有效 3指定日期有效 4一直有效
  643. VALIDTIME time.Time `json:"validtime" xorm:"VALIDTIME"` // 有效期限
  644. ORDERTIME string `json:"ordertime" xorm:"ORDERTIME1"` // 委托时间
  645. CANCELTIME time.Time `json:"canceltime" xorm:"CANCELTIME"` // 撤销时间
  646. WRTRADEORDERSTATUS int32 `json:"wrtradeorderstatus" xorm:"WRTRADEORDERSTATUS"` // 委托状态 - 参考枚举'WRTradeOrderStatus' - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败
  647. CLIENTTICKET string `json:"-" xorm:"CLIENTTICKET"` // 客户端流水号
  648. ORDERSRC int32 `json:"-" xorm:"ORDERSRC"` // 委托来源 - 1:客户端 2:管理端 3:风控服务 4:交割服务 5:交易服务 6:交易日结
  649. CLIENTTYPE int32 `json:"-" xorm:"CLIENTTYPE"` // 客户端类型 - 0:保留为未填终端类型 1:PC管理端 2:PC交易端 3:手机客户端_安卓 4:网页客户端 5:微信客户端 6:手机客户端_苹果 7:网上开户客户端 8:无效终端编号 9:报价终端(中江)
  650. UUID string `json:"uuid" xorm:"UUID"` // 发起端唯一id
  651. CLIENTORDERTIME time.Time `json:"clientordertime" xorm:"CLIENTORDERTIME"` // 客户端委托时间
  652. RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 错误代码
  653. OPERATORID int64 `json:"-" xorm:"OPERATORID"` // 操作员ID
  654. PRICEDISPLAYMODE int32 `json:"-" xorm:"PRICEDISPLAYMODE"` // 浮动价显示方式 - 1:合并显示 2:分开显示1: 价格显示一个值 :(商品拟合价*价格系统+升贴水)2: 价格显示两个值:(商品拟合价*价格系统) 、 升贴水
  655. FREEZEMARGIN float64 `json:"freezemargin" xorm:"FREEZEMARGIN"` // 冻结保证金
  656. UNFREEZEMARGIN float64 `json:"unfreezemargin" xorm:"UNFREEZEMARGIN"` // 解冻保证金
  657. FREEZECHARGE float64 `json:"freezecharge" xorm:"FREEZECHARGE"` // 冻结手续费
  658. UNFREEZECHARGE float64 `json:"unfreezecharge" xorm:"UNFREEZECHARGE"` // 解冻手续费
  659. MARGINALGORITHM int32 `json:"marginalgorithm" xorm:"MARGINALGORITHM"` // 保证金方式 - 1:比率 2:固定
  660. MARGINVALUE float64 `json:"marginvalue" xorm:"MARGINVALUE"` // 保证金设置值
  661. CHARGEALGORITHM int32 `json:"chargealgorithm" xorm:"CHARGEALGORITHM"` // 手续费收取方式 1:比率 2:固定
  662. CHARGEALGORITHMVALUE float64 `json:"chargealgorithmvalue" xorm:"CHARGEALGORITHMVALUE"` // 手续费设置值(交易所部分)
  663. CHARGEALGORITHMVALUE2 float64 `json:"chargealgorithmvalue2" xorm:"CHARGEALGORITHMVALUE2"` // 手续费设置值(会员部分)
  664. CANBARGAIN int32 `json:"canbargain" xorm:"CANBARGAIN"` // 是否可议价 - 0:不可 1:可
  665. WRBARGAINID int64 `json:"wrbargainid" xorm:"WRBARGAINID"` // 议价申请单ID
  666. ATTACHMENT1 string `json:"attachment1" xorm:"ATTACHMENT1"` // 附件1
  667. ATTACHMENT2 string `json:"attachment2" xorm:"ATTACHMENT2"` // 附件2
  668. APPLYID int64 `json:"applyid" xorm:"APPLYID"` // 申请单ID
  669. EXCHANGERATE float64 `json:"exchangerate" xorm:"EXCHANGERATE"` // 汇率[67]
  670. ORDERAMOUNT float64 `json:"orderamount" xorm:"ORDERAMOUNT"` // 挂牌金额[账户] [67]= OrderQty * FixedPrice * ExchangeRate /100
  671. TOTALQTY float64 `json:"totalqty" xorm:"TOTALQTY"` // 总重量
  672. SELLEDQTY float64 `json:"selledqty" xorm:"SELLEDQTY"` // 成交重量
  673. IsHis bool `json:"-" form:"ishis"` // 是否历史查询
  674. PageEx `xorm:"extends"` // 页码信息
  675. }
  676. func (r *MySellOrder) calc() {
  677. }
  678. func (r *MySellOrder) buildSql() string {
  679. var sqlId utils.SQLVal = `
  680. SELECT
  681. (t.ORDERQTY / 100) TOTALQTY,
  682. (t.TRADEQTY / 100) SELLEDQTY,
  683. q.ZSCATEGORY,
  684. q.ZSCURRENCYTYPE,
  685. q.GOODSNO,
  686. q.ZSCATEGORYDISPLAY,
  687. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME1,
  688. to_char(t.WRTRADEORDERID) WRTRADEORDERID1,
  689. t.*
  690. FROM WRTrade_OrderDetail t
  691. INNER JOIN View_GZ_WRStandard_Ex_Query q ON t.wrstandardid = q.wrstandardid
  692. WHERE t.marketid=67201 AND t.BuyOrSell = 1 AND t.WRTradeOrderStatus IN (3,7)
  693. `
  694. sqlId.And("q.USERID", r.USERID)
  695. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  696. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  697. sqlId.AndEx("t.WRTRADEORDERID", r.WRTRADEORDERID, r.WRTRADEORDERID != "")
  698. sqlId.OrderByDesc("t.WRTRADEORDERID")
  699. sqlId.Page(r.Page, r.PageSize)
  700. return sqlId.String()
  701. }
  702. func (r *MySellOrder) buildSql_His() string {
  703. var sqlId utils.SQLVal = `
  704. SELECT
  705. (t.ORDERQTY / 100) TOTALQTY,
  706. (t.TRADEQTY / 100) SELLEDQTY,
  707. q.ZSCATEGORY,
  708. q.ZSCURRENCYTYPE,
  709. q.GOODSNO,
  710. q.ZSCATEGORYDISPLAY,
  711. to_char(t.ORDERTIME, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME1,
  712. to_char(t.WRTRADEORDERID) WRTRADEORDERID1,
  713. t.*
  714. FROM HIS_WRTrade_OrderDetail t
  715. INNER JOIN View_GZ_WRStandard_Ex_Query q ON t.wrstandardid = q.wrstandardid
  716. WHERE t.isvaliddata =1 AND t.marketid=67201 AND t.BuyOrSell = 1 AND t.WRTradeOrderStatus IN (3,7)
  717. `
  718. sqlId.And("q.USERID", r.USERID)
  719. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  720. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  721. sqlId.AndEx("t.WRTRADEORDERID", r.WRTRADEORDERID, r.WRTRADEORDERID != "")
  722. sqlId.OrderByDesc("t.WRTRADEORDERID")
  723. sqlId.Page(r.Page, r.PageSize)
  724. return sqlId.String()
  725. }
  726. func (r *MySellOrder) GetDataByPage() (interface{}, error, int, int, int) {
  727. sData := make([]MySellOrder, 0)
  728. sql := ""
  729. if r.IsHis {
  730. sql = r.buildSql_His()
  731. } else {
  732. sql = r.buildSql()
  733. }
  734. err := db.GetEngine().SQL(sql).Find(&sData)
  735. total := 0
  736. for i := range sData {
  737. sData[i].calc()
  738. total = sData[i].Total
  739. }
  740. return sData, err, r.Page, r.PageSize, total
  741. }
  742. // MyDeListing 我的摘牌
  743. type MyDeListing struct {
  744. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES" form:"zsallproperties"` // 商品(查询字段-模糊查询)
  745. SELLUSERNAME string `json:"-" xorm:"SELLUSERNAME"` // 卖方
  746. BUYUSERNAME string `json:"-" xorm:"BUYUSERNAME"` // 买方
  747. USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 用户ID
  748. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY" form:"zscategory"` // 钻石分类 - 枚举”ZSCategory“
  749. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` //
  750. ZSCURRENCYTYPE int32 `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 枚举“ZSCurrencyType”
  751. GOODSNO string `json:"goodsno" xorm:"GOODSNO"` // 商品编号
  752. WRTRADEDETAILID string `json:"wrtradedetailid" xorm:"WRTRADEDETAILID1" form:"wrtradedetailid"` // 仓单贸易成交单ID(321+Unix秒时间戳(10位)+xxxxxx)
  753. TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
  754. MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
  755. WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID
  756. DELIVERYGOODSID int32 `json:"deliverygoodsid" xorm:"DELIVERYGOODSID"` // 现货品种ID
  757. WRSTANDARDID int32 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
  758. BUYUSERID int64 `json:"buyuserid" xorm:"BUYUSERID"` // 买方用户ID
  759. BUYACCOUNTID int64 `json:"buyaccountid" xorm:"BUYACCOUNTID"` // 买方账号ID
  760. SELLUSERID int64 `json:"selluserid" xorm:"SELLUSERID"` // 卖方用户ID
  761. SELLACCOUNTID int64 `json:"sellaccountid" xorm:"SELLACCOUNTID"` // 卖方账号ID
  762. TRADETIME string `json:"tradetime" xorm:"TRADETIME1"` // 成交时间
  763. TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格
  764. TRADEQTY int64 `json:"-" xorm:"TRADEQTY"` // 成交数量
  765. TRADEAMOUNT float64 `json:"tradeamount" xorm:"TRADEAMOUNT"` // 成交金额
  766. PERFORMANCEPLANID int64 `json:"performanceplanid" xorm:"PERFORMANCEPLANID"` // 履约计划ID/合同ID
  767. EXCHANGERATE float64 `json:"exchangerate" xorm:"EXCHANGERATE"` // 汇率
  768. BUYCHARGEVALUE float64 `json:"buychargevalue" xorm:"BUYCHARGEVALUE"` // 买方手续费
  769. SELLCHARGEVALUE float64 `json:"sellchargevalue" xorm:"SELLCHARGEVALUE"` // 卖方手续费
  770. ORITRADEAMOUNT float64 `json:"oritradeamount" xorm:"ORITRADEAMOUNT"` // 成交金额[商品币种]
  771. QTY float64 `json:"qty" xorm:"QTY"` // 成交重量
  772. MATCHUSERNAME string `json:"matchusername"` // 对手方
  773. BuyOrSell int64 `json:"buyorsell" form:"buyorsell"` // 方向 - 0:全部 1:买 2:卖
  774. BeginDate string `json:"-" form:"begindate"` // 开始交易日
  775. EndDate string `json:"-" form:"enddate"` // 结束交易日
  776. PageEx `xorm:"extends"` // 页码信息
  777. }
  778. func (r *MyDeListing) calc() {
  779. // 设置对手方
  780. if r.USERID == r.BUYUSERID {
  781. r.MATCHUSERNAME = r.SELLUSERNAME
  782. r.BuyOrSell = 1
  783. } else if r.USERID == r.SELLUSERID {
  784. r.MATCHUSERNAME = r.BUYUSERNAME
  785. r.BuyOrSell = 2
  786. }
  787. }
  788. func (r *MyDeListing) buildSql() string {
  789. var sqlId utils.SQLVal = `
  790. SELECT
  791. ua1.accountname BUYUSERNAME,
  792. q.SELLUSERNAME,
  793. q.USERID,
  794. q.ZSCATEGORY,
  795. q.ZSCATEGORYDISPLAY,
  796. q.ZSCURRENCYTYPE,
  797. q.GOODSNO,
  798. (t.TRADEQTY / 100) QTY,
  799. to_char(t.TRADETIME, 'yyyy-mm-dd hh24:mi:ss') TRADETIME1,
  800. to_char(t.WRTRADEDETAILID) WRTRADEDETAILID1,
  801. t.*
  802. FROM WRTrade_TradeQuote t
  803. INNER JOIN View_GZ_WRStandard_Ex_Query q ON t.wrstandardid = q.wrstandardid
  804. LEFT JOIN UserAccount ua1 ON t.BuyUserID = ua1.userid
  805. WHERE t.marketid=67201
  806. `
  807. sqlId.AndEx("q.ZSCATEGORY", r.ZSCATEGORY, r.ZSCATEGORY > 0)
  808. sqlId.AndLike("q.ZSALLPROPERTIES", r.ZSALLPROPERTIES)
  809. sqlId.AndEx("t.WRTRADEDETAILID", r.WRTRADEDETAILID, r.WRTRADEDETAILID != "")
  810. switch r.BuyOrSell {
  811. case 0:
  812. // 全部
  813. sqlId.JoinFormat(" AND (t.BUYUSERID=%v OR t.SELLUSERID=%v)", r.USERID, r.USERID)
  814. case 1:
  815. // 买
  816. sqlId.And("t.BUYUSERID", r.USERID)
  817. case 2:
  818. // 卖
  819. sqlId.And("t.SELLUSERID", r.USERID)
  820. }
  821. if r.BeginDate != "" && r.EndDate != "" {
  822. sqlId.JoinFormat(" AND (t.TRADEDATE >= '%v' AND t.TRADEDATE <= '%v')", r.BeginDate, r.EndDate)
  823. }
  824. sqlId.OrderByDesc("t.WRTRADEDETAILID")
  825. sqlId.Page(r.Page, r.PageSize)
  826. return sqlId.String()
  827. }
  828. func (r *MyDeListing) GetDataByPage() (interface{}, error, int, int, int) {
  829. sData := make([]MyDeListing, 0)
  830. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  831. total := 0
  832. for i := range sData {
  833. sData[i].calc()
  834. total = sData[i].Total
  835. }
  836. return sData, err, r.Page, r.PageSize, total
  837. }
  838. // MyBargainApply 我的询价-求购
  839. type MyBargainApply struct {
  840. WRBARGAINID string `json:"wrbargainid" xorm:"WRBARGAINID1"` // [询价单号]议价申请单ID(327+Unix秒时间戳(10位)+xxxxxx)
  841. WRTRADEORDERID int64 `json:"wrtradeorderid" xorm:"WRTRADEORDERID"` // 关联委托单ID
  842. TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
  843. MARKETID int64 `json:"marketid" xorm:"MARKETID"` // 市场ID
  844. USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 摘牌人用户ID
  845. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 摘牌资金账号
  846. BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
  847. APPLYQTY int64 `json:"-" xorm:"APPLYQTY"` // 摘牌数量
  848. APPLYPRICE string `json:"applyprice" xorm:"APPLYPRICE"` // 申请价格
  849. APPLYSTATUS int32 `json:"applystatus" xorm:"APPLYSTATUS" form:"applystatus"` // 申请状态 - 1:待确认 2:已确认 3:已拒绝 4:已撤销 5:系统撤销 6:处理失败 7:确认中
  850. HANDLESTATUS int32 `json:"handlestatus" xorm:"HANDLESTATUS"` // 处理状态
  851. APPLYTIME string `json:"applytime" xorm:"APPLYTIME1"` // 申请时间
  852. APPLYREMARK string `json:"applyremark" xorm:"APPLYREMARK"` // 申请备注
  853. CONFIRMQTY int64 `json:"confirmqty" xorm:"CONFIRMQTY"` // 可接受数量(拒绝时填写)-作废
  854. CONFIRMPRICE float64 `json:"confirmprice" xorm:"CONFIRMPRICE"` // 可接受价格(拒绝时填写)-作废
  855. CONFIRMUSERID int64 `json:"confirmuserid" xorm:"CONFIRMUSERID"` // 确认人
  856. CONFIRMTIME time.Time `json:"confirmtime" xorm:"CONFIRMTIME"` // 确认时间
  857. CONFIRMREMARK string `json:"confirmremark" xorm:"CONFIRMREMARK"` // 确认备注
  858. REFPRICE string `json:"refprice" xorm:"REFPRICE"` // 参考价格
  859. RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 委托返回代码
  860. MATCHUSERID int64 `json:"matchuserid" xorm:"MATCHUSERID"` // 挂牌方用户ID
  861. MATCHACCOUNTID int64 `json:"matchaccountid" xorm:"MATCHACCOUNTID"` // 挂牌方资金账号
  862. LADINGBILLID int64 `json:"ladingbillid" xorm:"LADINGBILLID"` // 摘牌方提单ID [卖]
  863. SUBNUM int32 `json:"subnum" xorm:"SUBNUM"` // 摘牌方提单子单号 [卖]
  864. SELLUSERNAME string `json:"sellusername" xorm:"SELLUSERNAME"` // 卖方
  865. QTY int64 `json:"qty" xorm:"QTY"` // 申请数量
  866. PageEx `xorm:"extends"` // 页码信息
  867. }
  868. func (r *MyBargainApply) calc() {
  869. }
  870. func (r *MyBargainApply) buildSql() string {
  871. var sqlId utils.SQLVal = `
  872. SELECT
  873. ua.accountname SELLUSERNAME,
  874. (t.APPLYQTY / 100) QTY,
  875. to_char(t.APPLYTIME, 'yyyy-mm-dd hh24:mi:ss') APPLYTIME1,
  876. to_char(t.WRBARGAINID) WRBARGAINID1,
  877. t.*
  878. FROM WRTrade_BargainApply t
  879. LEFT JOIN UserAccount ua ON t.MATCHUSERID = ua.userid
  880. WHERE t.marketid=67201
  881. `
  882. sqlId.And("t.USERID", r.USERID)
  883. sqlId.AndEx("t.APPLYSTATUS", r.APPLYSTATUS, r.APPLYSTATUS > 0)
  884. sqlId.OrderByDesc("t.WRBARGAINID")
  885. sqlId.Page(r.Page, r.PageSize)
  886. return sqlId.String()
  887. }
  888. func (r *MyBargainApply) GetDataByPage() (interface{}, error, int, int, int) {
  889. sData := make([]MyBargainApply, 0)
  890. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  891. total := 0
  892. for i := range sData {
  893. sData[i].calc()
  894. total = sData[i].Total
  895. }
  896. return sData, err, r.Page, r.PageSize, total
  897. }
  898. // MyDelistingApply 我的询价-出售
  899. type MyDelistingApply struct {
  900. SELLDELISTINGAPPLYID int64 `json:"selldelistingapplyid" xorm:"SELLDELISTINGAPPLYID"` // [询价单号]卖摘牌申请ID(916+Unix秒时间戳(10位)+xxxxxx)
  901. BUYWRTRADEORDERID int64 `json:"buywrtradeorderid" xorm:"BUYWRTRADEORDERID"` // 买委托单ID
  902. BUYUSERID int64 `json:"buyuserid" xorm:"BUYUSERID"` // 买方用户ID
  903. SELLUSERID int64 `json:"selluserid" xorm:"SELLUSERID" form:"userid" binding:"required"` // 卖方用户ID
  904. SELLACCOUNTID int64 `json:"sellaccountid" xorm:"SELLACCOUNTID"` // 卖方账户ID
  905. WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
  906. WRFACTORTYPEID int64 `json:"wrfactortypeid" xorm:"WRFACTORTYPEID"` // 仓单要素类型ID
  907. APPLYQTY float64 `json:"applyqty" xorm:"APPLYQTY"` // 申请数量
  908. APPLYPRICE float64 `json:"applyprice" xorm:"APPLYPRICE"` // 申请价格
  909. APPLYSTATUS int32 `json:"applystatus" xorm:"APPLYSTATUS" form:"applystatus"` // 申请状态 - 1:待确认 2:已确认 3:已拒绝 4:已撤销 5:系统撤销 6:处理失败 7:确认中
  910. APPLYREMARK string `json:"applyremark" xorm:"APPLYREMARK"` // 申请备注
  911. APPLYTIME string `json:"applytime" xorm:"APPLYTIME1"` // 申请时间
  912. AUDITREMARK string `json:"auditremark" xorm:"AUDITREMARK"` // 确认备注
  913. SELLTRADEORDERID int64 `json:"selltradeorderid" xorm:"SELLTRADEORDERID"` // 卖方委托ID(买方确认成交后更新)
  914. AUDITTIME time.Time `json:"audittime" xorm:"AUDITTIME"` // 确认时间
  915. LADINGBILLID int64 `json:"ladingbillid" xorm:"LADINGBILLID"` // 卖方提单ID
  916. SUBNUM int32 `json:"subnum" xorm:"SUBNUM"` // 卖方提单子单号
  917. MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
  918. BUYUSERNAME string `json:"buyusername" xorm:"BUYUSERNAME"` // 买方
  919. PageEx `xorm:"extends"` // 页码信息
  920. }
  921. func (r *MyDelistingApply) calc() {
  922. }
  923. func (r *MyDelistingApply) buildSql() string {
  924. var sqlId utils.SQLVal = `
  925. SELECT
  926. ua.accountname BUYUSERNAME,
  927. to_char(t.APPLYTIME, 'yyyy-mm-dd hh24:mi:ss') APPLYTIME1,
  928. t.*
  929. FROM GZ_SellDelistingApply t
  930. LEFT JOIN UserAccount ua ON t.BUYUSERID = ua.userid
  931. WHERE t.marketid=67201
  932. `
  933. sqlId.And("t.SELLUSERID", r.SELLUSERID)
  934. sqlId.AndEx("t.APPLYSTATUS", r.APPLYSTATUS, r.APPLYSTATUS > 0)
  935. sqlId.OrderByDesc("t.SELLDELISTINGAPPLYID")
  936. sqlId.Page(r.Page, r.PageSize)
  937. return sqlId.String()
  938. }
  939. func (r *MyDelistingApply) GetDataByPage() (interface{}, error, int, int, int) {
  940. sData := make([]MyDelistingApply, 0)
  941. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  942. total := 0
  943. for i := range sData {
  944. sData[i].calc()
  945. total = sData[i].Total
  946. }
  947. return sData, err, r.Page, r.PageSize, total
  948. }
  949. // GZGoods 钻石信息
  950. type GZGoods struct {
  951. ZSALLPROPERTIES string `json:"-" xorm:"ZSALLPROPERTIES"` // 商品(查询字段-模糊查询)
  952. SELLUSERNAME string `json:"sellusername" xorm:"SELLUSERNAME"` // 账户名称(机构名称)
  953. SELLMOBILE string `json:"-" xorm:"SELLMOBILE"` // 手机号码(加密存储)
  954. ZSCATEGORYDISPLAY string `json:"zscategorydisplay" xorm:"ZSCATEGORYDISPLAY"` //
  955. ZSCURRENCYTYPEDISPLAY string `json:"zscurrencytypedisplay" xorm:"ZSCURRENCYTYPEDISPLAY"` //
  956. ZSCURRENCYTYPEDISPLAYUNIT string `json:"zscurrencytypedisplayunit" xorm:"ZSCURRENCYTYPEDISPLAYUNIT"` //
  957. WAREHOUSENAMEDISPLAY string `json:"warehousenamedisplay" xorm:"WAREHOUSENAMEDISPLAY"` //
  958. ZSSHAPETYPEDISPLAY string `json:"zsshapetypedisplay" xorm:"ZSSHAPETYPEDISPLAY"` //
  959. ZSCOLORTYPE1DISPLAY string `json:"zscolortype1display" xorm:"ZSCOLORTYPE1DISPLAY"` //
  960. ZSCOLORTYPE2DISPLAY string `json:"zscolortype2display" xorm:"ZSCOLORTYPE2DISPLAY"` //
  961. ZSCLARITYTYPE1DISPLAY string `json:"zsclaritytype1display" xorm:"ZSCLARITYTYPE1DISPLAY"` //
  962. ZSCLARITYTYPE2DISPLAY string `json:"zsclaritytype2display" xorm:"ZSCLARITYTYPE2DISPLAY"` //
  963. ZSCUTTYPE1DISPLAY string `json:"zscuttype1display" xorm:"ZSCUTTYPE1DISPLAY"` //
  964. ZSCUTTYPE2DISPLAY string `json:"zscuttype2display" xorm:"ZSCUTTYPE2DISPLAY"` //
  965. ZSSYMMETRYTYPE1DISPLAY string `json:"zssymmetrytype1display" xorm:"ZSSYMMETRYTYPE1DISPLAY"` //
  966. ZSSYMMETRYTYPE2DISPLAY string `json:"zssymmetrytype2display" xorm:"ZSSYMMETRYTYPE2DISPLAY"` //
  967. ZSPOLISHTYPE1DISPLAY string `json:"zspolishtype1display" xorm:"ZSPOLISHTYPE1DISPLAY"` //
  968. ZSPOLISHTYPE2DISPLAY string `json:"zspolishtype2display" xorm:"ZSPOLISHTYPE2DISPLAY"` //
  969. ZSFLUORESCENCETYPE1DISPLAY string `json:"zsfluorescencetype1display" xorm:"ZSFLUORESCENCETYPE1DISPLAY"` //
  970. ZSFLUORESCENCETYPE2DISPLAY string `json:"zsfluorescencetype2display" xorm:"ZSFLUORESCENCETYPE2DISPLAY"` //
  971. ZSCERTTYPEDISPLAY string `json:"zscerttypedisplay" xorm:"ZSCERTTYPEDISPLAY"` //
  972. ZSCRYSTALTYPEDISPLAY string `json:"zscrystaltypedisplay" xorm:"ZSCRYSTALTYPEDISPLAY"` //
  973. ZSSTYLETYPEDISPLAY string `json:"zsstyletypedisplay" xorm:"ZSSTYLETYPEDISPLAY"` //
  974. ZSCZCOLOR1TYPEDISPLAY string `json:"zsczcolor1typedisplay" xorm:"ZSCZCOLOR1TYPEDISPLAY"` //
  975. ZSCZCOLOR2TYPEDISPLAY string `json:"zsczcolor2typedisplay" xorm:"ZSCZCOLOR2TYPEDISPLAY"` //
  976. ZSCZCOLOR3TYPEDISPLAY string `json:"zsczcolor3typedisplay" xorm:"ZSCZCOLOR3TYPEDISPLAY"` //
  977. WRSTANDARDID int64 `json:"wrstandardid" xorm:"WRSTANDARDID"` // 现货商品ID
  978. USERID int64 `json:"userid" xorm:"USERID"` // 用户ID
  979. ZSCATEGORY int32 `json:"zscategory" xorm:"ZSCATEGORY"` // 钻石分类 - 枚举”ZSCategory“
  980. ZSCURRENCYTYPE int32 `json:"zscurrencytype" xorm:"ZSCURRENCYTYPE"` // 货币类型 - 枚举“ZSCurrencyType”
  981. GOODSNO string `json:"goodsno" xorm:"GOODSNO" form:"goodsno" binding:"required"` // 商品编号
  982. WAREHOUSEID int64 `json:"warehouseid" xorm:"WAREHOUSEID"` // 仓库ID
  983. MARKETPRICE string `json:"marketprice" xorm:"MARKETPRICE"` // 市场价
  984. IMAGEPATH string `json:"imagepath" xorm:"IMAGEPATH"` // 商品照片(相对地址)
  985. WRPATH string `json:"wrpath" xorm:"WRPATH"` // 仓单扫描件(相对地址)
  986. REMARK string `json:"remark" xorm:"REMARK"` // 备注
  987. PRICE float64 `json:"price" xorm:"PRICE"` // 总价(价格) - 类型:1,2,3,4,5
  988. WEIGHT float64 `json:"weight" xorm:"WEIGHT"` // 总重量(克拉重量) - 类型:1,2,3,4,5
  989. WEIGHTAVG float64 `json:"weightavg" xorm:"WEIGHTAVG"` // 平均单颗重量 - 类型:1,3
  990. PRICEPER string `json:"priceper" xorm:"PRICEPER"` // 克拉单价 - 类型:1,2,3,5
  991. ZSSHAPETYPE string `json:"zsshapetype" xorm:"ZSSHAPETYPE"` // 形状 - 枚举”ZSShapeType“ - 类型:1,2,4,5 ;(1为多个,逗号分隔)
  992. ZSCOLORTYPE1 int32 `json:"zscolortype1" xorm:"ZSCOLORTYPE1"` // 颜色1 - 枚举”ZSColorType“ - 类型:1,2,3,4
  993. ZSCOLORTYPE2 int32 `json:"zscolortype2" xorm:"ZSCOLORTYPE2"` // 颜色2 - 枚举”ZSColorType“ - 类型:1,3
  994. ZSCLARITYTYPE1 int32 `json:"zsclaritytype1" xorm:"ZSCLARITYTYPE1"` // 净度1 - 枚举”ZSClarityType“ - 类型:1,2,3,4,5
  995. ZSCLARITYTYPE2 int32 `json:"zsclaritytype2" xorm:"ZSCLARITYTYPE2"` // 净度2 - 枚举”ZSClarityType“ - 类型:1,3
  996. ZSCUTTYPE1 int32 `json:"zscuttype1" xorm:"ZSCUTTYPE1"` // 切工1 - 枚举”ZSCutType“ - 类型:1,2,4,5
  997. ZSCUTTYPE2 int32 `json:"zscuttype2" xorm:"ZSCUTTYPE2"` // 切工2 - 枚举”ZSCutType“ - 类型:1
  998. ZSSYMMETRYTYPE1 int32 `json:"zssymmetrytype1" xorm:"ZSSYMMETRYTYPE1"` // 对称度1 - 枚举”ZSSymmetryType“ - 类型:1,2,4,5
  999. ZSSYMMETRYTYPE2 int32 `json:"zssymmetrytype2" xorm:"ZSSYMMETRYTYPE2"` // 对称度2 - 枚举”ZSSymmetryType“ - 类型:1
  1000. ZSPOLISHTYPE1 int32 `json:"zspolishtype1" xorm:"ZSPOLISHTYPE1"` // 抛光度1 - 枚举”ZSPolishType“ - 类型:1,2,4,5
  1001. ZSPOLISHTYPE2 int32 `json:"zspolishtype2" xorm:"ZSPOLISHTYPE2"` // 抛光度2 - 枚举”ZSPolishType“ - 类型:1
  1002. ZSFLUORESCENCETYPE1 int32 `json:"zsfluorescencetype1" xorm:"ZSFLUORESCENCETYPE1"` // 荧光1 - 枚举”ZSFluorescenceType“ - 类型:1,2,3,4,5
  1003. ZSFLUORESCENCETYPE2 int32 `json:"zsfluorescencetype2" xorm:"ZSFLUORESCENCETYPE2"` // 荧光2 - 枚举”ZSFluorescenceType” - 类型:1,3
  1004. SIZE1 string `json:"size1" xorm:"SIZE1"` // 尺寸1 - 类型:2,4,5
  1005. SIZE2 string `json:"size2" xorm:"SIZE2"` // 尺寸2 - 类型:2,4,5
  1006. SIZE3 string `json:"size3" xorm:"SIZE3"` // 尺寸3 - 类型:2,4,5
  1007. ZSCERTTYPE int32 `json:"zscerttype" xorm:"ZSCERTTYPE"` // 证书类型 - 枚举”ZSCertType“ - 类型:2,4,5
  1008. CERNO string `json:"cerno" xorm:"CERNO"` // 证书编号 - 类型:2,4,5
  1009. ZSCRYSTALTYPE string `json:"zscrystaltype" xorm:"ZSCRYSTALTYPE"` // 晶型范围 - 枚举“ZSCrystalType“ - 类型:3, 多个,逗号分隔
  1010. CPCERTNO string `json:"cpcertno" xorm:"CPCERTNO"` // 金伯利证书编号 - 类型:3
  1011. ORIGIN string `json:"origin" xorm:"ORIGIN"` // 原产地 - 类型:3
  1012. KPWEIGHT string `json:"kpweight" xorm:"KPWEIGHT"` // 金伯利证书重量 - 类型:3
  1013. KPPATH string `json:"kppath" xorm:"KPPATH"` // 金伯利证书图片(相对地址) - 类型:3
  1014. ZSSTYLETYPE int32 `json:"zsstyletype" xorm:"ZSSTYLETYPE"` // 款式 - 类型:4
  1015. STONEDESC string `json:"stonedesc" xorm:"STONEDESC"` // 配石描述 - 类型:4
  1016. SETTINGMATERIAL string `json:"settingmaterial" xorm:"SETTINGMATERIAL"` // 镶嵌材料 - 类型:4
  1017. ZSCZCOLOR1TYPE int32 `json:"zsczcolor1type" xorm:"ZSCZCOLOR1TYPE"` // 彩钻颜色1 - 枚举”ZSCZColor1Type“ - 类型:5
  1018. ZSCZCOLOR2TYPE int32 `json:"zsczcolor2type" xorm:"ZSCZCOLOR2TYPE"` // 彩钻颜色2 - 枚举”ZSCZColor2Type“ - 类型:5
  1019. ZSCZCOLOR3TYPE int32 `json:"zsczcolor3type" xorm:"ZSCZCOLOR3TYPE"` // 彩钻颜色3 - 枚举”ZSCZColor3Type“ - 类型:5
  1020. ISVALID int32 `json:"isvalid" xorm:"ISVALID"` // 是否有效 - 0:无效 1:有效
  1021. MOBILE string `json:"mobile"` // 手机号码
  1022. }
  1023. func (r *GZGoods) calc() {
  1024. key, _ := hex.DecodeString(utils.AESSecretKey)
  1025. if len(r.SELLMOBILE) > 0 {
  1026. // 手机号码解密
  1027. if phonenum, err := hex.DecodeString(r.SELLMOBILE); err == nil { // hex -> []byte
  1028. if mobile, err := utils.AESDecrypt(phonenum, key); err == nil {
  1029. r.MOBILE = string(mobile)
  1030. }
  1031. }
  1032. }
  1033. }
  1034. func (r *GZGoods) buildSql() string {
  1035. var sqlId utils.SQLVal = `
  1036. SELECT
  1037. t.*,
  1038. u.MOBILE
  1039. FROM View_GZ_WRStandard_Ex_Query t
  1040. LEFT JOIN userinfo u ON u.USERID = t.USERID
  1041. WHERE GOODSNO = '%v'
  1042. `
  1043. sqlId.FormatParam(r.GOODSNO)
  1044. return sqlId.String()
  1045. }
  1046. // GetDataEx 从数据库中查询数据
  1047. func (r *GZGoods) GetDataEx() (interface{}, error) {
  1048. e := db.GetEngine()
  1049. s := e.SQL(r.buildSql())
  1050. var sData GZGoods
  1051. has, err := s.Get(&sData)
  1052. if err != nil {
  1053. return nil, err
  1054. }
  1055. if !has {
  1056. return struct{}{}, nil
  1057. }
  1058. sData.calc()
  1059. return sData, nil
  1060. }