feat: 上传京东账单时自动软删除其他来源中的京东订单

This commit is contained in:
CHE LIANG ZHAO
2026-01-26 14:11:55 +08:00
parent 3cf39b4664
commit 9e146c5ef0
4 changed files with 74 additions and 13 deletions

View File

@@ -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,
},
})
}