Files
services/controllers/homeCategories.js
T
2026-06-03 14:15:55 +08:00

93 lines
2.1 KiB
JavaScript

const { query } = require('../config/database')
async function getHomeCategories(ctx) {
const sql = `
SELECT
hc.id,
hc.sort_order,
c.id as category_id,
c.name as category_name,
c.icon as category_icon,
c.image as category_image
FROM home_categories hc
LEFT JOIN categories c ON hc.category_id = c.id
WHERE hc.is_enabled = 1 AND c.status = 1
ORDER BY hc.sort_order ASC
`
const categories = await query(sql)
const data = categories.map(item => ({
id: item.category_id,
name: item.category_name,
icon: item.category_icon,
image: item.category_image,
sortOrder: item.sort_order
}))
ctx.body = {
code: 200,
data
}
}
async function updateHomeCategories(ctx) {
const { categories } = ctx.request.body
if (!Array.isArray(categories)) {
ctx.body = {
code: 400,
message: '分类数据格式错误'
}
return
}
await query('UPDATE home_categories SET is_enabled = 0')
for (const item of categories) {
if (item.categoryId && item.isEnabled) {
await query(
'UPDATE home_categories SET is_enabled = 1, sort_order = ? WHERE category_id = ?',
[item.sortOrder, item.categoryId]
)
}
}
ctx.body = {
code: 200,
message: '更新成功'
}
}
async function getAllCategoriesForConfig(ctx) {
const categories = await query('SELECT id, name, icon, image FROM categories WHERE status = 1 ORDER BY sort_order ASC')
const homeCategories = await query('SELECT category_id, sort_order, is_enabled FROM home_categories')
const homeMap = {}
for (const hc of homeCategories) {
homeMap[hc.category_id] = {
sortOrder: hc.sort_order,
isEnabled: hc.is_enabled === 1
}
}
const data = categories.map(cat => ({
id: cat.id,
name: cat.name,
icon: cat.icon,
image: cat.image,
...(homeMap[cat.id] || { sortOrder: 999, isEnabled: false })
}))
ctx.body = {
code: 200,
data
}
}
module.exports = {
getHomeCategories,
updateHomeCategories,
getAllCategoriesForConfig
}