shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
111 lines (96 loc) • 3.78 kB
JavaScript
;
const knex = appRequire('init/knex').knex;
const config = appRequire('services/config').all();
const getOrders = async () => {
return knex('webgui_order').where({});
};
const getOrdersAndAccountNumber = async () => {
const orders = await knex('webgui_order').select(['webgui_order.id as id', 'webgui_order.baseId as baseId', 'webgui_order.name as name', 'webgui_order.shortComment as shortComment', 'webgui_order.comment as comment', 'webgui_order.type as type', 'webgui_order.cycle as cycle', 'webgui_order.alipay as alipay', 'webgui_order.paypal as paypal', 'webgui_order.flow as flow', 'webgui_order.refTime as refTime', 'webgui_order.server as server', 'webgui_order.autoRemove as autoRemove', 'webgui_order.autoRemoveDelay as autoRemoveDelay', 'webgui_order.portRange as portRange', 'webgui_order.multiServerFlow as multiServerFlow', 'webgui_order.changeOrderType as changeOrderType', 'webgui_order.autoRemove as autoRemove', knex.raw('count(account_plugin.id) as accountNumber')]).leftJoin('account_plugin', 'account_plugin.orderId', 'webgui_order.id').groupBy('webgui_order.id');
return orders;
};
const getOneOrder = async orderId => {
const order = await knex('webgui_order').where({
id: orderId
}).then(s => s[0]);
if (!order) {
return Promise.reject('order not found');
}
return order;
};
const getOneOrderByAccountId = async accountId => {
const order = await knex('webgui_order').select(['webgui_order.id as id', 'webgui_order.changeOrderType as changeOrderType']).leftJoin('account_plugin', 'account_plugin.orderId', 'webgui_order.id').where({
'account_plugin.id': accountId
}).then(s => s[0]);
return order;
};
const newOrder = async data => {
await knex('webgui_order').insert({
baseId: data.baseId,
name: data.name,
shortComment: data.shortComment,
comment: data.comment,
type: data.type,
cycle: data.cycle,
alipay: data.alipay,
paypal: data.paypal,
flow: data.flow,
refTime: data.refTime,
server: data.server ? JSON.stringify(data.server) : null,
autoRemove: data.autoRemove,
autoRemoveDelay: data.autoRemoveDelay,
portRange: data.portRange,
multiServerFlow: data.multiServerFlow,
changeOrderType: data.changeOrderType
});
return;
};
const editOrder = async data => {
await knex('webgui_order').update({
baseId: data.baseId,
name: data.name,
shortComment: data.shortComment,
comment: data.comment,
type: data.type,
cycle: data.cycle,
alipay: data.alipay,
paypal: data.paypal,
flow: data.flow,
refTime: data.refTime,
server: data.server ? JSON.stringify(data.server) : null,
autoRemove: data.autoRemove,
autoRemoveDelay: data.autoRemoveDelay,
portRange: data.portRange,
multiServerFlow: data.multiServerFlow,
changeOrderType: data.changeOrderType
}).where({
id: data.id
});
return;
};
const deleteOrder = async orderId => {
const hasAccount = await knex('account_plugin').where({
orderId
});
if (hasAccount.length) {
return Promise.reject('account with this order exists');
}
const isGiftCardOn = config.plugins.giftcard && config.plugins.giftcard.use;
const hasGiftcard = isGiftCardOn ? await knex('giftcard').where({
orderType: orderId,
status: 'AVAILABLE'
}) : [];
if (hasGiftcard.length) {
return Promise.reject('giftcard with this order exists');
}
await knex('webgui_order').delete().where({
id: orderId
});
return;
};
exports.getOrders = getOrders;
exports.getOrdersAndAccountNumber = getOrdersAndAccountNumber;
exports.getOneOrder = getOneOrder;
exports.newOrder = newOrder;
exports.editOrder = editOrder;
exports.deleteOrder = deleteOrder;
exports.getOneOrderByAccountId = getOneOrderByAccountId;