问题与需求:后台禁用员工后旧会话仍可继续访问;实时队列跨天误读昨日场次;项目暂停后需禁止取号但允许叫号。 修复思路:账号权限变更时撤销会话并同步前端登录态;实时查询统一按项目时区当天场次过滤;拆分取号与叫号的状态校验,并补充前后端及 PostgreSQL 回归测试。
32 lines
1.0 KiB
Go
32 lines
1.0 KiB
Go
package httpapi
|
|
|
|
import (
|
|
"context"
|
|
|
|
"calllinesystem/server/internal/domain"
|
|
"calllinesystem/server/internal/model"
|
|
)
|
|
|
|
// displayedExperiencedPeople returns the current project's public daily
|
|
// metric. A queue session is created lazily on the first ticket, so a nil
|
|
// session intentionally still returns the configured starting display value.
|
|
func (s *Server) displayedExperiencedPeople(ctx context.Context, project model.Project, session *model.QueueSession) (int64, error) {
|
|
var actual int64
|
|
if session != nil {
|
|
current, err := s.queueSessionIsCurrent(project, *session)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
if !current {
|
|
return domain.DisplayExperiencedPeople(project.ExperiencedPeopleStart, 0), nil
|
|
}
|
|
if err := s.db.WithContext(ctx).Model(&model.QueueTicket{}).
|
|
Select("COALESCE(sum(party_size), 0)").
|
|
Where("project_id = ? AND queue_session_id = ?", project.ID, session.ID).
|
|
Scan(&actual).Error; err != nil {
|
|
return 0, err
|
|
}
|
|
}
|
|
return domain.DisplayExperiencedPeople(project.ExperiencedPeopleStart, actual), nil
|
|
}
|