group_member_repo.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package repositories
  2. import (
  3. "fmt"
  4. "xorm.io/xorm"
  5. "xps/datamodels"
  6. "xps/viewmodels"
  7. )
  8. type GroupMemberRepo struct {
  9. engine *xorm.Engine
  10. }
  11. func NewGroupMemberRepo(engine *xorm.Engine) *GroupMemberRepo {
  12. return &GroupMemberRepo{
  13. engine: engine,
  14. }
  15. }
  16. func (d *GroupMemberRepo) GetById(ocId int64, gmId int64)(*datamodels.GroupMember, error){
  17. data := &datamodels.GroupMember{GmId: gmId}
  18. ok, err := d.engine.Get(data)
  19. if ok && err == nil {
  20. return data, nil
  21. } else {
  22. return nil, err
  23. }
  24. }
  25. func (d *GroupMemberRepo) GetList(m map[string]interface{})([]viewmodels.GroupMemberInfo, error) {
  26. ocId := m["ocId"].(int64)
  27. sqlSelect := ` SELECT A.gm_id,
  28. A.group_id,
  29. A.group_name,
  30. A.account_id,
  31. A.group_member_remark `
  32. sqlFrom := ` FROM s_group_member AS A
  33. LEFT JOIN s_group AS B ON (A.group_id = B.group_id) `
  34. sqlWhere := ` WHERE A.deleted_flag = 0 and A.oc_id = ` + fmt.Sprintf("%d", ocId)
  35. if keywords, ok := m["keywords"]; ok {
  36. sqlWhere += ` AND B.group_name like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  37. }
  38. datalist := make([]viewmodels.GroupMemberInfo, 0)
  39. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).OrderBy("group_id DESC").Find(&datalist)
  40. if err != nil {
  41. return nil, err
  42. } else {
  43. return datalist, nil
  44. }
  45. }
  46. func (d *GroupMemberRepo) GetMembersOfSubordinateGroupByPage(m map[string]interface{})([]viewmodels.GroupMemberInfo, error){
  47. sqlSelect := ` SELECT DISTINCT(A.account_id),
  48. A.gm_id,
  49. A.oc_id,
  50. A.group_id,
  51. A.created_by,
  52. A.created_time,
  53. A.updated_by,
  54. A.updated_time,
  55. A.deleted_flag,
  56. A.deleted_by,
  57. A.deleted_time,
  58. B.account_name,
  59. B.account_real_name,
  60. B.account_phone,
  61. B.account_pic,
  62. B.status,
  63. C.group_name,
  64. C.node_left,
  65. C.node_right,
  66. D.gmp_id,
  67. D.position_id,
  68. D.position_name,
  69. E.gmpg_id,
  70. E.grant_group_id,
  71. F.group_name as grant_group_name `
  72. sqlFrom := ` FROM
  73. s_group_member AS A
  74. LEFT JOIN account AS B ON (A.oc_id = B.oc_id AND A.account_id = B.account_id)
  75. LEFT JOIN s_group AS C ON (A.oc_id = C.oc_id AND A.group_id = C.group_id)
  76. LEFT JOIN s_group_member_position_grant AS E ON (B.oc_id = E.oc_id AND B.account_id = E.account_id)
  77. LEFT JOIN s_group AS F ON(E.oc_id = F.oc_id AND E.grant_group_id = F.group_id)
  78. LEFT JOIN (
  79. SELECT
  80. M.oc_id,
  81. M.account_id,
  82. M.gmp_id,
  83. M.group_id,
  84. M.position_id,
  85. P.position_name,
  86. N.gmpg_id,
  87. N.grant_group_id,
  88. GP.group_name as grant_group_name
  89. FROM
  90. s_group_member_position AS M
  91. LEFT JOIN s_group_member_position_grant AS N ON (
  92. M.oc_id = N.oc_id
  93. AND M.account_id = N.account_id
  94. AND M.group_id = N.group_id
  95. AND M.position_id = N.position_id)
  96. LEFT JOIN s_position AS P ON(M.oc_id = P.oc_id AND M.position_id = P.position_id)
  97. LEFT JOIN s_group AS GP ON(M.oc_id = GP.oc_id AND N.grant_group_id = GP.group_id)
  98. ) AS D ON (A.oc_id= D.oc_id AND A.account_id = D.account_id AND A.group_id = D.group_id)
  99. `
  100. ocId := m["ocId"].(int64)
  101. sqlWhere := ` WHERE B.deleted_flag = 0 and A.oc_id = ` + fmt.Sprintf("%d", ocId)
  102. if keywords, ok := m["keywords"]; ok {
  103. sqlWhere += ` AND ( B.account_real_name LIKE ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  104. sqlWhere += ` OR B.account_name LIKE ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  105. sqlWhere += ` OR B.account_phone LIKE ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  106. sqlWhere += ` OR D.position_title LIKE ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  107. }
  108. groupLeft, ok1 := m["groupLeft"]
  109. groupRight, ok2 := m["groupRight"]
  110. if ok1 && ok2 {
  111. sqlWhere += ` AND C.node_left >= ` + fmt.Sprintf("%d", groupLeft)
  112. sqlWhere += ` AND C.node_right <= ` + fmt.Sprintf("%d", groupRight)
  113. }
  114. datalist := make([]viewmodels.GroupMemberInfo, 0)
  115. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).OrderBy("A.group_id DESC").Find(&datalist)
  116. if err != nil {
  117. return nil, err
  118. } else {
  119. return datalist, nil
  120. }
  121. }
  122. func (d *GroupMemberRepo) GetFirstGroupByAccountId(ocId int64, aid int64) (*viewmodels.GroupMemberInfo, error) {
  123. sqlSelect := ` SELECT A.gm_id,
  124. A.oc_id,
  125. A.account_id,
  126. A.group_id,
  127. B.group_name,
  128. B.node_left,
  129. B.node_right `
  130. sqlFrom := ` FROM s_group_member AS A
  131. LEFT JOIN s_group AS B ON (A.oc_id = B.oc_id AND A.group_id = B.group_id) `
  132. sqlWhere := ` WHERE A.oc_id = ` + fmt.Sprintf("%d", ocId)
  133. sqlWhere += ` AND A.account_id = ` + fmt.Sprintf("%d", aid)
  134. groupMemberInfo := &viewmodels.GroupMemberInfo{}
  135. has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).OrderBy("A.group_id DESC").Limit(1).Get(groupMemberInfo)
  136. if !has || err != nil {
  137. return nil, err
  138. } else {
  139. return groupMemberInfo, nil
  140. }
  141. }
  142. func (d *GroupMemberRepo) Create(data *datamodels.GroupMember) error {
  143. _, err := d.engine.Insert(data)
  144. return err
  145. }
  146. func (d *GroupMemberRepo) Update(ocId, gmId int64, data *datamodels.GroupMember) error {
  147. _, err := d.engine.Where("oc_id = ?", ocId).Where("gm_id =?", gmId).Update(data)
  148. return err
  149. }
  150. func (d *GroupMemberRepo) Delete(ocId, gmId int64) error {
  151. _, err := d.engine.Where("oc_id = ?", ocId).Where("gm_id =?", gmId).Delete(new(datamodels.GroupMember))
  152. return err
  153. }
  154. func (d *GroupMemberRepo) DeleteByGroupId(ocId, groupId int64) error {
  155. _, err := d.engine.Where("oc_id = ?", ocId).
  156. Where("group_id = ?", groupId).
  157. Delete(new(datamodels.GroupMember))
  158. return err
  159. }
  160. func (d *GroupMemberRepo) DeleteByAccountId(ocId , accountId int64) error {
  161. _, err := d.engine.Where("oc_id = ?", ocId).
  162. Where("account_id = ?", accountId).
  163. Delete(new(datamodels.GroupMember))
  164. return err
  165. }