Browse Source

set user name unique

Starink 6 years ago
parent
commit
df448d7ad1
3 changed files with 21 additions and 7 deletions
  1. 6 4
      server/controller/user.js
  2. 8 2
      server/model/user.js
  3. 7 1
      server/schema/user.js

+ 6 - 4
server/controller/user.js

@@ -66,13 +66,15 @@ class UserController {
           ctx.body = Response.failed('验证码错误');
         }else{
           const hashPassword = bcrypt.hashSync(data.password, 10);
-          const user = await userModel.create(data.name, hashPassword, data.phone, data.email);
+          const result = await userModel.create(data.name, hashPassword, data.phone, data.email);
           ctx.session.verification_phone = undefined;
           ctx.session.verification_code = undefined;
-          if (user) {
-            ctx.body = Response.success({name: user.name});
-          } else {
+          if (result.code === 0) {
+            ctx.body = Response.success({name: result.data.name});
+          } else if(result.code === -2){
             ctx.body = Response.failed('此手机号已注册');
+          } else if(result.code === -1){
+            ctx.body = Response.failed('此用户名已使用');
           }
         }
     }

+ 8 - 2
server/model/user.js

@@ -29,10 +29,16 @@ class UserModel {
             where: {phone:phone}
         });
         if(user){
-            return false;
+            return {code: -2};
         }
+      user = await User.findOne({
+        where: {name:name}
+      });
+      if(user){
+        return {code: -1};
+      }
         user = await User.create({name: name, password: password, phone: phone, email: email, createdTime: getNowFormatTime()});
-        return user;
+        return {code: 0, data: user};
     }
 
   static async findByUid(id){

+ 7 - 1
server/schema/user.js

@@ -11,7 +11,8 @@ module.exports = (sequelize, DataTypes) =>
         },
         name: {
             type: DataTypes.STRING(64),
-            allowNull: false
+            allowNull: false,
+          unique: 'column'
         },
         password: {
             type: DataTypes.STRING(512),
@@ -27,6 +28,11 @@ module.exports = (sequelize, DataTypes) =>
         allowNull: false,
         defaultValue: "xxxxx@xxx.com"
       },
+      photo: {
+        type: DataTypes.STRING(512),
+        allowNull: false,
+        defaultValue: "/image/default-photo.jpg"
+      },
       role: {
         type:   DataTypes.ENUM,
         values: ['STUDENT', 'TEACHER', 'ADMIN'],