修改 机会审核(编码)
增加 草稿箱列表/删除/添加草稿 增加 储备类型列表
正在显示
7 个修改的文件
包含
187 行增加
和
30 行删除
@@ -206,26 +206,26 @@ func (this *ChanceController) ChanceType() { | @@ -206,26 +206,26 @@ func (this *ChanceController) ChanceType() { | ||
206 | msg = protocol.NewReturnResponse(chance.ChanceType(header, request)) | 206 | msg = protocol.NewReturnResponse(chance.ChanceType(header, request)) |
207 | } | 207 | } |
208 | 208 | ||
209 | -//Permission 机会权限 | ||
210 | -//@router /permission [post] | ||
211 | -//func (this *ChanceController) Permission() { | ||
212 | -// var msg *protocol.ResponseMessage | ||
213 | -// defer func() { | ||
214 | -// this.Resp(msg) | ||
215 | -// }()// | ||
216 | -// var request *protocol.ChancePermissionRequest | ||
217 | -// if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
218 | -// log.Error(err) | ||
219 | -// msg = protocol.BadRequestParam(1) | ||
220 | -// return | ||
221 | -// } | ||
222 | -// if b, m := this.Valid(request); !b { | ||
223 | -// msg = m | ||
224 | -// return | ||
225 | -// } | ||
226 | -// header := controllers.GetRequestHeader(this.Ctx) | ||
227 | -// msg = protocol.NewReturnResponse(chance.ChancePermission(header, request)) | ||
228 | -//} | 209 | +//ChanceReserveType 机会储备类型 |
210 | +//@router /chanceReserveType [post] | ||
211 | +func (this *ChanceController) ChanceReserveType() { | ||
212 | + var msg *protocol.ResponseMessage | ||
213 | + defer func() { | ||
214 | + this.Resp(msg) | ||
215 | + }() | ||
216 | + var request *protocol.ChanceReserveTypeRequest | ||
217 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
218 | + log.Error(err) | ||
219 | + msg = protocol.BadRequestParam(1) | ||
220 | + return | ||
221 | + } | ||
222 | + if b, m := this.Valid(request); !b { | ||
223 | + msg = m | ||
224 | + return | ||
225 | + } | ||
226 | + header := controllers.GetRequestHeader(this.Ctx) | ||
227 | + msg = protocol.NewReturnResponse(chance.ChanceReserveType(header, request)) | ||
228 | +} | ||
229 | 229 | ||
230 | //Templates | 230 | //Templates |
231 | //@router /templates [post] | 231 | //@router /templates [post] |
@@ -643,6 +643,28 @@ func (this *ChanceController) ChancePool() { | @@ -643,6 +643,28 @@ func (this *ChanceController) ChancePool() { | ||
643 | msg = protocol.NewReturnResponse(chance.ChancePool(header, request)) | 643 | msg = protocol.NewReturnResponse(chance.ChancePool(header, request)) |
644 | } | 644 | } |
645 | 645 | ||
646 | +//ChanceReservePool 储备池 | ||
647 | +//@router /chanceReservePool [post] | ||
648 | +func (this *ChanceController) ChanceReservePool() { | ||
649 | + var msg *protocol.ResponseMessage | ||
650 | + defer func() { | ||
651 | + this.Resp(msg) | ||
652 | + }() | ||
653 | + var request *protocol.ChancePoolRequest | ||
654 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
655 | + log.Error(err) | ||
656 | + msg = protocol.BadRequestParam(1) | ||
657 | + return | ||
658 | + } | ||
659 | + if b, m := this.Valid(request); !b { | ||
660 | + msg = m | ||
661 | + return | ||
662 | + } | ||
663 | + header := controllers.GetRequestHeader(this.Ctx) | ||
664 | + request.Type = 1 | ||
665 | + msg = protocol.NewReturnResponse(chance.ChancePool(header, request)) | ||
666 | +} | ||
667 | + | ||
646 | //ChanceReviseDetail 机会补充详情 | 668 | //ChanceReviseDetail 机会补充详情 |
647 | //@router /chanceReviseDetail [post] | 669 | //@router /chanceReviseDetail [post] |
648 | func (this *ChanceController) ChanceReviseDetail() { | 670 | func (this *ChanceController) ChanceReviseDetail() { |
@@ -7,12 +7,12 @@ import ( | @@ -7,12 +7,12 @@ import ( | ||
7 | ) | 7 | ) |
8 | 8 | ||
9 | type ChanceReserveType struct { | 9 | type ChanceReserveType struct { |
10 | - Id int `orm:"column(id);auto"` | ||
11 | - Name string `orm:"column(name);size(50)" description:"储备类型名称"` | ||
12 | - CompanyId int `orm:"column(company_id)" description:"表company.id 公司编号"` | ||
13 | - SortNum int `orm:"column(sort_num);null" description:"序号 "` | ||
14 | - CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间 "` | ||
15 | - UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间 "` | 10 | + Id int `orm:"column(id);auto" json:"id"` |
11 | + Name string `orm:"column(name);size(50)" description:"储备类型名称" json:"name"` | ||
12 | + CompanyId int `orm:"column(company_id)" description:"表company.id 公司编号" json:"-"` | ||
13 | + SortNum int `orm:"column(sort_num);null" description:"序号 " json:"-"` | ||
14 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间 " json:"-"` | ||
15 | + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间 " json:"-"` | ||
16 | } | 16 | } |
17 | 17 | ||
18 | func (t *ChanceReserveType) TableName() string { | 18 | func (t *ChanceReserveType) TableName() string { |
@@ -33,3 +33,12 @@ func GetChanceReserveTypeById(id int) (v *ChanceReserveType, err error) { | @@ -33,3 +33,12 @@ func GetChanceReserveTypeById(id int) (v *ChanceReserveType, err error) { | ||
33 | } | 33 | } |
34 | return nil, err | 34 | return nil, err |
35 | } | 35 | } |
36 | + | ||
37 | +func GetChanceReserveTypes(cid int64) (v []*ChanceReserveType, err error) { | ||
38 | + o := orm.NewOrm() | ||
39 | + sql := "select * from chance_reserve_type where company_id=? order by sort_num,id" | ||
40 | + if _, err = o.Raw(sql, cid).QueryRows(&v); err == nil { | ||
41 | + return | ||
42 | + } | ||
43 | + return | ||
44 | +} |
models/menu_app.go
0 → 100644
1 | +package models | ||
2 | + | ||
3 | +import ( | ||
4 | + "time" | ||
5 | + | ||
6 | + "github.com/astaxie/beego/orm" | ||
7 | +) | ||
8 | + | ||
9 | +type MenuApp struct { | ||
10 | + Id int `orm:"column(id);auto" description:"主键"` | ||
11 | + Name string `orm:"column(name);size(10)" description:"菜单名称"` | ||
12 | + Icon string `orm:"column(icon);size(128)" description:"菜单图标地址"` | ||
13 | + ParentId int `orm:"column(parent_id)" description:"上一级菜单 id"` | ||
14 | + Type int `orm:"column(type)" description:"类型:1为 pc 2为app"` | ||
15 | + Url string `orm:"column(url);size(128)" description:"菜单地址"` | ||
16 | + Code string `orm:"column(code);size(128)" description:"菜单编码"` | ||
17 | + Sort int `orm:"column(sort)" description:"同级菜单序号 "` | ||
18 | + CreateTime time.Time `orm:"column(create_time);type(timestamp);null" description:"创建时间"` | ||
19 | + Enabled int8 `orm:"column(enabled)" description:"是否有效"` | ||
20 | +} | ||
21 | + | ||
22 | +func (t *MenuApp) TableName() string { | ||
23 | + return "menu_app" | ||
24 | +} | ||
25 | + | ||
26 | +func init() { | ||
27 | + orm.RegisterModel(new(MenuApp)) | ||
28 | +} | ||
29 | + | ||
30 | +// GetMenuAppById retrieves MenuApp by Id. Returns error if | ||
31 | +// Id doesn't exist | ||
32 | +func GetMenuAppById(id int) (v *MenuApp, err error) { | ||
33 | + o := orm.NewOrm() | ||
34 | + v = &MenuApp{Id: id} | ||
35 | + if err = o.Read(v); err == nil { | ||
36 | + return v, nil | ||
37 | + } | ||
38 | + return nil, err | ||
39 | +} | ||
40 | + | ||
41 | +func GetMenuApp() (v []*MenuApp, err error) { | ||
42 | + o := orm.NewOrm() | ||
43 | + sql := "select * from menu_app where enabled=1 order by sort" | ||
44 | + if _, err = o.Raw(sql).QueryRows(&v); err == nil { | ||
45 | + return | ||
46 | + } | ||
47 | + return | ||
48 | +} |
1 | package protocol | 1 | package protocol |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | - "opp/models" | ||
5 | "time" | 4 | "time" |
6 | ) | 5 | ) |
7 | 6 | ||
@@ -56,6 +55,11 @@ const ( | @@ -56,6 +55,11 @@ const ( | ||
56 | ChanceStatusClose = 2 //关闭 | 55 | ChanceStatusClose = 2 //关闭 |
57 | ) | 56 | ) |
58 | 57 | ||
58 | +const ( | ||
59 | + ChanceClass = iota //机会一级分类 | ||
60 | + SubmitMenu //提交菜单 | ||
61 | +) | ||
62 | + | ||
59 | /*Favorite 我的收藏/点赞*/ | 63 | /*Favorite 我的收藏/点赞*/ |
60 | type FavoriteRequest struct { | 64 | type FavoriteRequest struct { |
61 | ObjectType int `json:"object_type" valid:"Required"` //收藏 点赞 | 65 | ObjectType int `json:"object_type" valid:"Required"` //收藏 点赞 |
@@ -84,7 +88,32 @@ type SympathyActionResponse struct { | @@ -84,7 +88,32 @@ type SympathyActionResponse struct { | ||
84 | type ChanceTypeRequest struct { | 88 | type ChanceTypeRequest struct { |
85 | } | 89 | } |
86 | type ChanceTypeResponse struct { | 90 | type ChanceTypeResponse struct { |
87 | - List []*models.ChanceType `json:"list"` | 91 | + List []*MenuItem `json:"list"` |
92 | +} | ||
93 | + | ||
94 | +/*ChanceReserveType 机会储备类型*/ | ||
95 | +type ChanceReserveTypeRequest struct { | ||
96 | +} | ||
97 | +type ChanceReserveTypeResponse struct { | ||
98 | + List interface{} `json:"list"` | ||
99 | +} | ||
100 | + | ||
101 | +type MenuItem struct { | ||
102 | + Id int `json:"id"` | ||
103 | + Name string `json:"name"` | ||
104 | + Icon string `json:"icon"` | ||
105 | + Code string `json:"code"` //草稿箱-机会列表 CHANCE_DRAFT | ||
106 | + Type int `json:"type"` //0:机会一级分类 1:菜单 | ||
107 | +} | ||
108 | + | ||
109 | +func NewMenuItem(id int, name, icon, code string, t int) *MenuItem { | ||
110 | + return &MenuItem{ | ||
111 | + Id: id, | ||
112 | + Name: name, | ||
113 | + Icon: icon, | ||
114 | + Code: code, | ||
115 | + Type: t, | ||
116 | + } | ||
88 | } | 117 | } |
89 | 118 | ||
90 | /*Templates 模板列表请求*/ | 119 | /*Templates 模板列表请求*/ |
@@ -121,6 +121,22 @@ func init() { | @@ -121,6 +121,22 @@ func init() { | ||
121 | 121 | ||
122 | beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"], | 122 | beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"], |
123 | beego.ControllerComments{ | 123 | beego.ControllerComments{ |
124 | + Method: "ChanceReservePool", | ||
125 | + Router: `/chanceReservePool`, | ||
126 | + AllowHTTPMethods: []string{"post"}, | ||
127 | + MethodParams: param.Make(), | ||
128 | + Params: nil}) | ||
129 | + | ||
130 | + beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"], | ||
131 | + beego.ControllerComments{ | ||
132 | + Method: "ChanceReserveType", | ||
133 | + Router: `/chanceReserveType`, | ||
134 | + AllowHTTPMethods: []string{"post"}, | ||
135 | + MethodParams: param.Make(), | ||
136 | + Params: nil}) | ||
137 | + | ||
138 | + beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"], | ||
139 | + beego.ControllerComments{ | ||
124 | Method: "ChanceReviseDetail", | 140 | Method: "ChanceReviseDetail", |
125 | Router: `/chanceReviseDetail`, | 141 | Router: `/chanceReviseDetail`, |
126 | AllowHTTPMethods: []string{"post"}, | 142 | AllowHTTPMethods: []string{"post"}, |
@@ -185,9 +185,10 @@ END: | @@ -185,9 +185,10 @@ END: | ||
185 | func ChanceType(header *protocol.RequestHeader, request *protocol.ChanceTypeRequest) (rsp *protocol.ChanceTypeResponse, err error) { | 185 | func ChanceType(header *protocol.RequestHeader, request *protocol.ChanceTypeRequest) (rsp *protocol.ChanceTypeResponse, err error) { |
186 | var ( | 186 | var ( |
187 | list []*models.ChanceType | 187 | list []*models.ChanceType |
188 | + menus []*models.MenuApp | ||
188 | ) | 189 | ) |
189 | rsp = &protocol.ChanceTypeResponse{} | 190 | rsp = &protocol.ChanceTypeResponse{} |
190 | - rsp.List = make([]*models.ChanceType, 0) | 191 | + rsp.List = make([]*protocol.MenuItem, 0) |
191 | if list, err = models.GetChanceTypeAll(header.CompanyId); err != nil { | 192 | if list, err = models.GetChanceTypeAll(header.CompanyId); err != nil { |
192 | if err == orm.ErrNoRows { | 193 | if err == orm.ErrNoRows { |
193 | err = nil | 194 | err = nil |
@@ -196,7 +197,35 @@ func ChanceType(header *protocol.RequestHeader, request *protocol.ChanceTypeRequ | @@ -196,7 +197,35 @@ func ChanceType(header *protocol.RequestHeader, request *protocol.ChanceTypeRequ | ||
196 | log.Error(err) | 197 | log.Error(err) |
197 | return | 198 | return |
198 | } | 199 | } |
199 | - rsp.List = append(rsp.List, list...) | 200 | + for i := range list { |
201 | + item := list[i] | ||
202 | + rsp.List = append(rsp.List, protocol.NewMenuItem(item.Id, item.Name, item.Icon, item.Code, protocol.ChanceClass)) //机会一级分类 | ||
203 | + } | ||
204 | + if menus, err = models.GetMenuApp(); err != nil { | ||
205 | + if err == orm.ErrNoRows { | ||
206 | + err = nil | ||
207 | + return | ||
208 | + } | ||
209 | + log.Error(err) | ||
210 | + return | ||
211 | + } | ||
212 | + for i := range menus { | ||
213 | + item := menus[i] | ||
214 | + rsp.List = append(rsp.List, protocol.NewMenuItem(item.Id, item.Name, item.Icon, item.Code, protocol.SubmitMenu)) //菜单 | ||
215 | + } | ||
216 | + return | ||
217 | +} | ||
218 | + | ||
219 | +//机会储备类型 | ||
220 | +func ChanceReserveType(header *protocol.RequestHeader, request *protocol.ChanceReserveTypeRequest) (rsp *protocol.ChanceReserveTypeResponse, err error) { | ||
221 | + var ( | ||
222 | + v []*models.ChanceReserveType | ||
223 | + ) | ||
224 | + v, _ = models.GetChanceReserveTypes(header.CompanyId) | ||
225 | + if len(v) == 0 { | ||
226 | + v = make([]*models.ChanceReserveType, 0) | ||
227 | + } | ||
228 | + rsp = &protocol.ChanceReserveTypeResponse{List: v} | ||
200 | return | 229 | return |
201 | } | 230 | } |
202 | 231 |
@@ -113,6 +113,10 @@ func SubmitChecks(header *protocol.RequestHeader, request *protocol.SubmitChecks | @@ -113,6 +113,10 @@ func SubmitChecks(header *protocol.RequestHeader, request *protocol.SubmitChecks | ||
113 | err = protocol.NewCustomMessage(5102, "该机会已被关闭") | 113 | err = protocol.NewCustomMessage(5102, "该机会已被关闭") |
114 | return | 114 | return |
115 | } | 115 | } |
116 | + if chance.Type == models.ChanceReserve { | ||
117 | + err = protocol.NewCustomMessage(1, "该机会已被移至储备池,不允许提交") | ||
118 | + return | ||
119 | + } | ||
116 | if _, result := CheckIsCommitAllCheck(request.ChanceId); result { | 120 | if _, result := CheckIsCommitAllCheck(request.ChanceId); result { |
117 | err = protocol.NewCustomMessage(1, "所有人均已提交,不允许修改自查内容") | 121 | err = protocol.NewCustomMessage(1, "所有人均已提交,不允许修改自查内容") |
118 | return | 122 | return |
-
请 注册 或 登录 后发表评论