You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.0 KiB
96 lines
2.0 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"strconv" |
|
"strings" |
|
|
|
"go-common/app/admin/main/growup/dao/resource" |
|
"go-common/app/admin/main/growup/model" |
|
|
|
"go-common/library/log" |
|
) |
|
|
|
var ( |
|
// 视频和专栏的权限点 |
|
_videoPri = 13 |
|
_columnPri = 103 |
|
) |
|
|
|
// BusPrivilege business privilege |
|
func (s *Service) BusPrivilege(c context.Context, username string, ctypes string) (res []*model.BusRes, err error) { |
|
res = make([]*model.BusRes, 0) |
|
typs := strings.Split(ctypes, ",") |
|
if len(typs) == 0 { |
|
return |
|
} |
|
for _, typ := range typs { |
|
var ctype int |
|
ctype, err = strconv.Atoi(typ) |
|
if err != nil { |
|
log.Error("strconv.Atoi error(%v)", err) |
|
return |
|
} |
|
var r []*model.BusRes |
|
r, err = s.busPrivilege(c, username, ctype) |
|
if err != nil { |
|
log.Error("s.busPrivilege error(%v)", err) |
|
return |
|
} |
|
res = append(res, r...) |
|
} |
|
return |
|
} |
|
|
|
func (s *Service) busPrivilege(c context.Context, username string, ctype int) (res []*model.BusRes, err error) { |
|
category, err := s.getBusCategory(c, ctype) |
|
if err != nil { |
|
log.Error("s.getBusCategory error(%v)", err) |
|
return |
|
} |
|
userPri, err := s.GetUserPri(username) |
|
if err != nil { |
|
log.Error("s.GetUserPri error(%v)", err) |
|
return |
|
} |
|
|
|
// 获取数据源权限 |
|
fatherID := 0 |
|
switch ctype { |
|
case 1: |
|
fatherID = _videoPri |
|
case 2: |
|
fatherID = _columnPri |
|
} |
|
|
|
allPrivilege, err := s.dao.GetLevelPrivileges(fmt.Sprintf("level = 3 AND father_id = %d", fatherID)) |
|
if err != nil { |
|
log.Error("s.dao.GetLevelPrivileges Error(%v)", err) |
|
return |
|
} |
|
res = make([]*model.BusRes, 0) |
|
for _, p := range allPrivilege { |
|
if !userPri[p.ID] { |
|
continue |
|
} |
|
if cid, ok := category[p.Title]; ok { |
|
res = append(res, &model.BusRes{ |
|
PrivilegeID: p.ID, |
|
CategoryID: cid, |
|
Name: p.Title}) |
|
} |
|
} |
|
return |
|
} |
|
|
|
func (s *Service) getBusCategory(c context.Context, ctype int) (categorys map[string]int64, err error) { |
|
categorys = make(map[string]int64) |
|
switch ctype { |
|
case 1: |
|
return resource.VideoCategoryNameToID(c) |
|
case 2: |
|
return resource.ColumnCategoryNameToID(c) |
|
} |
|
return |
|
}
|
|
|