package repository import ( "context" "electricity_bill_calc/logger" "fmt" "github.com/doug-martin/goqu/v9" "github.com/jackc/pgx/v5" "go.uber.org/zap" ) type _GMRepository struct { log *zap.Logger ds goqu.DialectWrapper } var GMRepository = &_GMRepository{ log: logger.Named("Repository", "GM"), ds: goqu.Dialect("postgres"), } func (gm _GMRepository) DeleteMeterBinding(ctx context.Context, tx pgx.Tx, pid string, tenements []string, meterCodes ...[]string) error { DeleteQuery := gm.ds.From(goqu.T("tenement_meter")). Where(goqu.I("park_id").Eq(pid)). Delete() if len(tenements) > 0 { DeleteQuery = DeleteQuery. Where(goqu.I("tenement_id").In(tenements)) } if len(meterCodes) > 0 { DeleteQuery = DeleteQuery. Where(goqu.I("meter_id").In(meterCodes)) } DeleteQuerySql, DeleteQueryArgs, _ := DeleteQuery.ToSQL() _, err := tx.Exec(ctx, DeleteQuerySql, DeleteQueryArgs...) if err != nil { gm.log.Error("数据库在删除tenement_meter表数据中出错", zap.Error(err)) tx.Rollback(ctx) return err } return nil } func (gm _GMRepository) DeleteTenements(ctx context.Context, tx pgx.Tx, pid string, tenements []string) error { DeleteTenements := gm.ds. From("tenement"). Where(goqu.I("park_id").Eq(pid)). Delete() fmt.Println(len(tenements)) if len(tenements) > 0 { DeleteTenements = DeleteTenements. Where(goqu.I("id").In(tenements)) } DeleteTenementsSql, DeleteTenementsArgs, _ := DeleteTenements.ToSQL() _, err := tx.Exec(ctx, DeleteTenementsSql, DeleteTenementsArgs...) if err != nil { tx.Rollback(ctx) gm.log.Error("删除商户信息出错",zap.Error(err)) return err } return nil }