384 lines
9.9 KiB
JavaScript
384 lines
9.9 KiB
JavaScript
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
|