package role import ( model2 "ArmedPolice/app/common/model" "ArmedPolice/app/model" "ArmedPolice/app/service" ) type Instance struct{ *service.Session } type InstanceHandle func(session *service.Session) *Instance type ( // InstanceInfo 基本信息 InstanceInfo struct { ID string `json:"id"` Name string `json:"name"` Children []*InstanceInfo `json:"children"` } // InstanceParams 参数信息 InstanceParams struct { ID, ParentID uint64 Name, Remark string Sort int } ) func (c *Instance) tree(src []*model2.SysRole, parentID uint64) []*InstanceInfo { out := make([]*InstanceInfo, 0) for _, v := range src { if v.ParentID == parentID { out = append(out, &InstanceInfo{ ID: v.GetEncodeID(), Name: v.Name, Children: c.tree(src, v.ID), }) } } return out } // List 列表信息 func (c *Instance) List() ([]*InstanceInfo, error) { mSysRole := model.NewSysRole() where := []*model2.ModelWhereOrder{ &model2.ModelWhereOrder{ Order: model2.NewOrder("sort", model2.OrderModeToDesc), }, } out := make([]*model2.SysRole, 0) if err := model2.Find(mSysRole.SysRole, &out, where...); err != nil { return nil, err } return c.tree(out, 0), nil } // Form 数据处理 func (c *Instance) Form(params *InstanceParams) error { mSysRole := model.NewSysRole() if params.ID > 0 { mSysRole.ID = params.ID return model2.Updates(mSysRole.SysRole, map[string]interface{}{ "parent_id": params.ParentID, "name": params.Name, "remark": params.Remark, "sort": params.Sort, }) } mSysRole.ParentID = params.ParentID mSysRole.Name = params.Name mSysRole.Remark = params.Remark mSysRole.Sort = params.Sort return model2.Create(mSysRole.SysRole) } // Delete 删除操作 func (c *Instance) Delete(id uint64) error { mSysRole := model.NewSysRole() mSysRole.ID = id return model2.Delete(mSysRole.SysRole) } func NewInstance() InstanceHandle { return func(session *service.Session) *Instance { return &Instance{session} } }