fix:修复重复创建的问题

This commit is contained in:
cjy 2026-02-02 10:44:07 +08:00
parent 9750b0b505
commit 13b077c172

View File

@ -36,8 +36,8 @@ func CreateContract(contract *model.Contract) error {
// 使用事务创建合同及其子表 // 使用事务创建合同及其子表
err := app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error { err := app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error {
// 创建主表 // 创建主表Omit 跳过关联,避免 GORM 自动创建子表导致与后面显式 Create 重复插入)
if err := tx.Model(&model.Contract{}).Create(contract).Error; err != nil { if err := tx.Model(&model.Contract{}).Omit("PaymentCycles", "DevelopmentCycles").Create(contract).Error; err != nil {
return commonErr.ReturnError(err, "创建合同失败", "创建合同失败: ") return commonErr.ReturnError(err, "创建合同失败", "创建合同失败: ")
} }
@ -95,9 +95,10 @@ func UpdateContract(contractUUID string, contract *model.Contract) error {
// 使用事务更新合同及其子表 // 使用事务更新合同及其子表
err := app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error { err := app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error {
// 更新主表 // 更新主表Omit 跳过关联,子表由下面先删后建单独处理)
if err := tx.Model(&model.Contract{}). if err := tx.Model(&model.Contract{}).
Where("contract_uuid = ?", contractUUID). Where("contract_uuid = ?", contractUUID).
Omit("PaymentCycles", "DevelopmentCycles").
Updates(contract).Error; err != nil { Updates(contract).Error; err != nil {
return commonErr.ReturnError(err, "更新合同失败", "更新合同失败: ") return commonErr.ReturnError(err, "更新合同失败", "更新合同失败: ")
} }