52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"electricity_bill_calc/global"
|
|
"electricity_bill_calc/logger"
|
|
"electricity_bill_calc/repository"
|
|
"electricity_bill_calc/vo"
|
|
"github.com/doug-martin/goqu/v9"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type _SynchronizeService struct {
|
|
log *zap.Logger
|
|
ds goqu.DialectWrapper
|
|
}
|
|
|
|
var SynchronizeService = _SynchronizeService{
|
|
log: logger.Named("Service", "Synchronize"),
|
|
ds: goqu.Dialect("postgres"),
|
|
}
|
|
|
|
func (ss _SynchronizeService) CreateSynchronizeConfiguration(userId string, form *vo.SynchronizeConfigurationCreateForm) error {
|
|
ss.log.Info("创建一条新的同步配置", zap.String("user id", userId))
|
|
ctx, cancel := global.TimeoutContext()
|
|
defer cancel()
|
|
tx, err := global.DB.Begin(ctx)
|
|
if err != nil {
|
|
ss.log.Error("无法启动数据库事务。", zap.Error(err))
|
|
return err
|
|
}
|
|
ok, err := repository.SynchronizeRepository.CreateSynchronizeConfiguration(tx, ctx, userId, form)
|
|
if err != nil {
|
|
ss.log.Error("无法创建新的同步配置。", zap.Error(err))
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
if !ok {
|
|
ss.log.Error("数据库未能记录新的同步配置。")
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
|
|
err = tx.Commit(ctx)
|
|
if err != nil {
|
|
ss.log.Error("未能成功提交数据库事务。", zap.Error(err))
|
|
tx.Rollback(ctx)
|
|
return err
|
|
}
|
|
return nil
|
|
|
|
}
|