package module import ( "context" "errors" "gitee.com/xuyiping_admin/pkg/xerr" "github.com/xormplus/xorm" "strconv" "time" "tmr-watch/http/handle/restful" "tmr-watch/models" operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation" ) // SearchTrmGearByTmrId 查询撒料电机档位数据 func SearchTrmGearByTmrId(ctx context.Context, tmrId int64) ([]*models.TmrGear, error) { res := make([]*models.TmrGear, 0) if err := restful.Engine.NewSession().Table(new(models.TmrGear).TableName()).Where("is_delete = ?", operationPb.IsShow_OK). Where("tmr_id = ?", tmrId).Find(&res); err != nil { if !errors.Is(err, xorm.ErrNotExist) { return nil, err } } return res, nil } func CreateOrUpdateTmrGear(ctx context.Context, req *operationPb.UpdateOrCreateTmrGearRequest) error { tmrId, _ := strconv.ParseInt(req.TmrId, 10, 64) tmrGearList, err := SearchTrmGearByTmrId(ctx, tmrId) if err != nil { return xerr.WithStack(err) } tx := restful.Engine.NewSession() defer tx.Close() if err = tx.Begin(); err != nil { return xerr.WithStack(err) } if len(tmrGearList) >= 1 { if _, err = tx.Table(new(models.TmrGear).TableName()).Where("tmr_id = ?", req.TmrId).Update(map[string]interface{}{ "is_delete": operationPb.IsShow_NO, "updated_at": time.Now().Unix(), }); err != nil { tx.Rollback() return xerr.WithStack(err) } } newTmrGearList := models.NewTmrGearList(tmrId, req) if _, err = tx.Table(new(models.TmrGear).TableName()).Insert(newTmrGearList); err != nil { tx.Rollback() return xerr.WithStack(err) } return tx.Commit() }