2019-11-26 14:32:38 +08:00

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