sync_service.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package sync
  2. import (
  3. "context"
  4. "dashoo.cn/sso_libary/oauth"
  5. "dashoo.cn/sso_libary/utils"
  6. "encoding/json"
  7. "errors"
  8. "fmt"
  9. "github.com/gogf/gf/os/glog"
  10. "github.com/gogf/gf/os/gtime"
  11. "github.com/gogf/gf/util/gconv"
  12. "github.com/gogf/gf/util/grand"
  13. "github.com/hashicorp/go-uuid"
  14. )
  15. var SyncService *SyncServiceImpl
  16. func init() {
  17. SyncService = NewSyncService()
  18. }
  19. type SyncServiceImpl struct {
  20. }
  21. func NewSyncService() *SyncServiceImpl {
  22. return &SyncServiceImpl{}
  23. }
  24. const (
  25. S_ACCOUNTDATA = "S_XXX_IAM_incrAccountData_S"
  26. S_ACCOUNTSTATUS = "S_XXX_IAM_accountStatus_S"
  27. S_ORGANIZEDATA = "S_XXX_IAM_organizeData_S"
  28. S_ACCOUNTBCK = "S_XXX_IAM_pullAccountBck_S"
  29. )
  30. // SyncUserInfo 同步用户信息
  31. func (s *SyncServiceImpl) SyncUserInfo(ctx context.Context) ([]AccountEntity, error) {
  32. client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ACCOUNTDATA)
  33. args := SyncAccountArgs{}
  34. args.ClientId = oauth.Config.ClientId
  35. args.ClientSecret = oauth.Config.ClientSecret
  36. args.NonceStr = grand.S(8, false)
  37. args.Timestamp = gtime.TimestampMilli()
  38. sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
  39. args.Sign = sign
  40. resp, err := client.Post(oauth.Config.AccountSyncUrl, args)
  41. if err != nil {
  42. glog.Error(err.Error())
  43. return nil, err
  44. }
  45. reply := SyncAccountReply{}
  46. responseDate := resp.ReadAll()
  47. glog.Info("获取的用户结果为:", responseDate)
  48. err = json.Unmarshal(responseDate, &reply)
  49. if err != nil {
  50. glog.Error(err)
  51. return nil, err
  52. }
  53. return reply.Result, err
  54. }
  55. // ConfirmUserInfo 确认用户信息
  56. func (s *SyncServiceImpl) ConfirmUserInfo(ctx context.Context, userIds string) error {
  57. client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ACCOUNTSTATUS)
  58. args := SyncAccountStatus{}
  59. args.ClientId = oauth.Config.ClientId
  60. args.ClientSecret = oauth.Config.ClientSecret
  61. args.NonceStr = grand.S(8, false)
  62. args.Timestamp = gtime.TimestampMilli()
  63. args.RequestlogStr = userIds
  64. sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
  65. args.Sign = sign
  66. resp, err := client.Post(oauth.Config.OrganizeSyncUrl, args)
  67. if err != nil {
  68. }
  69. //}
  70. fmt.Println(resp.ReadAllString())
  71. return nil
  72. }
  73. // SyncOrganize 同步组织信息
  74. func (s *SyncServiceImpl) SyncOrganize(ctx context.Context, updateTime string) ([]OrganizeEntity, error) {
  75. client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ORGANIZEDATA)
  76. args := SyncOrganizeArgs{}
  77. args.ClientId = oauth.Config.ClientId
  78. args.ClientSecret = oauth.Config.ClientSecret
  79. args.UpdateTime = updateTime
  80. args.PageSize = "500"
  81. num := 1
  82. orgs := []OrganizeEntity{}
  83. for {
  84. uid, _ := uuid.GenerateUUID()
  85. client.SetHeader("requestId", uid)
  86. args.NonceStr = grand.S(8, false)
  87. args.Timestamp = gtime.TimestampMilli()
  88. args.PageIndex = gconv.String(num)
  89. sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
  90. args.Sign = sign
  91. resp, err := client.Post(oauth.Config.OrganizeSyncUrl, args)
  92. if err != nil {
  93. return orgs, err
  94. }
  95. reply := SyncOrganizeReply{}
  96. err = json.Unmarshal(resp.ReadAll(), &reply)
  97. if err != nil {
  98. return orgs, err
  99. }
  100. if reply.Code != "200" {
  101. return orgs, errors.New("接口异常")
  102. }
  103. if reply.TotalSize == "0" || len(reply.Result) == 0 {
  104. return orgs, nil
  105. }
  106. num++
  107. orgs = append(orgs, reply.Result...)
  108. }
  109. }
  110. // SyncPost 同步岗位信息
  111. func (s *SyncServiceImpl) SyncPost(ctx context.Context, updateTime string) ([]PostEntity, error) {
  112. client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ACCOUNTBCK)
  113. args := SyncPostArgs{}
  114. args.ClientId = oauth.Config.ClientId
  115. args.ClientSecret = oauth.Config.ClientSecret
  116. args.UpdateTime = updateTime
  117. args.PageSize = "500"
  118. num := 1
  119. posts := []PostEntity{}
  120. for {
  121. uid, _ := uuid.GenerateUUID()
  122. client.SetHeader("requestId", uid)
  123. args.NonceStr = grand.S(8, false)
  124. args.Timestamp = gtime.TimestampMilli()
  125. args.PageIndex = gconv.String(num)
  126. sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
  127. args.Sign = sign
  128. resp, err := client.Post(oauth.Config.OrganizeSyncUrl, args)
  129. if err != nil {
  130. return posts, err
  131. }
  132. reply := SyncPostReply{}
  133. err = json.Unmarshal(resp.ReadAll(), &reply)
  134. if err != nil {
  135. return posts, err
  136. }
  137. if reply.TotalSize == "" {
  138. return posts, errors.New("接口异常")
  139. }
  140. if reply.TotalSize == "0" || len(reply.Result) == 0 {
  141. return posts, nil
  142. }
  143. num++
  144. posts = append(posts, reply.Result...)
  145. }
  146. }