reloaded 5 years ago
parent
commit
657070fac4

+ 3 - 0
app/controller/.expert.js

@@ -4,6 +4,7 @@ module.exports = {
       "!name",
       "!gender",
       "!id_number",
+      "phone",
       "email",
       "address",
       "img_url",
@@ -32,6 +33,7 @@ module.exports = {
       "name",
       "gender",
       "id_number",
+      "phone",
       "email",
       "address",
       "img_url",
@@ -62,6 +64,7 @@ module.exports = {
         name: "name",
         gender: "gender",
         id_number: "id_number",
+        phone: "phone",
         email: "email",
         address: "address",
         img_url: "img_url",

+ 3 - 3
app/controller/.staff.js

@@ -3,7 +3,7 @@ module.exports = {
     requestBody: [
       "!name",
       "!gender",
-      "self_tel",
+      "phone",
       "address",
       "birthday",
       "id_number",
@@ -21,7 +21,7 @@ module.exports = {
     requestBody: [
       "name",
       "gender",
-      "self_tel",
+      "phone",
       "address",
       "birthday",
       "id_number",
@@ -41,7 +41,7 @@ module.exports = {
       query: {
         name: "name",
         gender: "gender",
-        self_tel: "self_tel",
+        phone: "phone",
         address: "address",
         birthday: "birthday",
         id_number: "id_number",

+ 5 - 0
app/controller/user.js

@@ -12,6 +12,11 @@ class UserController extends Controller {
     this.service = this.ctx.service.user;
   }
 
+  async register() {
+    const res = await this.service.register(this.ctx.request.body);
+    this.ctx.ok({ data: res });
+  }
+
   async login() {
     const res = await this.service.login(this.ctx.request.body);
     this.ctx.ok({ data: res });

+ 1 - 1
app/model/staff.js

@@ -6,7 +6,7 @@ const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
 const StaffSchema = {
   name: { type: String, required: true, maxLength: 200 }, // 姓名
   gender: { type: String, required: true, maxLength: 200 }, // 性别,0-女,1-男
-  self_tel: { type: String, required: false, maxLength: 200 }, // 个人电话
+  phone: { type: String, required: false, maxLength: 200 }, // 个人电话
   address: { type: String, required: false, maxLength: 200 }, // 家庭住址
   birthday: { type: String, required: false, maxLength: 200 }, // 出生日期
   id_number: { type: String, required: false, maxLength: 200 }, // 身份证号

+ 7 - 6
app/router.js

@@ -19,6 +19,7 @@ module.exports = app => {
   router.post('user', '/api/count/user/update/:id', controller.user.update);
   router.post('user', '/api/count/user/uppasswd', controller.user.uppasswd);
   router.post('user', '/api/count/user/login', controller.user.login);
+  router.post('user', '/api/count/user/register', controller.user.register);
 
   // 职务表设置路由
   router.resources('level', '/api/count/level', controller.level); // index、create、show、destroy
@@ -33,14 +34,14 @@ module.exports = app => {
   router.post('staff', '/api/count/staff/update/:id', controller.staff.update);
 
   // 评论表设置路由
-  router.resources('comment', '/api/live/comment', controller.comment); // index、create、show、destroy
-  router.post('comment', '/api/live/comment/update/:id', controller.comment.update);
+  router.resources('comment', '/api/count/comment', controller.comment); // index、create、show、destroy
+  router.post('comment', '/api/count/comment/update/:id', controller.comment.update);
 
   // 专家表设置路由
-  router.resources('expert', '/api/live/expert', controller.expert); // index、create、show、destroy
-  router.post('expert', '/api/live/expert/update/:id', controller.expert.update);
+  router.resources('expert', '/api/count/expert', controller.expert); // index、create、show、destroy
+  router.post('expert', '/api/count/expert/update/:id', controller.expert.update);
 
   // 需求表设置路由
-  router.resources('demand', '/api/live/demand', controller.demand); // index、create、show、destroy
-  router.post('demand', '/api/live/demand/update/:id', controller.demand.update);
+  router.resources('demand', '/api/count/demand', controller.demand); // index、create、show、destroy
+  router.post('demand', '/api/count/demand/update/:id', controller.demand.update);
 };

+ 85 - 0
app/service/expert.js

@@ -11,6 +11,91 @@ class ExpertService extends CrudService {
   constructor(ctx) {
     super(ctx, 'expert');
     this.model = this.ctx.model.Expert;
+    this.umodel = this.ctx.model.User;
+  }
+
+  async update({ id }, data) {
+    const expert = await this.model.findById(id);
+    console.log(data);
+    const { name, gender, id_number, phone, address, birthday, email, img_url, level, levelname, position, school, education, degree, major, profession, resume, project, academic, status } = data;
+    const user = (await this.umodel.find({ userid: id }))[0];
+
+    if (name) {
+      user.name = name;
+      expert.name = name;
+      await user.save();
+    }
+    if (gender) {
+      expert.gender = gender;
+    }
+    if (phone) {
+      const _user = await this.umodel.find({ phone });
+      console.log(phone);
+
+      console.log(_user);
+
+      if (_user.length === 0 || (_user.lenght === 1 && _user[0].id === user.id)) {
+        user.phone = phone;
+        expert.phone = phone;
+        await user.save();
+      } else {
+        throw new BusinessError(ErrorCode.DATA_EXISTED);
+      }
+    }
+    if (address) {
+      expert.address = address;
+    }
+    if (birthday) {
+      expert.birthday = birthday;
+    }
+    if (id_number) {
+      expert.id_number = id_number;
+    }
+    if (email) {
+      expert.email = email;
+    }
+    if (img_url) {
+      expert.img_url = img_url;
+    }
+    if (level) {
+      expert.level = level;
+    }
+    if (levelname) {
+      expert.levelname = levelname;
+    }
+    if (position) {
+      expert.position = position;
+    }
+    if (school) {
+      expert.school = school;
+    }
+    if (education) {
+      expert.education = education;
+    }
+    if (degree) {
+      expert.degree = degree;
+    }
+    if (major) {
+      expert.major = major;
+    }
+    if (profession) {
+      expert.profession = profession;
+    }
+    if (resume) {
+      expert.resume = resume;
+    }
+    if (project) {
+      expert.project = project;
+    }
+    if (academic) {
+      expert.academic = academic;
+    }
+    if (status) {
+      expert.status = status;
+    }
+
+    const res = await expert.save();
+    return res;
   }
 
 }

+ 45 - 0
app/service/staff.js

@@ -11,6 +11,51 @@ class StaffService extends CrudService {
   constructor(ctx) {
     super(ctx, 'staff');
     this.model = this.ctx.model.Staff;
+    this.umodel = this.ctx.model.User;
+  }
+
+  async update({ id }, data) {
+    const staff = await this.model.findById(id);
+    const { name, gender, phone, address, birthday, id_number, dept_id, level_id, sort } = data;
+    const user = (await this.umodel.find({ userid: id }))[0];
+    if (name) {
+      user.name = name;
+      staff.name = name;
+      await user.save();
+    }
+    if (gender) {
+      staff.gender = gender;
+    }
+    if (phone) {
+      const _user = await this.umodel.find({ phone });
+      if (_user.length === 0 || (_user.lenght === 1 && _user[0].id === user.id)) {
+        user.phone = phone;
+        staff.phone = phone;
+        await user.save();
+      } else {
+        throw new BusinessError(ErrorCode.DATA_EXISTED);
+      }
+    }
+    if (address) {
+      staff.address = address;
+    }
+    if (birthday) {
+      staff.birthday = birthday;
+    }
+    if (id_number) {
+      staff.id_number = id_number;
+    }
+    if (dept_id) {
+      staff.dept_id = dept_id;
+    }
+    if (level_id) {
+      staff.level_id = level_id;
+    }
+    if (sort) {
+      staff.sort = sort;
+    }
+    const res = await staff.save();
+    return res;
   }
 
 }

+ 67 - 8
app/service/user.js

@@ -12,25 +12,84 @@ class UserService extends CrudService {
   constructor(ctx) {
     super(ctx, 'user');
     this.model = this.ctx.model.User;
+    this.smodel = this.ctx.model.Staff;
+    this.emodel = this.ctx.model.Expert;
   }
 
   // 重写创建方法
-  async create(data) {
-    const { userid, openid, passwd, role_id, name, phone, type } = data;
-    // console.log(data);
-    assert(name && phone && passwd, '缺少部分信息项');
-    assert(/^\d{11}$/i.test(phone), '无效的手机号');
-    const user = await this.model.findOne({ phone });
+  async register(data) {
+    console.log(data);
+    assert(data.name && data.phone && data.passwd, '缺少部分信息项');
+    assert(/^\d{11}$/i.test(data.phone), '无效的手机号');
+    const user = await this.model.findOne({ phone: data.phone });
     if (user) {
       throw new BusinessError(ErrorCode.DATA_EXISTED);
     }
-    const newdata = data;
-    const pas = await this.createJwtPwd(passwd);
+    const newdata = _.cloneDeep(data);
+    const pas = await this.createJwtPwd(data.passwd);
     newdata.passwd = pas;
+    let result = {};
+    if (data.type === '0' || data.type === '1') {
+      result = await this.smodel.create(data);
+    }
+    if (data.type === '2') {
+      result = await this.emodel.create(data);
+    }
+    newdata.userid = result.id;
     const res = await this.model.create(newdata);
     return res;
   }
 
+  async update({ id }, data) {
+    const user = await this.model.findById(id);
+    const { userid, openid, role_id, name, phone, type } = data;
+    if (userid) {
+      user.userid = userid;
+    }
+    if (openid) {
+      user.openid = openid;
+    }
+    if (role_id) {
+      user.role_id = role_id;
+    }
+    if (name) {
+      if (user.type === '0' || user.type === '1') {
+        const staff = await this.smodel.findById(user.userid);
+        staff.name = name;
+        await staff.save();
+      }
+      if (user.type === '2') {
+        const expert = await this.emodel.findById(user.userid);
+        expert.name = name;
+        await expert.save();
+      }
+      user.name = name;
+    }
+    if (phone) {
+      const _user = await this.model.find({ phone });
+      if (_user.length === 0 || (_user.lenght === 1 && _user[0].id === user.id)) {
+        if (user.type === '0' || user.type === '1') {
+          const staff = await this.smodel.findById(user.userid);
+          staff.phone = phone;
+          await staff.save();
+        }
+        if (user.type === '2') {
+          const expert = await this.emodel.findById(user.userid);
+          expert.phone = phone;
+          await expert.save();
+        }
+        user.phone = phone;
+      } else {
+        throw new BusinessError(ErrorCode.DATA_EXISTED);
+      }
+    }
+    if (type) {
+      user.type = type;
+    }
+    const res = await user.save();
+    return res;
+  }
+
   // 用户修改密码
   async uppasswd(data) {
     const { userid, oldpasswd, newpasswd } = data;