Version: 0.2.5.dev.260211

feat: 🗑️ 新增删除任务类接口并实现级联删除

- 通过 task_class 与 task_item 两张表建立级联关系 🔗
- 删除 task_class 时自动删除关联的 task_item
- 保证数据一致性,避免产生孤立数据 
This commit is contained in:
LoveLosita
2026-02-11 18:44:13 +08:00
parent a2da9a2aa4
commit e5a4114202
5 changed files with 70 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ import (
"github.com/LoveLosita/smartflow/backend/model"
"github.com/LoveLosita/smartflow/backend/respond"
"github.com/go-redis/redis/v8"
"gorm.io/gorm"
)
type TaskClassService struct {
@@ -301,3 +302,28 @@ func (sv *TaskClassService) DeleteTaskClassItem(ctx context.Context, userID int,
}
return nil
}
func (sv *TaskClassService) DeleteTaskClass(ctx context.Context, userID int, taskClassID int) error {
//1.先验证任务类归属
ownerID, err := sv.taskClassRepo.GetTaskClassUserIDByID(ctx, taskClassID) //通过任务类ID获取所属用户ID
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return respond.WrongTaskClassID
}
return err
}
if ownerID != userID {
return respond.TaskClassNotBelongToUser
}
//2.删除任务类(事务)
err = sv.taskClassRepo.DeleteTaskClassByID(ctx, taskClassID)
if err != nil {
return err
}
//3.事务提交成功后,清除相关缓存(如果有的话),以保证数据一致性
err = sv.cacheRepo.DeleteTaskClassList(ctx, userID)
if err != nil {
log.Printf("Failed to delete task class list cache for userID %d: %v", userID, err)
}
return nil
}