package service import ( "electricity_bill_calc/global" "electricity_bill_calc/logger" "electricity_bill_calc/repository" "fmt" "github.com/doug-martin/goqu/v9" "go.uber.org/zap" ) type _GMService struct { l *zap.Logger gm goqu.DialectWrapper } var GMService = _GMService{ logger.Named("Service", "GM"), goqu.Dialect("postgres"), } func (gm _GMService) DeleteTenements(pid string, tenements []string) error { var err error ctx, cancel := global.TimeoutContext() defer cancel() tx, err := global.DB.Begin(ctx) if err != nil { gm.l.Error("未能启动数据库事务", zap.Error(err)) return fmt.Errorf("未能启动数据库事务,%w", err) } err = repository.GMRepository.DeleteMeterBinding(ctx, tx, pid, tenements) if err != nil { tx.Rollback(ctx) return err } err = repository.GMRepository.DeleteTenements(ctx, tx, pid, tenements) if err != nil { tx.Rollback(ctx) return err } tx.Commit(ctx) return nil }