BookMemberController.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. package controllers
  2. import (
  3. "errors"
  4. "github.com/astaxie/beego/logs"
  5. "github.com/astaxie/beego/orm"
  6. "github.com/lifei6671/mindoc/conf"
  7. "github.com/lifei6671/mindoc/models"
  8. "github.com/astaxie/beego"
  9. "strings"
  10. )
  11. type BookMemberController struct {
  12. BaseController
  13. }
  14. // AddMember 参加参与用户.
  15. func (c *BookMemberController) AddMember() {
  16. c.Prepare()
  17. identify := c.GetString("identify")
  18. account,_ := c.GetInt("account")
  19. roleId, _ := c.GetInt("role_id", 3)
  20. beego.Info(account)
  21. if identify == "" || account <= 0 {
  22. c.JsonResult(6001, "参数错误")
  23. }
  24. book, err := c.IsPermission()
  25. if err != nil {
  26. c.JsonResult(6001, err.Error())
  27. }
  28. member := models.NewMember()
  29. if _, err := member.Find(account); err != nil {
  30. c.JsonResult(404, "用户不存在")
  31. }
  32. if member.Status == 1 {
  33. c.JsonResult(6003, "用户已被禁用")
  34. }
  35. if _, err := models.NewRelationship().FindForRoleId(book.BookId, member.MemberId); err == nil {
  36. c.JsonResult(6003, "用户已存在该项目中")
  37. }
  38. relationship := models.NewRelationship()
  39. relationship.BookId = book.BookId
  40. relationship.MemberId = member.MemberId
  41. relationship.RoleId = roleId
  42. if err := relationship.Insert(); err == nil {
  43. memberRelationshipResult := models.NewMemberRelationshipResult().FromMember(member)
  44. memberRelationshipResult.RoleId = roleId
  45. memberRelationshipResult.RelationshipId = relationship.RelationshipId
  46. memberRelationshipResult.BookId = book.BookId
  47. memberRelationshipResult.ResolveRoleName()
  48. c.JsonResult(0, "ok", memberRelationshipResult)
  49. }
  50. c.JsonResult(500, err.Error())
  51. }
  52. // 变更指定用户在指定项目中的权限
  53. func (c *BookMemberController) ChangeRole() {
  54. c.Prepare()
  55. identify := c.GetString("identify")
  56. memberId, _ := c.GetInt("member_id", 0)
  57. role, _ := c.GetInt("role_id", 0)
  58. if identify == "" || memberId <= 0 {
  59. c.JsonResult(6001, "参数错误")
  60. }
  61. if memberId == c.Member.MemberId {
  62. c.JsonResult(6006, "不能变更自己的权限")
  63. }
  64. book, err := models.NewBookResult().FindByIdentify(identify, c.Member.MemberId)
  65. if err != nil {
  66. if err == models.ErrPermissionDenied {
  67. c.JsonResult(403, "权限不足")
  68. }
  69. if err == orm.ErrNoRows {
  70. c.JsonResult(404, "项目不存在")
  71. }
  72. c.JsonResult(6002, err.Error())
  73. }
  74. if book.RoleId != 0 && book.RoleId != 1 {
  75. c.JsonResult(403, "权限不足")
  76. }
  77. member := models.NewMember()
  78. if _, err := member.Find(memberId); err != nil {
  79. c.JsonResult(6003, "用户不存在")
  80. }
  81. if member.Status == 1 {
  82. c.JsonResult(6004, "用户已被禁用")
  83. }
  84. relationship, err := models.NewRelationship().UpdateRoleId(book.BookId, memberId, role)
  85. if err != nil {
  86. logs.Error("变更用户在项目中的权限 => ", err)
  87. c.JsonResult(6005, err.Error())
  88. }
  89. memberRelationshipResult := models.NewMemberRelationshipResult().FromMember(member)
  90. memberRelationshipResult.RoleId = relationship.RoleId
  91. memberRelationshipResult.RelationshipId = relationship.RelationshipId
  92. memberRelationshipResult.BookId = book.BookId
  93. memberRelationshipResult.ResolveRoleName()
  94. c.JsonResult(0, "ok", memberRelationshipResult)
  95. }
  96. // 删除参与者.
  97. func (c *BookMemberController) RemoveMember() {
  98. identify := c.GetString("identify")
  99. memberId, _ := c.GetInt("member_id", 0)
  100. if identify == "" || memberId <= 0 {
  101. c.JsonResult(6001, "参数错误")
  102. }
  103. if memberId == c.Member.MemberId {
  104. c.JsonResult(6006, "不能删除自己")
  105. }
  106. book, err := models.NewBookResult().FindByIdentify(identify, c.Member.MemberId)
  107. if err != nil {
  108. if err == models.ErrPermissionDenied {
  109. c.JsonResult(403, "权限不足")
  110. }
  111. if err == orm.ErrNoRows {
  112. c.JsonResult(404, "项目不存在")
  113. }
  114. c.JsonResult(6002, err.Error())
  115. }
  116. //如果不是创始人也不是管理员则不能操作
  117. if book.RoleId != conf.BookFounder && book.RoleId != conf.BookAdmin {
  118. c.JsonResult(403, "权限不足")
  119. }
  120. err = models.NewRelationship().DeleteByBookIdAndMemberId(book.BookId, memberId)
  121. if err != nil {
  122. c.JsonResult(6007, err.Error())
  123. }
  124. c.JsonResult(0, "ok")
  125. }
  126. //添加用户组到项目
  127. func (c *BookMemberController) AddMemberGroup() {
  128. c.Prepare()
  129. memberGroupId,err := c.GetInt("group_id")
  130. roleId, _ := c.GetInt("role_id", 3)
  131. if roleId != 1 && roleId != 2 {
  132. roleId = 3
  133. }
  134. if err != nil {
  135. beego.Error("解析用户组ID时失败 =>",err)
  136. c.JsonResult(6001,"参数异常")
  137. }
  138. if memberGroupId <= 0 {
  139. c.JsonResult(6002,"参数错误")
  140. }
  141. bookResult,err := c.IsPermission()
  142. if err != nil {
  143. c.JsonResult(6003,err.Error())
  144. }
  145. if !models.NewMemberGroup().Exist(memberGroupId) {
  146. beego.Error("查询用户组时失败 =>",err)
  147. c.JsonResult(6004,"用户组不存在")
  148. }
  149. memberGroupMembers,err := models.NewMemberGroupMembers().FindByGroupId(memberGroupId)
  150. if err != nil {
  151. beego.Error("查询用户组用户时时失败 =>",err)
  152. c.JsonResult(6004,"用户组成员不存在不存在")
  153. }
  154. for _,item := range memberGroupMembers {
  155. member,err := models.NewMember().Find(item.MemberId)
  156. if err != nil {
  157. beego.Error("用户不存在 =>",item.MemberId)
  158. continue
  159. }
  160. if member.Status == 1 {
  161. beego.Error("用户被禁用 =>",item.MemberId)
  162. continue
  163. }
  164. if _, err := models.NewRelationship().FindForRoleId(bookResult.BookId, member.MemberId); err == nil {
  165. beego.Error("用户已存在该项目中 =>",item.MemberId)
  166. continue
  167. }
  168. relationship := models.NewRelationship()
  169. relationship.BookId = bookResult.BookId
  170. relationship.MemberId = member.MemberId
  171. relationship.RoleId = roleId
  172. if err := relationship.Insert();err != nil {
  173. beego.Error("添加用户失败 =>",err)
  174. }
  175. }
  176. c.JsonResult(0,"ok")
  177. }
  178. func (c *BookMemberController) MemberGroupList() {
  179. c.Prepare()
  180. q := strings.TrimSpace(c.GetString("q"))
  181. members,err := models.NewMemberGroup().FindMemberGroupList(q)
  182. if err != nil {
  183. beego.Error("查询异常",err)
  184. c.JsonResult(6001, "查询错误")
  185. }
  186. result := models.SelectMemberResult{}
  187. items := make([]models.KeyValueItem, 0)
  188. for _, member := range members {
  189. item := models.KeyValueItem{}
  190. item.Id = member.GroupId
  191. item.Text = member.GroupName
  192. items = append(items, item)
  193. }
  194. result.Result = items
  195. c.JsonResult(0, "OK", result)
  196. }
  197. func (c *BookMemberController) IsPermission() (*models.BookResult, error) {
  198. identify := c.GetString("identify")
  199. book, err := models.NewBookResult().FindByIdentify(identify, c.Member.MemberId)
  200. if err != nil {
  201. if err == models.ErrPermissionDenied {
  202. return book, errors.New("权限不足")
  203. }
  204. if err == orm.ErrNoRows {
  205. return book, errors.New("项目不存在")
  206. }
  207. return book, err
  208. }
  209. if book.RoleId != conf.BookAdmin && book.RoleId != conf.BookFounder {
  210. return book, errors.New("权限不足")
  211. }
  212. return book, nil
  213. }