diff --git a/controllers/BookMemberController.go b/controllers/BookMemberController.go index dbc9092b..45533b18 100644 --- a/controllers/BookMemberController.go +++ b/controllers/BookMemberController.go @@ -8,6 +8,7 @@ import ( "github.com/lifei6671/mindoc/conf" "github.com/lifei6671/mindoc/models" "github.com/astaxie/beego" + "strings" ) type BookMemberController struct { @@ -16,9 +17,10 @@ type BookMemberController struct { // AddMember 参加参与用户. func (c *BookMemberController) AddMember() { + c.Prepare() identify := c.GetString("identify") account,_ := c.GetInt("account") - role_id, _ := c.GetInt("role_id", 3) + roleId, _ := c.GetInt("role_id", 3) beego.Info(account) if identify == "" || account <= 0 { c.JsonResult(6001, "参数错误") @@ -46,11 +48,11 @@ func (c *BookMemberController) AddMember() { relationship := models.NewRelationship() relationship.BookId = book.BookId relationship.MemberId = member.MemberId - relationship.RoleId = role_id + relationship.RoleId = roleId if err := relationship.Insert(); err == nil { memberRelationshipResult := models.NewMemberRelationshipResult().FromMember(member) - memberRelationshipResult.RoleId = role_id + memberRelationshipResult.RoleId = roleId memberRelationshipResult.RelationshipId = relationship.RelationshipId memberRelationshipResult.BookId = book.BookId memberRelationshipResult.ResolveRoleName() @@ -62,14 +64,15 @@ func (c *BookMemberController) AddMember() { // 变更指定用户在指定项目中的权限 func (c *BookMemberController) ChangeRole() { + c.Prepare() identify := c.GetString("identify") - member_id, _ := c.GetInt("member_id", 0) + memberId, _ := c.GetInt("member_id", 0) role, _ := c.GetInt("role_id", 0) - if identify == "" || member_id <= 0 { + if identify == "" || memberId <= 0 { c.JsonResult(6001, "参数错误") } - if member_id == c.Member.MemberId { + if memberId == c.Member.MemberId { c.JsonResult(6006, "不能变更自己的权限") } book, err := models.NewBookResult().FindByIdentify(identify, c.Member.MemberId) @@ -89,14 +92,14 @@ func (c *BookMemberController) ChangeRole() { member := models.NewMember() - if _, err := member.Find(member_id); err != nil { + if _, err := member.Find(memberId); err != nil { c.JsonResult(6003, "用户不存在") } if member.Status == 1 { c.JsonResult(6004, "用户已被禁用") } - relationship, err := models.NewRelationship().UpdateRoleId(book.BookId, member_id, role) + relationship, err := models.NewRelationship().UpdateRoleId(book.BookId, memberId, role) if err != nil { logs.Error("变更用户在项目中的权限 => ", err) @@ -115,12 +118,12 @@ func (c *BookMemberController) ChangeRole() { // 删除参与者. func (c *BookMemberController) RemoveMember() { identify := c.GetString("identify") - member_id, _ := c.GetInt("member_id", 0) + memberId, _ := c.GetInt("member_id", 0) - if identify == "" || member_id <= 0 { + if identify == "" || memberId <= 0 { c.JsonResult(6001, "参数错误") } - if member_id == c.Member.MemberId { + if memberId == c.Member.MemberId { c.JsonResult(6006, "不能删除自己") } book, err := models.NewBookResult().FindByIdentify(identify, c.Member.MemberId) @@ -138,7 +141,7 @@ func (c *BookMemberController) RemoveMember() { if book.RoleId != conf.BookFounder && book.RoleId != conf.BookAdmin { c.JsonResult(403, "权限不足") } - err = models.NewRelationship().DeleteByBookIdAndMemberId(book.BookId, member_id) + err = models.NewRelationship().DeleteByBookIdAndMemberId(book.BookId, memberId) if err != nil { c.JsonResult(6007, err.Error()) @@ -146,6 +149,92 @@ func (c *BookMemberController) RemoveMember() { c.JsonResult(0, "ok") } +//添加用户组到项目 +func (c *BookMemberController) AddMemberGroup() { + c.Prepare() + memberGroupId,err := c.GetInt("group_id") + roleId, _ := c.GetInt("role_id", 3) + + if roleId != 1 && roleId != 2 { + roleId = 3 + } + if err != nil { + beego.Error("解析用户组ID时失败 =>",err) + c.JsonResult(6001,"参数异常") + } + if memberGroupId <= 0 { + c.JsonResult(6002,"参数错误") + } + bookResult,err := c.IsPermission() + + if err != nil { + c.JsonResult(6003,err.Error()) + } + + if !models.NewMemberGroup().Exist(memberGroupId) { + beego.Error("查询用户组时失败 =>",err) + c.JsonResult(6004,"用户组不存在") + } + memberGroupMembers,err := models.NewMemberGroupMembers().FindByGroupId(memberGroupId) + if err != nil { + beego.Error("查询用户组用户时时失败 =>",err) + c.JsonResult(6004,"用户组成员不存在不存在") + } + + for _,item := range memberGroupMembers { + member,err := models.NewMember().Find(item.MemberId) + + if err != nil { + beego.Error("用户不存在 =>",item.MemberId) + continue + } + if member.Status == 1 { + beego.Error("用户被禁用 =>",item.MemberId) + continue + } + + if _, err := models.NewRelationship().FindForRoleId(bookResult.BookId, member.MemberId); err == nil { + beego.Error("用户已存在该项目中 =>",item.MemberId) + continue + } + + relationship := models.NewRelationship() + relationship.BookId = bookResult.BookId + relationship.MemberId = member.MemberId + relationship.RoleId = roleId + if err := relationship.Insert();err != nil { + beego.Error("添加用户失败 =>",err) + } + } + c.JsonResult(0,"ok") +} + +func (c *BookMemberController) MemberGroupList() { + c.Prepare() + + q := strings.TrimSpace(c.GetString("q")) + + members,err := models.NewMemberGroup().FindMemberGroupList(q) + + if err != nil { + beego.Error("查询异常",err) + c.JsonResult(6001, "查询错误") + } + result := models.SelectMemberResult{} + items := make([]models.KeyValueItem, 0) + + for _, member := range members { + item := models.KeyValueItem{} + item.Id = member.GroupId + item.Text = member.GroupName + items = append(items, item) + } + + result.Result = items + + c.JsonResult(0, "OK", result) +} + func (c *BookMemberController) IsPermission() (*models.BookResult, error) { identify := c.GetString("identify") book, err := models.NewBookResult().FindByIdentify(identify, c.Member.MemberId) @@ -164,3 +253,36 @@ func (c *BookMemberController) IsPermission() (*models.BookResult, error) { } return book, nil } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/models/MemberGroupMemberModel.go b/models/MemberGroupMemberModel.go index 0bbaac72..28262c79 100644 --- a/models/MemberGroupMemberModel.go +++ b/models/MemberGroupMemberModel.go @@ -60,7 +60,7 @@ func NewMemberGroupMembers() *MemberGroupMembers { } // 查询用户组成员 -func (m *MemberGroupMembers) FindByGroupId(groupId int) ([]*MemberGroupMemberResult,error) { +func (m *MemberGroupMembers) FindResultByGroupId(groupId int) ([]*MemberGroupMemberResult,error) { o := orm.NewOrm() var groupMembers []*MemberGroupMemberResult _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).All(&groupMembers); @@ -93,6 +93,17 @@ func (m *MemberGroupMembers) FindByGroupId(groupId int) ([]*MemberGroupMemberRes return groupMembers,nil } +func (m *MemberGroupMembers) FindByGroupId(groupId int) ([]*MemberGroupMembers,error) { + o := orm.NewOrm() + var groupMembers []*MemberGroupMembers + _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).All(&groupMembers); + if err != nil { + beego.Error("获取用户组成员出错 =>",err) + return nil,err + } + return groupMembers,nil +} + //判断一个用户是否加入了指定用户组 func (m *MemberGroupMembers) IsJoin(groupId ,memberId int) (bool) { o := orm.NewOrm() diff --git a/models/MemberGroupModel.go b/models/MemberGroupModel.go index 024b0153..a1523464 100644 --- a/models/MemberGroupModel.go +++ b/models/MemberGroupModel.go @@ -181,8 +181,18 @@ func (m *MemberGroup) ResetMemberGroupNumber(groupId int) error { return nil } - - +func (m *MemberGroup) Exist(groupId int) bool { + o := orm.NewOrm() + return o.QueryTable(m.TableNameWithPrefix()).Filter("group_id",groupId).Exist() +} + +func (m *MemberGroup) FindMemberGroupList(keyword string) ([]*MemberGroup,error) { + o := orm.NewOrm() + var memberGroups []*MemberGroup + _,err := o.QueryTable(m.TableNameWithPrefix()).Filter("group_name__icontains",keyword).All(&memberGroups) + + return memberGroups,err +} diff --git a/models/member.go b/models/member.go index f1616e2c..de9e1363 100644 --- a/models/member.go +++ b/models/member.go @@ -69,10 +69,11 @@ func (m *Member) Login(account string, password string) (*Member, error) { logs.Info("转入LDAP登陆") return member.ldapLogin(account, password) } else { - logs.Error("用户登录 => ", err) + logs.Error("用户登录 => ", err, account) return member, ErrMemberNoExist } } + beego.Info(member) switch member.AuthMethod { case "": @@ -81,6 +82,8 @@ func (m *Member) Login(account string, password string) (*Member, error) { if ok && err == nil { m.ResolveRoleName() return member, nil + }else{ + beego.Error("密码校验错误 =>",ok,err) } case "ldap": return member.ldapLogin(account, password) diff --git a/routers/router.go b/routers/router.go index 112d6bf9..7cc77352 100644 --- a/routers/router.go +++ b/routers/router.go @@ -56,6 +56,8 @@ func init() { beego.Router("/book/create", &controllers.BookController{}, "*:Create") beego.Router("/book/users/create", &controllers.BookMemberController{}, "post:AddMember") + beego.Router("/book/users/add-member-group", &controllers.BookMemberController{}, "post:AddMemberGroup") + beego.Router("/book/users/search-member-group", &controllers.BookMemberController{}, "*:MemberGroupList") beego.Router("/book/users/change", &controllers.BookMemberController{}, "post:ChangeRole") beego.Router("/book/users/delete", &controllers.BookMemberController{}, "post:RemoveMember") beego.Router("/book/users/import", &controllers.BookController{},"post:Import") diff --git a/views/book/users.tpl b/views/book/users.tpl index 0b3534b1..d9c75005 100644 --- a/views/book/users.tpl +++ b/views/book/users.tpl @@ -40,6 +40,7 @@ 成员管理 {{if eq .Model.RoleId 0 1}} + {{end}} @@ -137,7 +138,49 @@ - + + + + + + @@ -171,10 +214,11 @@ $("#btnAddMember").button("reset"); } }); + $("#addBookMemberDialogModal").on("hidden.bs.modal",function () { $(this).find("form").html(modalCache); }).on("show.bs.modal",function () { - $('.js-data-example-ajax').select2({ + $('#account').select2({ language: "zh-CN", minimumInputLength : 1, minimumResultsForSearch: Infinity, @@ -197,6 +241,56 @@ } }); }); + /** + * 添加用户组 + */ + $("#addBookMemberGroupDialogForm").ajaxForm({ + beforeSubmit : function () { + var member_group_name = $.trim($("#member_group_name").val()); + if(member_group_name === ""){ + return showError("用户组名称不能为空"); + } + $("#btnAddMemberGroup").button("loading"); + }, + success : function (res) { + if(res.errcode === 0){ + // app.lists.splice(0,0,res.data); + window.document.location = document.location; + + $("#addBookMemberGroupDialogModal").modal("hide"); + }else{ + showError(res.message); + } + $("#btnAddMemberGroup").button("reset"); + } + }); + + $("#addBookMemberGroupDialogModal").on("hidden.bs.modal",function () { + + }).on("show.bs.modal",function () { + $('#member_group_name').select2({ + language: "zh-CN", + minimumInputLength : 1, + minimumResultsForSearch: Infinity, + maximumSelectionLength:1, + width : "100%", + ajax: { + url: '{{urlfor "BookMemberController.MemberGroupList"}}', + dataType: 'json', + data: function (params) { + return { + q: params.term, // search term + page: params.page + }; + }, + processResults: function (data, params) { + return { + results : data.data.results + } + } + } + }); + }); var app = new Vue({ el : "#userList",