| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- package sync
- import (
- "context"
- "dashoo.cn/sso_libary/oauth"
- "dashoo.cn/sso_libary/utils"
- "encoding/json"
- "errors"
- "fmt"
- "github.com/gogf/gf/os/glog"
- "github.com/gogf/gf/os/gtime"
- "github.com/gogf/gf/util/gconv"
- "github.com/gogf/gf/util/grand"
- "github.com/hashicorp/go-uuid"
- )
- var SyncService *SyncServiceImpl
- func init() {
- SyncService = NewSyncService()
- }
- type SyncServiceImpl struct {
- }
- func NewSyncService() *SyncServiceImpl {
- return &SyncServiceImpl{}
- }
- const (
- S_ACCOUNTDATA = "S_XXX_IAM_incrAccountData_S"
- S_ACCOUNTSTATUS = "S_XXX_IAM_accountStatus_S"
- S_ORGANIZEDATA = "S_XXX_IAM_organizeData_S"
- S_ACCOUNTBCK = "S_XXX_IAM_pullAccountBck_S"
- )
- // SyncUserInfo 同步用户信息
- func (s *SyncServiceImpl) SyncUserInfo(ctx context.Context) ([]AccountEntity, error) {
- client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ACCOUNTDATA)
- args := SyncAccountArgs{}
- args.ClientId = oauth.Config.ClientId
- args.ClientSecret = oauth.Config.ClientSecret
- args.NonceStr = grand.S(8, false)
- args.Timestamp = gtime.TimestampMilli()
- sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
- args.Sign = sign
- resp, err := client.Post(oauth.Config.AccountSyncUrl, args)
- if err != nil {
- glog.Error(err.Error())
- return nil, err
- }
- reply := SyncAccountReply{}
- responseDate := resp.ReadAll()
- glog.Info("获取的用户结果为:", responseDate)
- err = json.Unmarshal(responseDate, &reply)
- if err != nil {
- glog.Error(err)
- return nil, err
- }
- return reply.Result, err
- }
- // ConfirmUserInfo 确认用户信息
- func (s *SyncServiceImpl) ConfirmUserInfo(ctx context.Context, userIds string) error {
- client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ACCOUNTSTATUS)
- args := SyncAccountStatus{}
- args.ClientId = oauth.Config.ClientId
- args.ClientSecret = oauth.Config.ClientSecret
- args.NonceStr = grand.S(8, false)
- args.Timestamp = gtime.TimestampMilli()
- args.RequestlogStr = userIds
- sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
- args.Sign = sign
- resp, err := client.Post(oauth.Config.OrganizeSyncUrl, args)
- if err != nil {
- }
- //}
- fmt.Println(resp.ReadAllString())
- return nil
- }
- // SyncOrganize 同步组织信息
- func (s *SyncServiceImpl) SyncOrganize(ctx context.Context, updateTime string) ([]OrganizeEntity, error) {
- client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ORGANIZEDATA)
- args := SyncOrganizeArgs{}
- args.ClientId = oauth.Config.ClientId
- args.ClientSecret = oauth.Config.ClientSecret
- args.UpdateTime = updateTime
- args.PageSize = "500"
- num := 1
- orgs := []OrganizeEntity{}
- for {
- uid, _ := uuid.GenerateUUID()
- client.SetHeader("requestId", uid)
- args.NonceStr = grand.S(8, false)
- args.Timestamp = gtime.TimestampMilli()
- args.PageIndex = gconv.String(num)
- sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
- args.Sign = sign
- resp, err := client.Post(oauth.Config.OrganizeSyncUrl, args)
- if err != nil {
- return orgs, err
- }
- reply := SyncOrganizeReply{}
- err = json.Unmarshal(resp.ReadAll(), &reply)
- if err != nil {
- return orgs, err
- }
- if reply.Code != "200" {
- return orgs, errors.New("接口异常")
- }
- if reply.TotalSize == "0" || len(reply.Result) == 0 {
- return orgs, nil
- }
- num++
- orgs = append(orgs, reply.Result...)
- }
- }
- // SyncPost 同步岗位信息
- func (s *SyncServiceImpl) SyncPost(ctx context.Context, updateTime string) ([]PostEntity, error) {
- client := utils.UHttp.HttpClient(utils.MIMEJSON, oauth.Config.System, S_ACCOUNTBCK)
- args := SyncPostArgs{}
- args.ClientId = oauth.Config.ClientId
- args.ClientSecret = oauth.Config.ClientSecret
- args.UpdateTime = updateTime
- args.PageSize = "500"
- num := 1
- posts := []PostEntity{}
- for {
- uid, _ := uuid.GenerateUUID()
- client.SetHeader("requestId", uid)
- args.NonceStr = grand.S(8, false)
- args.Timestamp = gtime.TimestampMilli()
- args.PageIndex = gconv.String(num)
- sign, _ := utils.USign.Encryption(args, oauth.Config.EncrySUffIx)
- args.Sign = sign
- resp, err := client.Post(oauth.Config.OrganizeSyncUrl, args)
- if err != nil {
- return posts, err
- }
- reply := SyncPostReply{}
- err = json.Unmarshal(resp.ReadAll(), &reply)
- if err != nil {
- return posts, err
- }
- if reply.TotalSize == "" {
- return posts, errors.New("接口异常")
- }
- if reply.TotalSize == "0" || len(reply.Result) == 0 {
- return posts, nil
- }
- num++
- posts = append(posts, reply.Result...)
- }
- }
|