-
Notifications
You must be signed in to change notification settings - Fork 0
/
TemplateController.go
186 lines (157 loc) · 4.65 KB
/
TemplateController.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package controllers
import (
"github.com/lifei6671/mindoc/models"
"github.com/astaxie/beego/orm"
"errors"
"strings"
"github.com/lifei6671/mindoc/conf"
)
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")
}