diff --git a/src/controllers/games/games.js b/src/controllers/games/games.js index b5e3f46..0ead7f6 100644 --- a/src/controllers/games/games.js +++ b/src/controllers/games/games.js @@ -1,5 +1,4 @@ -// import GameInfo from '../../models/snoopy/GameInfo'; -import GameInfo from '../../models/admin/GameInfo' +import getGameInfoModel from '../../models/admin/GameInfo' import {Router} from 'express' import {userInfo} from 'os' import axios from 'axios' @@ -8,11 +7,13 @@ import logger from '../../utils/logger' const router = new Router() +const GameInfo = getGameInfoModel() +const GameInfoTest = getGameInfoModel('test') + // 获取游戏列表 router.get('/list', async (req, res, next) => { const query = req.query || {} const userPerms = req.user.permissions - try { let search = [] let result = [] @@ -103,8 +104,12 @@ router.get('/info', async (req, res, next) => { } const query = req.query + + const data_type = query.data_type + const GameInfoModel = data_type === 'dev' ? GameInfoTest : GameInfo + delete req.query.data_type try { - const search = await GameInfo.findOne({ + const search = await GameInfoModel.findOne({ _id: query.uid, deleted: false, }) @@ -185,28 +190,48 @@ router.post('/update_rc', async (req, res, next) => { } const body = req.body + const isDev = body.isDev + const GameInfoModel = isDev ? GameInfoTest : GameInfo + + delete body.isDev + try { - const search = await GameInfo.findOne({ + const search = await GameInfoModel.findOne({ _id: body._id, deleted: false, }) + + // TODO: + if (search) { + // 更新 const recommendation = search.recommendation ? search.recommendation : {} - recommendation[body.platform_id] = body.RCList - const result = await GameInfo.updateOne( + if (body.platform_id) { + recommendation[body.platform_id] = body.RCList + } + const result = await GameInfoModel.updateOne( { _id: body._id, deleted: false, }, - {recommendation: recommendation} + {recommendation: recommendation, rc_published: body.published} ) res.send({ errcode: 0, }) } else { + // 新建 + const gameInfo = body.gameInfo + gameInfo.recommendation = {} + if (body.platform_id) { + gameInfo.recommendation[body.platform_id] = body.RCList + } + gameInfo.rc_published = body.published + + const newGameInfo = new GameInfoModel(gameInfo) + const result = await newGameInfo.save() res.send({ - errcode: 1, - errmsg: '游戏不存在或已删除!', + errcode: 0, }) } } catch (err) { diff --git a/src/controllers/games/reward.js b/src/controllers/games/reward.js index 7b13779..9e8adbb 100644 --- a/src/controllers/games/reward.js +++ b/src/controllers/games/reward.js @@ -1,8 +1,10 @@ import {Router} from 'express' import logger from '../../utils/logger' -import CustomerReplay from '../../models/snoopy/CustomerReplay' +import getCustomerReplayModel from '../../models/snoopy/CustomerReplay' const router = new Router() +const CustomerReplay = getCustomerReplayModel() +const CustomerReplayTest = getCustomerReplayModel('test') // 获取奖励列表 router.get('/list', async (req, res, next) => { @@ -25,15 +27,21 @@ router.get('/list', async (req, res, next) => { const pageSize = query.pageSize || 0 const start = (currentPage - 1) * pageSize const limit = parseInt(pageSize) + const data_type = query.data_type + const CustomerReplayModel = + data_type === 'dev' ? CustomerReplayTest : CustomerReplay + + delete req.query.data_type + try { - const records = await CustomerReplay.find({ + const records = await CustomerReplayModel.find({ game_id: game_id, deleted: false, }) .skip(start) .limit(limit) .sort({createdAt: 'desc'}) - const total = await CustomerReplay.find({ + const total = await CustomerReplayModel.find({ game_id: game_id, deleted: false, }).countDocuments() @@ -58,17 +66,33 @@ router.post('/save', async (req, res, next) => { }) return } - logger.db(req, '游戏管理', '客服奖励', '更新客服奖励'); + + logger.db(req, '游戏管理', '客服奖励', '更新客服奖励') const body = req.body + const isDev = body.isDev + const CustomerReplayModel = isDev ? CustomerReplayTest : CustomerReplay + delete body.isDev + try { - let record - if (body._id) { - record = await CustomerReplay.findById(body._id) + const _id = body._id + const search = await CustomerReplayModel.findById(_id) + if (search) { + // 更新 + const result = await CustomerReplayModel.updateOne({_id: _id}, body) + res.send({ + errcode: 0, + result: result, + }) + } else { + // 新建 + const newReplay = CustomerReplayModel(body) + const result = await newReplay.save() + res.send({ + errcode: 0, + result: result, + }) } - record = CustomerReplay.parseReq(req, record) - await record.save() - res.json({errcode: 0, errmsg: ''}) } catch (err) { next(err) } @@ -88,11 +112,15 @@ router.post('/del', async (req, res, next) => { }) return } - logger.db(req, '游戏管理', '客服奖励', '删除客服奖励'); + logger.db(req, '游戏管理', '客服奖励', '删除客服奖励') const body = req.body + const isDev = body.isDev + const CustomerReplayModel = isDev ? CustomerReplayTest : CustomerReplay + delete body.isDev + try { if (body.ids) { - const record = await CustomerReplay.where({_id: {$in: body.ids}}) + const record = await CustomerReplayModel.where({_id: {$in: body.ids}}) .updateMany({ deleted: true, delete_time: new Date(), @@ -122,12 +150,17 @@ router.post('/switch', async (req, res, next) => { }) return } - logger.db(req, '游戏管理', '客服奖励', '切换客服奖励状态'); + logger.db(req, '游戏管理', '客服奖励', '切换客服奖励状态') const body = req.body const type = body.type // 启用: true 禁用 false + const isDev = body.isDev + const CustomerReplayModel = isDev ? CustomerReplayTest : CustomerReplay + delete body.isDev + + try { if (body.ids) { - const record = await CustomerReplay.where({ + const record = await CustomerReplayModel.where({ _id: {$in: body.ids}, }) .updateMany({actived: type}) diff --git a/src/controllers/games/share.js b/src/controllers/games/share.js index 55b97eb..968db41 100644 --- a/src/controllers/games/share.js +++ b/src/controllers/games/share.js @@ -1,11 +1,14 @@ 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 GameInfo from '../../models/admin/GameInfo' 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) => { @@ -58,11 +61,16 @@ router.post('/list', async (req, res, next) => { 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) { @@ -76,14 +84,14 @@ router.post('/list', async (req, res, next) => { } let records if (currentPage && pageSize) { - records = await GameShareImage.find(opt) + records = await GameShareImageModel.find(opt) .skip(start) .limit(limit) } else { - records = await GameShareImage.find(opt) + records = await GameShareImageModel.find(opt) } - const total = await GameShareImage.find(opt).countDocuments() + const total = await GameShareImageModel.find(opt).countDocuments() const systemDics = await SystemDic.find({ deleted: false, type: 'share_cfg', @@ -132,8 +140,16 @@ router.get('/get_share', async (req, res, next) => { } 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 GameShareImage.findOne({_id: id, game_id: game_id}) + const record = await GameShareImageModel.findOne({ + _id: id, + game_id: game_id, + }) if (record) { res.send({ errcode: 0, @@ -149,15 +165,22 @@ router.get('/get_share', async (req, res, next) => { next(err) } }) -// 保存一个分享图 + +// 保存与更新一个分享图 router.post('/save_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`) + 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, @@ -165,15 +188,33 @@ router.post('/save_share', async (req, res, next) => { }) return } + const body = req.body + const isDev = body.isDev + const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage + delete body.uid + delete body.isDev + try { - const newShare = GameShareImage(body) - const result = await newShare.save() - res.send({ - errcode: 0, - result: result, - }) + 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) } @@ -221,27 +262,31 @@ router.post('/update_share', async (req, res, next) => { // 删除分享图 router.post('/del_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}-edit`) || req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`games-writeable`) - if (!hasPerm) { + 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 = req.body.ids + const ids = body.ids if (!ids) { return res.json({errcode: 101, errmsg: '未选择要删除的id'}) } - const record = await GameShareImage.where({_id: {$in: ids}}) + const record = await GameShareImageModel.where({_id: {$in: ids}}) .updateMany({ deleted: true, delete_time: new Date(), diff --git a/src/models/admin/GameInfo.js b/src/models/admin/GameInfo.js index 9f68da4..963975e 100644 --- a/src/models/admin/GameInfo.js +++ b/src/models/admin/GameInfo.js @@ -1,24 +1,39 @@ -'use strict'; -import mongoose from 'mongoose'; +'use strict' +import mongoose from 'mongoose' +import dbUtil from '../../utils/db.util' /** * 游戏信息 */ const GameInfo = new mongoose.Schema( { - game_name: { type: String }, - game_name_en: { type: String }, - game_id: { type: String }, - game_type: { type: String }, - game_icon: { type: String }, + game_name: {type: String}, + game_name_en: {type: String}, + game_id: {type: String}, + game_type: {type: String}, + game_icon: {type: String}, platforms: [{type: Object}], recommendation: {type: Object}, - deleted: {type: Boolean, default: false} + rc_published: {type: Boolean}, + deleted: {type: Boolean, default: false}, }, { collection: 'game_info', - timestamps: true + timestamps: true, } -); +) -export default mongoose.model('GameInfo', GameInfo); +function getGameInfoModel(type) { + let GameInfoModel + if (type === 'test') { + const conn = dbUtil.getConnAdminTest() + GameInfoModel = conn.model('GameInfo', GameInfo) + } else { + const conn = dbUtil.getConnAdmin() + GameInfoModel = conn.model('GameInfo', GameInfo) + } + + return GameInfoModel +} + +export default getGameInfoModel diff --git a/src/models/snoopy/CustomerReplay.js b/src/models/snoopy/CustomerReplay.js index c2c8b72..ad8aa16 100644 --- a/src/models/snoopy/CustomerReplay.js +++ b/src/models/snoopy/CustomerReplay.js @@ -1,49 +1,66 @@ -'use strict'; -import mongoose from 'mongoose'; -import dbUtil from '../../utils/db.util'; +'use strict' +import mongoose from 'mongoose' +import dbUtil from '../../utils/db.util' /** * 客服关键字回复 */ -const CustomerReplay = new mongoose.Schema({ - // 游戏id - game_id: {type: String}, - // 响应的关键字 - keys: [{type: String}], - items: [{ - _id: false, - item_id: {type: String}, - count: {type: Number}, - }], - actived: {type: Boolean, default: true}, - // 备注 - comment: {type: String}, - createdBy: {type: String}, - deleted: {type: Boolean, default: false}, - deletedBy: {type: String}, - delete_time: {type: Date}, -}, { - collection: 'customer_replay', - timestamps: true, -}); - -const conn = dbUtil.getConnSnoopy(); -const CustomerReplayModel = conn.model('CustomerReplay', CustomerReplay); - -CustomerReplayModel.parseReq = function(req, record) { - if (!record) { - record = new CustomerReplayModel({ - createdBy: req.user.username, - }); +const CustomerReplay = new mongoose.Schema( + { + // 游戏id + game_id: {type: String}, + // 响应的关键字 + keys: [{type: String}], + items: [ + { + _id: false, + item_id: {type: String}, + count: {type: Number}, + }, + ], + actived: {type: Boolean, default: true}, + // 备注 + comment: {type: String}, + published: {type: Boolean}, + createdBy: {type: String}, + deleted: {type: Boolean, default: false}, + deletedBy: {type: String}, + delete_time: {type: Date}, + }, + { + collection: 'customer_replay', + timestamps: true, } - const body = req.body; - record.game_id = body.game_id; - record.keys = body.keys; - record.items = body.items; - record.actived = body.actived; - record.comment = body.comment; - return record; -}; +) -export default CustomerReplayModel; +function getCustomerReplayModel(type) { + let CustomerReplayModel + if (type === 'test') { + const conn = dbUtil.getConnSnoopyTest() + CustomerReplayModel = conn.model('CustomerReplay', CustomerReplay) + } else { + const conn = dbUtil.getConnSnoopy() + CustomerReplayModel = conn.model('CustomerReplay', CustomerReplay) + } + CustomerReplayModel.parseReq = function(req, record) { + if (!record) { + record = new CustomerReplayModel({ + createdBy: req.user.username, + }) + } + const body = req.body + record.game_id = body.game_id + record.keys = body.keys + record.items = body.items + record.actived = body.actived + record.comment = body.comment + record.published = body.published + return record + } + + return CustomerReplayModel + +} + +export default getCustomerReplayModel diff --git a/src/models/snoopy/GameShareImage.js b/src/models/snoopy/GameShareImage.js index 7800613..230c5a7 100644 --- a/src/models/snoopy/GameShareImage.js +++ b/src/models/snoopy/GameShareImage.js @@ -42,6 +42,8 @@ const GameShareImage = new mongoose.Schema( type: {type: Number, default: 0}, // 备注 comment: {type: String}, + // 是否已发布至正式服 + published: {type: Boolean}, createdBy: {type: String}, deleted: {type: Boolean, default: false}, deletedBy: {type: String}, @@ -106,7 +108,9 @@ function getGameShareImageModel(type) { } } + return GameShareImageModel } + export default getGameShareImageModel