diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index 3b1a5ee9..03034343 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -317,6 +317,10 @@ SET_STATUS_SUCCESSFULLY: 'set user status successfully', SET_STATUS_FAILED: 'set user status failed', + SCORE_NUMBER: 'Score number', + SET_SCORE_SUCCESSFULLY: 'set user score successfully', + SET_SCORE_FAILED: 'set user score failed', + //vip,rules views BUTTON_DNATE: 'Donate Vip', @@ -326,6 +330,7 @@ BUTTON_SELECT_PICTURE: 'Select Picture', BUTTON_USE_THIS_PICTURE: 'Use This Picture', BUTTON_CANCEL: 'Cancel', + BUTTON_SET: 'Set', BUTTON_COMPLETE: 'Complete', BUTTON_SAVE_PASSWORD: 'Save Password', CAPTION_CURRENT_PASSWORD: 'Current Password', diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 89a1d53e..571e1407 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -317,6 +317,10 @@ SET_STATUS_SUCCESSFULLY: '用户帐号状态设置成功', SET_STATUS_FAILED: '用户帐号状态设置失败', + SCORE_NUMBER: '积分数', + SET_SCORE_SUCCESSFULLY: '用户积分设置成功', + SET_SCORE_FAILED: '用户积分设置失败', + //vip,rules views BUTTON_DNATE: '捐 赠 Vip', @@ -326,6 +330,7 @@ BUTTON_SELECT_PICTURE: '选择图片', BUTTON_USE_THIS_PICTURE: '应用图片', BUTTON_CANCEL: '取消', + BUTTON_SET: '设置', BUTTON_COMPLETE: '完成', BUTTON_SAVE_PASSWORD: '保存密码', CAPTION_CURRENT_PASSWORD: '当前密码', diff --git a/modules/core/client/less/mt.less b/modules/core/client/less/mt.less index c19893b5..af9aafcd 100644 --- a/modules/core/client/less/mt.less +++ b/modules/core/client/less/mt.less @@ -914,3 +914,16 @@ body { color: #f00 !important; } } + +.set-score-popover { + max-width: 250px; + max-height: 150px; + width: 250px; + height: auto; +} + +.set-score-popover-form { + input { + max-width: 150px; + } +} diff --git a/modules/users/client/controllers/admin/user.client.controller.js b/modules/users/client/controllers/admin/user.client.controller.js index cee955ca..79452889 100644 --- a/modules/users/client/controllers/admin/user.client.controller.js +++ b/modules/users/client/controllers/admin/user.client.controller.js @@ -19,6 +19,12 @@ vm.update = update; vm.isContextUserSelf = isContextUserSelf; + vm.setUserScorePopover = { + title: 'Edit user score', + templateUrl: 'set-user-score.html', + isOpen: false + }; + /** * remove * @param user @@ -117,5 +123,34 @@ NotifycationService.showErrorNotify(response.data.message, 'SET_STATUS_FAILED'); } }; + + /** + * setUserScore + */ + vm.setUserScore = function () { + if (isNaN(vm.setUserScorePopover.number)) { + return false; + } else { + var user = vm.user; + AdminService.setUserScore({ + userId: user._id, + userScore: vm.setUserScorePopover.number + }) + .then(onSetRoleSuccess) + .catch(onSetRoleError); + + vm.setUserScorePopover.isOpen = false; + } + + function onSetRoleSuccess(response) { + vm.user = response; + + NotifycationService.showSuccessNotify('SET_SCORE_SUCCESSFULLY'); + } + + function onSetRoleError(response) { + NotifycationService.showErrorNotify(response.data.message, 'SET_SCORE_FAILED'); + } + }; } }()); diff --git a/modules/users/client/services/users.client.service.js b/modules/users/client/services/users.client.service.js index 4d8f470f..6d1095d2 100644 --- a/modules/users/client/services/users.client.service.js +++ b/modules/users/client/services/users.client.service.js @@ -106,6 +106,14 @@ userId: '@userId', userStatus: '@userStatus' } + }, + updateUserScore: { + method: 'POST', + url: '/api/users/:userId/score', + params: { + userId: '@userId', + userScore: '@userScore' + } } }); @@ -115,6 +123,9 @@ }, setUserStatus: function (params) { return this.updateUserStatus(params).$promise; + }, + setUserScore: function (params) { + return this.updateUserScore(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 46172066..a0e06dc3 100644 --- a/modules/users/client/views/admin/view-user.client.view.html +++ b/modules/users/client/views/admin/view-user.client.view.html @@ -57,6 +57,7 @@
{{ 'STATUS_FIELD.STATUS' | translate}}:
{{ 'STATUS_FIELD.' + vm.user.status.toUpperCase() | translate }} +
+
{{ 'STATUS_FIELD.DOWNLOADED' | translate}}:
- {{ vm.user.downloaded | bytes:2 }} + {{ vm.user.downloaded | bytes:2 }} + +
+ +
{{ 'STATUS_FIELD.RATIO' | translate}}:
{{ vm.user.ratio }}
{{ 'STATUS_FIELD.SCORE' | translate}}:
-
{{ vm.user.score }}
+
+ {{ vm.user.score }} + +
+ +
+
  • @@ -138,4 +166,14 @@ + + + diff --git a/modules/users/server/controllers/admin.server.controller.js b/modules/users/server/controllers/admin.server.controller.js index a390a070..21c4f422 100644 --- a/modules/users/server/controllers/admin.server.controller.js +++ b/modules/users/server/controllers/admin.server.controller.js @@ -114,6 +114,26 @@ exports.updateUserStatus = function (req, res) { }); }; +/** + * updateUserScore + * @param req + * @param res + */ +exports.updateUserScore = function (req, res) { + var user = req.model; + + user.score = user.score + parseInt(req.body.userScore, 10); + user.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } + + res.json(user); + }); +}; + /** * User middleware */ diff --git a/modules/users/server/policies/admin.server.policy.js b/modules/users/server/policies/admin.server.policy.js index 9a7c55d4..576c5418 100644 --- a/modules/users/server/policies/admin.server.policy.js +++ b/modules/users/server/policies/admin.server.policy.js @@ -25,7 +25,8 @@ exports.invokeRolesPolicies = function () { allows: [ {resources: '/api/users', permissions: '*'}, {resources: '/api/users/:userId', permissions: '*'}, - {resources: '/api/users/:userId/status', permissions: '*'} + {resources: '/api/users/:userId/status', permissions: '*'}, + {resources: '/api/users/:userId/score', permissions: '*'} ] } ] diff --git a/modules/users/server/routes/admin.server.routes.js b/modules/users/server/routes/admin.server.routes.js index 092d3fc2..f8da86b1 100644 --- a/modules/users/server/routes/admin.server.routes.js +++ b/modules/users/server/routes/admin.server.routes.js @@ -25,6 +25,8 @@ module.exports = function (app) { .post(adminPolicy.isAllowed, admin.updateUserRole); app.route('/api/users/:userId/status') .post(adminPolicy.isAllowed, admin.updateUserStatus); + app.route('/api/users/:userId/score') + .post(adminPolicy.isAllowed, admin.updateUserScore); // Finish by binding the user middleware app.param('userId', admin.userByID);