feat: 完成规格映射与采购任务创建 (#69)

This commit is contained in:
chengma
2026-08-09 22:55:14 +08:00
parent 610e9e3749
commit 4433e3af37
18 changed files with 976 additions and 135 deletions
+20
View File
@@ -184,6 +184,26 @@ func ListClientsForUser(db *sql.DB, keyword, visibleUserID string) ([]ClientWith
return listClientsForUserPage(db, keyword, visibleUserID, -1, 0)
}
// ClientVisibleToUser 校验客户端是否存在且位于当前账号可见范围。
// visibleUserID 为空表示管理员,可选择任意已登记客户端。
func ClientVisibleToUser(q Execer, clientID, visibleUserID string) (bool, error) {
query := `SELECT COUNT(*) FROM clients c`
args := []any{}
if visibleUserID != "" {
query += ` JOIN client_user_assignments a
ON a.client_id = c.client_id AND a.ended_at IS NULL
AND a.user_id = ?`
args = append(args, visibleUserID)
}
query += ` WHERE c.client_id = ?`
args = append(args, clientID)
var count int
if err := q.QueryRow(query, args...).Scan(&count); err != nil {
return false, fmt.Errorf("校验客户端可见范围失败: %w", err)
}
return count == 1, nil
}
// ListClientsForUserPage 返回一页客户端和同一可见范围内的总数。
func ListClientsForUserPage(db *sql.DB, keyword, visibleUserID string, limit, offset int) ([]ClientWithAssignee, int, error) {
where, args := clientListFilter(keyword, visibleUserID)