增加邮件相关功能

This commit is contained in:
zhl 2020-05-18 18:49:25 +08:00
parent 625d15c0c9
commit b61a2d76b5
3 changed files with 174 additions and 245 deletions

View File

@ -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;

View File

@ -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

View File

@ -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*/
};