浏览代码

偏好设置对应登录的操作

caiaolin 8 年之前
父节点
当前提交
070573464f

+ 2 - 0
modules/common/base/base_controller.js

@@ -37,6 +37,8 @@ class BaseController {
      * @return {void}
      */
     init(request, response, next) {
+        response.locals.title = 'test';
+
         // moment工具
         response.locals.moment = Moment;
 

+ 1 - 1
modules/common/helper/mongoose_helper.js

@@ -53,7 +53,7 @@ class MongooseHelper {
         let self = this;
         let limit = 0;
         let skip = 0;
-        if (Object.keys(option).length > 0) {
+        if (option !== null && Object.keys(option).length > 0) {
             limit = option.pageSize !== undefined ? option.pageSize : limit;
             skip = option.offset !== undefined ? option.offset : skip;
         }

+ 8 - 1
modules/users/controllers/boot_controller.js

@@ -17,8 +17,15 @@ class BootController extends BaseController {
      * @param {object} response
      * @return {void}
      */
-    boot(request, response) {
+    async boot(request, response) {
         let userModel = new UserModel();
+        let sessionUser = request.session.sessionUser;
+        // 判断是否已填写信息
+        let userData = await userModel.findDataByCondition({_id: sessionUser.id});
+        if (userData.company !== '' && userData.real_name !== '') {
+            return response.redirect('/pm');
+        }
+
         let renderData = {
             provinceList: userModel.province,
             companyTypeList: userModel.companyType,

+ 8 - 5
modules/users/controllers/login_controller.js

@@ -6,7 +6,7 @@
  * @version
  */
 import UserModel from "../models/user_model";
-
+import SettingModel from "../models/setting_model";
 
 class LoginController {
 
@@ -35,7 +35,7 @@ class LoginController {
     async login(request, response) {
         let account = request.body.account;
         let password = request.body.pw;
-        let userExist = true;
+        let preferenceSetting = {};
 
         try {
             // 调用接口验证登录信息
@@ -60,8 +60,11 @@ class LoginController {
             };
             request.session.sessionUser = sessionUser;
             // 记录用户数据到数据库
-            let [result, exist] = await userModel.markUser(sessionUser, request);
-            userExist = exist;
+            let result = await userModel.markUser(sessionUser, request);
+
+            // 获取偏好设置
+            let settingModel = new SettingModel();
+            preferenceSetting = await settingModel.getPreferenceSetting(request.session.sessionUser.id);
 
             if (!result) {
                 throw '标记用户信息失败!';
@@ -71,7 +74,7 @@ class LoginController {
             console.log(error);
             return response.json({error: 1, msg: error});
         }
-        response.json({error: 0, msg: '', exist: userExist ? 1 : 0});
+        response.json({error: 0, msg: '', login_ask: preferenceSetting.login_ask});
     }
 
 }

+ 32 - 2
modules/users/controllers/user_controller.js

@@ -128,8 +128,7 @@ class UserController extends BaseController {
         try {
             // 获取配置信息
             let settingModel = new SettingModel();
-            preferenceSetting = await settingModel.getSetting(sessionUserData.id, SettingType.PREFERENCE);
-
+            preferenceSetting = await settingModel.getPreferenceSetting(sessionUserData.id);
 
         } catch(error) {
             console.log(error);
@@ -141,6 +140,37 @@ class UserController extends BaseController {
         response.render('users/html/user-set', renderData);
     }
 
+    /**
+     * 保存偏好设置
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {void}
+     */
+    async savePreferences(request, response) {
+        let loginAsk = request.body.login_ask;
+        loginAsk = parseInt(loginAsk);
+        let selectVersion = request.body.select_version;
+        selectVersion = parseInt(selectVersion);
+        let sessionUserData = request.session.sessionUser;
+
+        try {
+            let data = {
+                login_ask: loginAsk,
+                select_version: loginAsk === 0 ? selectVersion : -1
+            };
+            let settingModel = new SettingModel();
+            let result = await settingModel.save(sessionUserData.id, SettingType.PREFERENCE, data);
+            if (!result) {
+                throw '保存失败';
+            }
+        } catch (error) {
+            console.log(error);
+        }
+
+        response.redirect(request.headers.referer);
+    }
+
 }
 
 export default UserController;

+ 95 - 2
modules/users/models/setting_model.js

@@ -6,11 +6,42 @@
  * @version
  */
 import BaseModel from "../../common/base/base_model";
+import SettingType from "../../common/const/setting_type_const";
 import SettingSchema from "./schema/setting";
 
 class SettingModel extends BaseModel {
 
     /**
+     * 偏好设置默认
+     *
+     * @var {Object}
+     */
+    preferenceDefault = {
+        login_ask: 1,
+        select_version: -1
+    };
+
+    /**
+     * 设置场景
+     *
+     * @param {string} scene
+     * @return {void}
+     */
+    setScene(scene = '') {
+        switch (scene) {
+            // 新增数据的验证规则
+            case 'add':
+                this.model.schema.path('type').required(true);
+                this.model.schema.path('data').required(true);
+                this.model.schema.path('user_id').required(true);
+                break;
+            case 'update':
+                this.model.schema.path('data').required(true);
+                break;
+        }
+    }
+
+    /**
      * 构造函数
      */
     constructor() {
@@ -24,7 +55,7 @@ class SettingModel extends BaseModel {
      *
      * @param {String} userId
      * @param {Number} type
-     * @return Promise
+     * @return {Promise}
      */
     async getSetting(userId, type) {
         let condition = {
@@ -33,7 +64,69 @@ class SettingModel extends BaseModel {
         };
 
         let settingData = await this.findDataByCondition(condition);
-        return settingData.length > 0 ? settingData : [];
+        return settingData !== null && Object.keys(settingData).length > 0 ?
+            settingData.data : {};
+    }
+
+    /**
+     * 保存设置
+     *
+     * @param {String} userId
+     * @param {Number} type
+     * @param {Object} data
+     * @return {Promise}
+     */
+    async save(userId, type, data) {
+        let result = false;
+        if (typeof data === 'string' && data === '') {
+            return result;
+        }
+        if (typeof data === 'object' && Object.keys(data).length <= 0) {
+            return result;
+        }
+
+        // 查找是否有对应数据
+        let condition = {
+            user_id: userId,
+            type: type
+        };
+        let counter = await this.db.count(condition);
+        let saveData = {};
+
+        if (counter > 0) {
+            // 存在则更新
+            saveData = {
+                data: data
+            };
+            this.setScene('add');
+            let updateResult = await this.db.update(condition, saveData);
+            result = updateResult.ok === 1;
+        } else {
+            saveData = {
+                user_id: userId,
+                type: type,
+                data: data,
+                create_time: new Date().getTime()
+            };
+            this.setScene('update');
+            let insertResult = await this.db.create(saveData);
+            result = Object.keys(insertResult).length > 0;
+        }
+
+        return result;
+    }
+
+    /**
+     * 获取个人偏好设置
+     *
+     * @param {String} userId
+     * @return {Promise}
+     */
+    async getPreferenceSetting(userId) {
+        let setting = await this.getSetting(userId, SettingType.PREFERENCE);
+        setting = Object.keys(setting).length <= 0 ? this.preferenceDefault : setting;
+
+        return setting;
     }
 
 }

+ 8 - 10
modules/users/models/user_model.js

@@ -87,20 +87,18 @@ class UserModel extends BaseModel {
         let userDataFromDb = await this.findDataByName(userData.username);
         let result = false;
 
-        // 信息是否补全
-        let info = false;
-        if (userDataFromDb.length <= 0) {
+        if (userDataFromDb === null) {
             // 不存在用户则入库
             result = await this.addUser(userData);
+            userDataFromDb = result;
         } else {
-            info = true;
             // 存在则新增登录信息
             let logModel = new LogModel();
             result = await logModel.addLoginLog(userDataFromDb._id, request);
         }
         request.session.sessionUser.id = userDataFromDb._id;
 
-        return [result, info];
+        return result;
     }
 
     /**
@@ -111,10 +109,10 @@ class UserModel extends BaseModel {
     setScene(scene = '') {
         switch (scene) {
             case 'saveInfo':
-                this.db.model.schema.path('real_name').required(true);
-                this.db.model.schema.path('company').required(true);
-                this.db.model.schema.path('province').required(true);
-                this.db.model.schema.path('area').required(true);
+                this.model.schema.path('real_name').required(true);
+                this.model.schema.path('company').required(true);
+                this.model.schema.path('province').required(true);
+                this.model.schema.path('area').required(true);
                 break;
         }
     }
@@ -126,7 +124,7 @@ class UserModel extends BaseModel {
      * @return {object}
      */
     findDataByName(username) {
-        return this.db.model.find({username: username});
+        return this.db.findOne({username: username});
     }
 
     /**

+ 1 - 0
modules/users/routes/user_route.js

@@ -17,6 +17,7 @@ module.exports = function (app) {
     router.get('/info', userController.init, userController.info);
     router.get('/safe', userController.init, userController.safe);
     router.get('/preferences', userController.init, userController.preferences);
+    router.post('/save-preferences', userController.init, userController.savePreferences);
     router.post('/info', userController.init, userController.saveData);
     app.use('/user',router);
 };

+ 10 - 8
web/users/html/user-set.html

@@ -39,17 +39,19 @@
                 <div class="col-lg-10">
                     <div class="col-lg-4">
                         <legend class="my-3">偏好设置</legend>
-                        <from>
+                        <form method="post" action="/user/save-preferences">
                             <div class="form-group">
                                 <label class="form-control-label">登录时选择版本</label>
                                 <div>
                                     <label class="custom-control custom-radio">
-                                      <input id="radio1" name="radio" type="radio" class="custom-control-input">
+                                      <input name="login_ask" type="radio" class="custom-control-input" value="1"
+                                        <% if(preferenceSetting.login_ask === 1) { %>checked="checked" <% } %>>
                                       <span class="custom-control-indicator"></span>
                                       <span class="custom-control-description">每次询问</span>
                                     </label>
                                     <label class="custom-control custom-radio">
-                                      <input id="radio2" name="radio" type="radio" class="custom-control-input">
+                                      <input name="login_ask" type="radio" class="custom-control-input" value="0"
+                                        <% if(preferenceSetting.login_ask === 0) { %>checked="checked" <% } %>>
                                       <span class="custom-control-indicator"></span>
                                       <span class="custom-control-description">指定版本</span>
                                     </label>
@@ -57,15 +59,15 @@
                             </div>
                             <div class="form-group">
                                 <label class="form-control-label">指定版本</label>
-                                <select class="form-control">
-                                  <option>广东版(专业版)</option>
-                                  <option>重庆版(免费版)</option>
+                                <select class="form-control" name="select_version">
+                                  <option value="1" <% if(preferenceSetting.select_version === 1) { %>selected="selected" <% } %>>广东版(专业版)</option>
+                                  <option value="2" <% if(preferenceSetting.select_version === 2) { %>selected="selected" <% } %>>重庆版(免费版)</option>
                                 </select>
                             </div>
                             <div class="form-group mt-3">
-                                <button class="btn btn-primary">确认</button>
+                                <button class="btn btn-primary" type="submit">确认</button>
                             </div>
-                        </from>
+                        </form>
                     </div>
                 </div>
             </div>

+ 1 - 1
web/users/js/login.js

@@ -21,7 +21,7 @@ $(document).ready(function () {
             data: {"account": account, "pw": pw},
             success: function (response) {
                 if (response.error === 0) {
-                    if (response.exist == 1) {
+                    if (response.login_ask === 0) {
                         location.href = '/pm';
                     } else {
                         $('#ver').modal('show');