cld.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /*
  2. * @description:计量支付接口相关操作
  3. * @Author: CP
  4. * @Date: 2020-09-03 16:57:56
  5. * @FilePath: \construction_management\lib\cld.go
  6. */
  7. package lib
  8. import (
  9. "encoding/json"
  10. "errors"
  11. "fmt"
  12. "io/ioutil"
  13. "net/http"
  14. "net/url"
  15. "strings"
  16. "go.mod/web/viewmodels"
  17. )
  18. type Cld struct {
  19. AuthUrl string
  20. CategoryUrl string
  21. Token string
  22. }
  23. type Result struct {
  24. // viewmodels.StaffCld []string
  25. Code int `form:"code" json:"code" `
  26. Data viewmodels.ResultCld `form:"data" json:"data" `
  27. Msg string `form:"msg" json:"msg" `
  28. }
  29. //创建项目用户service
  30. func NewCld() *Cld {
  31. return &Cld{
  32. AuthUrl: "http://cld.smartcost.com.cn/cm/auth",
  33. CategoryUrl: "http://cld.com/cm/category",
  34. // AuthUrl: "http://cld.com/cm/auth",
  35. Token: "sc@ConS!tru@ct*88",
  36. }
  37. }
  38. // 验证CLD账号的登陆密码
  39. func (c *Cld) LoginValid(loginData viewmodels.StaffCld) (*Result, error) {
  40. // TODO 生成令牌和提交时间
  41. //const [encryptToken, postTime] = this.generateCLDToken();
  42. client := &http.Client{}
  43. // 构成数据
  44. data := url.Values{}
  45. data.Set("staffName", loginData.StaffName)
  46. data.Set("password", loginData.Password)
  47. parameter := strings.NewReader(data.Encode())
  48. reqest, err := http.NewRequest("POST", c.AuthUrl, parameter)
  49. if err != nil {
  50. return nil, errors.New("CLD网络出现问题")
  51. }
  52. reqest.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  53. // 发送请求
  54. response, err := client.Do(reqest)
  55. if err != nil {
  56. return nil, errors.New("CLD网络出现问题")
  57. }
  58. if response.StatusCode != 200 {
  59. return nil, errors.New("请求CLD发送错误")
  60. }
  61. body, _ := ioutil.ReadAll(response.Body)
  62. // fmt.Println(string(body))
  63. result := Result{}
  64. err = json.Unmarshal(body, &result)
  65. if err != nil {
  66. return nil, errors.New("解析数据错误")
  67. }
  68. return &result, nil
  69. }
  70. // 获得cld办事处和员工 列表
  71. func (c *Cld) GetList(categoryId string) (map[string]interface{}, error) {
  72. data := url.Values{}
  73. parameter := strings.NewReader(data.Encode())
  74. url := fmt.Sprintf("%s?categoryId=%s", c.CategoryUrl, categoryId)
  75. return c.cldRequest("GET", url, parameter)
  76. }
  77. func (c *Cld) cldRequest(Method string, url string, parameter *strings.Reader) (map[string]interface{}, error) {
  78. client := &http.Client{}
  79. reqest, err := http.NewRequest(Method, url, parameter)
  80. if err != nil {
  81. return nil, errors.New("CLD网络出现问题")
  82. }
  83. reqest.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  84. // 发送请求
  85. response, err := client.Do(reqest)
  86. if err != nil {
  87. return nil, errors.New("CLD网络出现问题")
  88. }
  89. if response.StatusCode != 200 {
  90. return nil, errors.New("请求CLD发送错误")
  91. }
  92. body, _ := ioutil.ReadAll(response.Body)
  93. result := make(map[string]interface{})
  94. err = json.Unmarshal(body, &result)
  95. if err != nil {
  96. return nil, errors.New("解析数据错误")
  97. }
  98. return result, nil
  99. }