mirror of
https://github.com/mindoc-org/mindoc.git
synced 2026-02-27 17:03:57 +08:00
feat:实现团队功能
This commit is contained in:
@@ -117,6 +117,30 @@ func (c *BaseController) JsonResult(errCode int, errMsg string, data ...interfac
|
||||
c.StopRun()
|
||||
}
|
||||
|
||||
//如果错误不为空,则响应错误信息到浏览器.
|
||||
func (c *BaseController) CheckJsonError(code int,err error) {
|
||||
|
||||
if err == nil {
|
||||
return
|
||||
}
|
||||
jsonData := make(map[string]interface{}, 3)
|
||||
|
||||
jsonData["errcode"] = code
|
||||
jsonData["message"] = err.Error()
|
||||
|
||||
returnJSON, err := json.Marshal(jsonData)
|
||||
|
||||
if err != nil {
|
||||
beego.Error(err)
|
||||
}
|
||||
|
||||
c.Ctx.ResponseWriter.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-cache, no-store")
|
||||
io.WriteString(c.Ctx.ResponseWriter, string(returnJSON))
|
||||
|
||||
c.StopRun()
|
||||
}
|
||||
|
||||
// ExecuteViewPathTemplate 执行指定的模板并返回执行结果.
|
||||
func (c *BaseController) ExecuteViewPathTemplate(tplName string, data interface{}) (string, error) {
|
||||
var buf bytes.Buffer
|
||||
@@ -160,7 +184,13 @@ func (c *BaseController) ShowErrorPage(errCode int, errMsg string) {
|
||||
}
|
||||
if errCode >= 200 && errCode <= 510 {
|
||||
c.CustomAbort(errCode, buf.String())
|
||||
}else{
|
||||
} else {
|
||||
c.CustomAbort(500, buf.String())
|
||||
}
|
||||
}
|
||||
|
||||
func (c *BaseController) CheckErrorResult(code int,err error) {
|
||||
if err != nil {
|
||||
c.ShowErrorPage(code, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ type BookMemberController struct {
|
||||
func (c *BookMemberController) AddMember() {
|
||||
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 +46,11 @@ func (c *BookMemberController) AddMember() {
|
||||
relationship := models.NewRelationship()
|
||||
relationship.BookId = book.BookId
|
||||
relationship.MemberId = member.MemberId
|
||||
relationship.RoleId = role_id
|
||||
relationship.RoleId = conf.BookRole(roleId)
|
||||
|
||||
if err := relationship.Insert(); err == nil {
|
||||
memberRelationshipResult := models.NewMemberRelationshipResult().FromMember(member)
|
||||
memberRelationshipResult.RoleId = role_id
|
||||
memberRelationshipResult.RoleId = conf.BookRole(roleId)
|
||||
memberRelationshipResult.RelationshipId = relationship.RelationshipId
|
||||
memberRelationshipResult.BookId = book.BookId
|
||||
memberRelationshipResult.ResolveRoleName()
|
||||
@@ -63,13 +63,13 @@ func (c *BookMemberController) AddMember() {
|
||||
// 变更指定用户在指定项目中的权限
|
||||
func (c *BookMemberController) ChangeRole() {
|
||||
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 +89,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, conf.BookRole(role))
|
||||
|
||||
if err != nil {
|
||||
logs.Error("变更用户在项目中的权限 => ", err)
|
||||
|
||||
@@ -59,7 +59,7 @@ func (c *ManagerController) Users() {
|
||||
pager := pagination.NewPagination(c.Ctx.Request, totalCount, conf.PageSize, c.BaseUrl())
|
||||
c.Data["PageHtml"] = pager.HtmlPages()
|
||||
|
||||
for _,item := range members {
|
||||
for _, item := range members {
|
||||
item.Avatar = conf.URLForWithCdnImage(item.Avatar)
|
||||
}
|
||||
} else {
|
||||
@@ -114,7 +114,7 @@ func (c *ManagerController) CreateMember() {
|
||||
|
||||
member.Account = account
|
||||
member.Password = password1
|
||||
member.Role = role
|
||||
member.Role = conf.SystemRole(role)
|
||||
member.Avatar = conf.GetDefaultAvatar()
|
||||
member.CreateAt = c.Member.MemberId
|
||||
member.Email = email
|
||||
@@ -167,17 +167,17 @@ func (c *ManagerController) UpdateMemberStatus() {
|
||||
func (c *ManagerController) ChangeMemberRole() {
|
||||
c.Prepare()
|
||||
|
||||
member_id, _ := c.GetInt("member_id", 0)
|
||||
memberId, _ := c.GetInt("member_id", 0)
|
||||
role, _ := c.GetInt("role", 0)
|
||||
if member_id <= 0 {
|
||||
if memberId <= 0 {
|
||||
c.JsonResult(6001, "参数错误")
|
||||
}
|
||||
if role != conf.MemberAdminRole && role != conf.MemberGeneralRole {
|
||||
if role != int(conf.MemberAdminRole) && role != int(conf.MemberGeneralRole) {
|
||||
c.JsonResult(6001, "用户权限不正确")
|
||||
}
|
||||
member := models.NewMember()
|
||||
|
||||
if _, err := member.Find(member_id); err != nil {
|
||||
if _, err := member.Find(memberId); err != nil {
|
||||
c.JsonResult(6002, "用户不存在")
|
||||
}
|
||||
if member.MemberId == c.Member.MemberId {
|
||||
@@ -186,7 +186,7 @@ func (c *ManagerController) ChangeMemberRole() {
|
||||
if member.Role == conf.MemberSuperRole {
|
||||
c.JsonResult(6005, "不能变更超级管理员的权限")
|
||||
}
|
||||
member.Role = role
|
||||
member.Role = conf.SystemRole(role)
|
||||
|
||||
if err := member.Update(); err != nil {
|
||||
c.JsonResult(6003, "用户权限设置失败")
|
||||
@@ -670,7 +670,7 @@ func (c *ManagerController) AttachDelete() {
|
||||
beego.Error("AttachDelete => ", err)
|
||||
c.JsonResult(6001, err.Error())
|
||||
}
|
||||
attach.FilePath = filepath.Join(conf.WorkingDirectory,attach.FilePath)
|
||||
attach.FilePath = filepath.Join(conf.WorkingDirectory, attach.FilePath)
|
||||
|
||||
if err := attach.Delete(); err != nil {
|
||||
beego.Error("AttachDelete => ", err)
|
||||
@@ -732,33 +732,265 @@ func (c *ManagerController) Config() {
|
||||
if c.Ctx.Input.IsPost() {
|
||||
content := strings.TrimSpace(c.GetString("configFileTextArea"))
|
||||
if content == "" {
|
||||
c.JsonResult(500,"配置文件不能为空")
|
||||
c.JsonResult(500, "配置文件不能为空")
|
||||
}
|
||||
tf,err := ioutil.TempFile(os.TempDir(),"mindoc")
|
||||
tf, err := ioutil.TempFile(os.TempDir(), "mindoc")
|
||||
|
||||
if err != nil {
|
||||
beego.Error("创建临时文件失败 ->",err)
|
||||
c.JsonResult(5001,"创建临时文件失败")
|
||||
beego.Error("创建临时文件失败 ->", err)
|
||||
c.JsonResult(5001, "创建临时文件失败")
|
||||
}
|
||||
defer tf.Close()
|
||||
|
||||
tf.WriteString(content)
|
||||
|
||||
err = beego.LoadAppConfig("ini",tf.Name())
|
||||
err = beego.LoadAppConfig("ini", tf.Name())
|
||||
|
||||
if err != nil {
|
||||
beego.Error("加载配置文件失败 ->",err)
|
||||
c.JsonResult(5002,"加载配置文件失败")
|
||||
beego.Error("加载配置文件失败 ->", err)
|
||||
c.JsonResult(5002, "加载配置文件失败")
|
||||
}
|
||||
err = filetil.CopyFile(tf.Name(), conf.ConfigurationFile)
|
||||
if err != nil {
|
||||
beego.Error("保存配置文件失败 ->",err)
|
||||
c.JsonResult(5003,"保存配置文件失败")
|
||||
beego.Error("保存配置文件失败 ->", err)
|
||||
c.JsonResult(5003, "保存配置文件失败")
|
||||
}
|
||||
c.JsonResult(0,"保存成功")
|
||||
c.JsonResult(0, "保存成功")
|
||||
}
|
||||
c.Data["ConfigContent"] = ""
|
||||
if b,err := ioutil.ReadFile(conf.ConfigurationFile); err == nil {
|
||||
if b, err := ioutil.ReadFile(conf.ConfigurationFile); err == nil {
|
||||
c.Data["ConfigContent"] = string(b)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ManagerController) Team() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/team.tpl"
|
||||
|
||||
pageIndex, _ := c.GetInt("page", 0)
|
||||
|
||||
teams, totalCount, err := models.NewTeam().FindToPager(pageIndex, conf.PageSize)
|
||||
|
||||
if err != nil && err != orm.ErrNoRows {
|
||||
c.ShowErrorPage(500, err.Error())
|
||||
}
|
||||
if err == orm.ErrNoRows || len(teams) <= 0 {
|
||||
c.Data["Result"] = template.JS("[]")
|
||||
c.Data["PageHtml"] = ""
|
||||
return
|
||||
}
|
||||
|
||||
if totalCount > 0 {
|
||||
pager := pagination.NewPagination(c.Ctx.Request, totalCount, conf.PageSize, c.BaseUrl())
|
||||
c.Data["PageHtml"] = pager.HtmlPages()
|
||||
} else {
|
||||
c.Data["PageHtml"] = ""
|
||||
}
|
||||
|
||||
b, err := json.Marshal(teams)
|
||||
|
||||
if err != nil {
|
||||
c.Data["Result"] = template.JS("[]")
|
||||
} else {
|
||||
c.Data["Result"] = template.JS(string(b))
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamCreate() {
|
||||
c.Prepare()
|
||||
|
||||
teamName := c.GetString("teamName")
|
||||
|
||||
if teamName == "" {
|
||||
c.JsonResult(5001, "团队名称不能为空")
|
||||
}
|
||||
team := models.NewTeam()
|
||||
|
||||
team.MemberId = c.Member.MemberId
|
||||
team.TeamName = teamName
|
||||
|
||||
if err := team.Save(); err == nil {
|
||||
c.JsonResult(0, "OK", team)
|
||||
} else {
|
||||
c.JsonResult(5002, err.Error())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamEdit() {
|
||||
c.Prepare()
|
||||
teamName := c.GetString("teamName")
|
||||
teamId, _ := c.GetInt("teamId")
|
||||
|
||||
if teamName == "" {
|
||||
c.JsonResult(5001, "团队名称不能为空")
|
||||
}
|
||||
if teamId <= 0 {
|
||||
c.JsonResult(5002, "团队标识不能为空")
|
||||
}
|
||||
team, err := models.NewTeam().First(teamId)
|
||||
|
||||
c.CheckJsonError(5003, err)
|
||||
|
||||
team.TeamName = teamName
|
||||
|
||||
err = team.Save()
|
||||
|
||||
c.CheckJsonError(5004, err)
|
||||
|
||||
c.JsonResult(0, "OK", team)
|
||||
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamDelete() {
|
||||
c.Prepare()
|
||||
|
||||
teamId, _ := c.GetInt("teamId")
|
||||
|
||||
if teamId <= 0 {
|
||||
c.JsonResult(5002, "团队标识不能为空")
|
||||
}
|
||||
err := models.NewTeam().Delete(teamId)
|
||||
|
||||
c.CheckJsonError(5001, err)
|
||||
|
||||
c.JsonResult(0, "")
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamMemberList() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/team_member_list.tpl"
|
||||
teamId, _ := strconv.Atoi(c.Ctx.Input.Param(":id"))
|
||||
pageIndex, _ := c.GetInt("page", 0)
|
||||
|
||||
if teamId <= 0 {
|
||||
c.ShowErrorPage(500, "参数错误")
|
||||
}
|
||||
|
||||
team, err := models.NewTeam().First(teamId)
|
||||
|
||||
if err == orm.ErrNoRows {
|
||||
c.ShowErrorPage(404, "团队不存在")
|
||||
}
|
||||
c.CheckErrorResult(500, err)
|
||||
c.Data["Model"] = team
|
||||
|
||||
teams, totalCount, err := models.NewTeamMember().FindToPager(teamId, pageIndex, conf.PageSize)
|
||||
|
||||
if err != nil && err != orm.ErrNoRows {
|
||||
c.ShowErrorPage(500, err.Error())
|
||||
}
|
||||
if err == orm.ErrNoRows || len(teams) <= 0 {
|
||||
c.Data["Result"] = template.JS("[]")
|
||||
c.Data["PageHtml"] = ""
|
||||
return
|
||||
}
|
||||
|
||||
if totalCount > 0 {
|
||||
pager := pagination.NewPagination(c.Ctx.Request, totalCount, conf.PageSize, c.BaseUrl())
|
||||
c.Data["PageHtml"] = pager.HtmlPages()
|
||||
} else {
|
||||
c.Data["PageHtml"] = ""
|
||||
}
|
||||
|
||||
b, err := json.Marshal(teams)
|
||||
|
||||
if err != nil {
|
||||
beego.Error("编码 JSON 结果失败 ->", err)
|
||||
c.Data["Result"] = template.JS("[]")
|
||||
} else {
|
||||
c.Data["Result"] = template.JS(string(b))
|
||||
}
|
||||
}
|
||||
|
||||
//搜索团队用户.
|
||||
func (c *ManagerController) TeamSearchMember() {
|
||||
c.Prepare()
|
||||
|
||||
teamId, _ := c.GetInt("teamId")
|
||||
keyword := strings.TrimSpace(c.GetString("q"))
|
||||
|
||||
if teamId <= 0 {
|
||||
c.JsonResult(500, "参数错误")
|
||||
}
|
||||
|
||||
searchResult, err := models.NewTeamMember().FindNotJoinMemberByAccount(teamId, keyword, 10)
|
||||
|
||||
if err != nil {
|
||||
c.JsonResult(500, err.Error())
|
||||
}
|
||||
c.JsonResult(0, "OK", searchResult)
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamMemberAdd() {
|
||||
c.Prepare()
|
||||
teamId, _ := c.GetInt("teamId")
|
||||
memberId, _ := c.GetInt("memberId")
|
||||
roleId, _ := c.GetInt("roleId")
|
||||
|
||||
if teamId <= 0 || memberId <= 0 || roleId <= 0 || roleId > int(conf.BookObserver) {
|
||||
c.JsonResult(5001, "参数不正确")
|
||||
}
|
||||
|
||||
teamMember := models.NewTeamMember()
|
||||
teamMember.MemberId = memberId
|
||||
teamMember.TeamId = teamId
|
||||
teamMember.RoleId = conf.BookRole(roleId)
|
||||
|
||||
if err := teamMember.Save(); err != nil {
|
||||
c.CheckJsonError(5001, err)
|
||||
}
|
||||
|
||||
teamMember.Include()
|
||||
|
||||
c.JsonResult(0, "OK", teamMember)
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamMemberDelete() {
|
||||
c.Prepare()
|
||||
memberId, _ := c.GetInt("memberId")
|
||||
teamId, _ := c.GetInt("teamId")
|
||||
|
||||
teamMember, err := models.NewTeamMember().FindFirst(teamId, memberId)
|
||||
|
||||
if err != nil {
|
||||
c.JsonResult(5001, "用户不存在或已禁用")
|
||||
}
|
||||
err = teamMember.Delete(teamMember.TeamMemberId)
|
||||
if err != nil {
|
||||
c.JsonResult(5002, "删除失败")
|
||||
}
|
||||
c.JsonResult(0, "ok")
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamChangeMemberRole() {
|
||||
c.Prepare()
|
||||
memberId, _ := c.GetInt("memberId")
|
||||
roleId, _ := c.GetInt("roleId")
|
||||
teamId, _ := c.GetInt("teamId")
|
||||
if memberId <= 0 || roleId <= 0 || teamId <= 0 || roleId > int(conf.BookObserver) {
|
||||
c.JsonResult(5001, "参数错误")
|
||||
}
|
||||
|
||||
teamMember, err := models.NewTeamMember().ChangeRoleId(teamId, memberId, conf.BookRole(roleId))
|
||||
|
||||
if err != nil {
|
||||
c.JsonResult(5002, err.Error())
|
||||
} else {
|
||||
c.JsonResult(0, "OK", teamMember)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamBookList() {
|
||||
c.Prepare()
|
||||
c.TplName = "manager/team_book_list.tpl"
|
||||
|
||||
}
|
||||
func (c *ManagerController) TeamBookAdd() {
|
||||
c.Prepare()
|
||||
}
|
||||
|
||||
func (c *ManagerController) TeamBookDelete() {
|
||||
c.Prepare()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user