游戏详情相关 正式、测试数据 合并

This commit is contained in:
yulixing 2019-07-02 20:01:32 +08:00
parent 52e9772157
commit be3bad311c
6 changed files with 239 additions and 100 deletions

View File

@ -1,5 +1,4 @@
// import GameInfo from '../../models/snoopy/GameInfo'; import getGameInfoModel from '../../models/admin/GameInfo'
import GameInfo from '../../models/admin/GameInfo'
import {Router} from 'express' import {Router} from 'express'
import {userInfo} from 'os' import {userInfo} from 'os'
import axios from 'axios' import axios from 'axios'
@ -8,11 +7,13 @@ import logger from '../../utils/logger'
const router = new Router() const router = new Router()
const GameInfo = getGameInfoModel()
const GameInfoTest = getGameInfoModel('test')
// 获取游戏列表 // 获取游戏列表
router.get('/list', async (req, res, next) => { router.get('/list', async (req, res, next) => {
const query = req.query || {} const query = req.query || {}
const userPerms = req.user.permissions const userPerms = req.user.permissions
try { try {
let search = [] let search = []
let result = [] let result = []
@ -103,8 +104,12 @@ router.get('/info', async (req, res, next) => {
} }
const query = req.query const query = req.query
const data_type = query.data_type
const GameInfoModel = data_type === 'dev' ? GameInfoTest : GameInfo
delete req.query.data_type
try { try {
const search = await GameInfo.findOne({ const search = await GameInfoModel.findOne({
_id: query.uid, _id: query.uid,
deleted: false, deleted: false,
}) })
@ -185,28 +190,48 @@ router.post('/update_rc', async (req, res, next) => {
} }
const body = req.body const body = req.body
const isDev = body.isDev
const GameInfoModel = isDev ? GameInfoTest : GameInfo
delete body.isDev
try { try {
const search = await GameInfo.findOne({ const search = await GameInfoModel.findOne({
_id: body._id, _id: body._id,
deleted: false, deleted: false,
}) })
// TODO:
if (search) { if (search) {
// 更新
const recommendation = search.recommendation ? search.recommendation : {} const recommendation = search.recommendation ? search.recommendation : {}
recommendation[body.platform_id] = body.RCList if (body.platform_id) {
const result = await GameInfo.updateOne( recommendation[body.platform_id] = body.RCList
}
const result = await GameInfoModel.updateOne(
{ {
_id: body._id, _id: body._id,
deleted: false, deleted: false,
}, },
{recommendation: recommendation} {recommendation: recommendation, rc_published: body.published}
) )
res.send({ res.send({
errcode: 0, errcode: 0,
}) })
} else { } 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({ res.send({
errcode: 1, errcode: 0,
errmsg: '游戏不存在或已删除!',
}) })
} }
} catch (err) { } catch (err) {

View File

@ -1,8 +1,10 @@
import {Router} from 'express' import {Router} from 'express'
import logger from '../../utils/logger' import logger from '../../utils/logger'
import CustomerReplay from '../../models/snoopy/CustomerReplay' import getCustomerReplayModel from '../../models/snoopy/CustomerReplay'
const router = new Router() const router = new Router()
const CustomerReplay = getCustomerReplayModel()
const CustomerReplayTest = getCustomerReplayModel('test')
// 获取奖励列表 // 获取奖励列表
router.get('/list', async (req, res, next) => { router.get('/list', async (req, res, next) => {
@ -25,15 +27,21 @@ router.get('/list', async (req, res, next) => {
const pageSize = query.pageSize || 0 const pageSize = query.pageSize || 0
const start = (currentPage - 1) * pageSize const start = (currentPage - 1) * pageSize
const limit = parseInt(pageSize) const limit = parseInt(pageSize)
const data_type = query.data_type
const CustomerReplayModel =
data_type === 'dev' ? CustomerReplayTest : CustomerReplay
delete req.query.data_type
try { try {
const records = await CustomerReplay.find({ const records = await CustomerReplayModel.find({
game_id: game_id, game_id: game_id,
deleted: false, deleted: false,
}) })
.skip(start) .skip(start)
.limit(limit) .limit(limit)
.sort({createdAt: 'desc'}) .sort({createdAt: 'desc'})
const total = await CustomerReplay.find({ const total = await CustomerReplayModel.find({
game_id: game_id, game_id: game_id,
deleted: false, deleted: false,
}).countDocuments() }).countDocuments()
@ -58,17 +66,33 @@ router.post('/save', async (req, res, next) => {
}) })
return return
} }
logger.db(req, '游戏管理', '客服奖励', '更新客服奖励');
logger.db(req, '游戏管理', '客服奖励', '更新客服奖励')
const body = req.body const body = req.body
const isDev = body.isDev
const CustomerReplayModel = isDev ? CustomerReplayTest : CustomerReplay
delete body.isDev
try { try {
let record const _id = body._id
if (body._id) { const search = await CustomerReplayModel.findById(_id)
record = await CustomerReplay.findById(body._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) { } catch (err) {
next(err) next(err)
} }
@ -88,11 +112,15 @@ router.post('/del', async (req, res, next) => {
}) })
return return
} }
logger.db(req, '游戏管理', '客服奖励', '删除客服奖励'); logger.db(req, '游戏管理', '客服奖励', '删除客服奖励')
const body = req.body const body = req.body
const isDev = body.isDev
const CustomerReplayModel = isDev ? CustomerReplayTest : CustomerReplay
delete body.isDev
try { try {
if (body.ids) { if (body.ids) {
const record = await CustomerReplay.where({_id: {$in: body.ids}}) const record = await CustomerReplayModel.where({_id: {$in: body.ids}})
.updateMany({ .updateMany({
deleted: true, deleted: true,
delete_time: new Date(), delete_time: new Date(),
@ -122,12 +150,17 @@ router.post('/switch', async (req, res, next) => {
}) })
return return
} }
logger.db(req, '游戏管理', '客服奖励', '切换客服奖励状态'); logger.db(req, '游戏管理', '客服奖励', '切换客服奖励状态')
const body = req.body const body = req.body
const type = body.type // 启用: true 禁用 false const type = body.type // 启用: true 禁用 false
const isDev = body.isDev
const CustomerReplayModel = isDev ? CustomerReplayTest : CustomerReplay
delete body.isDev
try { try {
if (body.ids) { if (body.ids) {
const record = await CustomerReplay.where({ const record = await CustomerReplayModel.where({
_id: {$in: body.ids}, _id: {$in: body.ids},
}) })
.updateMany({actived: type}) .updateMany({actived: type})

View File

@ -1,11 +1,14 @@
import getGameShareImage from '../../models/snoopy/GameShareImage' import getGameShareImage from '../../models/snoopy/GameShareImage'
import getGameInfoModel from '../../models/admin/GameInfo'
import SystemDic from '../../models/admin/SystemDic' import SystemDic from '../../models/admin/SystemDic'
import ChinaArea from '../../models/snoopy/ChinaArea' import ChinaArea from '../../models/snoopy/ChinaArea'
import GameInfo from '../../models/admin/GameInfo'
import {Router} from 'express' import {Router} from 'express'
import logger from '../../utils/logger' import logger from '../../utils/logger'
const router = new Router() const router = new Router()
const GameInfo = getGameInfoModel()
const GameInfoTest = getGameInfoModel('test')
const GameShareImage = getGameShareImage() const GameShareImage = getGameShareImage()
const GameShareImageTest = getGameShareImage('test')
// 获取分享型列表 // 获取分享型列表
router.get('/sys_dics', async (req, res, next) => { router.get('/sys_dics', async (req, res, next) => {
@ -58,11 +61,16 @@ router.post('/list', async (req, res, next) => {
const gameId = body.gameId const gameId = body.gameId
const shareType = body.shareType const shareType = body.shareType
const type = body.type const type = body.type
const isDev = body.isDev
const currentPage = body.currentPage const currentPage = body.currentPage
const pageSize = body.pageSize const pageSize = body.pageSize
const start = (currentPage - 1) * pageSize const start = (currentPage - 1) * pageSize
const limit = Number(pageSize) const limit = Number(pageSize)
delete body.isDev
const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage
try { try {
const opt = {deleted: false} const opt = {deleted: false}
if (gameId) { if (gameId) {
@ -76,14 +84,14 @@ router.post('/list', async (req, res, next) => {
} }
let records let records
if (currentPage && pageSize) { if (currentPage && pageSize) {
records = await GameShareImage.find(opt) records = await GameShareImageModel.find(opt)
.skip(start) .skip(start)
.limit(limit) .limit(limit)
} else { } 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({ const systemDics = await SystemDic.find({
deleted: false, deleted: false,
type: 'share_cfg', type: 'share_cfg',
@ -132,8 +140,16 @@ router.get('/get_share', async (req, res, next) => {
} }
const id = req.query.id const id = req.query.id
const game_id = req.query.game_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 { 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) { if (record) {
res.send({ res.send({
errcode: 0, errcode: 0,
@ -149,15 +165,22 @@ router.get('/get_share', async (req, res, next) => {
next(err) next(err)
} }
}) })
// 保存一个分享图
// 保存与更新一个分享图
router.post('/save_share', async (req, res, next) => { router.post('/save_share', async (req, res, next) => {
logger.db(req, '游戏管理', '分享图', '新增分享图') logger.db(req, '游戏管理', '分享图', '新增分享图')
// 权限判断 // 权限判断
const hasPerm = let hasPerm
req.user.permissions.includes(`${req.body.uid}-readable`) || if (req.body.published) {
req.user.permissions.includes(`${req.body.uid}-edit`) || hasPerm =
req.user.permissions.includes(`${req.body.uid}-publish`) || req.user.permissions.includes(`${req.body.uid}-publish`) ||
req.user.permissions.includes(`games-writeable`) 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) { if (!hasPerm) {
res.status(403).send({ res.status(403).send({
errcode: 1, errcode: 1,
@ -165,15 +188,33 @@ router.post('/save_share', async (req, res, next) => {
}) })
return return
} }
const body = req.body const body = req.body
const isDev = body.isDev
const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage
delete body.uid delete body.uid
delete body.isDev
try { try {
const newShare = GameShareImage(body) const _id = body._id
const result = await newShare.save() const search = await GameShareImageModel.findById(_id)
res.send({ if (search) {
errcode: 0, // 更新
result: result, 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) { } catch (err) {
next(err) next(err)
} }
@ -221,27 +262,31 @@ router.post('/update_share', async (req, res, next) => {
// 删除分享图 // 删除分享图
router.post('/del_share', async (req, res, next) => { router.post('/del_share', async (req, res, next) => {
logger.db(req, '游戏管理', '分享图', '删除分享图')
// 权限判断 // 权限判断
const hasPerm = 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(`${req.body.uid}-publish`) ||
req.user.permissions.includes(`games-writeable`) req.user.permissions.includes(`games-writeable`)
if (!hasPerm) { if (!hasPerm) {
res.status(403).send({ res.status(403).send({
errcode: 1, errcode: 1,
errmsg: '用户无此游戏分享图编辑权限!', errmsg: '用户无此游戏分享图编辑权限!',
}) })
return return
} }
logger.db(req, '游戏管理', '分享图', '删除分享图')
const user = req.user const user = req.user
const body = req.body
const isDev = body.isDev
const GameShareImageModel = isDev ? GameShareImageTest : GameShareImage
delete body.isDev
try { try {
const ids = req.body.ids const ids = body.ids
if (!ids) { if (!ids) {
return res.json({errcode: 101, errmsg: '未选择要删除的id'}) return res.json({errcode: 101, errmsg: '未选择要删除的id'})
} }
const record = await GameShareImage.where({_id: {$in: ids}}) const record = await GameShareImageModel.where({_id: {$in: ids}})
.updateMany({ .updateMany({
deleted: true, deleted: true,
delete_time: new Date(), delete_time: new Date(),

View File

@ -1,24 +1,39 @@
'use strict'; 'use strict'
import mongoose from 'mongoose'; import mongoose from 'mongoose'
import dbUtil from '../../utils/db.util'
/** /**
* 游戏信息 * 游戏信息
*/ */
const GameInfo = new mongoose.Schema( const GameInfo = new mongoose.Schema(
{ {
game_name: { type: String }, game_name: {type: String},
game_name_en: { type: String }, game_name_en: {type: String},
game_id: { type: String }, game_id: {type: String},
game_type: { type: String }, game_type: {type: String},
game_icon: { type: String }, game_icon: {type: String},
platforms: [{type: Object}], platforms: [{type: Object}],
recommendation: {type: Object}, recommendation: {type: Object},
deleted: {type: Boolean, default: false} rc_published: {type: Boolean},
deleted: {type: Boolean, default: false},
}, },
{ {
collection: 'game_info', 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

View File

@ -1,49 +1,66 @@
'use strict'; 'use strict'
import mongoose from 'mongoose'; import mongoose from 'mongoose'
import dbUtil from '../../utils/db.util'; import dbUtil from '../../utils/db.util'
/** /**
* 客服关键字回复 * 客服关键字回复
*/ */
const CustomerReplay = new mongoose.Schema({ const CustomerReplay = new mongoose.Schema(
// 游戏id {
game_id: {type: String}, // 游戏id
// 响应的关键字 game_id: {type: String},
keys: [{type: String}], // 响应的关键字
items: [{ keys: [{type: String}],
_id: false, items: [
item_id: {type: String}, {
count: {type: Number}, _id: false,
}], item_id: {type: String},
actived: {type: Boolean, default: true}, count: {type: Number},
// 备注 },
comment: {type: String}, ],
createdBy: {type: String}, actived: {type: Boolean, default: true},
deleted: {type: Boolean, default: false}, // 备注
deletedBy: {type: String}, comment: {type: String},
delete_time: {type: Date}, published: {type: Boolean},
}, { createdBy: {type: String},
collection: 'customer_replay', deleted: {type: Boolean, default: false},
timestamps: true, deletedBy: {type: String},
}); delete_time: {type: Date},
},
const conn = dbUtil.getConnSnoopy(); {
const CustomerReplayModel = conn.model('CustomerReplay', CustomerReplay); collection: 'customer_replay',
timestamps: true,
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;
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

View File

@ -42,6 +42,8 @@ const GameShareImage = new mongoose.Schema(
type: {type: Number, default: 0}, type: {type: Number, default: 0},
// 备注 // 备注
comment: {type: String}, comment: {type: String},
// 是否已发布至正式服
published: {type: Boolean},
createdBy: {type: String}, createdBy: {type: String},
deleted: {type: Boolean, default: false}, deleted: {type: Boolean, default: false},
deletedBy: {type: String}, deletedBy: {type: String},
@ -106,7 +108,9 @@ function getGameShareImageModel(type) {
} }
} }
return GameShareImageModel return GameShareImageModel
} }
export default getGameShareImageModel export default getGameShareImageModel