123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- package controllers
- import (
- "errors"
- "strings"
- "github.com/astaxie/beego/orm"
- "github.com/mindoc-org/mindoc/conf"
- "github.com/mindoc-org/mindoc/models"
- )
- type TemplateController struct {
- BaseController
- BookId int
- }
- func (c *TemplateController) isPermission() (error) {
- c.Prepare()
- bookIdentify := c.GetString("identify", "")
- if bookIdentify == "" {
- return errors.New("参数错误")
- }
- if !c.Member.IsAdministrator() {
- book, err := models.NewBookResult().FindByIdentify(bookIdentify, c.Member.MemberId)
- if err != nil {
- if err == orm.ErrNoRows {
- return errors.New("项目不存在或没有权限")
- }
- return errors.New("查询项目模板失败")
- }
- c.BookId = book.BookId
- } else {
- book, err := models.NewBook().FindByIdentify(bookIdentify, "book_id")
- if err != nil {
- if err == orm.ErrNoRows {
- return errors.New("项目不存在或没有权限")
- }
- return errors.New("查询项目模板失败")
- }
- c.BookId = book.BookId
- }
- return nil
- }
- //获取指定模板信息
- func (c *TemplateController) Get() {
- if err := c.isPermission() ; err != nil {
- c.JsonResult(500,err.Error())
- }
- templateId, _ := c.GetInt("template_id",0)
- template,err := models.NewTemplate().Find(templateId)
- if err != nil {
- c.JsonResult(500,"读取模板失败")
- }
- if template.IsGlobal == 0 && template.BookId != c.BookId {
- c.JsonResult(404,"模板不存在或已删除")
- }
- c.JsonResult(0,"OK",template)
- }
- //获取模板列表
- func (c *TemplateController) List() {
- c.TplName = "template/list.tpl"
- if err := c.isPermission() ; err != nil {
- c.Data["ErrorMessage"] = err.Error()
- return
- }
- templateList,err := models.NewTemplate().FindAllByBookId(c.BookId)
- if err != nil && err != orm.ErrNoRows{
- c.Data["ErrorMessage"] = "查询项目模板失败"
- }
- if templateList != nil {
- for i,t := range templateList {
- templateList[i] = t.Preload()
- }
- }
- //c.JsonResult(0,"OK",templateList)
- c.Data["List"] = templateList
- }
- //添加模板
- func (c *TemplateController) Add() {
- if err := c.isPermission() ; err != nil {
- c.JsonResult(500,err.Error())
- }
- templateId, _ := c.GetInt("template_id",0)
- content := c.GetString("content")
- isGlobal,_ := c.GetInt("is_global",0)
- templateName := c.GetString("template_name","")
- if templateName == "" || strings.Count(templateName,"") > 300 {
- c.JsonResult(500,"模板名称不能为空且必须小于300字")
- }
- template := models.NewTemplate()
- if templateId > 0 {
- t,err := template.Find(templateId);
- if err != nil {
- c.JsonResult(500,"模板不存在")
- }
- template = t
- template.ModifyAt = c.Member.MemberId
- }
- template.TemplateId = templateId
- template.BookId = c.BookId
- template.TemplateContent = content
- template.TemplateName = templateName
- //只有管理员才能设置全局模板
- if c.Member.IsAdministrator() {
- template.IsGlobal = isGlobal
- }else{
- template.IsGlobal = 0
- //如果不是管理员需要判断是否有项目权限
- rel,err := models.NewRelationship().FindByBookIdAndMemberId(c.BookId,c.Member.MemberId)
- if err != nil || rel.RoleId == conf.BookObserver {
- c.JsonResult(403,"没有权限")
- }
- //如果修改的模板不是本人创建的,并且又不是项目创建者则禁止修改
- if template.MemberId > 0 && template.MemberId != c.Member.MemberId && rel.RoleId != conf.BookFounder {
- c.JsonResult(403,"没有权限")
- }
- }
- template.MemberId = c.Member.MemberId
- var cols []string
- if templateId > 0 {
- cols = []string{ "template_content", "modify_time","modify_at","version" }
- }
- if err := template.Save(cols...); err != nil {
- c.JsonResult(500,"报错模板失败")
- }
- c.JsonResult(0,"OK",template)
- }
- //删除模板
- func (c *TemplateController) Delete() {
- if err := c.isPermission() ; err != nil {
- c.JsonResult(500,err.Error())
- }
- templateId, _ := c.GetInt("template_id",0)
- template,err := models.NewTemplate().Find(templateId)
- if err != nil {
- c.JsonResult(404,"模板不存在")
- }
- if c.Member.IsAdministrator() {
- err := models.NewTemplate().Delete(templateId,0)
- if err != nil {
- c.JsonResult(500,"删除失败")
- }
- }else{
- //如果不是管理员需要判断是否有项目权限
- rel,err := models.NewRelationship().FindByBookIdAndMemberId(template.BookId,c.Member.MemberId)
- if err != nil || rel.RoleId == conf.BookObserver {
- c.JsonResult(403,"没有权限")
- }
- //如果是创始人或管理者可以直接删除模板
- if rel.RoleId == conf.BookFounder || rel.RoleId == conf.BookAdmin {
- err := models.NewTemplate().Delete(templateId,0)
- if err != nil {
- c.JsonResult(500,"删除失败")
- }
- }
- if err := models.NewTemplate().Delete(templateId,c.Member.MemberId);err != nil {
- c.JsonResult(500,"删除失败")
- }
- }
- c.JsonResult(0,"OK")
- }
|