package repositories import ( "errors" "fmt" "xorm.io/xorm" "xps/datamodels" "xps/viewmodels" ) type BizObjectOAMMappingRepo struct { engine *xorm.Engine } func NewBizObjectOAMMappingRepo(engine *xorm.Engine) *BizObjectOAMMappingRepo { return &BizObjectOAMMappingRepo{ engine: engine, } } func (d *BizObjectOAMMappingRepo) GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMMappingInfo, error) { sqlSelect := ` SELECT A.* , B.object_title, B.object_code, C.oam_title, C.oam_code, E.model_title AS mapping_model_title, F.object_title AS mapping_object_title, F.object_code AS mapping_object_code ` sqlFrom := ` FROM biz_object_oam_mapping AS A LEFT JOIN biz_object AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id) LEFT JOIN biz_object_oam AS C ON (A.biz_id = C.biz_id AND A.object_id = C.object_id AND A.oam_id = C.oam_id) LEFT JOIN ds_model AS E ON (A.mapping_model_id = E.model_id) LEFT JOIN ds_object AS F ON (A.mapping_model_id = F.model_id AND A.mapping_object_id = F.object_id)` sqlWhere := ` WHERE 1=1 ` if bizId, ok := m["bizId"]; ok { sqlWhere += fmt.Sprintf(" AND A.biz_id = %d ", bizId) } if objectId, ok := m["objectId"]; ok { sqlWhere += fmt.Sprintf(" AND A.object_id = %d ", objectId) } if oamId, ok := m["oamId"]; ok { sqlWhere += fmt.Sprintf(" AND A.oam_id = %d ", oamId) } sqlOrderBy := " ORDER BY A.sort_no ASC " datalist := make([]viewmodels.BizObjectOAMMappingInfo, 0) err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist) if err != nil { return nil, err } else { return datalist, nil } } func (d *BizObjectOAMMappingRepo) GetById(bizId, objectId, oamId, orId int64) (*viewmodels.BizObjectOAMMappingInfo, error) { sqlSelect := ` SELECT A.* , B.object_title, B.object_code, C.oam_title, C.oam_code, E.model_title AS mapping_model_title, F.object_title AS mapping_object_title, F.object_code AS mapping_object_code ` sqlFrom := ` FROM biz_object_oam_mapping AS A LEFT JOIN biz_object AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id) LEFT JOIN biz_object_oam AS C ON (A.biz_id = C.biz_id AND A.object_id = C.object_id AND A.oam_id = C.oam_id) LEFT JOIN ds_model AS E ON (A.mapping_model_id = E.model_id) LEFT JOIN ds_object AS F ON (A.mapping_model_id = F.model_id AND A.mapping_object_id = F.object_id)` sqlWhere := ` WHERE 1=1 ` sqlWhere += fmt.Sprintf(" AND A.biz_id = %d ", bizId) sqlWhere += fmt.Sprintf(" AND A.object_id = %d ", objectId) sqlWhere += fmt.Sprintf(" AND A.oam_id = %d ", oamId) sqlWhere += fmt.Sprintf(" AND A.or_id = %d ", orId) data := &viewmodels.BizObjectOAMMappingInfo{} has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Get(data) if !has || err != nil { return nil, err } else { return data, nil } } func (d *BizObjectOAMMappingRepo) GetListById(bizId, objectId, oamId int64) ([]viewmodels.BizObjectOAMMappingInfo, error) { sqlSelect := ` SELECT A.* , B.object_title, B.object_code, C.oam_title, C.oam_code, E.model_title AS mapping_model_title, F.object_title AS mapping_object_title, F.object_code AS mapping_object_code ` sqlFrom := ` FROM biz_object_oam_mapping AS A LEFT JOIN biz_object AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id) LEFT JOIN biz_object_oam AS C ON (A.biz_id = C.biz_id AND A.object_id = C.object_id AND A.oam_id = C.oam_id) LEFT JOIN ds_model AS E ON (A.mapping_model_id = E.model_id) LEFT JOIN ds_object AS F ON (A.mapping_model_id = F.model_id AND A.mapping_object_id = F.object_id)` sqlWhere := ` WHERE 1=1 ` sqlWhere += fmt.Sprintf(" AND A.biz_id = %d ", bizId) sqlWhere += fmt.Sprintf(" AND A.object_id = %d ", objectId) sqlWhere += fmt.Sprintf(" AND A.oam_id = %d ", oamId) sqlOrderBy := " ORDER BY A.sort_no " dataList := make([]viewmodels.BizObjectOAMMappingInfo, 0) err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&dataList) if err != nil { return nil, err } else { return dataList, nil } } func (d *BizObjectOAMMappingRepo) Create(data *datamodels.BizObjectOAMMapping) error { _, err := d.engine.Insert(data) return err } func (d *BizObjectOAMMappingRepo) Update(data *datamodels.BizObjectOAMMapping) error { bizId := data.BizId objectId := data.ObjectId oamId := data.OamId mappingId := data.MappingId _, err := d.engine. Where("biz_id = ?", bizId). Where("object_id = ?", objectId). Where("oam_id = ?", oamId). Where("mapping_id = ?", mappingId). AllCols(). Update(data) return err } func (d *BizObjectOAMMappingRepo) Delete(m map[string]interface{}) error { bizId, ok1 := m["bizId"] objectId, ok2 := m["objectId"] oamId, ok3 := m["oamId"] mappingId, ok4 := m["mappingId"] if !ok1 || !ok2 || !ok3 || !ok4 { return errors.New("数据不完整") } data := &datamodels.BizObjectOAMMapping{} _, err := d.engine. Where("biz_id = ?", bizId). Where("object_id = ?", objectId). Where("oam_id = ?", oamId). Where("mapping_id = ?", mappingId). Delete(data) return err } func (d *BizObjectOAMMappingRepo) DeleteByObjectId(bizId, objectId, oamId int64) error { data := &datamodels.BizObjectOAMMapping{} _, err := d.engine. Where("biz_id = ?", bizId). Where("object_id = ?", objectId). Where("oam_id = ?", oamId). Delete(data) return err }