| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import { defineEventHandler, EventHandlerRequest } from 'h3';
- import { DB } from '~~/server/db/DB';
- import { createErrorResponse, createSuccessResponse, IResponse } from '~~/server/utils/response';
- import { CommonPageResult } from '~~/server/db/CommonModel';
- import type { IArticle } from './[id]';
- export default defineEventHandler<EventHandlerRequest, Promise<IResponse<CommonPageResult<IArticle>>>>(async (event) => {
- try {
- const query = getQuery(event);
- const page = query.page as string;
- const pageSize = query.pageSize as string;
- const channelId = query.channelId as string;
- const includeChilds = query.includeChilds === 'true';
- if (!channelId)
- return createErrorResponse('分类ID不能为空');
- const dbquery = DB.table('pr_cms_archives')
- .whereNull('deletetime')
- .where('status', 'normal')
- .orderBy('weigh', 'desc')
- .orderBy('publishtime', 'desc')
- .orderBy('createtime', 'desc')
- .orderBy('id', 'asc');
- if (includeChilds) {
- const childChannels = await DB.table('pr_cms_channel')
- .where('parent_id', channelId)
- .select('id')
- .get();
- dbquery.whereIn('channel_id', [channelId, ...childChannels.map(item => item.id)]);
- } else {
- dbquery.where('channel_id', channelId);
- }
- const articles = await dbquery.paginate(Number(page), Number(pageSize));
- if (!articles)
- return createErrorResponse('文章不存在');
- return createSuccessResponse(articles);
- } catch (error) {
- return createErrorResponse(error);
- }
- });
|