system.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package services
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/models/company"
  5. "eta/eta_api/models/roadshow"
  6. "eta/eta_api/models/system"
  7. "eta/eta_api/utils"
  8. "fmt"
  9. )
  10. func GetRoleTypeCode(roleType string) string {
  11. var roleTypeCode string
  12. switch roleType {
  13. case utils.ROLE_TYPE_ADMIN:
  14. roleTypeCode = utils.ROLE_TYPE_CODE_ADMIN
  15. case utils.ROLE_TYPE_FICC_ADMIN:
  16. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN
  17. case utils.ROLE_TYPE_FICC_SELLER:
  18. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  19. case utils.ROLE_TYPE_RAI_ADMIN:
  20. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN
  21. case utils.ROLE_TYPE_FICC_GROUP, utils.ROLE_TYPE_FICC_MANAGER:
  22. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_GROUP
  23. case utils.ROLE_TYPE_RAI_GROUP:
  24. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_GROUP
  25. case utils.ROLE_TYPE_FICC_DEPARTMENT:
  26. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_DEPARTMENT
  27. case utils.ROLE_TYPE_RAI_DEPARTMENT:
  28. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_DEPARTMENT
  29. case utils.ROLE_TYPE_FICC_RESEARCHR:
  30. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_RESEARCHR
  31. case utils.ROLE_TYPE_RAI_RESEARCHR:
  32. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_RESEARCHR
  33. default:
  34. roleTypeCode = utils.ROLE_TYPE_ADMIN
  35. }
  36. return roleTypeCode
  37. }
  38. type AdminGroup struct {
  39. GroupId int `description:"分组id"`
  40. GroupName string `description:"分组名称"`
  41. ResearcherList []*roadshow.Researcher
  42. }
  43. // CheckAdminIsSameBigGroup 判断是否两个系统用户是否同一个大组内
  44. func CheckAdminIsSameBigGroup(adminInfo1, adminInfo2 *system.Admin) (isSame bool, err error) {
  45. // 如果销售和创建人是同一个小组
  46. if adminInfo1.GroupId == adminInfo2.GroupId {
  47. isSame = true
  48. return
  49. }
  50. var admin1BigGroupId, admin2BigGroupId int
  51. //获取第一个系统用户的大组id
  52. {
  53. //获取该账号的大组id
  54. pid, tmpErr := company.GetParentIdFromGroup(adminInfo1.GroupId)
  55. if tmpErr != nil {
  56. err = tmpErr
  57. return
  58. }
  59. if pid != nil && *pid > 0 {
  60. //该账号放在了三级分组下
  61. admin1BigGroupId = *pid
  62. } else {
  63. //该账号放在了二级分组下
  64. admin1BigGroupId = adminInfo1.GroupId
  65. }
  66. }
  67. //获取第二个系统用户的大组id
  68. {
  69. //获取该账号的大组id
  70. pid, tmpErr := company.GetParentIdFromGroup(adminInfo2.GroupId)
  71. if tmpErr != nil {
  72. err = tmpErr
  73. return
  74. }
  75. if pid != nil && *pid > 0 {
  76. //该账号放在了三级分组下
  77. admin2BigGroupId = *pid
  78. } else {
  79. //该账号放在了二级分组下
  80. admin2BigGroupId = adminInfo2.GroupId
  81. }
  82. }
  83. if admin1BigGroupId == admin2BigGroupId {
  84. isSame = true
  85. return
  86. }
  87. return
  88. }
  89. // CheckRaiAdmin 判断是否为权益内部人员
  90. func CheckRaiAdmin(adminId int) (isRai bool, err error) {
  91. raiAdmins, e := system.GetRaiAdmin()
  92. if e != nil {
  93. err = fmt.Errorf("获取权益内部人员失败, GetRaiAdmin Err: %s", e.Error())
  94. return
  95. }
  96. for _, r := range raiAdmins {
  97. if adminId == r.AdminId {
  98. isRai = true
  99. break
  100. }
  101. }
  102. return
  103. }
  104. // GetMenuTreeRecursive 递归菜单树
  105. func GetMenuTreeRecursive(list []*system.SysMenuItem, parentId int) []*system.SysMenuItem {
  106. res := make([]*system.SysMenuItem, 0)
  107. for _, v := range list {
  108. if v.ParentId == parentId {
  109. v.Children = GetMenuTreeRecursive(list, v.MenuId)
  110. res = append(res, v)
  111. }
  112. }
  113. return res
  114. }
  115. type GroupNode struct{
  116. GroupId int
  117. GroupName string
  118. Child []*GroupNode
  119. }
  120. func BuildGroupTree(list []*system.SysFullGroup,current,depth int,node *GroupNode) {
  121. if current == depth {
  122. utils.FileLog.Info("到达组织最深层,停止递归")
  123. return
  124. }
  125. for _, v := range list {
  126. if v.ParentId == node.GroupId {
  127. subNode:= &GroupNode{
  128. GroupId: v.GroupId,
  129. GroupName: v.GroupName,
  130. Child: make([]*GroupNode, 0),
  131. }
  132. node.Child = append(node.Child, subNode)
  133. BuildGroupTree(list, current+1, depth, subNode)
  134. }
  135. }
  136. }
  137. func DeleteSysGroupByIds(ids []int)(err error) {
  138. tx:=global.DbMap[utils.DbNameMaster].Begin()
  139. defer func() {
  140. if err != nil {
  141. tx.Rollback()
  142. }else{
  143. tx.Commit()
  144. }
  145. }()
  146. err=system.DeleteSysGroupByIds(tx,ids)
  147. if err!=nil{
  148. return
  149. }
  150. err=system.ClearSysUserGroupByIds(tx,ids)
  151. return
  152. }