import { defineEventHandler, EventHandlerRequest } from 'h3'; import { DB } from '~~/server/db/DB'; import { createErrorResponse, createSuccessResponse, IResponse } from '~~/server/utils/response'; import { CommonPageResult, ICommonPageResult } from '~~/server/db/CommonModel'; import type { IArticle } from './[id]'; export default defineEventHandler & { channel_id: number; }>>>(async (event) => { try { const query = getQuery(event); const page = Number(query.page as string) || 1; const pageSize = Number(query.pageSize as string) || 10; const channelName = query.channelName as string; if (!channelName) return createErrorResponse('分类名称不能为空'); // 1. 从pr_cms_channel表中通过name查询channel_id const channel = await DB.table('pr_cms_channel') .where('name', channelName) .where('status', 'normal') .select('id') .first(); // 如果没有找到对应的频道,返回空数组 if (!channel) return createSuccessResponse(new CommonPageResult(undefined, [], page, pageSize, 0)); // 2. 从pr_cms_archives表中通过channel_id查询文章 const channelId = channel.id; const articles = await DB.table('pr_cms_archives') .where('channel_id', channelId) .where('status', 'normal') .orderBy('weigh', 'desc') .orderBy('publishtime', 'desc') .orderBy('createtime', 'desc') .orderBy('id', 'asc') .paginate(page, pageSize); if (!articles) return createErrorResponse('文章不存在'); return createSuccessResponse({ channel_id: channelId, ...articles }); } catch (error) { return createErrorResponse(error); } });