优化删除

This commit is contained in:
yml2213
2026-06-19 17:26:37 +08:00
parent 076ac6098e
commit 2df935f74c
6 changed files with 193 additions and 17 deletions
@@ -231,6 +231,80 @@ func TestUpdateQrCodeGroupNameAndRenameFlag(t *testing.T) {
}
}
func TestDeleteQrCodeAllowsIssuedQrCode(t *testing.T) {
db := setupQrCodeTestDB(t)
repo := NewRepository(db, nil)
now := time.Date(2026, 6, 19, 17, 8, 0, 0, time.UTC)
conversationID := uint64(1003)
qrcode := model.ChatQrCode{
ImageURL: "/api/files/object?key=qrcode/issued.png",
Status: QrCodeStatusUsed,
ConversationID: &conversationID,
UsedAt: &now,
CreatedBy: 1,
}
if err := db.Create(&qrcode).Error; err != nil {
t.Fatalf("创建二维码失败: %v", err)
}
if err := repo.DeleteQrCode(t.Context(), qrcode.ID); err != nil {
t.Fatalf("删除已发放二维码失败: %v", err)
}
var count int64
if err := db.Model(&model.ChatQrCode{}).Where("id = ?", qrcode.ID).Count(&count).Error; err != nil {
t.Fatalf("统计二维码失败: %v", err)
}
if count != 0 {
t.Fatalf("二维码数量 = %d, want 0", count)
}
}
func TestBatchDeleteQrCodes(t *testing.T) {
db := setupQrCodeTestDB(t)
repo := NewRepository(db, nil)
now := time.Date(2026, 6, 19, 17, 8, 0, 0, time.UTC)
conversationID := uint64(1004)
qrcodes := []model.ChatQrCode{
{
ImageURL: "/api/files/object?key=qrcode/unused.png",
Status: QrCodeStatusUnused,
CreatedBy: 1,
},
{
ImageURL: "/api/files/object?key=qrcode/used.png",
Status: QrCodeStatusUsed,
ConversationID: &conversationID,
UsedAt: &now,
CreatedBy: 1,
},
{
ImageURL: "/api/files/object?key=qrcode/keep.png",
Status: QrCodeStatusDisabled,
CreatedBy: 1,
},
}
if err := db.Create(&qrcodes).Error; err != nil {
t.Fatalf("创建二维码失败: %v", err)
}
deleted, err := repo.BatchDeleteQrCodes(t.Context(), []uint64{qrcodes[0].ID, qrcodes[1].ID})
if err != nil {
t.Fatalf("批量删除二维码失败: %v", err)
}
if deleted != 2 {
t.Fatalf("删除数量 = %d, want 2", deleted)
}
var remaining []model.ChatQrCode
if err := db.Order("id ASC").Find(&remaining).Error; err != nil {
t.Fatalf("查询剩余二维码失败: %v", err)
}
if len(remaining) != 1 || remaining[0].ID != qrcodes[2].ID {
t.Fatalf("剩余二维码 = %+v, want id %d", remaining, qrcodes[2].ID)
}
}
func TestEnsureListingConversationCreatesQrCodeDeliveryTaskWhenStockEmpty(t *testing.T) {
db := setupQrCodeTestDB(t)
listing := model.RentalListing{