package menu import ( "SciencesServer/app/api/controller" "SciencesServer/app/api/model" model2 "SciencesServer/app/common/model" "SciencesServer/app/service" "errors" "time" ) // Instance 菜单管理 type Instance struct{ *controller.Platform } type InstanceHandle func(session *service.Session) *Instance type ( // InstanceParams 菜单参数 InstanceParams struct { ID, ParentID uint64 Kind, Auth int Name, Link, Component, Icon string Sort, Status int Remark string } ) // List 列表信息 func (c *Instance) List() ([]*Tree, error) { mSysMenu := model.NewSysMenu() auth := []model2.SysMenuAuth{model2.SysMenuAuthForOrdinary} if c.IsAdmin { auth = append(auth, model2.SysMenuAuthForSystem) } return menuForSystem(mSysMenu, model2.NewWhereIn("auth", auth)) } // 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, Icon: params.Icon, }, Auth: model2.SysMenuAuth(params.Auth), Sort: params.Sort, Status: model2.SysMenuStatusForNormal, 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.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 *service.Session) *Instance { return &Instance{Platform: &controller.Platform{Session: session}} } }