增加邮件相关功能
This commit is contained in:
parent
625d15c0c9
commit
b61a2d76b5
@ -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;
|
||||
|
144
src/controllers/games/mail.js
Normal file
144
src/controllers/games/mail.js
Normal 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
|
@ -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*/
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user