import getGameShareImage from '../../models/snoopy/GameShareImage' import getGameInfoModel from '../../models/admin/GameInfo' import SystemDic from '../../models/admin/SystemDic' import ChinaArea from '../../models/snoopy/ChinaArea' import {Router} from 'express' import logger from '../../utils/logger' const router = new Router() const GameInfo = getGameInfoModel() const GameInfoTest = getGameInfoModel('test') const GameShareImage = getGameShareImage() const GameShareImageTest = getGameShareImage('test') // 获取分享型列表 router.get('/sys_dics', async (req, res, next) => { const query = req.query const type = query.type const currentPage = query.currentPage || 0 const pageSize = query.pageSize || 0 const start = (currentPage - 1) * pageSize const limit = Number(pageSize) try { let cfgs = [] let total = 0 if (currentPage && pageSize) { cfgs = await SystemDic.find({type: type, deleted: false}) .select('key value') .skip(start) .limit(limit) total = await SystemDic.find({ type: type, deleted: false, }).countDocuments() } else { cfgs = await SystemDic.find({type: type, deleted: false}).select( 'key value' ) } res.json({errcode: 0, errmsg: '', records: cfgs, total: total}) } catch (err) { next(err) } }) // 获取游戏所有分享图 router.post('/list', async (req, res, next) => { // 权限判断 const hasPerm = req.user.permissions.includes(`${req.body.uid}-readable`) || req.user.permissions.includes(`${req.body.uid}-edit`) || req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`games-writeable`) if (!hasPerm) { res.status(403).send({ errcode: 1, errmsg: '用户无此游戏分享图查看权限!', }) return } const body = req.body const gameId = body.gameId const shareType = body.shareType const type = body.type const isDev = body.isDev const currentPage = body.currentPage const pageSize = body.pageSize const start = (currentPage - 1) * pageSize const limit = Number(pageSize) delete body.isDev const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage try { const opt = {deleted: false} if (gameId) { opt.game_id = gameId } if (shareType) { opt.share_type = shareType } if (type || type === 0) { opt.type = type } let records if (currentPage && pageSize) { records = await GameShareImageModel.find(opt) .skip(start) .limit(limit) } else { records = await GameShareImageModel.find(opt) } const total = await GameShareImageModel.find(opt).countDocuments() const systemDics = await SystemDic.find({ deleted: false, type: 'share_cfg', }) const areas = await ChinaArea.find({deleted: false}) const map = new Map() for (const dic of systemDics) { if (!map.has(dic.key)) { map.set(dic.key, dic.value) } } const areaMap = new Map() for (const area of areas) { if (!areaMap.has(area.id)) { areaMap.set(area.id, area.name) } } for (const record of records) { const game = await GameInfo.findOne({game_id: record.game_id}) if (game) { record._doc.gameName = game.game_name record._doc.typeName = map.get(record.share_type) record._doc.areaName = areaMap.get(record.area) } } res.json({errcode: 0, errmsg: '', records: records, total: total}) } catch (err) { next(err) } }) // 获取单个分享图详情 router.get('/get_share', async (req, res, next) => { // 权限判断 const hasPerm = req.user.permissions.includes(`${req.query.uid}-readable`) || req.user.permissions.includes(`${req.query.uid}-edit`) || req.user.permissions.includes(`${req.query.uid}-publish`) || req.user.permissions.includes(`games-writeable`) if (!hasPerm) { res.status(403).send({ errcode: 1, errmsg: '用户无此游戏分享图查看权限!', }) return } const id = req.query.id const game_id = req.query.game_id const data_type = req.query.data_type const GameShareImageModel = data_type === 'dev' ? GameShareImageTest : GameShareImage delete req.query.data_type try { const record = await GameShareImageModel.findOne({ _id: id, game_id: game_id, }) if (record) { res.send({ errcode: 0, record: record, }) } else { res.send({ errcode: 1, errmsg: '分享图不存在或已删除!', }) } } catch (err) { next(err) } }) // 保存与更新一个分享图 router.post('/save_share', async (req, res, next) => { logger.db(req, '游戏管理', '分享图', '新增分享图') // 权限判断 let hasPerm if (req.body.published) { hasPerm = req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`games-writeable`) } else { hasPerm = req.user.permissions.includes(`${req.body.uid}-edit`) || req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`games-writeable`) } if (!hasPerm) { res.status(403).send({ errcode: 1, errmsg: '用户无此游戏分享图编辑权限!', }) return } const body = req.body const isDev = body.isDev const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage delete body.uid delete body.isDev try { const _id = body._id const search = await GameShareImageModel.findById(_id) if (search) { // 更新 const result = await GameShareImageModel.updateOne({_id: _id}, body) res.send({ errcode: 0, result: result, }) } else { // 新建 const newShare = GameShareImageModel(body) const result = await newShare.save() res.send({ errcode: 0, result: result, }) } } catch (err) { next(err) } }) // 更新一个分享图 router.post('/update_share', async (req, res, next) => { logger.db(req, '游戏管理', '分享图', '更新分享图') // 权限判断 const hasPerm = req.user.permissions.includes(`${req.body.uid}-readable`) || req.user.permissions.includes(`${req.body.uid}-edit`) || req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`games-writeable`) if (!hasPerm) { res.status(403).send({ errcode: 1, errmsg: '用户无此游戏分享图编辑权限!', }) return } const body = req.body const id = body._id delete body._id delete body.uid try { const search = await GameShareImage.findOne({deleted: false, _id: id}) if (search) { const result = await GameShareImage.updateOne({_id: id}, body) res.send({ errcode: 0, }) } else { res.send({ errcode: 1, errmsg: '分享图不存在或已被删除!', }) } } catch (err) { next(err) } }) // 删除分享图 router.post('/del_share', async (req, res, next) => { // 权限判断 const hasPerm = req.user.permissions.includes(`${req.body.uid}-edit`) || req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`games-writeable`) if (!hasPerm) { res.status(403).send({ errcode: 1, errmsg: '用户无此游戏分享图编辑权限!', }) return } logger.db(req, '游戏管理', '分享图', '删除分享图') const user = req.user const body = req.body const isDev = body.isDev const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage delete body.isDev try { const ids = body.ids if (!ids) { return res.json({errcode: 101, errmsg: '未选择要删除的id'}) } const record = await GameShareImageModel.where({_id: {$in: ids}}) .updateMany({ deleted: true, delete_time: new Date(), deletedBy: user.username, }) .exec() res.json({errcode: 0, errmsg: '', count: record.n}) } catch (err) { next(err) } }) /* 保存一个新的分享型*/ router.post('/save_share_type', async (req, res, next) => { logger.db(req, '游戏管理', '分享图', '新增分享类型') const body = req.body const record = body.record const user = req.user const type = 'share_cfg' const id = record ? record.id : '' try { const cfg = await SystemDic.findOne({ type: type, deleted: false, key: record.key, }) if (cfg) { if (!id) { return res.json({errcode: 101, errmsg: 'key已存在'}) } else { if (cfg.id !== id) { return res.json({errcode: 101, errmsg: 'key已存在'}) } } } let val if (record.val) { val = record.val } else { val = { title: record.title, type: record.type, } } let recordDb if (id) { recordDb = await SystemDic.findById(id) } else { recordDb = new SystemDic({ type: type, createdBy: user.username, }) } recordDb.key = record.key recordDb.value = val recordDb.lastModifiedBy = user.username await recordDb.save() res.json({ errcode: 0, errmsg: '', record: {_id: recordDb.id, key: recordDb.key, value: recordDb.value}, }) } catch (err) { next(err) } }) router.post('/delete_share_type', async (req, res, next) => { logger.db(req, '游戏管理', '分享图', '删除分享类型') const body = req.body const id = body.id const user = req.user try { if (!id) { return res.json({errcode: 101, errmsg: '未指定要删除的配置项'}) } const record = await SystemDic.findById(id) if (!record) { return res.json({errcode: 102, errmsg: '未找到要删除的配置项'}) } record.deleted = true record.delete_time = new Date() record.lastModifiedBy = user.username await record.save() res.json({errcode: 0, errmsg: ''}) } catch (err) { next(err) } }) export default router