177 lines
4.4 KiB
JavaScript
177 lines
4.4 KiB
JavaScript
import { Router } from 'express'
|
|
import Maker from '../../models/maker/Maker'
|
|
import RedisDao from '../../redis/redis.dao'
|
|
import logger from '../../utils/logger';
|
|
|
|
const redisDao = new RedisDao()
|
|
const router = new Router()
|
|
|
|
router.get('/', async (req, res, next) => {
|
|
try {
|
|
const query = req.query
|
|
if (query._id) {
|
|
// 单条详情查询
|
|
const result = await Maker.findOne({ _id: query._id })
|
|
res.send({
|
|
errcode: 0,
|
|
result,
|
|
})
|
|
} else {
|
|
// 列表查询
|
|
const currentPage = query.currentPage || 0
|
|
const pageSize = query.pageSize || 0
|
|
const start = (currentPage - 1) * pageSize
|
|
const limit = Number(pageSize)
|
|
const order = query.order
|
|
const opt = {}
|
|
const sortObj = {}
|
|
if(order === 'ascending') {
|
|
sortObj.view = 'asc'
|
|
} else if(order === 'descending') {
|
|
sortObj.view = 'desc'
|
|
} else {
|
|
sortObj.createdAt = 'desc'
|
|
}
|
|
|
|
if(query.isRecommand) opt.isRecommand = query.isRecommand
|
|
const result = await Maker.find(opt).skip(start).limit(limit).sort(sortObj).select('_id title desc tags isRecommand view')
|
|
|
|
const total = await Maker.find(opt).countDocuments()
|
|
res.send({
|
|
errcode: 0,
|
|
result,
|
|
total
|
|
})
|
|
}
|
|
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
router.post('/', async (req, res, next) => {
|
|
try {
|
|
logger.db(req, '游戏管理', '生成器', '添加模板')
|
|
const body = req.body
|
|
const title = body.title
|
|
const desc = body.desc
|
|
const template = body.template
|
|
const list = body.list
|
|
const tags = body.tags
|
|
const view = body.view
|
|
const isRecommand = body.isRecommand
|
|
|
|
|
|
const newMaker = new Maker({
|
|
title,
|
|
desc,
|
|
template,
|
|
list,
|
|
tags,
|
|
view,
|
|
isRecommand
|
|
})
|
|
const result = await newMaker.save()
|
|
updateTags(tags)
|
|
res.send({
|
|
errcode: 0,
|
|
result
|
|
})
|
|
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
router.put('/', async (req, res, next) => {
|
|
try {
|
|
logger.db(req, '游戏管理', '生成器', '更新模板')
|
|
const body = req.body
|
|
const _id = body._id
|
|
const title = body.title
|
|
const desc = body.desc
|
|
const template = body.template
|
|
const list = body.list
|
|
const tags = body.tags
|
|
const view = body.view
|
|
const isRecommand = body.isRecommand
|
|
|
|
const result = await Maker.updateOne(
|
|
{
|
|
_id,
|
|
},
|
|
{
|
|
title,
|
|
desc,
|
|
template,
|
|
list,
|
|
tags,
|
|
view,
|
|
isRecommand
|
|
}
|
|
)
|
|
updateTags(tags)
|
|
res.send({
|
|
errcode: 0,
|
|
})
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
router.delete('/', async (req, res, next) => {
|
|
try {
|
|
logger.db(req, '游戏管理', '生成器', '删除模板')
|
|
const body = req.body
|
|
const _id = body._id
|
|
const result = await Maker.deleteOne({ _id })
|
|
|
|
res.send({
|
|
errcode: 0,
|
|
})
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
|
|
router.get('/tags', async (req, res, next) => {
|
|
try {
|
|
const result = await redisDao.getByKey('maker_tags') || ''
|
|
res.send({
|
|
errcode: 0,
|
|
result
|
|
})
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
router.put('/tags', async (req, res, next) => {
|
|
try {
|
|
logger.db(req, '游戏管理', '生成器', '更新标签')
|
|
const body = req.body
|
|
const tags = body.tags
|
|
let result = await redisDao.updateOneKey('maker_tags', tags)
|
|
|
|
res.send({
|
|
errcode: 0,
|
|
})
|
|
} catch (err) {
|
|
next(err)
|
|
}
|
|
})
|
|
|
|
async function updateTags(tags) {
|
|
let result = await redisDao.getByKey('maker_tags')
|
|
result = result ? result + ',' + tags : tags
|
|
result = result.split(',')
|
|
const map = new Set(result)
|
|
result = [...map]
|
|
result = result.join(',')
|
|
redisDao.updateOneKey('maker_tags', result)
|
|
}
|
|
|
|
|
|
export default router
|