teacher.js 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. 'use strict';
  2. const Schema = require('mongoose').Schema;
  3. const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
  4. const { Secret } = require('naf-framework-mongoose/lib/model/schema');
  5. // 资料路径详情
  6. const zynumberfileInfo = new Schema({
  7. uri: { type: String, required: false, maxLength: 200 }, // 路径
  8. name: { type: String, required: false, maxLength: 200 }, // 名称
  9. });
  10. // 资料路径详情
  11. const urlInfo = new Schema({
  12. uri: { type: String, required: false, maxLength: 200 }, // 路径
  13. name: { type: String, required: false, maxLength: 200 }, // 名称
  14. });
  15. // 资料信息
  16. const FileInfo = new Schema({
  17. url: { type: [ urlInfo ], select: true }, // 资料路径
  18. filename: { type: String, required: false, maxLength: 200 }, // 资料名称
  19. type: { type: String, required: false, maxLength: 200 }, // 资料类别,教案(Word)、PPT、视频(Mp4)、其他(zip)
  20. });
  21. // 教师表
  22. const TeacherSchema = {
  23. name: { type: String, required: true, maxLength: 200 }, // 教师姓名
  24. phone: { type: String, required: true, maxLength: 200 }, // 手机号
  25. idnumber: { type: String, required: true, maxLength: 200 }, // 身份证号
  26. gender: { type: String, required: true, maxLength: 200 }, // 教师性别
  27. zynumber: { type: String, required: true, maxLength: 200 }, // 职业资格证号
  28. zynumberfile: { type: [ zynumberfileInfo ], required: true, maxLength: 200 }, // 职业资格证图片
  29. schid: { type: String, required: true, maxLength: 200 }, // 学校id
  30. schname: { type: String, required: true, maxLength: 200 }, // 学校名称
  31. email: { type: String, required: true, maxLength: 200 }, // 邮箱
  32. openid: { type: String, required: false, maxLength: 200 }, // 微信openid
  33. age: { type: String, required: true, maxLength: 200 }, // 年龄
  34. birthday: { type: String, required: true, maxLength: 200 }, // 出生年月
  35. entrydate: { type: String, required: true, maxLength: 200 }, // 入职时间
  36. politics: { type: String, required: true, maxLength: 200 }, // 政治面貌
  37. department: { type: String, required: true, maxLength: 200 }, // 所在部门
  38. job: { type: String, required: true, maxLength: 200 }, // 职务
  39. protitle: { type: String, required: true, maxLength: 200 }, // 职称
  40. education: { type: String, required: true, maxLength: 200 }, // 最后学历
  41. degree: { type: String, required: true, maxLength: 200 }, // 最后学位
  42. major: { type: String, required: true, maxLength: 200 }, // 教师所学专业
  43. schlesson: { type: String, required: true, maxLength: 200 }, // 教师在校所教课程
  44. experience: { type: String, required: true, maxLength: 200 }, // 教育培训经历(从大学开始)
  45. courses: { type: String, required: true, maxLength: 200 }, // 主讲课程
  46. academic: { type: String, required: true, maxLength: 200 }, // 主要学术成果及获奖情况
  47. jobyear: { type: String, required: true, maxLength: 200 }, // 从事就业创业教学工作年限
  48. subid: { type: String, required: true, maxLength: 200 }, // 科目id
  49. islyteacher: { type: String, required: true, maxLength: 200 }, // 是否可讲礼仪课,0-否,1-是
  50. zlscore: { type: String, required: false, maxLength: 200 }, // 资料评分
  51. msscore: { type: String, required: false, maxLength: 200 }, // 面试评分
  52. xsscore: { type: String, required: false, maxLength: 200 }, // 学生评分
  53. file: { type: [ FileInfo ], select: false }, // 资料,教案PPT视频等
  54. status: { type: String, required: false, maxLength: 200, default: '0' },
  55. // 状态:0-注册,1-确认身份,2-资料评分,3-面试评分,4-确认入库
  56. };
  57. const schema = new Schema(TeacherSchema, { toJSON: { virtuals: true } });
  58. schema.index({ id: 1 });
  59. schema.plugin(metaPlugin);
  60. module.exports = app => {
  61. const { mongoose } = app;
  62. return mongoose.model('Teacher', schema, 'teacher');
  63. };