package oilrtx import ( "encoding/json" "io/ioutil" "log" "net/http" "strings" "time" "dashoo.cn/backend/api/business/organize" . "dashoo.cn/utils/db" "github.com/go-xorm/xorm" ) type RtxService struct { ServiceBase } func GetRtxService(xormEngine *xorm.Engine) *RtxService { s := new(RtxService) s.DBE = xormEngine return s } //func (s *RtxService) RtxLogin(userName, password, userDomain string) *http.Response { func (s *RtxService) RtxLogin() *http.Response { client := &http.Client{} var rtx RtxLogin rtx.Username = "ORG_YJS" rtx.Password = "ORG_YJS!@#" rtx.UserDomain = "LOCAL_IDENT" json, err := json.Marshal(rtx) params := string(json) req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/ORG_Cloud_API/login/login", strings.NewReader(params)) req.Header.Add("Content-Type", "application/json") resp, err := client.Do(req) if err != nil { log.Println("err= ", err) } log.Println("resp= ", resp) return resp } func (s *RtxService) SendRtxMsg() *http.Response { client := &http.Client{} var rtx RtxMsg rtx.Msg = "大港油田市场管理系统" rtx.Receiver = "yuedefeng" json, err := json.Marshal(rtx) params := string(json) req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/RTX/API/SendRTX", strings.NewReader(params)) req.Header.Add("Content-Type", "application/json") req.Header.Add("X-Token", "BfdENJsoTGRW4g6nqvQlXOOB8bpQ3NIU7WA345bH2hoEMR9DL0Fcv59fj9KSjde99TFR+92plU4=") resp, err := client.Do(req) if err != nil { log.Println("err= ", err) } log.Println("resp= ", resp) return resp } func (s *RtxService) GetOrgListByToken(token string) *http.Response { client := &http.Client{} req, err := http.NewRequest("get", "http://api.uidp.dgyt.petrochina/ORG_Cloud_API/org/fetchorglist", strings.NewReader("")) req.Header.Add("Content-Type", "application/json") req.Header.Add("X-Token", token) resp, err := client.Do(req) if err != nil { log.Println("err= ", err) } log.Println("resp= ", resp) return resp } func (s *RtxService) GetOrgList() RtxOrganizeItems { var item RtxOrganizeItems respToken := s.RtxLogin() jsonBlob, _ := ioutil.ReadAll(respToken.Body) var rtxRespToken RtxRespToken json.Unmarshal(jsonBlob, &rtxRespToken) if len(rtxRespToken.Token) > 0 { respOrgList := s.GetOrgListByToken(rtxRespToken.Token) jsonBlob2, _ := ioutil.ReadAll(respOrgList.Body) json.Unmarshal(jsonBlob2, &item) } return item } func (s *RtxService) AutoSyncOrgList() bool { organizeItem := s.GetOrgList() return s.RecursionOrganize(organizeItem.Items) } //递归调用 func (s *RtxService) RecursionOrganize(rtxOrganizes []RtxOrganize) bool { orgSvc := organize.GetOrganizeService(s.DBE) for _, rtxOrg := range rtxOrganizes { var baseOrganize *organize.Base_Organize where := "1=1 and Innerphone='" + rtxOrg.Id + "'" orgSvc.GetEntity(&baseOrganize, where) if baseOrganize == nil { baseOrganize = new(organize.Base_Organize) } parentId := 0 if len(rtxOrg.ParentId) > 0 { var baseParentOrganize organize.Base_Organize where := "1=1 and Innerphone='" + rtxOrg.ParentId + "'" orgSvc.GetEntity(&baseParentOrganize, where) parentId = baseParentOrganize.Id } baseOrganize.Parentid = parentId baseOrganize.Code = rtxOrg.OrgCode baseOrganize.Fullname = rtxOrg.OrgShortName baseOrganize.Description = rtxOrg.OrgName baseOrganize.Innerphone = rtxOrg.Id baseOrganize.Outerphone = rtxOrg.ParentId if baseOrganize.Id <= 0 { baseOrganize.Layer = 0 baseOrganize.Isinnerorganize = 1 baseOrganize.Sortcode = 0 baseOrganize.Deletionstatecode = 0 baseOrganize.Enabled = 1 baseOrganize.Createon = time.Now() baseOrganize.Createby = "演示用户" baseOrganize.Createuserid = 284 baseOrganize.Modifiedon = time.Now() baseOrganize.Modifiedby = "演示用户" baseOrganize.Modifieduserid = 284 orgSvc.InsertEntity(baseOrganize) } else { baseOrganize.Modifiedon = time.Now() baseOrganize.Modifiedby = "演示用户" baseOrganize.Modifieduserid = 284 orgSvc.UpdateEntityById(baseOrganize.Id, baseOrganize) } if rtxOrg.Children != nil || len(rtxOrg.Children) > 0 { s.RecursionOrganize(rtxOrg.Children) } } return true } func (s *RtxService) HandleSendMsg(username string, tomobile string, message string) *http.Response { client := &http.Client{} var msg Msg msg.UserName = username msg.ToMobile = tomobile msg.Msg = message json, err := json.Marshal(msg) params := string(json) req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/SMS/API/sendSMS", strings.NewReader(params)) req.Header.Add("Content-Type", "application/json") req.Header.Add("X-Token", "rzkTZhCbQKLFUOJI5L7VEqjsUWF+PoaewKQbvJHYo2Nimtn+fEWBne7G7JbWF3fpdJnAUN3e1pQ=") resp, err := client.Do(req) if err != nil { log.Println("err= ", err) } log.Println("resp= ", resp) return resp } func (s *RtxService) HandlePtrLogin(username string, password string) *http.Response { client := &http.Client{} var ptrUser PtrUser ptrUser.UserName = username ptrUser.PassWord = password reqJson, err := json.Marshal(ptrUser) params := string(reqJson) req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/PTR/API/validatePTR", strings.NewReader(params)) req.Header.Add("Content-Type", "application/json") req.Header.Add("X-Token", "HJpczmIJr9z26t9KcV0i1OsBE9RXFeuyhuN9MdV+Ts/FlUjCgDOxaaubo9DkF91t+X2MCxBqX6s=") resp, err := client.Do(req) if err != nil { log.Println("err= ", err) } log.Println("resp= ", resp) jsonBlob, _ := ioutil.ReadAll(resp.Body) var rtxRespToken RtxRespToken json.Unmarshal(jsonBlob, &rtxRespToken) if rtxRespToken.Code == "2000" { log.Println("hahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") //在这里生成好的token } else { log.Println("出错了!!!!!!!!!!!!!!!!!!!!") } return resp }