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