cqgov.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package api_proxy
  2. import (
  3. "DataShare/util/gabs"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "os"
  8. "strconv"
  9. "sync"
  10. )
  11. type CQGov struct{
  12. }
  13. var histance_gov *CQGov
  14. var once_gov sync.Once
  15. func GetInstance() *CQGov{
  16. once_gov.Do(func() {
  17. histance_gov = &CQGov{}
  18. })
  19. return histance_gov
  20. }
  21. //政务数据格式转换到资源数据格式
  22. func GovDataFormatToResource(govData []byte)(map[string]interface{},[]byte,error) {
  23. govContainer,err := gabs.ParseJSON(govData)
  24. if err != nil {
  25. return nil,nil,err
  26. }
  27. //result obj
  28. resultObj1,err := govContainer.JSONPointer("/result")
  29. if err != nil {
  30. return nil,nil,errors.New(fmt.Sprintf("result field faield,err:%s", err.Error()))
  31. }
  32. if resultObj1 == nil {
  33. return nil,nil,errors.New("数据集是空的")
  34. }
  35. result:= resultObj1.String()
  36. mapResult := make(map[string]interface{},0)
  37. json.Unmarshal([]byte(result),&mapResult)
  38. //组装columns
  39. mapColumns := make([]map[string]interface{},0)
  40. children := govContainer.S("field").Children()
  41. for i:=0;i<len(children);i++ {
  42. child := children[i]
  43. column := make(map[string]interface{},0)
  44. field,_ := child.Search("name").Data().(string)
  45. isSearch,_ := child.Search("isSearch").Data().(string)
  46. isDisplay,_ := child.Search("isDisplay").Data().(string)
  47. name,_ := child.Search("remarks").Data().(string)
  48. column["field"] = field
  49. column["isSearch"] = isSearch
  50. column["isDisplay"] = isDisplay
  51. column["name"] = name
  52. mapColumns = append(mapColumns,column)
  53. }
  54. mapRet := make(map[string]interface{},0)
  55. code,_ := strconv.Atoi(mapResult["code"].(string))
  56. mapRet["code"] = code
  57. mapRet["page"] = mapResult["pageNo"]
  58. mapRet["size"] = mapResult["pageSize"]
  59. mapRet["total"] = mapResult["total"]
  60. mapRet["message"] = mapResult["message"]
  61. mapRet["columns"] = mapColumns
  62. mapRet["data"] = mapResult["result"]
  63. byteData,err := json.Marshal(&mapRet)
  64. return mapRet,byteData,err
  65. }
  66. func GovFormatTest() (string,error) {
  67. dir,err := os.Getwd()
  68. if err != nil {
  69. return "",err
  70. }
  71. info_body, err := os.ReadFile(dir+"/service_test.json")
  72. if err != nil {
  73. return "",err
  74. }
  75. _,data,err := GovDataFormatToResource(info_body)
  76. return string(data),err
  77. }