GuDingZiChan/backend/src/controllers/searchController.ts
2026-03-10 16:19:47 +08:00

50 lines
1.3 KiB
TypeScript

import { Request, Response } from 'express'
import prisma from '../utils/prisma'
import { successResponse, errorResponse } from '../utils/response'
// 全局搜索
export const globalSearch = async (req: Request, res: Response) => {
try {
const { keyword } = req.query
if (!keyword || String(keyword).trim().length === 0) {
return successResponse(res, [], '请输入搜索关键词')
}
const kw = String(keyword).trim()
const equipments = await prisma.equipment.findMany({
where: {
OR: [
{ equipment_code: { contains: kw } },
{ equipment_name: { contains: kw } },
{ equipment_model: { contains: kw } }
]
},
select: {
id: true,
equipment_code: true,
equipment_name: true,
equipment_type: true,
status: true,
assetType: { select: { name: true } }
},
take: 10,
orderBy: { updated_at: 'desc' }
})
const results = equipments.map(eq => ({
id: eq.id,
code: eq.equipment_code,
name: eq.equipment_name,
type: eq.assetType?.name || eq.equipment_type,
status: eq.status,
category: 'equipment'
}))
successResponse(res, results, '搜索成功')
} catch (error: any) {
errorResponse(res, error.message || '搜索失败')
}
}