feat:完善项目信息

This commit is contained in:
henry
2022-01-06 17:11:57 +08:00
parent 1b0f71735b
commit a92801b1ce
29 changed files with 815 additions and 623 deletions

View File

@ -5,20 +5,23 @@ import (
"SciencesServer/app/api/admin/model"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/service"
"SciencesServer/app/session"
"SciencesServer/serve/logger"
"SciencesServer/utils"
"errors"
"fmt"
"time"
)
type Instance struct{ *controller.Platform }
type Instance struct{ *session.Admin }
type InstanceHandle func(session *service.Session) *Instance
type InstanceHandle func(session *session.Admin) *Instance
type (
// InstanceInfo 角色信息
InstanceInfo struct {
ID string `json:"id"`
*model2.SysRole
StatusTitle string `json:"status_title"`
}
// InstanceBasicInfo 角色基本信息
InstanceBasicInfo struct {
@ -27,14 +30,14 @@ type (
}
)
// List 列表信息
func (c *Instance) List(name string, status, page, pageSize int) (*controller.ReturnPages, error) {
// Index 列表信息
func (c *Instance) Index(name string, page, pageSize int) (*controller.ReturnPages, error) {
mSysRole := model.NewSysRole()
where := []*model2.ModelWhereOrder{
&model2.ModelWhereOrder{
Where: model2.NewWhere("tenant_id", c.TenantID),
Order: model2.NewOrder("sort", model2.OrderModeToDesc),
Order: model2.NewOrder("sort", model2.OrderModeToAsc),
},
&model2.ModelWhereOrder{
Order: model2.NewOrder("id", model2.OrderModeToDesc),
@ -42,12 +45,7 @@ func (c *Instance) List(name string, status, page, pageSize int) (*controller.Re
}
if name != "" {
where = append(where, &model2.ModelWhereOrder{
Where: model2.NewWhere("tenant_id", c.TenantID),
})
}
if status > 0 {
where = append(where, &model2.ModelWhereOrder{
Where: model2.NewWhere("status", status),
Where: model2.NewWhereLike("name", name),
})
}
var count int64
@ -60,7 +58,7 @@ func (c *Instance) List(name string, status, page, pageSize int) (*controller.Re
list := make([]*InstanceInfo, 0)
for _, v := range out {
list = append(list, &InstanceInfo{SysRole: v, StatusTitle: v.StatusTitle()})
list = append(list, &InstanceInfo{ID: v.GetEncodeID(), SysRole: v})
}
return &controller.ReturnPages{Data: list, Count: count}, nil
@ -73,10 +71,9 @@ func (c *Instance) Select() ([]*InstanceBasicInfo, error) {
where := []*model2.ModelWhereOrder{
&model2.ModelWhereOrder{
Where: model2.NewWhere("tenant_id", c.TenantID),
Order: model2.NewOrder("sort", model2.OrderModeToDesc),
Order: model2.NewOrder("sort", model2.OrderModeToAsc),
},
&model2.ModelWhereOrder{
Where: model2.NewWhere("status", model2.SysRoleStatusForNormal),
Order: model2.NewOrder("id", model2.OrderModeToDesc),
},
}
@ -88,8 +85,8 @@ func (c *Instance) Select() ([]*InstanceBasicInfo, error) {
return out, nil
}
// Data 数据操作
func (c *Instance) Data(id uint64, name, remark string, sort int) error {
// Form 数据操作
func (c *Instance) Form(id uint64, name, remark string, sort int) error {
mSysRole := model.NewSysRole()
if id <= 0 {
@ -147,27 +144,28 @@ func (c *Instance) Delete(id uint64) error {
if err != nil {
return err
} else if !isExist {
return errors.New("角色不存在")
}
if c.TenantID > 0 && c.TenantID != mSysRole.TenantID {
return errors.New("不可删除其他租户角色")
return errors.New("操作错误,角色信息不存在")
} else if c.TenantID > 0 && c.TenantID != mSysRole.TenantID {
return errors.New("操作错误,无权限操作")
}
if err = model2.Delete(mSysRole.SysRole); err != nil {
return err
}
go utils.TryCatch(func() {
//permission := service.NewPermission([]string{utils.UintToString(id)})(c.TenantKey, "")
//// 删除角色权限
//if _, err = permission.RemoveRolePolicy(); err != nil {
// logger.ErrorF("删除租户【%s】下角色【%d】权限信息错误%v", c.TenantKey, id, err)
// return
//}
permission := service.NewPermission(
service.WithAuthTenant(fmt.Sprintf("%d", mSysRole.TenantID)),
service.WithAuthRoles([]string{fmt.Sprintf("%d", id)}),
)
if _, err = permission.RemoveRolePolicy(); err != nil {
logger.ErrorF("Casbin 删除租户【%d】下角色【%d】权限信息错误%v", mSysRole.TenantID, id, err)
return
}
})
return nil
}
func NewInstance() InstanceHandle {
return func(session *service.Session) *Instance {
return &Instance{Platform: &controller.Platform{Session: session}}
return func(session *session.Admin) *Instance {
return &Instance{Admin: session}
}
}