package repositories import ( "errors" "fmt" "xorm.io/xorm" "xps/datamodel" "xps/viewmodel" ) type BizObjectOAMParamsRepo struct { engine *xorm.Engine } func NewBizObjectOAMParamsRepo(engine *xorm.Engine) *BizObjectOAMParamsRepo { return &BizObjectOAMParamsRepo{ engine: engine, } } func (d *BizObjectOAMParamsRepo) GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMParamsInfo, error) { sqlSelect := ` SELECT A.* , B.object_title, B.object_code, C.oam_title, C.oam_code ` sqlFrom := ` FROM biz_object_oam_params 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)` sqlWhere := ` WHERE A.deleted_flag = 0 ` 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.param_id ASC " datalist := make([]viewmodel.BizObjectOAMParamsInfo, 0) err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist) if err != nil { return nil, err } else { return datalist, nil } } func (d *BizObjectOAMParamsRepo) GetById(bizId, objectId, oamId, paramId int64) (*viewmodel.BizObjectOAMParamsInfo, error) { sqlSelect := ` SELECT A.* , B.object_title, B.object_code, C.oam_title, C.oam_code ` sqlFrom := ` FROM biz_object_oam_params 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)` sqlWhere := ` WHERE A.deleted_flag = 0 ` 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.param_id = %d ", paramId) data := &viewmodel.BizObjectOAMParamsInfo{} has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Get(data) if !has || err != nil { return nil, err } else { return data, nil } } func (d *BizObjectOAMParamsRepo) GetListById(bizId, objectId, oamId int64) ([]viewmodel.BizObjectOAMParamsInfo, error) { sqlSelect := ` SELECT A.* , B.object_title, B.object_code, C.oam_title, C.oam_code ` sqlFrom := ` FROM biz_object_oam_params 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)` sqlWhere := ` WHERE A.deleted_flag = 0 ` 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([]viewmodel.BizObjectOAMParamsInfo, 0) err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&dataList) if err != nil { return nil, err } else { return dataList, nil } } func (d *BizObjectOAMParamsRepo) Create(data *datamodel.BizObjectOAMParams) error { _, err := d.engine.Insert(data) return err } func (d *BizObjectOAMParamsRepo) Update(data *datamodel.BizObjectOAMParams) error { bizId := data.BizId objectId := data.ObjectId oamId := data.OamId paramId := data.ParamId _, err := d.engine. Where("biz_id = ?", bizId). Where("object_id = ?", objectId). Where("oam_id = ?", oamId). Where("param_id = ?", paramId). AllCols(). Update(data) return err } func (d *BizObjectOAMParamsRepo) Delete(m map[string]interface{}) error { bizId, ok1 := m["bizId"] objectId, ok2 := m["objectId"] oamId, ok3 := m["oamId"] paramId, ok4 := m["paramId"] if !ok1 || !ok2 || !ok3 || !ok4 { return errors.New("数据不完整") } data := &datamodel.BizObjectOAMParams{} _, err := d.engine. Where("biz_id = ?", bizId). Where("object_id = ?", objectId). Where("oam_id = ?", oamId). Where("param_id = ?", paramId). Delete(data) return err } func (d *BizObjectOAMParamsRepo) DeleteByObjectId(bizId, objectId, oamId int64) error { data := &datamodel.BizObjectOAMParams{} _, err := d.engine. Where("biz_id = ?", bizId). Where("object_id = ?", objectId). Where("oam_id = ?", oamId). Delete(data) return err }