UNPKG

shadowsocks-manager

Version:

A shadowsocks manager tool for multi user and traffic control.

244 lines (239 loc) 9.02 kB
const app = angular.module('app'); app .controller('AdminOrderSettingController', ['$scope', '$state', '$http', ($scope, $state, $http, $filter) => { $scope.setTitle('订单设置'); $scope.setMenuButton('arrow_back', function() { $state.go('admin.settings'); }); $http.get('/api/admin/order').then(success => { $scope.orders = success.data; }); $scope.editOrder = id => { $state.go('admin.editOrder', { id }); }; $scope.setFabButton(() => { $state.go('admin.newOrder'); }); } ]) .controller('AdminNewOrderController', ['$scope', '$state', '$http', '$filter', ($scope, $state, $http, $filter) => { $scope.setTitle('新增订单'); $scope.setMenuButton('arrow_back', 'admin.order'); $scope.typeList = [ { key: '周', value: 2 }, { key: '月', value: 3 }, { key: '天', value: 4 }, { key: '小时', value: 5 }, ]; $scope.order = { orderType: 'normal', type: 2, cycle: 1, alipay: 0, paypal: 0, flow: 100000000, refTime: 0, autoRemove: 0, autoRemoveDelay: 0, autoRemoveDelayStr: '0', portRange: '0', multiServerFlow: 0, changeOrderType: 1, server: null, }; $http.get('/api/admin/server').then(success => { $scope.servers = success.data; }); $http.get('/api/admin/order').then(success => { $scope.orders = success.data.filter(f => { return !f.baseId; }); $scope.order.baseId = $scope.orders[0] ? $scope.orders[0].id : null; }); $scope.order.flowStr = $filter('flowNum2Str')($scope.order.flow); $scope.order.refTimeStr = $filter('timeNum2Str')($scope.order.refTime); $scope.orderServer = !!$scope.order.server; $scope.orderServerObj = {}; $scope.cancel = () => { $state.go('admin.order'); }; $scope.confirm = () => { $scope.order.flow = $filter('flowStr2Num')($scope.order.flowStr); $scope.order.refTime = $filter('timeStr2Num')($scope.order.refTimeStr); $scope.order.autoRemoveDelay = $filter('timeStr2Num')($scope.order.autoRemoveDelayStr); const server = Object.keys($scope.orderServerObj) .map(m => { if($scope.orderServerObj[m]) { return +m; } }) .filter(f => f); $scope.order.server = $scope.orderServer ? server : null; if($scope.order.orderType === 'normal') { $http.post('/api/admin/order', { baseId: 0, name: $scope.order.name, shortComment: $scope.order.shortComment, comment: $scope.order.comment, type: $scope.order.type, cycle: $scope.order.cycle, alipay: $scope.order.alipay, paypal: $scope.order.paypal, flow: $scope.order.flow, refTime: $scope.order.refTime, autoRemove: $scope.order.autoRemove, autoRemoveDelay: $scope.order.autoRemoveDelay, portRange: $scope.order.portRange, multiServerFlow: $scope.order.multiServerFlow, changeOrderType: $scope.order.changeOrderType, server: $scope.order.server, }).then(success => { $state.go('admin.order'); }); } else if($scope.order.orderType === 'flow') { $http.post('/api/admin/order', { baseId: +$scope.order.baseId, name: $scope.order.name, shortComment: $scope.order.shortComment, comment: $scope.order.comment, alipay: $scope.order.alipay, paypal: $scope.order.paypal, flow: $scope.order.flow, }).then(success => { $state.go('admin.order'); }); } }; } ]) .controller('AdminEditOrderController', ['$scope', '$state', '$http', '$stateParams', 'confirmDialog', '$filter', '$q', ($scope, $state, $http, $stateParams, confirmDialog, $filter, $q) => { $scope.setTitle('编辑订单'); $scope.setMenuButton('arrow_back', 'admin.order'); $scope.changeCurrentAccount = { flow: false, server: false, autoRemove: false, }; $scope.typeList = [ {key: '周', value: 2}, {key: '月', value: 3}, {key: '天', value: 4}, {key: '小时', value: 5}, ]; $scope.orderId = $stateParams.id; $scope.orderInfoLoaded = false; $q.all([ $http.get('/api/admin/server'), $http.get(`/api/admin/order/${ $scope.orderId }`), $http.get('/api/admin/order'), ]).then(success => { $scope.orderInfoLoaded = true; $scope.servers = success[0].data; $scope.order = success[1].data; if($scope.order.server) { $scope.order.server = JSON.parse($scope.order.server); } $scope.orders = success[2].data.filter(f => { return !f.baseId; }); $scope.order.flowStr = $filter('flowNum2Str')($scope.order.flow); $scope.order.refTimeStr = $filter('timeNum2Str')($scope.order.refTime); $scope.order.autoRemoveDelayStr = $filter('timeNum2Str')($scope.order.autoRemoveDelay); $scope.orderServer = !!$scope.order.server; $scope.orderServerObj = {}; if($scope.order.server) { $scope.servers.forEach(server => { if($scope.order.server.indexOf(server.id) >= 0) { $scope.orderServerObj[server.id] = true; } else { $scope.orderServerObj[server.id] = false; } }); } }); $scope.cancel = () => { $state.go('admin.order'); }; $scope.delete = () => { confirmDialog.show({ text: '真的要删除此订单吗?', cancel: '取消', confirm: '删除', error: '删除订单失败', useFnErrorMessage: true, fn: function () { return $http.delete(`/api/admin/order/${ $scope.orderId }`).catch(err => { if(err.status === 403) { let errData = '删除订单失败'; if(err.data === 'account with this order exists') { errData = '无法删除订单,请先删除订单对应的账号'; } if(err.data === 'giftcard with this order exists') { errData = '无法删除订单,请先删除订单对应的充值码'; } return Promise.reject(errData); } else { return Promise.reject('网络异常,请稍后再试'); } }); }, }).then(() => { $state.go('admin.order'); }); }; $scope.confirm = () => { $scope.order.flow = $filter('flowStr2Num')($scope.order.flowStr); $scope.order.refTime = $filter('timeStr2Num')($scope.order.refTimeStr); $scope.order.autoRemoveDelay = $filter('timeStr2Num')($scope.order.autoRemoveDelayStr); const server = Object.keys($scope.orderServerObj) .map(m => { if($scope.orderServerObj[m]) { return +m; } }) .filter(f => f); $scope.order.server = $scope.orderServer ? server : null; if(!$scope.order.baseId) { $http.put(`/api/admin/order/${ $scope.orderId }`, { baseId: 0, name: $scope.order.name, shortComment: $scope.order.shortComment, comment: $scope.order.comment, type: $scope.order.type, cycle: $scope.order.cycle, alipay: $scope.order.alipay, paypal: $scope.order.paypal, flow: $scope.order.flow, refTime: $scope.order.refTime, autoRemove: $scope.order.autoRemove, autoRemoveDelay: $scope.order.autoRemoveDelay, portRange: $scope.order.portRange, multiServerFlow: $scope.order.multiServerFlow, changeOrderType: $scope.order.changeOrderType, server: $scope.order.server, changeCurrentAccount: $scope.changeCurrentAccount, }).then(success => { $state.go('admin.order'); }); } else { $http.put(`/api/admin/order/${ $scope.orderId }`, { baseId: +$scope.order.baseId, name: $scope.order.name, shortComment: $scope.order.shortComment, comment: $scope.order.comment, type: $scope.order.type, cycle: $scope.order.cycle, alipay: $scope.order.alipay, paypal: $scope.order.paypal, flow: $scope.order.flow, refTime: $scope.order.refTime, autoRemove: $scope.order.autoRemove, autoRemoveDelay: $scope.order.autoRemoveDelay, portRange: $scope.order.portRange, multiServerFlow: $scope.order.multiServerFlow, changeOrderType: $scope.order.changeOrderType, server: $scope.order.server, changeCurrentAccount: $scope.changeCurrentAccount, }).then(success => { $state.go('admin.order'); }); } }; } ]) ;