trade_guangzhou.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta/eta_task/models/data_manage"
  6. "eta/eta_task/utils"
  7. "fmt"
  8. "time"
  9. )
  10. // 广州商品交易所-分类
  11. func SyncFromGuangzhouClassify() (err error) {
  12. data := make(map[string]interface{})
  13. data["Source"] = utils.DATA_SOURCE_GFEX
  14. method := `classify/list`
  15. result, err := HttpPost("SyncFromGuangzhouClassify", method, data)
  16. if err != nil {
  17. fmt.Println("SyncFromGuangzhouClassify HttpPost Err:", err.Error())
  18. }
  19. utils.FileLog.Info(result)
  20. fmt.Println("SyncFromGuangzhouClassify result:", result)
  21. respObj := new(data_manage.GuangzhouClassifyResp)
  22. err = json.Unmarshal([]byte(result), &respObj)
  23. if err != nil {
  24. return err
  25. }
  26. //获取所有指标信息 某一天的
  27. allClassify, err := data_manage.GetBaseFromTradeGuangzhouClassifyAll()
  28. if err != nil {
  29. return
  30. }
  31. existIndexMap := make(map[int]*data_manage.BaseFromTradeGuangzhouClassify)
  32. for _, v := range allClassify {
  33. existIndexMap[v.BaseFromTradeGuangzhouClassifyId] = v
  34. }
  35. for _, item := range respObj.Data {
  36. if _, ok := existIndexMap[item.BaseFromTradeGuangzhouClassifyId]; !ok {
  37. newID, err := data_manage.AddBaseFromTradeGuangzhouClassify(item)
  38. if err != nil {
  39. fmt.Println("AddBaseFromTradeGuangzhouClassify error:", err)
  40. }
  41. fmt.Println("AddBaseFromTradeGuangzhouClassify new indexID:", newID)
  42. }
  43. }
  44. return err
  45. }
  46. // 广州商品交易所-指标信息
  47. func SyncFromGuangzhouIndex() (err error) {
  48. method := `index/list`
  49. data := make(map[string]interface{})
  50. data["Source"] = utils.DATA_SOURCE_GFEX
  51. result, err := HttpPost("SyncFromGuangzhou", method, data)
  52. if err != nil {
  53. fmt.Println("SyncFromGuangzhou HttpPost Err:", err.Error())
  54. }
  55. utils.FileLog.Info(result)
  56. fmt.Println("SyncFromGuangzhou result:", result)
  57. respObj := new(data_manage.GuangzhouIndexResp)
  58. err = json.Unmarshal([]byte(result), &respObj)
  59. if err != nil {
  60. return err
  61. }
  62. //获取所有指标信息 某一天的
  63. allIndex, err := data_manage.GetBaseFromTradeGuangzhouIndexAll()
  64. if err != nil {
  65. return
  66. }
  67. existIndexMap := make(map[int]*data_manage.BaseFromTradeGuangzhouIndex)
  68. for _, v := range allIndex {
  69. existIndexMap[v.BaseFromTradeGuangzhouIndexId] = v
  70. }
  71. for _, item := range respObj.Data {
  72. if _, ok := existIndexMap[item.BaseFromTradeGuangzhouIndexId]; !ok {
  73. newID, err := data_manage.AddBaseFromTradeGuangzhouIndex(item)
  74. if err != nil {
  75. fmt.Println("insert error:", err)
  76. }
  77. fmt.Println("insert new indexID:", newID)
  78. }
  79. }
  80. return err
  81. }
  82. // 广州商品交易所-合约
  83. func SyncFromGuangzhouContract() (err error) {
  84. data := make(map[string]interface{})
  85. data["Source"] = utils.DATA_SOURCE_GFEX
  86. method := `contract/list`
  87. result, err := HttpPost("SyncFromGuangzhouContract", method, data)
  88. if err != nil {
  89. fmt.Println("SyncFromGuangzhouContract HttpPost Err:", err.Error())
  90. }
  91. utils.FileLog.Info(result)
  92. fmt.Println("SyncFromGuangzhouContract result:", result)
  93. respObj := new(data_manage.GuangzhouContractResp)
  94. err = json.Unmarshal([]byte(result), &respObj)
  95. if err != nil {
  96. return err
  97. }
  98. //获取所有指标信息 某一天的
  99. allClassify, err := data_manage.GetBaseFromTradeGuangzhouContractAll()
  100. if err != nil {
  101. return
  102. }
  103. existContractMap := make(map[int]*data_manage.BaseFromTradeGuangzhouContract)
  104. for _, v := range allClassify {
  105. existContractMap[v.BaseFromTradeGuangzhouContractId] = v
  106. }
  107. obj := new(data_manage.BaseFromTradeGuangzhouIndex)
  108. for _, item := range respObj.Data {
  109. if _, ok := existContractMap[item.BaseFromTradeGuangzhouClassifyId]; !ok {
  110. err = obj.AddBaseFromTradeGuangzhouContract(item)
  111. if err != nil {
  112. fmt.Println("AddBaseFromTradeGuangzhouContract error:", err)
  113. }
  114. fmt.Println("AddBaseFromTradeGuangzhouContract new indexID:")
  115. }
  116. }
  117. return err
  118. }
  119. // SyncComTradeData 同步UN指标数据
  120. func SyncFromGuangzhouTradeData() (err error) {
  121. startDate := time.Now().Format(utils.FormatDate) + " 00:00:00"
  122. //var startDate string
  123. maxDate, err := data_manage.GetBaseFromTradeGuangzhouMaxDate()
  124. if err != nil || maxDate.IsZero() {
  125. startDate = time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + " 00:00:00"
  126. } else {
  127. startDate = maxDate.AddDate(0, 0, 1).Format(utils.FormatDate) + " 00:00:00"
  128. }
  129. method := `index/data/list_page`
  130. existDataMap := make(map[string]*data_manage.BaseFromTradeGuangzhouData)
  131. allData, err1 := data_manage.GetAllBaseFromTradeGuangzhouDataList(startDate)
  132. if err1 != nil {
  133. fmt.Println("get GetAllBaseFromTradeGuangzhouDataList err:" + err1.Error())
  134. return
  135. }
  136. for _, dv := range allData {
  137. tmpKey := dv.IndexCode + "_" + dv.DataTime
  138. existDataMap[tmpKey] = dv
  139. }
  140. //获取所有指标信息 某一天的
  141. maxPage := 1
  142. for currPage := 0; currPage < maxPage; currPage++ {
  143. data := make(map[string]interface{})
  144. data["Source"] = utils.DATA_SOURCE_GFEX
  145. data["StartDate"] = startDate
  146. data["CurrPage"] = currPage
  147. data["PageSize"] = 500 //
  148. var result string
  149. result, err = HttpPost("SyncFromGuangzhouTradeData", method, data)
  150. utils.FileLog.Info(result)
  151. fmt.Println(result)
  152. respObj := new(data_manage.BaseFromTradeGuangzhouDataResp)
  153. err = json.Unmarshal([]byte(result), &respObj)
  154. if err != nil {
  155. fmt.Println("json.Unmarshal err:" + err.Error())
  156. return err
  157. }
  158. if respObj.Ret != 200 {
  159. err = errors.New(respObj.ErrMsg)
  160. return
  161. }
  162. // 总页码数
  163. maxPage = respObj.Data.Paging.Pages
  164. addDataList := make([]*data_manage.BaseFromTradeGuangzhouData, 0)
  165. if respObj.Data.List != nil && len(respObj.Data.List) > 0 {
  166. for _, dv := range respObj.Data.List {
  167. tmpKey := dv.IndexCode + "_" + dv.DataTime
  168. if _, ok := existDataMap[tmpKey]; !ok {
  169. addDataList = append(addDataList, dv)
  170. existDataMap[tmpKey] = dv
  171. }
  172. }
  173. }
  174. // 最后如果还有数据未插入,那么继续插入吧
  175. if len(addDataList) > 0 {
  176. _, err = data_manage.MultiAddBaseFromTradeGuangzhouData(addDataList)
  177. if err != nil {
  178. fmt.Println("MultiAddBaseFromTradeGuangzhouData error:", err)
  179. }
  180. }
  181. }
  182. return err
  183. }