修复项目无法删除问题

This commit is contained in:
2026-08-13 20:42:09 +08:00
parent cb88a69012
commit a407e69ba7
18 changed files with 623 additions and 63 deletions

View File

@@ -38,7 +38,7 @@ func (s *Server) publicStatus(w http.ResponseWriter, r *http.Request) {
func (s *Server) publicProjects(w http.ResponseWriter, r *http.Request) {
var projects []model.Project
if err := s.db.WithContext(r.Context()).
Where("status = ?", model.ProjectRunning).
Where("status = ? AND archived_at IS NULL", model.ProjectRunning).
Order("name ASC").Find(&projects).Error; err != nil {
writeError(w, err)
return
@@ -128,7 +128,7 @@ func (s *Server) statusByPhone(w http.ResponseWriter, r *http.Request, limitByCl
if err := s.db.WithContext(r.Context()).Model(&model.QueueTicket{}).
Joins("JOIN projects ON projects.id = queue_tickets.project_id").
Joins("JOIN queue_sessions ON queue_sessions.id = queue_tickets.queue_session_id AND queue_sessions.project_id = queue_tickets.project_id").
Where("queue_tickets.phone_hmac = ? AND queue_tickets.status IN ? AND queue_sessions.status IN ? AND projects.status IN ?",
Where("queue_tickets.phone_hmac = ? AND queue_tickets.status IN ? AND queue_sessions.status IN ? AND projects.status IN ? AND projects.archived_at IS NULL",
phoneDigest,
[]string{model.TicketWaiting, model.TicketCalled, model.TicketArrived},
activeSessionStatuses,
@@ -312,13 +312,13 @@ func (s *Server) displaySnapshot(w http.ResponseWriter, r *http.Request) {
var project model.Project
var err error
if code, ok := normalizeDisplayProjectCode(identifier); ok {
err = s.db.WithContext(r.Context()).Where("code = ?", code).First(&project).Error
err = s.db.WithContext(r.Context()).Where("code = ? AND archived_at IS NULL", code).First(&project).Error
} else {
if len(identifier) < 40 || len(identifier) > 128 {
writeError(w, &apiError{Status: http.StatusNotFound, Code: "DISPLAY_NOT_FOUND", Message: "公示屏绑定不存在"})
return
}
err = s.db.WithContext(r.Context()).Where("display_token_hash = ?", security.HashToken(identifier)).First(&project).Error
err = s.db.WithContext(r.Context()).Where("display_token_hash = ? AND archived_at IS NULL", security.HashToken(identifier)).First(&project).Error
}
if err != nil {
writeError(w, mapNotFound(err, "DISPLAY_NOT_FOUND", "公示屏绑定不存在"))
@@ -499,7 +499,7 @@ func publicDisplayProjectView(project map[string]any) map[string]any {
func (s *Server) displayOverview(w http.ResponseWriter, r *http.Request) {
var projects []model.Project
if err := s.db.WithContext(r.Context()).Order("name ASC").Find(&projects).Error; err != nil {
if err := s.db.WithContext(r.Context()).Where("archived_at IS NULL").Order("name ASC").Find(&projects).Error; err != nil {
writeError(w, err)
return
}