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...) } }