taaccount.go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package taaccount
  2. import (
  3. "fmt"
  4. "mtp2_if/db"
  5. "mtp2_if/global/app"
  6. "mtp2_if/global/e"
  7. "mtp2_if/logger"
  8. "mtp2_if/models"
  9. "net/http"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // QueryAmountLogReq 资金流水查询(当前)请求参数
  13. type QueryAmountLogReq struct {
  14. app.PageInfo
  15. AccountID string `form:"accountID"` // 资金账户
  16. OperateType string `form:"operateType"` // 资金操作类型
  17. }
  18. // QueryAmountLogRsp 资金流水查询(当前)返回模型
  19. type QueryAmountLogRsp struct {
  20. models.Taaccountlog `xorm:"extends"`
  21. MarketName string `json:"marketname" xorm:"'MARKETNAME'"` // 市场名称
  22. TradeMode uint32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
  23. GoodsCode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
  24. GoodsName string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
  25. AGoodsCode string `json:"agoodscode" xorm:"'AGOODSCODE'"` // 竞拍商品代码
  26. AGoodsName string `json:"agoodsname" xorm:"'GOODSNAME'"` // 竞拍商品名称
  27. DGoodsCode string `json:"dgoodscode" xorm:"'DGOODSCODE'"` // 交割商品代码
  28. DGoodsName string `json:"dgoodsname" xorm:"'DGOODSNAME'"` // 交割商品名称
  29. OperateTypeName string `json:"OPERATETYPENAME" xorm:"OPERATETYPENAME"` // 资金操作类型名称
  30. }
  31. // QueryAmountLog 资金流水查询(当前)
  32. // @Summary 资金流水查询(当前)
  33. // @Produce json
  34. // @Security ApiKeyAuth
  35. // @Param page query int false "页码"
  36. // @Param pagesize query int false "每页条数"
  37. // @Param accountID query string true "资金账户 - 格式:1,2,3"
  38. // @Param OperateType query string false "资金操作类型 - 格式:1,2,3"
  39. // @Success 200 {object} QueryAmountLogRsp
  40. // @Failure 500 {object} app.Response
  41. // @Router /TaAccount/QueryAmountLog [get]
  42. // @Tags 资金账户
  43. // 参考通用查询:QueryClientAmountLog
  44. func QueryAmountLog(c *gin.Context) {
  45. appG := app.Gin{C: c}
  46. // 获取请求参数
  47. var req QueryAmountLogReq
  48. if err := appG.C.ShouldBindQuery(&req); err != nil {
  49. logger.GetLogger().Errorf("QueryAmountLog failed: %s", err.Error())
  50. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  51. return
  52. }
  53. // 查询数据
  54. datas := make([]QueryAmountLogRsp, 0)
  55. engine := db.GetEngine()
  56. s := engine.Table("TAACCOUNTLOG").
  57. Join("LEFT", "ENUMDICITEM", "ENUMDICITEM.ENUMITEMSTATUS = 1 and ENUMDICITEM.ENUMDICID = 39 and ENUMDICITEM.ENUMITEMNAME = TAACCOUNTLOG.OPERATETYPE").
  58. Join("LEFT", "MARKET", "MARKET.MARKETID = TAACCOUNTLOG.MARKETID").
  59. Join("LEFT", "GOODS", "GOODS.GOODSID = TAACCOUNTLOG.GOODSID").
  60. Join("LEFT", "AUCTION_ORDERINFO", "AUCTION_ORDERINFO.GOODSID = TAACCOUNTLOG.GOODSID").
  61. Join("LEFT", "DELIVERYGOODS", "DELIVERYGOODS.DELIVERYGOODSID = TAACCOUNTLOG.GOODSID").
  62. Select(`to_char(TAACCOUNTLOG.RELATIONORDERID) as RELATIONORDERID, TAACCOUNTLOG.*,
  63. MARKET.MARKETNAME, MARKET.TRADEMODE,
  64. GOODS.GOODSCODE, GOODS.GOODSNAME,
  65. AUCTION_ORDERINFO.GOODSCODE AS AGOODSCODE, AUCTION_ORDERINFO.GOODSNAME AS AGOODSNAME,
  66. DELIVERYGOODS.DELIVERYGOODSCODE AS DGOODSCODE, DELIVERYGOODS.DELIVERYGOODSNAME AS DGOODSNAME,
  67. ENUMDICITEM.ENUMDICNAME AS OPERATETYPENAME`).
  68. Where(fmt.Sprintf("TAACCOUNTLOG.ACCOUNTID in (%s)", req.AccountID)).Desc("TAACCOUNTLOG.AUTOID")
  69. if len(req.OperateType) > 0 {
  70. s = s.And(fmt.Sprintf("TAACCOUNTLOG.OPERATETYPE in (%s)", req.OperateType))
  71. }
  72. if err := s.Find(&datas); err != nil {
  73. // 查询失败
  74. logger.GetLogger().Errorf("QueryAmountLog failed: %s", err.Error())
  75. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  76. return
  77. }
  78. // 查询成功返回
  79. if req.PageSize > 0 {
  80. // 分页
  81. rst := make([]QueryAmountLogRsp, 0)
  82. // 开始上标
  83. start := req.Page * req.PageSize
  84. // 结束下标
  85. end := start + req.PageSize
  86. if start <= len(datas) {
  87. // 判断结束下标是否越界
  88. if end > len(datas) {
  89. end = len(datas)
  90. }
  91. rst = datas[start:end]
  92. } else {
  93. rst = datas[0:0]
  94. }
  95. logger.GetLogger().Infof("QueryAmountLog successed: %v", rst)
  96. appG.ResponseByPage(http.StatusOK, e.SUCCESS, rst, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: len(datas)})
  97. } else {
  98. // 不分页
  99. logger.GetLogger().Infof("QueryAmountLog successed: %v", datas)
  100. appG.Response(http.StatusOK, e.SUCCESS, datas)
  101. }
  102. }
  103. // QueryHisAmountLogReq 资金流水查询(历史)请求参数
  104. type QueryHisAmountLogReq struct {
  105. app.PageInfo
  106. AccountID string `form:"accountID"` // 资金账户
  107. OperateType string `form:"operateType"` // 资金操作类型
  108. StartDate string `form:"startDate"` // 开始时间
  109. EndDate string `form:"endDate"` // 结束时间
  110. }
  111. // QueryHisAmountLogRsp 资金流水查询(历史)返回模型
  112. type QueryHisAmountLogRsp struct {
  113. models.Histaaccountlog `xorm:"extends"`
  114. MarketName string `json:"marketname" xorm:"'MARKETNAME'"` // 市场名称
  115. TradeMode uint32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
  116. GoodsCode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
  117. GoodsName string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
  118. AGoodsCode string `json:"agoodscode" xorm:"'AGOODSCODE'"` // 竞拍商品代码
  119. AGoodsName string `json:"agoodsname" xorm:"'GOODSNAME'"` // 竞拍商品名称
  120. DGoodsCode string `json:"dgoodscode" xorm:"'DGOODSCODE'"` // 交割商品代码
  121. DGoodsName string `json:"dgoodsname" xorm:"'DGOODSNAME'"` // 交割商品名称
  122. OperateTypeName string `json:"OPERATETYPENAME" xorm:"OPERATETYPENAME"` // 资金操作类型名称
  123. }
  124. // QueryHisAmountLog 资金流水查询(历史)
  125. // @Summary 资金流水查询(历史)
  126. // @Produce json
  127. // @Security ApiKeyAuth
  128. // @Param page query int false "页码"
  129. // @Param pagesize query int false "每页条数"
  130. // @Param accountID query string true "资金账户 - 格式:1,2,3"
  131. // @Param OperateType query string false "资金操作类型 - 格式:1,2,3"
  132. // @Param startDate query string false "开始时间 - 闭区间,格式:yyyy-MM-dd"
  133. // @Param endDate query string false "结束时间 - 闭区间,格式:yyyy-MM-dd"
  134. // @Success 200 {object} QueryHisAmountLogRsp
  135. // @Failure 500 {object} app.Response
  136. // @Router /TaAccount/QueryHisAmountLog [get]
  137. // @Tags 资金账户
  138. // 参考通用查询:Client_QueryHis_taaccountlog
  139. func QueryHisAmountLog(c *gin.Context) {
  140. appG := app.Gin{C: c}
  141. // 获取请求参数
  142. var req QueryHisAmountLogReq
  143. if err := appG.C.ShouldBindQuery(&req); err != nil {
  144. logger.GetLogger().Errorf("QueryHisAmountLog failed: %s", err.Error())
  145. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  146. return
  147. }
  148. // 查询数据
  149. datas := make([]QueryHisAmountLogRsp, 0)
  150. engine := db.GetEngine()
  151. s := engine.Table("HIS_TAACCOUNTLOG").
  152. Join("LEFT", "ENUMDICITEM", "ENUMDICITEM.ENUMITEMSTATUS = 1 and ENUMDICITEM.ENUMDICID = 39 and ENUMDICITEM.ENUMITEMNAME = HIS_TAACCOUNTLOG.OPERATETYPE").
  153. Join("LEFT", "MARKET", "MARKET.MARKETID = HIS_TAACCOUNTLOG.MARKETID").
  154. Join("LEFT", "GOODS", "GOODS.GOODSID = HIS_TAACCOUNTLOG.GOODSID").
  155. Join("LEFT", "HIS_AUCTION_ORDERINFO", "HIS_AUCTION_ORDERINFO.GOODSID = HIS_TAACCOUNTLOG.GOODSID and HIS_AUCTION_ORDERINFO.ISVALIDDATA = 1").
  156. Join("LEFT", "DELIVERYGOODS", "DELIVERYGOODS.DELIVERYGOODSID = HIS_TAACCOUNTLOG.GOODSID").
  157. Select(`to_char(HIS_TAACCOUNTLOG.RELATIONORDERID) as RELATIONORDERID, HIS_TAACCOUNTLOG.*,
  158. MARKET.MARKETNAME, MARKET.TRADEMODE,
  159. GOODS.GOODSCODE, GOODS.GOODSNAME,
  160. HIS_AUCTION_ORDERINFO.GOODSCODE AS AGOODSCODE, HIS_AUCTION_ORDERINFO.GOODSNAME AS AGOODSNAME,
  161. DELIVERYGOODS.DELIVERYGOODSCODE AS DGOODSCODE, DELIVERYGOODS.DELIVERYGOODSNAME AS DGOODSNAME,
  162. ENUMDICITEM.ENUMDICNAME AS OPERATETYPENAME`).
  163. Where(fmt.Sprintf(`HIS_TAACCOUNTLOG.ISVALIDDATA = 1 and HIS_TAACCOUNTLOG.ACCOUNTID in (%s)`, req.AccountID)).Desc("HIS_TAACCOUNTLOG.AUTOID")
  164. if len(req.OperateType) > 0 {
  165. s = s.And(fmt.Sprintf("HIS_TAACCOUNTLOG.OPERATETYPE in (%s)", req.OperateType))
  166. }
  167. if err := s.Find(&datas); err != nil {
  168. // 查询失败
  169. logger.GetLogger().Errorf("QueryHisAmountLog failed: %s", err.Error())
  170. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  171. return
  172. }
  173. // 查询成功返回
  174. if req.PageSize > 0 {
  175. // 分页
  176. rst := make([]QueryHisAmountLogRsp, 0)
  177. // 开始上标
  178. start := req.Page * req.PageSize
  179. // 结束下标
  180. end := start + req.PageSize
  181. if start <= len(datas) {
  182. // 判断结束下标是否越界
  183. if end > len(datas) {
  184. end = len(datas)
  185. }
  186. rst = datas[start:end]
  187. } else {
  188. rst = datas[0:0]
  189. }
  190. logger.GetLogger().Infof("QueryHisAmountLog successed: %v", rst)
  191. appG.ResponseByPage(http.StatusOK, e.SUCCESS, rst, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: len(datas)})
  192. } else {
  193. // 不分页
  194. logger.GetLogger().Infof("QueryHisAmountLog successed: %v", datas)
  195. appG.Response(http.StatusOK, e.SUCCESS, datas)
  196. }
  197. }