api
This commit is contained in:
+27
-10
@@ -3,29 +3,46 @@ const { query } = require('../config/database')
|
||||
async function getGoods(ctx) {
|
||||
let sql = 'SELECT * FROM goods WHERE 1=1'
|
||||
const params = []
|
||||
|
||||
|
||||
if (ctx.query.hot === '1') {
|
||||
sql += ' AND is_hot = 1'
|
||||
}
|
||||
|
||||
|
||||
if (ctx.query.isNew === '1') {
|
||||
sql += ' AND is_new = 1'
|
||||
}
|
||||
|
||||
|
||||
if (ctx.query.category_id) {
|
||||
sql += ' AND category_id = ?'
|
||||
params.push(parseInt(ctx.query.category_id))
|
||||
}
|
||||
|
||||
|
||||
if (ctx.query.keyword) {
|
||||
sql += ' AND name LIKE ?'
|
||||
params.push(`%${ctx.query.keyword}%`)
|
||||
sql += ' AND (name LIKE ? OR barcode LIKE ?)'
|
||||
params.push(`%${ctx.query.keyword}%`, `%${ctx.query.keyword}%`)
|
||||
}
|
||||
|
||||
sql += ' ORDER BY id DESC'
|
||||
|
||||
|
||||
if (ctx.query.inStock === '1') {
|
||||
sql += ' AND stock > 0'
|
||||
}
|
||||
|
||||
const sortField = ctx.query.sortBy || 'id'
|
||||
const sortOrder = ctx.query.sortOrder === 'asc' ? 'ASC' : 'DESC'
|
||||
const validSortFields = ['id', 'price', 'sales', 'stock', 'created_at']
|
||||
|
||||
if (validSortFields.includes(sortField)) {
|
||||
sql += ` ORDER BY ${sortField} ${sortOrder}`
|
||||
} else {
|
||||
sql += ' ORDER BY id DESC'
|
||||
}
|
||||
|
||||
if (ctx.query.limit) {
|
||||
sql += ' LIMIT ?'
|
||||
params.push(parseInt(ctx.query.limit))
|
||||
}
|
||||
|
||||
const goods = await query(sql, params)
|
||||
|
||||
|
||||
ctx.body = {
|
||||
code: 200,
|
||||
data: goods
|
||||
|
||||
Reference in New Issue
Block a user