浏览代码

Merge branch 'master' of http://192.168.1.12:3000/SmartCost/ConstructionCost

TonyKang 8 年之前
父节点
当前提交
a0a1c3bcea

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

@@ -21,7 +21,8 @@ class BootController {
         let renderData = {
             provinceList: userModel.province,
             companyTypeList: userModel.companyType,
-            companyScaleList: userModel.companyScale
+            companyScaleList: userModel.companyScale,
+            area: request.params.area
         };
         response.render('users/html/login-infoinput', renderData);
     }

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

@@ -41,23 +41,20 @@ class UserController {
      */
     async saveData(request, response) {
         try {
-            if (request.body.real_name === undefined || request.body.real_name === '' ||
-                request.body.province === undefined || request.body.province === '' ||
-                request.body.company === undefined || request.body.company === '') {
-                throw '缺少数据';
-            }
             let updateData = {
                 real_name: request.body.real_name,
                 province: request.body.province,
                 company: request.body.company,
                 company_type: request.body.company_type,
-                company_scale: request.body.company_scale
+                company_scale: request.body.company_scale,
+                area: request.body.area
             };
             let sessionUser = request.session.sessionUser;
-
-            let userModel = new UserModel();
+            // 切换验证场景
+            let userModel = new UserModel('saveInfo');
             let condition = {email: sessionUser.email};
             let result = await userModel.updateUser(condition, updateData);
+
             if (result.ok !== 1) {
                 throw '用户数据保存失败';
             }

+ 73 - 19
modules/users/models/user_model.js

@@ -19,24 +19,77 @@ class UserModel {
     model = null;
 
     /**
+     * 默认结构
+     *
+     * @var {object}
+     */
+    defaultSchema = {
+        username: {
+            type: String,
+            required: true
+        },
+        email: {
+            type: String,
+            required: true
+        },
+        mobile: {
+            type: String,
+            required: true,
+            validate: {
+                validator: function(v) {
+                    return /^1([34578]\d)\d{8}$/.test(v);
+                },
+                message: '{VALUE} is not a valid phone number!'
+            },
+        }
+    };
+
+    /**
+     * 保存用户详情结构
+     *
+     * @var {object}
+     */
+    saveInfoSchema = {
+        real_name: {
+            type: String,
+            required: true
+        },
+        company: {
+            type: String,
+            required: true
+        },
+        province: {
+            type: String,
+            required: true
+        },
+        area: {
+            type: Number,
+            required: true
+        },
+        company_type: Number,
+        company_scale: Number,
+        last_login: Number,
+        create_time: Number
+    };
+
+    /**
      * 构造函数
      *
+     * @param {string} scene
      * @return {void}
      */
-    constructor() {
+    constructor(scene = 'default') {
         let umDB = dbm.getCfgConnection("scConstruct");
-        let usersSchema = new mongoose.Schema({
-            username: String,
-            email: String,
-            mobile: String,
-            real_name: String,
-            company: String,
-            province: Number,
-            company_type: Number,
-            company_scale: Number,
-            last_login: Number,
-            create_time: Number
-        });
+        let schema = {};
+        switch (scene) {
+            case 'saveInfo':
+                schema = this.saveInfoSchema;
+                break;
+            default:
+                schema = this.defaultSchema;
+                break;
+        }
+        let usersSchema = new mongoose.Schema(schema);
         this.model = umDB.model('users', usersSchema);
     }
 
@@ -182,19 +235,20 @@ class UserModel {
         if (Object.keys(condition).length <= 0 || Object.keys(updateData).length <= 0) {
             return null;
         }
-        let self = this;
+        let userModel = new this.model();
         return new Promise(function(resolve, reject) {
-            self.model.update(condition, {$set: updateData}, function(error, result) {
+            let validationError = userModel.validateSync();
+            if (validationError) {
+                reject(validationError);
+            }
+            userModel.update(condition, {$set: updateData}, function(error, result) {
                 if (error) {
-                    reject(false);
+                    reject(error);
                 } else {
                     resolve(result);
                 }
             });
         });
-
-
-
     }
 
 }

+ 1 - 1
modules/users/routes/boot_route.js

@@ -13,6 +13,6 @@ let BootController = require('../controllers/boot_controller');
 let bootController = new BootController();
 
 // 引导页面
-router.get('/:province', bootController.boot);
+router.get('/:area', bootController.boot);
 
 module.exports = router;

+ 1 - 0
web/users/html/login-infoinput.html

@@ -61,6 +61,7 @@
                         </div>
                     </div>
                     <div class="form-group">
+                        <input type="hidden" name="area" value="<%= area %>"/>
                         <button class="btn btn-primary btn-block" type="submit">下一步</button>
                     </div>
                 </div>

+ 2 - 2
web/users/html/login.html

@@ -53,14 +53,14 @@
                             <div class="card card-block">
                                 <h3 class="card-title">重庆版免费版</h3>
                                 <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-                                <a class="btn btn-primary" href="/boot/cq">开始使用</a>
+                                <a class="btn btn-primary" href="/boot/1">开始使用</a>
                             </div>
                         </div>
                         <div class="col-sm-6">
                             <div class="card card-block">
                                 <h3 class="card-title">广东版免费版</h3>
                                 <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-                                <a class="btn btn-primary" href="/boot/gd">开始使用</a>
+                                <a class="btn btn-primary" href="/boot/2">开始使用</a>
                             </div>
                         </div>
                     </div>