package service import ( "xps/datamodels" "xps/datasource" "xps/repositories" "xps/viewmodels" ) type BizService interface { GetList(m map[string]interface{}) ([]viewmodels.BizInfo, error) GetTreeData() ([]viewmodels.BizDataInfo, error) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) GetById(bizId int64) (*viewmodels.BizInfo, error) Create(d *datamodels.Biz) error Update(d *datamodels.Biz) error Delete(m map[string]interface{}) error } type bizService struct { bizRepo *repositories.BizRepo bizObjectRepo *repositories.BizObjectRepo } func NewBizService() BizService { return &bizService{ bizRepo: repositories.NewBizRepo(datasource.InstanceMaster()), bizObjectRepo: repositories.NewBizObjectRepo(datasource.InstanceMaster()), } } func (s *bizService) GetTreeData() ([]viewmodels.BizDataInfo, error) { bizArr, err1 := s.bizRepo.GetAll() if err1 != nil { return nil, err1 } bizObjectArr, err2 := s.bizObjectRepo.GetAll() if err2 != nil { return nil, err2 } bizDataArr := make([]viewmodels.BizDataInfo, 0) for _, biz := range bizArr { bizData := viewmodels.BizDataInfo{} bizId := biz.BizId objects := make([]viewmodels.BizObjectInfo, 0) for _, object := range bizObjectArr { if object.BizId == bizId { objects = append(objects, object) } } bizData.BizId = bizId bizData.BizTitle = biz.BizTitle bizData.BizDesc = biz.BizDesc bizData.Objects = objects bizDataArr = append(bizDataArr, bizData) } return bizDataArr, nil } func (s *bizService) GetList(m map[string]interface{}) ([]viewmodels.BizInfo, error) { return s.bizRepo.GetList(m) } func (s *bizService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) { return s.bizRepo.GetPage(m) } func (s *bizService) GetById(bizId int64) (*viewmodels.BizInfo, error) { return s.bizRepo.GetById(bizId) } func (s *bizService) Create(m *datamodels.Biz) error { m.BizId = NewID() return s.bizRepo.Create(m) } func (s *bizService) Update(m *datamodels.Biz) error { return s.bizRepo.Update(m) } func (s *bizService) Delete(m map[string]interface{}) error { return s.bizRepo.Delete(m) }