2
3

RtxService.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. package oilrtx
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "net/http"
  8. "strconv"
  9. "strings"
  10. "time"
  11. "dashoo.cn/utils"
  12. "dashoo.cn/backend/api/business/organize"
  13. "dashoo.cn/business2/userRole"
  14. . "dashoo.cn/utils/db"
  15. "github.com/go-xorm/xorm"
  16. )
  17. type RtxService struct {
  18. ServiceBase
  19. }
  20. func GetRtxService(xormEngine *xorm.Engine) *RtxService {
  21. s := new(RtxService)
  22. s.DBE = xormEngine
  23. return s
  24. }
  25. //func (s *RtxService) RtxLogin(userName, password, userDomain string) *http.Response {
  26. func (s *RtxService) RtxLogin() *http.Response {
  27. client := &http.Client{}
  28. var rtx RtxLogin
  29. rtx.Username = "ORG_YJS"
  30. rtx.Password = "ORG_YJS!@#"
  31. rtx.UserDomain = "LOCAL_IDENT"
  32. json, err := json.Marshal(rtx)
  33. params := string(json)
  34. req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/ORG_Cloud_API/login/login", strings.NewReader(params))
  35. req.Header.Add("Content-Type", "application/json")
  36. resp, err := client.Do(req)
  37. if err != nil {
  38. log.Println("err= ", err)
  39. }
  40. log.Println("resp= ", resp)
  41. return resp
  42. }
  43. func (s *RtxService) SendRtxMsg() *http.Response {
  44. client := &http.Client{}
  45. var rtx RtxMsg
  46. rtx.Msg = "大港油田市场管理系统"
  47. rtx.Receiver = "yuedefeng"
  48. json, err := json.Marshal(rtx)
  49. params := string(json)
  50. req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/RTX/API/SendRTX", strings.NewReader(params))
  51. req.Header.Add("Content-Type", "application/json")
  52. req.Header.Add("X-Token", "BfdENJsoTGRW4g6nqvQlXOOB8bpQ3NIU7WA345bH2hoEMR9DL0Fcv59fj9KSjde99TFR+92plU4=")
  53. resp, err := client.Do(req)
  54. if err != nil {
  55. log.Println("err= ", err)
  56. }
  57. log.Println("resp= ", resp)
  58. return resp
  59. }
  60. func (s *RtxService) GetOrgListByToken(token string) *http.Response {
  61. client := &http.Client{}
  62. req, err := http.NewRequest("get", "http://api.uidp.dgyt.petrochina/ORG_Cloud_API/org/fetchorglist", strings.NewReader(""))
  63. req.Header.Add("Content-Type", "application/json")
  64. req.Header.Add("X-Token", token)
  65. resp, err := client.Do(req)
  66. if err != nil {
  67. log.Println("err= ", err)
  68. }
  69. log.Println("resp= ", resp)
  70. return resp
  71. }
  72. func (s *RtxService) GetOrgList() RtxOrganizeItems {
  73. var item RtxOrganizeItems
  74. respToken := s.RtxLogin()
  75. jsonBlob, _ := ioutil.ReadAll(respToken.Body)
  76. var rtxRespToken RtxRespToken
  77. json.Unmarshal(jsonBlob, &rtxRespToken)
  78. if len(rtxRespToken.Token) > 0 {
  79. respOrgList := s.GetOrgListByToken(rtxRespToken.Token)
  80. jsonBlob2, _ := ioutil.ReadAll(respOrgList.Body)
  81. json.Unmarshal(jsonBlob2, &item)
  82. }
  83. return item
  84. }
  85. func (s *RtxService) AutoSyncOrgList() bool {
  86. organizeItem := s.GetOrgList()
  87. return s.RecursionOrganize(organizeItem.Items)
  88. }
  89. //递归调用
  90. func (s *RtxService) RecursionOrganize(rtxOrganizes []RtxOrganize) bool {
  91. orgSvc := organize.GetOrganizeService(s.DBE)
  92. for _, rtxOrg := range rtxOrganizes {
  93. var baseOrganize organize.Base_Organize
  94. where := "1=1 and InnerPhone='" + rtxOrg.Id + "'"
  95. orgSvc.GetEntity(&baseOrganize, where)
  96. /*if baseOrganize == nil {
  97. baseOrganize = new(organize.Base_Organize)
  98. }*/
  99. parentId := 0
  100. if len(rtxOrg.ParentId) > 0 {
  101. var baseParentOrganize organize.Base_Organize
  102. where := "1=1 and InnerPhone='" + rtxOrg.ParentId + "'"
  103. orgSvc.GetEntity(&baseParentOrganize, where)
  104. parentId = baseParentOrganize.Id
  105. }
  106. baseOrganize.Parentid = parentId
  107. baseOrganize.Code = rtxOrg.OrgCode
  108. baseOrganize.Fullname = rtxOrg.OrgShortName
  109. baseOrganize.Description = rtxOrg.OrgName
  110. baseOrganize.Innerphone = rtxOrg.Id
  111. baseOrganize.Outerphone = rtxOrg.ParentId
  112. if baseOrganize.Id <= 0 {
  113. baseOrganize.Layer = 0
  114. baseOrganize.Isinnerorganize = 1
  115. baseOrganize.Sortcode = 0
  116. baseOrganize.Deletionstatecode = 0
  117. baseOrganize.Enabled = 1
  118. baseOrganize.Createon = time.Now()
  119. baseOrganize.Createby = "演示用户"
  120. baseOrganize.Createuserid = 284
  121. baseOrganize.Modifiedon = time.Now()
  122. baseOrganize.Modifiedby = "演示用户"
  123. baseOrganize.Modifieduserid = 284
  124. orgSvc.InsertEntity(baseOrganize)
  125. } else {
  126. baseOrganize.Modifiedon = time.Now()
  127. baseOrganize.Modifiedby = "演示用户"
  128. baseOrganize.Modifieduserid = 284
  129. orgSvc.UpdateEntityById(baseOrganize.Id, baseOrganize)
  130. }
  131. if rtxOrg.Children != nil && len(rtxOrg.Children) > 0 {
  132. s.RecursionOrganize(rtxOrg.Children)
  133. }
  134. }
  135. return true
  136. }
  137. func (s *RtxService) HandleSendMsg(username string, tomobile string, message string) *http.Response {
  138. client := &http.Client{}
  139. var msg Msg
  140. msg.UserName = username
  141. msg.ToMobile = tomobile
  142. msg.Msg = message
  143. json, err := json.Marshal(msg)
  144. params := string(json)
  145. fmt.Sprintf(params, "短信=====")
  146. params1 := "{\"UserName\":\"" + msg.UserName + "\",\"ToMobile\":\"" + msg.ToMobile + "\",\"MSG\":\"" + msg.Msg +"\"}"
  147. fmt.Println(params1)
  148. req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/SMS/API/sendSMS", strings.NewReader(params))
  149. req.Header.Add("Content-Type", "application/json")
  150. req.Header.Add("X-Token", "/LT6VRmkY8mpGHJzWMKxzMQhjbkXwAHsk0zJkRfAPtjC0Wsecn1539xiULbJU32D59Kh0jTuUD0=")
  151. resp, err := client.Do(req)
  152. if err != nil {
  153. log.Println("err= ", err)
  154. }
  155. log.Println("resp= ", resp)
  156. return resp
  157. }
  158. func (s *RtxService) HandlePtrLogin(username string, password string, BaseUser string) int {
  159. client := &http.Client{}
  160. var ptrUser PtrUser
  161. ptrUser.UserName = username
  162. ptrUser.PassWord = password
  163. reqJson, err := json.Marshal(ptrUser)
  164. params := string(reqJson)
  165. req, err := http.NewRequest("post", "http://api.uidp.dgyt.petrochina/PTR/API/validatePTR", strings.NewReader(params))
  166. req.Header.Add("Content-Type", "application/json")
  167. req.Header.Add("X-Token", "HJpczmIJr9z26t9KcV0i1OsBE9RXFeuyhuN9MdV+Ts/FlUjCgDOxaaubo9DkF91t+X2MCxBqX6s=")
  168. resp, err := client.Do(req)
  169. if err != nil {
  170. log.Println("err= ", err)
  171. }
  172. log.Println("resp= ", resp)
  173. jsonBlob, _ := ioutil.ReadAll(resp.Body)
  174. var rtxRespToken RtxRespToken
  175. json.Unmarshal(jsonBlob, &rtxRespToken)
  176. flag := 0
  177. if rtxRespToken.Code == 2000 {
  178. sql := " UserName='" + username + "'"
  179. var baseUser1 userRole.Base_User
  180. s.GetEntity(&baseUser1,sql)
  181. if baseUser1.Username!="" {
  182. flag = 1
  183. res:=utils.RBAC.GetRolesForUserInDomain("uid_"+strconv.Itoa(baseUser1.Id),utils.DOMAIN)
  184. if len(res)<=0{
  185. flag = 3
  186. }
  187. } else {
  188. flag = 2
  189. var baseuser userRole.Base_User
  190. pwd, key, _ := utils.TripleDesEncrypt(password)
  191. baseuser.Id = 0
  192. baseuser.Username = username
  193. baseuser.Realname = username
  194. baseuser.Userpassword = pwd
  195. baseuser.Publickey = key
  196. _, err := s.InsertEntity(&baseuser)
  197. if err != nil {
  198. log.Println(err)
  199. }
  200. //查询角色表里有没有权限登录此系统
  201. res:=utils.RBAC.GetRolesForUserInDomain("uid_"+strconv.Itoa(baseuser.Id),utils.DOMAIN)
  202. if len(res)<=0{
  203. flag = 3
  204. }
  205. }
  206. } else {
  207. log.Println("Code:" + string(rtxRespToken.Code) + ",Message:" + rtxRespToken.Message + ",Token:" + rtxRespToken.Token)
  208. }
  209. return flag
  210. }