feat: 上传京东账单时自动软删除其他来源中的京东订单
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
|
||||
"billai-server/config"
|
||||
"billai-server/model"
|
||||
"billai-server/repository"
|
||||
"billai-server/service"
|
||||
)
|
||||
|
||||
@@ -254,22 +255,41 @@ func Upload(c *gin.Context) {
|
||||
}
|
||||
service.CleanupExtractedFiles(extractedFiles)
|
||||
|
||||
// 13. 返回成功响应
|
||||
// 13. 如果是京东账单,软删除其他来源中包含"京东-订单编号"的记录
|
||||
var jdRelatedDeleted int64
|
||||
if billType == "jd" {
|
||||
repo := repository.GetRepository()
|
||||
if repo != nil {
|
||||
deleted, err := repo.SoftDeleteJDRelatedBills()
|
||||
if err != nil {
|
||||
fmt.Printf("⚠️ 软删除京东关联记录失败: %v\n", err)
|
||||
} else if deleted > 0 {
|
||||
jdRelatedDeleted = deleted
|
||||
fmt.Printf("🗑️ 已软删除 %d 条其他来源中的京东关联记录\n", deleted)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 14. 返回成功响应
|
||||
message := fmt.Sprintf("处理成功,新增 %d 条记录", cleanedCount)
|
||||
if dedupResult.DuplicateCount > 0 {
|
||||
message = fmt.Sprintf("处理成功,新增 %d 条,跳过 %d 条重复记录", cleanedCount, dedupResult.DuplicateCount)
|
||||
}
|
||||
if jdRelatedDeleted > 0 {
|
||||
message = fmt.Sprintf("%s,标记删除 %d 条重复的京东订单", message, jdRelatedDeleted)
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, model.UploadResponse{
|
||||
Result: true,
|
||||
Message: message,
|
||||
Data: &model.UploadData{
|
||||
BillType: billType,
|
||||
FileURL: fmt.Sprintf("/download/%s", outputFileName),
|
||||
FileName: outputFileName,
|
||||
RawCount: rawCount,
|
||||
CleanedCount: cleanedCount,
|
||||
DuplicateCount: dedupResult.DuplicateCount,
|
||||
BillType: billType,
|
||||
FileURL: fmt.Sprintf("/download/%s", outputFileName),
|
||||
FileName: outputFileName,
|
||||
RawCount: rawCount,
|
||||
CleanedCount: cleanedCount,
|
||||
DuplicateCount: dedupResult.DuplicateCount,
|
||||
JDRelatedDeleted: jdRelatedDeleted,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user