From f06c09456701fdcf50d66f74e467cee0a37adc21 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Thu, 16 Nov 2017 18:06:59 +0800 Subject: [PATCH] feat(vip): admin can reset user`s vip data status --- modules/core/client/app/trans-string-en.js | 3 ++ modules/core/client/app/trans-string-zh.js | 3 ++ .../admin/user.client.controller.js | 23 +++++++++++++++ .../client/services/users.client.service.js | 10 +++++++ .../views/admin/view-user.client.view.html | 3 ++ .../controllers/admin.server.controller.js | 29 +++++++++++++++++++ .../server/policies/admin.server.policy.js | 3 +- .../server/routes/admin.server.routes.js | 2 ++ 8 files changed, 75 insertions(+), 1 deletion(-) diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index f3454caf..5ac8b7b1 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -466,6 +466,8 @@ SET_IMAGE_FAILED: 'set user image failed', SET_VIP_MONTHS_SUCCESSFULLY: 'update user vip data successfully', SET_VIP_MONTHS_FAILED: 'update user vip data failed', + RESET_VIP_DATA_SUCCESSFULLY: 'reset user vip data successfully', + RESET_VIP_DATA_FAILED: 'reset user vip data failed', SCORE_NUMBER: 'Score number', SCORE_TITLE: 'Edit user score', @@ -626,6 +628,7 @@ PICTURE: 'Profile picture', RESET_DEFAULT_PICTURE: 'Reset to default picture', ADD_VIP_MONTHS: '+ VIP a month', + RESET_VIP_DATA: 'Reset VIP Data', USERNAME: 'Username', DISPLAY_NAME: 'Display name', HIDE_MORE_DETAIL: 'Hide more account detail info', diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 0d47c1e3..b69b18af 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -466,6 +466,8 @@ SET_IMAGE_FAILED: '用户帐号图片修改失败', SET_VIP_MONTHS_SUCCESSFULLY: '更新用户vip状态数据成功', SET_VIP_MONTHS_FAILED: '更新用户vip状态数据失败', + RESET_VIP_DATA_SUCCESSFULLY: '重置用户vip状态数据成功', + RESET_VIP_DATA_FAILED: '重置用户vip状态数据失败', SCORE_NUMBER: '积分数', SCORE_TITLE: '修改积分', @@ -626,6 +628,7 @@ PICTURE: '头像', RESET_DEFAULT_PICTURE: '重置为默认图片', ADD_VIP_MONTHS: '+ VIP一个月', + RESET_VIP_DATA: '重置 VIP 数据', USERNAME: '用户名', DISPLAY_NAME: '显示昵称', HIDE_MORE_DETAIL: '隐藏更多的帐户详细信息', diff --git a/modules/users/client/controllers/admin/user.client.controller.js b/modules/users/client/controllers/admin/user.client.controller.js index 19106245..c8c8955d 100644 --- a/modules/users/client/controllers/admin/user.client.controller.js +++ b/modules/users/client/controllers/admin/user.client.controller.js @@ -154,6 +154,29 @@ } }; + /** + * resetVIPData + */ + vm.resetVIPData = function () { + var user = vm.user; + AdminService.resetVIPData({ + userId: user._id + }) + .then(onSuccess) + .catch(onError); + + function onSuccess(response) { + vm.user = response; + mtDebug.info(response); + + NotifycationService.showSuccessNotify('RESET_VIP_DATA_SUCCESSFULLY'); + } + + function onError(response) { + NotifycationService.showErrorNotify(response.data.message, 'RESET_VIP_DATA_FAILED'); + } + }; + /** * showMakerGroup * @param evt diff --git a/modules/users/client/services/users.client.service.js b/modules/users/client/services/users.client.service.js index 4d1059f8..77668eb1 100644 --- a/modules/users/client/services/users.client.service.js +++ b/modules/users/client/services/users.client.service.js @@ -166,6 +166,13 @@ userId: '@userId', months: '@months' } + }, + resetUserVIPData: { + method: 'PUT', + url: '/api/users/:userId/VIPMonths/reset', + params: { + userId: '@userId' + } } }); @@ -193,6 +200,9 @@ }, addVIPMonths: function (params) { return this.updateUserVIPMonths(params).$promise; + }, + resetVIPData: function (params) { + return this.resetUserVIPData(params).$promise; } }); diff --git a/modules/users/client/views/admin/view-user.client.view.html b/modules/users/client/views/admin/view-user.client.view.html index beeef2a7..8a923937 100644 --- a/modules/users/client/views/admin/view-user.client.view.html +++ b/modules/users/client/views/admin/view-user.client.view.html @@ -43,6 +43,9 @@ + diff --git a/modules/users/server/controllers/admin.server.controller.js b/modules/users/server/controllers/admin.server.controller.js index aede5f19..f74528c0 100644 --- a/modules/users/server/controllers/admin.server.controller.js +++ b/modules/users/server/controllers/admin.server.controller.js @@ -372,6 +372,7 @@ exports.addVIPMonths = function (req, res) { //create trace log traceLogCreate(req, traceConfig.action.AdminUpdateUserVIPData, { user: user._id, + reset: false, months: months }); }); @@ -382,6 +383,34 @@ exports.addVIPMonths = function (req, res) { } }; +/** + * resetVIPData + * @param req + * @param res + */ +exports.resetVIPData = function (req, res) { + var user = req.model; + + user.vip_start_at = ''; + user.vip_end_at = ''; + + user.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } + + res.json(user); + + //create trace log + traceLogCreate(req, traceConfig.action.AdminUpdateUserVIPData, { + user: user._id, + reset: true + }); + }); +}; + /** * list user seeding torrents * @param req diff --git a/modules/users/server/policies/admin.server.policy.js b/modules/users/server/policies/admin.server.policy.js index aff70fe0..b5859830 100644 --- a/modules/users/server/policies/admin.server.policy.js +++ b/modules/users/server/policies/admin.server.policy.js @@ -18,7 +18,8 @@ exports.invokeRolesPolicies = function () { roles: ['admin'], allows: [ {resources: '/api/users/:userId/role', permissions: '*'}, - {resources: '/api/users/:userId/VIPMonths/:months', permissions: '*'} + {resources: '/api/users/:userId/VIPMonths/:months', permissions: '*'}, + {resources: '/api/users/:userId/VIPMonths/reset', permissions: '*'} ] }, { diff --git a/modules/users/server/routes/admin.server.routes.js b/modules/users/server/routes/admin.server.routes.js index 0ffe7ca5..12c7cb49 100644 --- a/modules/users/server/routes/admin.server.routes.js +++ b/modules/users/server/routes/admin.server.routes.js @@ -43,6 +43,8 @@ module.exports = function (app) { app.route('/api/users/:userId/resetImage').all(adminPolicy.isAllowed) .put(admin.resetUserProfileImage); + app.route('/api/users/:userId/VIPMonths/reset').all(adminPolicy.isAllowed) + .put(admin.resetVIPData); app.route('/api/users/:userId/VIPMonths/:months').all(adminPolicy.isAllowed) .put(admin.addVIPMonths);