package service import ( "time" "xps/cmd/constant" "xps/cmd/datasource" apiDataModel "xps/pkg/api/datamodel" apiRepository "xps/pkg/api/repository" "xps/pkg/biz/datamodel" "xps/pkg/biz/repository" "xps/pkg/biz/viewmodel" ) type BizObjectOAMService interface { GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMInfo, error) GetListById(bizId, objectId int64) ([]viewmodel.BizObjectOAMInfo, error) GetById(bizId, objectId, oamId int64) (*viewmodel.BizObjectOAMInfo, error) Create(d *datamodel.BizObjectOAM) error Update(d *datamodel.BizObjectOAM) error Delete(m map[string]interface{}) error } type bizObjectOAMService struct { bizObjectOAMRepo *repository.BizObjectOAMRepo apiRepo *apiRepository.ApiRepo } func NewBizObjectOAMService() BizObjectOAMService { return &bizObjectOAMService{ bizObjectOAMRepo: repository.NewBizObjectOAMRepo(datasource.InstanceMaster()), apiRepo: apiRepository.NewApiRepo(datasource.InstanceMaster()), } } func (s *bizObjectOAMService) GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMInfo, error) { return s.bizObjectOAMRepo.GetList(m) } func (s *bizObjectOAMService) GetListById(bizId, objectId int64) ([]viewmodel.BizObjectOAMInfo, error) { return s.bizObjectOAMRepo.GetListById(bizId, objectId) } func (s *bizObjectOAMService) GetById(bizId, objectId, oamId int64) (*viewmodel.BizObjectOAMInfo, error) { return s.bizObjectOAMRepo.GetById(bizId, objectId, oamId) } func (s *bizObjectOAMService) Create(oam *datamodel.BizObjectOAM) error { oamId := NewID() oam.OamId = oamId // 1.新增Object OAM err1 := s.bizObjectOAMRepo.Create(oam) if err1 != nil { return err1 } // 2.生成API apiId := oamId apiMethod := s.GetApiMethodByOAMType(oam.OamType) api := &apiDataModel.Api{ ApiId: apiId, ApiMethod: apiMethod, ApiType: apiMethod, ApiTitle: oam.OamTitle, ApiDesc: "", ApiParams: "", ApiCode: oam.OamCode, BizId: oam.BizId, ObjectId: oam.ObjectId, OamId: oamId, Status: 1, CreatedAt: time.Now(), CreatedBy: oam.CreatedBy, } err3 := s.apiRepo.Create(api) if err3 != nil { return err3 } return nil } func (s *bizObjectOAMService) Update(oam *datamodel.BizObjectOAM) error { // 1. Update Object OAM err := s.bizObjectOAMRepo.Update(oam) if err != nil { return err } bizId := oam.BizId objectId := oam.ObjectId oamId := oam.OamId // 2.更新API apiId := oam.OamId apiMethod := s.GetApiMethodByOAMType(oam.OamType) api := &apiDataModel.Api{ ApiId: apiId, ApiMethod: apiMethod, ApiType: apiMethod, ApiTitle: oam.OamTitle, ApiDesc: "", ApiParams: "", ApiCode: oam.OamCode, BizId: bizId, ObjectId: objectId, OamId: oamId, Status: 1, UpdatedAt: time.Now(), UpdatedBy: oam.UpdatedBy, } err3 := s.apiRepo.Update(api) if err3 != nil { return err3 } return nil } func (s *bizObjectOAMService) Delete(m map[string]interface{}) error { // 1.删除Object OAM err1 := s.bizObjectOAMRepo.Delete(m) if err1 != nil { return err1 } // 2.删除API m["apiId"] = m["oamId"] err2 := s.apiRepo.Delete(m) if err2 != nil { return err2 } return nil } func (s *bizObjectOAMService) GetApiMethodByOAMType(oamType int64) int64 { if oamType == constant.OAM_GET_ONE || oamType == constant.OAM_GET_LIST || oamType == constant.OAM_GET_PAGE { return constant.API_METHOD_GET } if oamType == constant.OAM_CREATE { return constant.API_METHOD_POST } if oamType == constant.OAM_UPDATE { return constant.API_METHOD_PUT } if oamType == constant.OAM_PATCH { return constant.API_METHOD_PATCH } if oamType == constant.OAM_DELETE { return constant.API_METHOD_DELETE } return constant.API_METHOD_GET }