package service import ( "xps/datamodel" "xps/datasource" "xps/repositories" "xps/viewmodel" ) type ModelService interface { GetList(m map[string]interface{}) ([]viewmodel.ModelInfo, error) GetTreeData() ([]viewmodel.ModelTreeInfo, error) GetPage(m map[string]interface{}) (*viewmodel.PageResult, error) GetById(modelId int64) (*viewmodel.ModelInfo, error) Create(d *datamodel.Model) error Update(d *datamodel.Model) error Delete(m map[string]interface{}) error } type modelService struct { modelRepo *repositories.ModelRepo objectRepo *repositories.ModelObjectRepo } func NewModelService() ModelService { return &modelService{ modelRepo: repositories.NewModelRepo(datasource.InstanceMaster()), objectRepo: repositories.NewModelObjectRepo(datasource.InstanceMaster()), } } func (s *modelService) GetList(m map[string]interface{}) ([]viewmodel.ModelInfo, error) { return s.modelRepo.GetList(m) } func (s *modelService) GetTreeData() ([]viewmodel.ModelTreeInfo, error) { modelArr, err1 := s.modelRepo.GetAll() if err1 != nil { return nil, err1 } objectArr, err2 := s.objectRepo.GetAll() if err2 != nil { return nil, err2 } modelDataArr := make([]viewmodel.ModelTreeInfo, 0) for _, model := range modelArr { modelTreeData := viewmodel.ModelTreeInfo{} modelId := model.ModelId children := make([]viewmodel.ModelTreeNodeInfo, 0) for _, object := range objectArr { if object.ModelId == modelId { treeNode := viewmodel.ModelTreeNodeInfo{ Label: object.ObjectTitle, Value: object.ObjectId, IsLeaf: 1, ObjectId: object.ObjectId, ObjectType: object.ObjectType, ObjectTitle: object.ObjectTitle, ObjectCode: object.ObjectCode, IsFixed: object.IsFixed, Comment: object.Comment, } children = append(children, treeNode) } } modelTreeData.Label = model.ModelTitle modelTreeData.Value = model.ModelId modelTreeData.IsLeaf = 0 modelTreeData.ModelId = modelId modelTreeData.ModelTitle = model.ModelTitle modelTreeData.ModelDesc = model.ModelDesc modelTreeData.Children = children modelDataArr = append(modelDataArr, modelTreeData) } return modelDataArr, nil } func (s *modelService) GetPage(m map[string]interface{}) (*viewmodel.PageResult, error) { return s.modelRepo.GetPage(m) } func (s *modelService) GetById(modelId int64) (*viewmodel.ModelInfo, error) { return s.modelRepo.GetById(modelId) } func (s *modelService) Create(m *datamodel.Model) error { m.ModelId = NewID() return s.modelRepo.Create(m) } func (s *modelService) Update(m *datamodel.Model) error { return s.modelRepo.Update(m) } func (s *modelService) Delete(m map[string]interface{}) error { return s.modelRepo.Delete(m) }