package tenant import ( model2 "ArmedPolice/app/common/model" "ArmedPolice/app/controller/basic" "ArmedPolice/app/model" "ArmedPolice/app/service" "errors" ) type Instance struct{ *service.Session } type InstanceHandle func(session *service.Session) *Instance type ( // InstanceInfo 租户信息 InstanceInfo struct { ID string `json:"id"` ParentID string `json:"parent_id"` Name string `json:"name"` *model2.Area *model2.AreaInfo Remark string `json:"remark"` Children []*InstanceInfo `json:"children"` } // InstanceParams 参数信息 InstanceParams struct { ID, ParentID uint64 Name, Remark string basic.CommonArea } ) func (c *Instance) tree(iModel model2.IModel, src []*model2.SysTenant, parentID uint64) []*InstanceInfo { out := make([]*InstanceInfo, 0) for _, v := range src { if v.ParentID == parentID { iModel.SetID(v.ParentID) out = append(out, &InstanceInfo{ ID: v.GetEncodeID(), ParentID: iModel.GetEncodeID(), Name: v.Name, Area: &v.Area, AreaInfo: v.Area.Format(), Remark: v.Remark, Children: c.tree(iModel, src, v.ID), }) } } return out } // List 列表信息 func (c *Instance) List() ([]*InstanceInfo, error) { mSysTenant := model.NewSysTenant() out := make([]*model2.SysTenant, 0) if err := model2.Find(mSysTenant.SysTenant, &out); err != nil { return nil, err } return c.tree(mSysTenant.SysTenant, out, 0), nil } // Form 数据操作 func (c *Instance) Form(params *InstanceParams) error { mSysTenant := model.NewSysTenant() if params.ID > 0 { mSysTenant.ID = params.ID isExist, err := model2.First(mSysTenant.SysTenant) if err != nil { return err } else if !isExist { return errors.New("操作错误,数据不存在") } } mSysTenant.ParentID = params.ParentID mSysTenant.Name = params.Name mSysTenant.Area = model2.Area{ Province: params.Province, City: params.City, District: params.District, Address: params.Address, } mSysTenant.Remark = params.Remark if mSysTenant.ID > 0 { return model2.Updates(mSysTenant.SysTenant, mSysTenant.SysTenant) } return model2.Create(mSysTenant.SysTenant) } // Delete 删除操作 func (c *Instance) Delete(id uint64) error { mSysTenant := model.NewSysTenant() mSysTenant.ID = id return model2.Delete(mSysTenant.SysTenant) } func NewInstance() InstanceHandle { return func(session *service.Session) *Instance { return &Instance{session} } }