package menu import ( "SciencesServer/app/api/admin/model" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "errors" "time" ) // Instance 菜单管理 type Instance struct{ *session.Admin } type InstanceHandle func(session *session.Admin) *Instance type ( // InstanceParams 菜单参数 InstanceParams struct { ID, ParentID uint64 Kind, Auth int Name, Link, Component, Icon string Sort, IsCache, IsHidden, Status int Remark string } ) // Index 列表信息 func (c *Instance) Index() ([]*Tree, error) { // 总管理: // 租户管理: mSysMenu := model.NewSysMenu() if c.IsAdmin && c.TenantID <= 0 { return menuForSystem(mSysMenu) } return menuForTenant(mSysMenu, c.TenantID) } // Form 数据操作 func (c *Instance) Form(params *InstanceParams) error { if params.ID <= 0 { return model2.Create(&model2.SysMenu{ SysMenuBasic: model2.SysMenuBasic{ ParentID: params.ParentID, Name: params.Name, Kind: model2.SysMenuKind(params.Kind), Link: params.Link, Component: params.Component, IsCache: model2.SysMenuCacheStatus(params.IsCache), IsHidden: model2.SysMenuHiddenStatus(params.IsHidden), Icon: params.Icon, }, Auth: model2.SysMenuAuth(params.Auth), Sort: params.Sort, Status: model2.SysMenuStatus(params.Status), Remark: params.Remark, }) } out := model.NewSysMenu() out.ID = params.ID isExist, err := model2.FirstWhere(out.SysMenu) if err != nil { return err } else if !isExist { return errors.New("操作错误,菜单信息不存在") } out.ParentID = params.ParentID out.Name = params.Name out.Kind = model2.SysMenuKind(params.Kind) out.Link = params.Link out.Component = params.Component out.Icon = params.Icon out.Auth = model2.SysMenuAuth(params.Auth) out.IsCache = model2.SysMenuCacheStatus(params.IsCache) out.IsHidden = model2.SysMenuHiddenStatus(params.IsHidden) out.Sort = params.Sort out.Status = model2.SysMenuStatus(params.Status) out.Remark = params.Remark if err = model2.Save(out); err != nil { return err } return nil } // Status 状态操作 func (c *Instance) Status(id uint64, status int) error { mSysMenu := model.NewSysMenu() mSysMenu.ID = id if err := model2.Updates(mSysMenu.SysMenu, map[string]interface{}{ "status": status, "updated_at": time.Now(), }); err != nil { return err } return nil } // Delete 删除操作 func (c *Instance) Delete(id uint64) error { mSysMenu := model.NewSysMenu() mSysMenu.ID = id if err := model2.Delete(mSysMenu.SysMenu); err != nil { return err } return nil } func NewInstance() InstanceHandle { return func(session *session.Admin) *Instance { return &Instance{Admin: session} } }