增加游戏ip屏蔽的配置
This commit is contained in:
parent
b61a2d76b5
commit
317f87d343
@ -58,6 +58,7 @@
|
||||
"yargs": "^13.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/express": "^4.17.8",
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-preset-node8": "1.2.0",
|
||||
"cross-env": "^5.2.0",
|
||||
|
@ -49,6 +49,51 @@ router.get('/china_region', async (req, res, next) => {
|
||||
}
|
||||
})
|
||||
|
||||
/* 获取省市列表, id为_id*/
|
||||
router.get('/china_region_id', async (req, res, next) => {
|
||||
try {
|
||||
const provinces = await ChinaRegion.find({level: 1})
|
||||
const citys = await ChinaRegion.find({level: 2, pinyin: {$ne: null}})
|
||||
const result = []
|
||||
const map = new Map()
|
||||
const pIdx = {}
|
||||
for (let i = 0; i < provinces.length; i++) {
|
||||
result.push({
|
||||
id: provinces[i]._id+'',
|
||||
pid: '0',
|
||||
name: provinces[i].short_name,
|
||||
children: [],
|
||||
})
|
||||
map.set(provinces[i]._id, provinces[i])
|
||||
|
||||
if (!pIdx[provinces[i]._id]) {
|
||||
pIdx[provinces[i]._id] = i
|
||||
}
|
||||
}
|
||||
for (const c of citys) {
|
||||
if (map.has(c.parent_id)) {
|
||||
const pIndex = pIdx[c.parent_id]
|
||||
result[pIndex].children.push({
|
||||
id: c._id+'',
|
||||
pid: map.get(c.parent_id)._id+'',
|
||||
name: c.short_name,
|
||||
})
|
||||
}
|
||||
}
|
||||
// for (let data of result) {
|
||||
// if (data.children.length <= 1) {
|
||||
// data.children = [];
|
||||
// }
|
||||
// }
|
||||
res.json({
|
||||
errcode: 0,
|
||||
records: result,
|
||||
})
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* 获取所有定义好的地域列表*/
|
||||
router.get('/china_area', async (req, res, next) => {
|
||||
try {
|
||||
|
@ -216,7 +216,7 @@ router.post('/update', async (req, res, next) => {
|
||||
_id: body._id,
|
||||
deleted: false,
|
||||
},
|
||||
{platforms, platforms}
|
||||
{platforms}
|
||||
)
|
||||
res.send({
|
||||
errcode: 0,
|
||||
@ -228,7 +228,7 @@ router.post('/update', async (req, res, next) => {
|
||||
_id: body._id,
|
||||
deleted: false,
|
||||
},
|
||||
{platforms, platforms}
|
||||
{platforms}
|
||||
)
|
||||
res.send({
|
||||
errcode: 0,
|
||||
|
@ -11,6 +11,7 @@ import dataRouter from './data';
|
||||
import giftRouter from './gift';
|
||||
import orderRouter from './order';
|
||||
import mailRouter from './mail';
|
||||
import ipRouter from './ip';
|
||||
|
||||
|
||||
|
||||
@ -31,6 +32,7 @@ router.use('/data', dataRouter);
|
||||
router.use('/gift', giftRouter);
|
||||
router.use('/order', orderRouter);
|
||||
router.use('/mail', mailRouter);
|
||||
router.use('/ip', ipRouter);
|
||||
router.use('/', gamesRouter);
|
||||
|
||||
export default router;
|
||||
|
59
src/controllers/games/ip.js
Normal file
59
src/controllers/games/ip.js
Normal file
@ -0,0 +1,59 @@
|
||||
import {Router} from 'express'
|
||||
import logger from '../../utils/logger'
|
||||
|
||||
import GameIpBlock from '../../models/snoopy/GameIpBlock';
|
||||
|
||||
const router = new Router();
|
||||
|
||||
|
||||
router.get('/:gid/:pid', async (req, res, next) => {
|
||||
let {gid, pid} = req.params;
|
||||
if (!gid) {
|
||||
return res.json({errcode: 101, errmsg: '参数不足'});
|
||||
}
|
||||
if (!pid) pid = 'all';
|
||||
let data = await GameIpBlock.findInfo(gid, pid);
|
||||
if (data) {
|
||||
for (let obj of data.areas) {
|
||||
obj._doc.pid = '0';
|
||||
for (let subObj of obj.children) {
|
||||
subObj._doc.pid = obj.id;
|
||||
}
|
||||
}
|
||||
}
|
||||
res.json({errcode: 0, errmsg: '', data});
|
||||
});
|
||||
|
||||
router.post('/update', async (req, res, next) => {
|
||||
logger.db(req, '游戏管理', 'IPBlock', '更新游戏IP屏蔽信息');
|
||||
let data = req.body.data;
|
||||
// 权限判断
|
||||
const hasPerm =
|
||||
req.user.permissions.includes(`${data.game_id}-edit`) ||
|
||||
req.user.permissions.includes(`${data.game_id}-publish`) ||
|
||||
req.user.permissions.includes(`games-writeable`)
|
||||
if (!hasPerm) {
|
||||
return res.status(403).send({
|
||||
errcode: 1,
|
||||
errmsg: '用户无游戏编辑权限!',
|
||||
})
|
||||
}
|
||||
try {
|
||||
await GameIpBlock.updateOne({
|
||||
game_id: data.game_id,
|
||||
platform_id: data.platform_id,
|
||||
},
|
||||
{$set: data},
|
||||
{upsert: true}
|
||||
)
|
||||
res.json({
|
||||
errcode: 0,
|
||||
})
|
||||
} catch (err) {
|
||||
res.json({errcode: 102,
|
||||
errmsg: '保存出错!',});
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
export default router;
|
@ -41,5 +41,30 @@ const ChinaRegion = new mongoose.Schema({
|
||||
|
||||
const conn = dbUtil.getConnSnoopy();
|
||||
|
||||
export default conn.model('ChinaRegion', ChinaRegion);
|
||||
const ChinaRegionModel = conn.model('ChinaRegion', ChinaRegion);
|
||||
|
||||
ChinaRegionModel.fetchDataMap = async function (level) {
|
||||
let map = new Map();
|
||||
if (level >= 1) {
|
||||
let datas = await ChinaRegion.find({level: 1});
|
||||
for (let data of datas) {
|
||||
map.set(data._id, data);
|
||||
}
|
||||
}
|
||||
if (level >= 2) {
|
||||
let datas = await ChinaRegion.find({level: 2});
|
||||
for (let data of datas) {
|
||||
map.set(data._id, data);
|
||||
}
|
||||
}
|
||||
if (level >= 3) {
|
||||
let datas = await ChinaRegion.find({level: 3});
|
||||
for (let data of datas) {
|
||||
map.set(data._id, data);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
export default ChinaRegionModel;
|
||||
|
||||
|
35
src/models/snoopy/GameIpBlock.js
Normal file
35
src/models/snoopy/GameIpBlock.js
Normal file
@ -0,0 +1,35 @@
|
||||
import mongoose from 'mongoose'
|
||||
import dbUtil from '../../utils/db.util'
|
||||
|
||||
const GameIpBlock = new mongoose.Schema({
|
||||
// 游戏id
|
||||
game_id: {type: String},
|
||||
// 平台id
|
||||
platform_id: {type: String},
|
||||
// 启动参数白名单
|
||||
more_params: {type: String},
|
||||
// 屏蔽地区列表
|
||||
areas: [{
|
||||
_id: false,
|
||||
id: {type: String},
|
||||
name: {type: String},
|
||||
all: {type: Boolean, default: false},
|
||||
children: [{_id: false, id: {type: String}, name: {type: String}}]}],
|
||||
// 屏蔽时间段列表
|
||||
times: [{_id: false, start: {type: String}, end: {type: String}}],
|
||||
|
||||
}, {
|
||||
collection: 'game_ip_block',
|
||||
timestamps: true,
|
||||
})
|
||||
|
||||
GameIpBlock.index({game_id: 1, platform_id: 1}, {unique: true});
|
||||
|
||||
const conn = dbUtil.getConnSnoopy();
|
||||
|
||||
let GameIpBlockModel = conn.model('GameIpBlock', GameIpBlock);
|
||||
|
||||
GameIpBlockModel.findInfo = function (gid, pid) {
|
||||
return GameIpBlockModel.findOne({game_id: gid, platform_id: pid});
|
||||
}
|
||||
export default GameIpBlockModel;
|
Loading…
x
Reference in New Issue
Block a user