From b61a2d76b5dd29f38b24c3b5f1d8490303cd27ce Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 18 May 2020 18:49:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=82=AE=E4=BB=B6=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/games/index.js | 2 + src/controllers/games/mail.js | 144 +++++++++++++++++ src/utils/gamesvr.utils.js | 273 ++++----------------------------- 3 files changed, 174 insertions(+), 245 deletions(-) create mode 100644 src/controllers/games/mail.js diff --git a/src/controllers/games/index.js b/src/controllers/games/index.js index 3b4560e..106cdbd 100644 --- a/src/controllers/games/index.js +++ b/src/controllers/games/index.js @@ -10,6 +10,7 @@ import itemRouter from './item'; import dataRouter from './data'; import giftRouter from './gift'; import orderRouter from './order'; +import mailRouter from './mail'; @@ -29,6 +30,7 @@ router.use('/item', itemRouter); router.use('/data', dataRouter); router.use('/gift', giftRouter); router.use('/order', orderRouter); +router.use('/mail', mailRouter); router.use('/', gamesRouter); export default router; diff --git a/src/controllers/games/mail.js b/src/controllers/games/mail.js new file mode 100644 index 0000000..691ff25 --- /dev/null +++ b/src/controllers/games/mail.js @@ -0,0 +1,144 @@ +import {Router} from 'express' +import logger from '../../utils/logger' +import getCustomerReplayModel from '../../models/snoopy/CustomerReplay' +import gameSvrUtil from "../../utils/gamesvr.utils"; +import moment from 'moment'; + +const router = new Router() + +const CustomerReplay = getCustomerReplayModel() +const CustomerReplayTest = getCustomerReplayModel('test') + +// 获取邮件列表 +router.get('/', 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 + } + try { + let gameId = req.query.gameid; + const result = await gameSvrUtil.queryMailList(gameId, req.query.isDev); + if (result.errcode === 0 && result.maillist && result.maillist.length > 0) { + const itemIdArr = []; + for (const record of result.maillist) { + record.sendtime = moment(record.sendtime, "X").format( + "YYYY-MM-DD HH:mm" + ); + record.expiretime = moment(record.expiretime, "X").format( + "YYYY-MM-DD HH:mm" + ); + if (record.attachments && record.attachments.length > 0) { + for (const a of record.attachments) { + itemIdArr.push(a.itemid); + } + } else { + record.attachments = []; + } + } + } + res.json(result); + } catch (err) { + next(err); + } +}) + +// 发送邮件 +router.post('/', 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 body = req.body + const data = body.data; + data.sendtime = moment(data.sendtime).unix(); + data.expiretime = moment(data.expiretime).unix(); + if (data.attachments && data.attachments.length > 0) { + let str = ""; + for (const [index, item] of data.attachments.entries()) { + if (index > 0) str += "|"; + str += `${item.itemid}:${item.itemnum}`; + } + data.attachments = str; + if (data.attachmentStr) { + delete data.attachmentStr; + } + } else { + data.attachments = ""; + } + if (!data.ext) { + data.ext = ""; + } + if (data.mailtype === 2) { + delete data.to; + } + let result = {}; + if (data.mailid) { + result = await gameSvrUtil.updateMail(data, req.body.isDev); + } else { + result = await gameSvrUtil.sendMail(data, req.body.isDev); + } + res.json(result); +}) + + +// 删除邮件配置 +router.delete('/', 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 body = req.body + + try { + if (body.ids) { + let count = 0; + let errcount = 0; + for (let id of body.ids) { + let result = await gameSvrUtil.deleteMail({gameid: body.gameid, mailid: id}, req.body.isDev); + if (result.errcode == 0) { + count ++; + } else { + errcount ++; + } + } + res.json({errcode: 0, errmsg: '', count: count, errcount: errcount}); + } else { + res.json({errcode: 101, errmsg: '无有效邮件!'}) + } + } catch (err) { + next(err) + } +}) + + + +export default router diff --git a/src/utils/gamesvr.utils.js b/src/utils/gamesvr.utils.js index 2e1cd9b..71b896f 100644 --- a/src/utils/gamesvr.utils.js +++ b/src/utils/gamesvr.utils.js @@ -1,7 +1,12 @@ import request from "request"; import Promise from "bluebird"; import logger from "./logger"; +import stringUtil from './string.utils'; +const getMailSvr = function (isDev) { + isDev = stringUtil.isTrue(isDev); + return `https://gamemail${isDev ? '-test' : ''}.kingsome.cn/webapp/index.php`; +} const requestData = function(options) { return new Promise((resolve, reject) => { request(options, (err, response, body) => { @@ -9,6 +14,7 @@ const requestData = function(options) { return reject(err); } if (response && response.statusCode === 200) { + // console.log('server response: ', response); const data = JSON.parse(body); if (data.errcode) { return reject(new Error(data.errmsg)); @@ -29,271 +35,48 @@ const requestData = function(options) { }); }; export default { - queryScrollList(svr) { - const qs = { - c: "RollMsg", - a: "getMsgList" - }; - const options = { - url: svr, - qs: qs, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - updateScroll(svr, data) { - data.c = "RollMsg"; - data.a = "updateMsg"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - addScroll(svr, data) { - data.c = "RollMsg"; - data.a = "addMsg"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - deleteScroll(svr, msgid) { - const qs = { - c: "RollMsg", - a: "removeMsg", - msgid: msgid - }; - const options = { - url: svr, - qs: qs, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, /* begin of mail*/ - queryMailList(svr) { + queryMailList(gameId, isDev) { const qs = { - c: "Mail", - a: "getMailList" + c: "MailMgr", + a: "getMailList", + gameid: gameId }; const options = { - url: svr, + url: getMailSvr(isDev), qs: qs, headers: { "cache-control": "no-cache" } }; return requestData(options); }, - updateMail(svr, data) { - data.c = "Mail"; + sendMail(data, isDev) { + data.c = "MailMgr"; + data.a = "sendMail"; + const options = { + url: getMailSvr(isDev), + qs: data, + headers: { "cache-control": "no-cache" } + }; + return requestData(options); + }, + updateMail(data, isDev) { + data.c = "MailMgr"; data.a = "updateMail"; const options = { - url: svr, + url: getMailSvr(isDev), qs: data, headers: { "cache-control": "no-cache" } }; return requestData(options); }, - addMail(svr, data) { - data.c = "Mail"; - data.a = "addMail"; + deleteMail(data, isDev) { + data.c = "MailMgr"; + data.a = "deleteMail"; const options = { - url: svr, + url: getMailSvr(isDev), qs: data, headers: { "cache-control": "no-cache" } }; return requestData(options); }, - deleteMail(svr, mailid) { - const qs = { - c: "Mail", - a: "deleteMail", - mailid: mailid - }; - const options = { - url: svr, - qs: qs, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - getItemNames(svr, itemIdArr) { - const itemIdStr = itemIdArr.join(","); - const qs = { - c: "Item", - a: "getItemsInfo", - item_ids: itemIdStr - }; - const options = { - url: svr, - qs: qs, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - searchItem(svr, { itemId, itemName, start, limit }) { - const qs = { - c: "Item", - a: "searchItem", - start: start, - limit: limit - }; - if (itemId) qs.item_id = itemId; - if (itemName) qs.item_name = itemName; - const options = { - url: svr, - qs: qs, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - /* end of mail*/ - /* begin of activity*/ - queryActivityList(svr) { - const qs = { - c: "Activity", - a: "getActivityList" - }; - const options = { - url: svr, - qs: qs, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - updateActivity(svr, data) { - data.c = "Activity"; - data.a = "updateActivity"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - /* end of activity*/ - - /* begin of recharge*/ - queryRechargeList(svr, data) { - data.c = "GMTool"; - data.a = "execSql"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - addRecharge(svr, data) { - data.c = "GMTool"; - data.a = "addVirtualOrder"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - - /* end of recharge*/ - - /* begin of users*/ - queryUsersList(svr, data) { - data.c = "User"; - data.a = "searchUser"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - updateUser(svr, data) { - data.c = "Item"; - data.a = "searchUser"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - // deleteUser(svr, accountid) { - // const qs = { - // accountid: accountid - // }; - // const options = { - // url: svr, - // qs: qs, - // headers: { "cache-control": "no-cache" } - // }; - // return requestData(options); - // }, - shutupUser(svr, data) { - data.c = "User"; - data.a = "forbidSpeak"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - forbidUser(svr, data) { - data.c = "User"; - data.a = "forbidAccount"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - disforbidUser(svr, data) { - data.c = "User"; - data.a = "disforbidAccount"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - disforbidSpeak(svr, data) { - data.c = "User"; - data.a = "forbidSpeak"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - queryForbid(svr, data) { - data.c = "User"; - data.a = "searchForbidAccount"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - queryShutup(svr, data) { - data.c = "User"; - data.a = "searchForbidSpeak"; - const options = { - url: svr, - qs: data, - headers: { "cache-control": "no-cache" } - }; - return requestData(options); - }, - - - /* end of users*/ - };