cq119.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package api_proxy
  2. import (
  3. "DataShare/global"
  4. "DataShare/model"
  5. "DataShare/util"
  6. "encoding/json"
  7. "fmt"
  8. "github.com/sirupsen/logrus"
  9. "strings"
  10. "sync"
  11. )
  12. //类成员
  13. type CQ119 struct{
  14. Xftoken string `json:"xftoken"`
  15. UserName string `json:"userName"` //yzzcptcs
  16. Password string `json:"password"` //ADmin123456!
  17. LoginUrl string `json:"loginUrl"` //http://dam.cq119.gov.cn:9528/admin-ht/api/external/stoken
  18. }
  19. //请求结构体
  20. type CQ119RequestBody struct{
  21. Page int `json:"page"`
  22. Size int `json:"size"`
  23. Search string `json:"search"`
  24. RowIdOnly int `json:"rowIdOnly"`
  25. }
  26. //xftoken
  27. type CQ119_Xftoken_Resp struct{
  28. Code int `json:"code"`
  29. Xftoken string `json:"xftoken"`
  30. }
  31. var histance_119 *CQ119
  32. var once_119 sync.Once
  33. func CQ119_GetInstance() *CQ119{
  34. once_119.Do(func() {
  35. histance_119 = &CQ119{
  36. UserName: global.SystemConfig.Cq119.Username,
  37. Password: global.SystemConfig.Cq119.Password,
  38. LoginUrl: global.SystemConfig.Cq119.LoginUrl,
  39. Xftoken: "",
  40. }
  41. })
  42. return histance_119
  43. }
  44. func(this *CQ119) CQ119_OnAuth(url string, username string, password string)([]byte, error){
  45. type User struct{
  46. UserName string `json:"username"`
  47. Password string `json:"password"`
  48. }
  49. authReq := model.Auth119Info{
  50. UserName: username,
  51. Password: password,
  52. }
  53. jsonData,err := json.Marshal(authReq)
  54. if err != nil {
  55. return nil,err
  56. }
  57. byteData,err := util.HttpPost(url,jsonData,"")
  58. fmt.Println(string(byteData))
  59. return byteData,err
  60. }
  61. func(this *CQ119) CQ119_ApiRequest(url string, req *CQ119RequestBody)([]byte, error){
  62. jsonData,err := json.Marshal(req)
  63. if err != nil {
  64. return nil,err
  65. }
  66. byteData,err := util.HttpPost(url,jsonData,this.Xftoken)
  67. //fmt.Println(string(byteData))
  68. if strings.Contains(string(byteData),"请申请合法的token后再调用此接口") {
  69. authInfo, err := this.CQ119_OnAuth(this.LoginUrl,this.UserName,this.Password)
  70. if err != nil {
  71. return nil, err
  72. }
  73. var xftoken_resp CQ119_Xftoken_Resp
  74. err = json.NewDecoder(strings.NewReader(string(authInfo))).Decode(&xftoken_resp)
  75. if err != nil{
  76. global.SystemLogger.Log(logrus.ErrorLevel,fmt.Sprintf("json转结构体出错, err:%s",err.Error()))
  77. return nil,err
  78. }
  79. this.Xftoken = xftoken_resp.Xftoken
  80. //再来请求一遍
  81. byteData,err = util.HttpPost(url,jsonData,this.Xftoken)
  82. if err != nil{
  83. return nil,err
  84. }
  85. }
  86. //var tempMap map[string]interface{}
  87. //err = json.Unmarshal(byteData, &tempMap)
  88. //if err != nil {
  89. // panic(err)
  90. //}
  91. //for k, values := range tempMap {
  92. // fmt.Printf("%s: %s\n", k, values) // ... and this line
  93. //}
  94. return byteData,err
  95. }
  96. func(this *CQ119) CQ119_ApiCall(url string, param []byte)(map[string]interface{},[]byte, error){
  97. //jsonData,err := json.Marshal(param)
  98. //if err != nil {
  99. // return nil,err
  100. //}
  101. byteData,err := util.HttpPost(url,param,this.Xftoken)
  102. //fmt.Println(string(byteData))
  103. if strings.Contains(string(byteData),"请申请合法的token后再调用此接口") {
  104. authInfo, err := this.CQ119_OnAuth(this.LoginUrl,this.UserName,this.Password)
  105. if err != nil {
  106. return nil,nil, err
  107. }
  108. var xftoken_resp CQ119_Xftoken_Resp
  109. err = json.NewDecoder(strings.NewReader(string(authInfo))).Decode(&xftoken_resp)
  110. if err != nil{
  111. global.SystemLogger.Log(logrus.ErrorLevel,fmt.Sprintf("json转结构体出错, err:%s",err.Error()))
  112. return nil,nil,err
  113. }
  114. this.Xftoken = xftoken_resp.Xftoken
  115. //再来请求一遍
  116. byteData,err = util.HttpPost(url,param,this.Xftoken)
  117. if err != nil{
  118. return nil,nil,err
  119. }
  120. }
  121. var tempMap map[string]interface{}
  122. err = json.Unmarshal(byteData, &tempMap)
  123. if err != nil {
  124. panic(err)
  125. }
  126. //for k, values := range tempMap {
  127. // fmt.Printf("%s: %s\n", k, values) // ... and this line
  128. //}
  129. return tempMap,byteData,err
  130. }