diff --git a/controller/report.go b/controller/report.go index 7cb4f9c..eab0663 100644 --- a/controller/report.go +++ b/controller/report.go @@ -1,7 +1,6 @@ package controller import ( - "electricity_bill_calc/model" "electricity_bill_calc/response" "electricity_bill_calc/security" "electricity_bill_calc/service" @@ -64,8 +63,7 @@ func initializeNewReport(c *gin.Context) { result.NotAccept("只能初始化已发布报表下一个月份的新报表。") return } - newReport := model.Report{ParkId: requestParkId, Period: reportPeriod} - err = service.ReportService.InitializeNewReport(newReport) + err = service.ReportService.InitializeNewReport(requestParkId, reportPeriod) if err != nil { result.Error(http.StatusInternalServerError, err.Error()) return diff --git a/service/report.go b/service/report.go index ba829b6..1dc0ef9 100644 --- a/service/report.go +++ b/service/report.go @@ -104,13 +104,30 @@ func (_ReportService) IsNewPeriodValid(uid string, period time.Time) (bool, erro } } -func (_ReportService) InitializeNewReport(report model.Report) (err error) { - report.Id = uuid.New().String() - report.StepState = model.NewSteps() - report.Published = false - report.Withdraw = model.REPORT_NOT_WITHDRAW - _, err = global.DBConn.Insert(report) +func (_ReportService) InitializeNewReport(parkId string, period time.Time) (err error) { + newReport := model.Report{ + Id: uuid.New().String(), + ParkId: parkId, + StepState: model.NewSteps(), + Published: false, + Withdraw: model.REPORT_NOT_WITHDRAW, + } + newReportSummary := model.ReportSummary{ + ReportId: newReport.Id, + } + tx := global.DBConn.NewSession() + if err = tx.Begin(); err != nil { + return + } + defer tx.Close() + _, err = tx.Insert(newReport, newReportSummary) if err != nil { + tx.Rollback() + return + } + err = tx.Commit() + if err != nil { + tx.Rollback() return } return nil