sys_user_sync.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hz_crm_eta/models/crm"
  5. "hongze/hz_crm_eta/models/eta"
  6. "hongze/hz_crm_eta/services/alarm_msg"
  7. "hongze/hz_crm_eta/utils"
  8. "time"
  9. )
  10. // HandleSyncSysRole 同步系统角色
  11. func HandleSyncSysRole(source int, roleName string) (err error) {
  12. // 角色名称唯一, 所以用角色名称做同步
  13. if roleName == "" {
  14. return
  15. }
  16. if source != utils.SOURCE_CRM_FLAG && source != utils.SOURCE_ETA_FLAG {
  17. return
  18. }
  19. defer func() {
  20. if err != nil {
  21. tips := fmt.Sprintf("CRM-ETA同步系统角色失败, source: %d, roleName: %s, errMsg: %s", source, roleName, err.Error())
  22. fmt.Println(tips)
  23. go alarm_msg.SendAlarmMsg(tips, 3)
  24. }
  25. }()
  26. // CRM
  27. if source == utils.SOURCE_CRM_FLAG {
  28. // 获取角色不存在, 则表示CRM删除了该角色, 需删除对应ETA角色
  29. crmRole, e := crm.GetSysRoleByName(roleName)
  30. if e != nil {
  31. if e != utils.ErrNoRow {
  32. err = fmt.Errorf("获取CRM角色信息失败, Err: " + e.Error())
  33. return
  34. }
  35. _ = eta.DeleteRoleByName(roleName)
  36. return
  37. }
  38. // 获取ETA对应角色, 存在则更新, 否则新增
  39. etaRole, e := eta.GetSysRoleByName(roleName)
  40. if e != nil {
  41. if e != utils.ErrNoRow {
  42. err = fmt.Errorf("获取ETA对应角色信息失败, Err: " + e.Error())
  43. return
  44. }
  45. // 新增
  46. newRole := new(eta.SysRole)
  47. newRole.RoleName = crmRole.RoleName
  48. newRole.RoleType = crmRole.RoleType
  49. newRole.RoleTypeCode = crmRole.RoleTypeCode
  50. newRole.RoleLevel = crmRole.RoleLevel
  51. newRole.CreateTime = time.Now().Local()
  52. newRole.ModifyTime = time.Now().Local()
  53. e = newRole.Create()
  54. if e != nil {
  55. err = fmt.Errorf("新增ETA对应角色失败, Err: " + e.Error())
  56. }
  57. return
  58. }
  59. // 更新
  60. etaRole.RoleName = crmRole.RoleName
  61. etaRole.RoleType = crmRole.RoleType
  62. etaRole.RoleTypeCode = crmRole.RoleTypeCode
  63. etaRole.RoleLevel = crmRole.RoleLevel
  64. etaRole.ModifyTime = time.Now().Local()
  65. cols := []string{"RoleName", "RoleType", "RoleTypeCode", "RoleLevel", "ModifyTime"}
  66. e = etaRole.Update(cols)
  67. if e != nil {
  68. err = fmt.Errorf("更新ETA对应角色失败, Err: " + e.Error())
  69. }
  70. return
  71. }
  72. // ETA
  73. etaRole, e := eta.GetSysRoleByName(roleName)
  74. if e != nil {
  75. if e != utils.ErrNoRow {
  76. err = fmt.Errorf("获取ETA角色信息失败, Err: " + e.Error())
  77. return
  78. }
  79. _ = crm.DeleteRoleByName(roleName)
  80. return
  81. }
  82. crmRole, e := crm.GetSysRoleByName(roleName)
  83. if e != nil {
  84. if e != utils.ErrNoRow {
  85. err = fmt.Errorf("获取CRM对应角色信息失败, Err: " + e.Error())
  86. return
  87. }
  88. // 新增
  89. newRole := new(crm.SysRole)
  90. newRole.RoleName = etaRole.RoleName
  91. newRole.RoleType = etaRole.RoleType
  92. newRole.RoleTypeCode = etaRole.RoleTypeCode
  93. newRole.RoleLevel = etaRole.RoleLevel
  94. newRole.CreateTime = time.Now().Local()
  95. newRole.ModifyTime = time.Now().Local()
  96. e = newRole.Create()
  97. if e != nil {
  98. err = fmt.Errorf("新增CRM对应角色失败, Err: " + e.Error())
  99. }
  100. return
  101. }
  102. // 更新
  103. crmRole.RoleName = etaRole.RoleName
  104. crmRole.RoleType = etaRole.RoleType
  105. crmRole.RoleTypeCode = etaRole.RoleTypeCode
  106. crmRole.RoleLevel = etaRole.RoleLevel
  107. crmRole.ModifyTime = time.Now().Local()
  108. cols := []string{"RoleName", "RoleType", "RoleTypeCode", "RoleLevel", "ModifyTime"}
  109. e = crmRole.Update(cols)
  110. if e != nil {
  111. err = fmt.Errorf("更新CRM对应角色失败, Err: " + e.Error())
  112. }
  113. return
  114. }
  115. // HandleSyncAdminFromCrm 同步系统用户
  116. func HandleSyncAdminFromCrm(source int, adminName string) (err error) {
  117. if adminName == "" {
  118. return
  119. }
  120. if source != utils.SOURCE_CRM_FLAG && source != utils.SOURCE_ETA_FLAG {
  121. return
  122. }
  123. defer func() {
  124. if err != nil {
  125. tips := fmt.Sprintf("CRM-ETA同步系统用户失败, source: %d, adminName: %s, errMsg: %s", source, adminName, err.Error())
  126. fmt.Println(tips)
  127. go alarm_msg.SendAlarmMsg(tips, 3)
  128. }
  129. }()
  130. // CRM
  131. if source == utils.SOURCE_CRM_FLAG {
  132. // 获取用户不存在, 则表示CRM删除了该用户, 需删除对应ETA用户
  133. crmUser, e := crm.GetSysUserByAdminName(adminName)
  134. if e != nil {
  135. if e != utils.ErrNoRow {
  136. err = fmt.Errorf("获取CRM用户信息失败, Err: " + e.Error())
  137. return
  138. }
  139. _ = eta.DeleteSysUserByName(adminName)
  140. return
  141. }
  142. // 获取ETA对应用户, 存在则更新, 否则新增
  143. etaUser, e := eta.GetSysUserByAdminName(adminName)
  144. if e != nil {
  145. if e != utils.ErrNoRow {
  146. err = fmt.Errorf("获取ETA对应用户信息失败, Err: " + e.Error())
  147. return
  148. }
  149. // 新增
  150. newUser := new(eta.Admin)
  151. newUser.AdminName = crmUser.AdminName
  152. newUser.AdminAvatar = crmUser.AdminAvatar
  153. newUser.RealName = crmUser.RealName
  154. newUser.Password = crmUser.Password
  155. newUser.LastUpdatedPasswordTime = crmUser.LastUpdatedPasswordTime
  156. newUser.Enabled = crmUser.Enabled
  157. newUser.Email = crmUser.Email
  158. newUser.LastLoginTime = crmUser.LastLoginTime
  159. newUser.CreatedTime = time.Now().Local()
  160. newUser.LastUpdatedTime = time.Now().Local()
  161. newUser.Role = crmUser.Role
  162. newUser.Mobile = crmUser.Mobile
  163. newUser.RoleType = crmUser.RoleType
  164. newUser.RoleId = crmUser.RoleId // 理论上角色也会同步ID应该也是一样
  165. newUser.RoleName = crmUser.RoleName
  166. newUser.RoleTypeCode = crmUser.RoleTypeCode
  167. newUser.DepartmentId = crmUser.DepartmentId
  168. newUser.DepartmentName = crmUser.DepartmentName
  169. newUser.GroupId = crmUser.GroupId
  170. newUser.GroupName = crmUser.GroupName
  171. newUser.Authority = crmUser.Authority
  172. newUser.Position = crmUser.Position
  173. newUser.DirectorId = crmUser.DirectorId
  174. newUser.DisableTime = crmUser.DisableTime
  175. newUser.ChartPermission = crmUser.ChartPermission
  176. newUser.EdbPermission = crmUser.EdbPermission
  177. newUser.MysteelChemicalPermission = crmUser.MysteelChemicalPermission
  178. newUser.OpenId = crmUser.OpenId
  179. newUser.UnionId = crmUser.UnionId
  180. newUser.PredictEdbPermission = crmUser.PredictEdbPermission
  181. newUser.Province = crmUser.Province
  182. newUser.ProvinceCode = crmUser.ProvinceCode
  183. newUser.City = crmUser.City
  184. newUser.CityCode = crmUser.CityCode
  185. newUser.EmployeeId = crmUser.EmployeeId
  186. e = newUser.Create()
  187. if e != nil {
  188. err = fmt.Errorf("新增ETA对应用户失败, Err: " + e.Error())
  189. }
  190. return
  191. }
  192. // 更新
  193. etaUser.AdminName = crmUser.AdminName
  194. etaUser.AdminAvatar = crmUser.AdminAvatar
  195. etaUser.RealName = crmUser.RealName
  196. etaUser.Enabled = crmUser.Enabled
  197. etaUser.Email = crmUser.Email
  198. etaUser.LastUpdatedTime = time.Now().Local()
  199. etaUser.Role = crmUser.Role
  200. etaUser.Mobile = crmUser.Mobile
  201. etaUser.RoleType = crmUser.RoleType
  202. etaUser.RoleId = crmUser.RoleId
  203. etaUser.RoleName = crmUser.RoleName
  204. etaUser.RoleTypeCode = crmUser.RoleTypeCode
  205. etaUser.DepartmentId = crmUser.DepartmentId
  206. etaUser.DepartmentName = crmUser.DepartmentName
  207. etaUser.GroupId = crmUser.GroupId
  208. etaUser.GroupName = crmUser.GroupName
  209. etaUser.Authority = crmUser.Authority
  210. etaUser.Position = crmUser.Position
  211. etaUser.DirectorId = crmUser.DirectorId
  212. etaUser.DisableTime = crmUser.DisableTime
  213. etaUser.ChartPermission = crmUser.ChartPermission
  214. etaUser.EdbPermission = crmUser.EdbPermission
  215. etaUser.MysteelChemicalPermission = crmUser.MysteelChemicalPermission
  216. etaUser.OpenId = crmUser.OpenId
  217. etaUser.UnionId = crmUser.UnionId
  218. etaUser.PredictEdbPermission = crmUser.PredictEdbPermission
  219. etaUser.Province = crmUser.Province
  220. etaUser.ProvinceCode = crmUser.ProvinceCode
  221. etaUser.City = crmUser.City
  222. etaUser.CityCode = crmUser.CityCode
  223. etaUser.EmployeeId = crmUser.EmployeeId
  224. cols := []string{
  225. "AdminName", "AdminAvatar", "RealName", "Enabled", "Email", "LastUpdatedTime",
  226. "Role", "Mobile", "RoleType", "RoleId", "RoleName", "RoleTypeCode", "DepartmentId", "DepartmentName", "GroupId", "GroupName",
  227. "Authority", "Position", "DirectorId", "DisableTime", "ChartPermission", "EdbPermission", "MysteelChemicalPermission", "OpenId",
  228. "UnionId", "PredictEdbPermission", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId",
  229. }
  230. e = etaUser.Update(cols)
  231. if e != nil {
  232. err = fmt.Errorf("更新ETA对应用户失败, Err: " + e.Error())
  233. }
  234. return
  235. }
  236. // ETA
  237. etaUser, e := crm.GetSysUserByAdminName(adminName)
  238. if e != nil {
  239. if e != utils.ErrNoRow {
  240. err = fmt.Errorf("获取ETA用户信息失败, Err: " + e.Error())
  241. return
  242. }
  243. _ = eta.DeleteSysUserByName(adminName)
  244. return
  245. }
  246. crmUser, e := eta.GetSysUserByAdminName(adminName)
  247. if e != nil {
  248. if e != utils.ErrNoRow {
  249. err = fmt.Errorf("获取ETA对应用户信息失败, Err: " + e.Error())
  250. return
  251. }
  252. // 新增
  253. newUser := new(eta.Admin)
  254. newUser.AdminName = etaUser.AdminName
  255. newUser.AdminAvatar = etaUser.AdminAvatar
  256. newUser.RealName = etaUser.RealName
  257. newUser.Password = etaUser.Password
  258. newUser.LastUpdatedPasswordTime = etaUser.LastUpdatedPasswordTime
  259. newUser.Enabled = etaUser.Enabled
  260. newUser.Email = etaUser.Email
  261. newUser.LastLoginTime = etaUser.LastLoginTime
  262. newUser.CreatedTime = time.Now().Local()
  263. newUser.LastUpdatedTime = time.Now().Local()
  264. newUser.Role = etaUser.Role
  265. newUser.Mobile = etaUser.Mobile
  266. newUser.RoleType = etaUser.RoleType
  267. newUser.RoleId = etaUser.RoleId
  268. newUser.RoleName = etaUser.RoleName
  269. newUser.RoleTypeCode = etaUser.RoleTypeCode
  270. newUser.DepartmentId = etaUser.DepartmentId
  271. newUser.DepartmentName = etaUser.DepartmentName
  272. newUser.GroupId = etaUser.GroupId
  273. newUser.GroupName = etaUser.GroupName
  274. newUser.Authority = etaUser.Authority
  275. newUser.Position = etaUser.Position
  276. newUser.DirectorId = etaUser.DirectorId
  277. newUser.DisableTime = etaUser.DisableTime
  278. newUser.ChartPermission = etaUser.ChartPermission
  279. newUser.EdbPermission = etaUser.EdbPermission
  280. newUser.MysteelChemicalPermission = etaUser.MysteelChemicalPermission
  281. newUser.OpenId = etaUser.OpenId
  282. newUser.UnionId = etaUser.UnionId
  283. newUser.PredictEdbPermission = etaUser.PredictEdbPermission
  284. newUser.Province = etaUser.Province
  285. newUser.ProvinceCode = etaUser.ProvinceCode
  286. newUser.City = etaUser.City
  287. newUser.CityCode = etaUser.CityCode
  288. newUser.EmployeeId = etaUser.EmployeeId
  289. e = newUser.Create()
  290. if e != nil {
  291. err = fmt.Errorf("新增ETA对应用户失败, Err: " + e.Error())
  292. }
  293. return
  294. }
  295. // 更新
  296. crmUser.AdminName = etaUser.AdminName
  297. crmUser.AdminAvatar = etaUser.AdminAvatar
  298. crmUser.RealName = etaUser.RealName
  299. crmUser.Password = etaUser.Password
  300. crmUser.LastUpdatedPasswordTime = etaUser.LastUpdatedPasswordTime
  301. crmUser.Enabled = etaUser.Enabled
  302. crmUser.Email = etaUser.Email
  303. crmUser.LastUpdatedTime = time.Now().Local()
  304. crmUser.Role = etaUser.Role
  305. crmUser.Mobile = etaUser.Mobile
  306. crmUser.RoleType = etaUser.RoleType
  307. crmUser.RoleId = etaUser.RoleId
  308. crmUser.RoleName = etaUser.RoleName
  309. crmUser.RoleTypeCode = etaUser.RoleTypeCode
  310. crmUser.DepartmentId = etaUser.DepartmentId
  311. crmUser.DepartmentName = etaUser.DepartmentName
  312. crmUser.GroupId = etaUser.GroupId
  313. crmUser.GroupName = etaUser.GroupName
  314. crmUser.Authority = etaUser.Authority
  315. crmUser.Position = etaUser.Position
  316. crmUser.DirectorId = etaUser.DirectorId
  317. crmUser.DisableTime = etaUser.DisableTime
  318. crmUser.ChartPermission = etaUser.ChartPermission
  319. crmUser.EdbPermission = etaUser.EdbPermission
  320. crmUser.MysteelChemicalPermission = etaUser.MysteelChemicalPermission
  321. crmUser.OpenId = etaUser.OpenId
  322. crmUser.UnionId = etaUser.UnionId
  323. crmUser.PredictEdbPermission = etaUser.PredictEdbPermission
  324. crmUser.Province = etaUser.Province
  325. crmUser.ProvinceCode = etaUser.ProvinceCode
  326. crmUser.City = etaUser.City
  327. crmUser.CityCode = etaUser.CityCode
  328. crmUser.EmployeeId = etaUser.EmployeeId
  329. cols := []string{
  330. "AdminName", "AdminAvatar", "RealName", "Password", "LastUpdatedPasswordTime", "Enabled", "Email", "LastUpdatedTime",
  331. "Role", "Mobile", "RoleType", "RoleId", "RoleName", "RoleTypeCode", "DepartmentId", "DepartmentName", "GroupId", "GroupName",
  332. "Authority", "Position", "DirectorId", "DisableTime", "ChartPermission", "EdbPermission", "MysteelChemicalPermission", "OpenId",
  333. "UnionId", "PredictEdbPermission", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId",
  334. }
  335. e = crmUser.Update(cols)
  336. if e != nil {
  337. err = fmt.Errorf("更新CRM对应用户失败, Err: " + e.Error())
  338. }
  339. return
  340. }