main.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package algor
  2. import (
  3. "fmt"
  4. "surveyService/response"
  5. "surveyService/util"
  6. "github.com/guonaihong/gout"
  7. )
  8. var s *setting
  9. type setting struct {
  10. Domain string
  11. AppKey string
  12. AppSecret string
  13. Debug bool
  14. }
  15. func InitClient(domain, appKey, appSecret string, debug bool) {
  16. s = &setting{
  17. Domain: domain,
  18. AppKey: appKey,
  19. AppSecret: appSecret,
  20. Debug: debug,
  21. }
  22. }
  23. // 获取授权列表
  24. func ListAuthorizes() (*BaseResponse[ListResponse[AppAuth]], *response.ErrCode) {
  25. var resp *BaseResponse[ListResponse[AppAuth]]
  26. resp, err := postReq[*BaseResponse[ListResponse[AppAuth]]]("/openapi/authorize/list", gout.H{})
  27. if err != nil {
  28. return nil, response.ErrPlatform
  29. }
  30. if resp.Code != 200 {
  31. return nil, &response.ErrCode{
  32. Code: resp.Code,
  33. Msg: resp.Message,
  34. }
  35. }
  36. return resp, nil
  37. }
  38. // 获取问题模板列表
  39. func ListQuestionnaireTemplate() (*BaseResponse[ListResponse[QuestionnaireTemplate]], *response.ErrCode) {
  40. var resp *BaseResponse[ListResponse[QuestionnaireTemplate]]
  41. resp, err := postReq[*BaseResponse[ListResponse[QuestionnaireTemplate]]]("/openapi/questionnaireTemplate/list", gout.H{})
  42. if err != nil {
  43. return nil, response.ErrPlatform
  44. }
  45. if resp.Code != 200 {
  46. return nil, &response.ErrCode{
  47. Code: resp.Code,
  48. Msg: resp.Message,
  49. }
  50. }
  51. return resp, nil
  52. }
  53. // 获取问题库列表
  54. func ListQuestionnaireSubject() (*BaseResponse[ListResponse[QuestionnaireSubject]], *response.ErrCode) {
  55. var resp *BaseResponse[ListResponse[QuestionnaireSubject]]
  56. resp, err := postReq[*BaseResponse[ListResponse[QuestionnaireSubject]]]("/openapi/questionnaireSubject/list", gout.H{})
  57. if err != nil {
  58. return nil, response.ErrPlatform
  59. }
  60. if resp.Code != 200 {
  61. return nil, &response.ErrCode{
  62. Code: resp.Code,
  63. Msg: resp.Message,
  64. }
  65. }
  66. return resp, nil
  67. }
  68. // 获取问卷信息
  69. func DetailSurvey(decisionModelSn string) (*BaseResponse[DetailResponse], *response.ErrCode) {
  70. var resp *BaseResponse[DetailResponse]
  71. resp, err := postReq[*BaseResponse[DetailResponse]]("/openapi/survey/detail", gout.H{
  72. "decisionModelSn": decisionModelSn,
  73. })
  74. if err != nil {
  75. return nil, response.ErrPlatform
  76. }
  77. if resp.Code != 200 {
  78. return nil, &response.ErrCode{
  79. Code: resp.Code,
  80. Msg: resp.Message,
  81. }
  82. }
  83. return resp, nil
  84. }
  85. // 执行决策模型
  86. func Run(request ExecuteRequest) (*BaseResponse[map[string]any], *response.ErrCode) {
  87. var resp *BaseResponse[map[string]any]
  88. resp, err := postReq[*BaseResponse[map[string]any]]("/openapi/run", gout.H{
  89. "decisionModelSn": request.DecisionModelSN,
  90. "type": request.Type,
  91. "surveyData": request.SurveyData,
  92. "ocrData": request.OcrData,
  93. "extra": request.Extra,
  94. })
  95. if err != nil {
  96. return nil, response.ErrPlatform
  97. }
  98. if resp.Code != 200 {
  99. return nil, &response.ErrCode{
  100. Code: resp.Code,
  101. Msg: resp.Message,
  102. }
  103. }
  104. return resp, nil
  105. }
  106. func postReq[T any](path string, data gout.H) (T, error) {
  107. url := fmt.Sprintf("%s%s", s.Domain, path)
  108. fmt.Println("请求地址 ===>", url)
  109. var res T
  110. err := gout.POST(url).Debug(s.Debug).
  111. SetHeader(gout.H{
  112. "token": fmt.Sprintf("%s:%s", s.AppKey, util.Md5(s.AppSecret)),
  113. "appkey": s.AppKey,
  114. }).
  115. SetJSON(data).
  116. BindJSON(&res).
  117. Do()
  118. if err != nil {
  119. return res, err
  120. }
  121. return res, nil
  122. }