Browse Source

云就业登录,没有账号添加账号

lrf 1 year ago
parent
commit
82d87897f1
4 changed files with 98 additions and 99 deletions
  1. 2 2
      app/model/headteacher.js
  2. 1 1
      app/service/login.js
  3. 70 94
      app/service/util.js
  4. 25 2
      app/service/yunjiuye.js

+ 2 - 2
app/model/headteacher.js

@@ -6,8 +6,8 @@ const metaPlugin = require('naf-framework-mongoose/lib/model/meta-plugin');
 // 班主任表
 const HeadteacherSchema = {
   name: { type: String, required: true, maxLength: 200 }, // 姓名
-  gender: { type: String, required: true, maxLength: 200 }, // 教师性别
-  department: { type: String, required: true, maxLength: 200 }, // 所在部门
+  gender: { type: String, required: false, maxLength: 200 }, // 教师性别
+  department: { type: String, required: false, maxLength: 200 }, // 所在部门
   mobile: { type: String, required: true, maxLength: 200 }, // 手机号
   nation: { type: String, required: false, maxLength: 200 }, // 民族
   phone: { type: String, required: false, maxLength: 200 }, // 固话

+ 1 - 1
app/service/login.js

@@ -30,7 +30,7 @@ class LoginService extends CrudService {
     // 验证密码
     // console.log('sjk-->' + res.passwd.secret);
     // console.log('sr-->' + passwd);
-    if (res.passwd.secret !== passwd) {
+    if (res.passwd && res.passwd.secret !== passwd) {
       throw new BusinessError(ErrorCode.BAD_PASSWORD);
     }
     return await this.createJwt(res);

+ 70 - 94
app/service/util.js

@@ -86,104 +86,80 @@ class UtilService extends CrudService {
   }
   async utilMethod(query, body) {
     const crypto = require('crypto');
-    const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
-      modulusLength: 2048,
-      publicKeyEncoding: {
-        type: 'spki',
-        format: 'pem',
-      },
-      privateKeyEncoding: {
-        type: 'pkcs8',
-        format: 'pem',
-        cipher: 'aes-256-cbc',
-        passphrase: 'sks_secret',
-      },
-    });
-    console.log(publicKey);
-    console.log('-------------------');
-    console.log(privateKey);
-    //     const privateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
-    // MIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI+SbyJ6RzQY8CAggA
-    // MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBACELvWKbd/L0zagGXmrwrKBIIJ
-    // UBn774mFtXJgWi9NVh+GO5CpcqDxU2JjP+lOILG0k9EIJiwVBH++LHtJX4S9Y7MP
-    // qtJQZBLSdyjh7mzMige/xTSEkF2wGactP1QE2imfcT52NoHGQVyeFBfa+ZEZixPU
-    // h/6uqS8TjABU561I3A/89vHYLrZ9va1T8AZTp4NbyUaD5zYCPUG+mn9Ln9PO56Bk
-    // HEUXfZa2qGU819CxC2Ju4T/KMLDXHKVbbCiDnB1vLxuO4vSd8719nwR9czfTkGKv
-    // MJtk7wbFUrstmEVFBM931D6wNT/BHtYGCf2xw10CwtSjLKbB/iINqH5CUYMjA6H8
-    // 4ts7nBHkmkuRa5bGZSHeCR25fLE6i/WU0mAB4gnaU3nSmInA2JF5QFKV/2+RsZBN
-    // DCAU8TwjnsY4dsqwC0CjUPY3EguiuXAVZ3eQO43ERIVuK6flfY1vaK1186KAfLf9
-    // 9dYMcoag8ohs22etBiFVQZMy8YTC7knndyMyP+c/ohgENzUc1lPVHj1n0kGW2Mgu
-    // Gc4mLXTmifr3SM/Z5cUI97i/OZ1aYm01G2UiR2ZLLdLSwuBoqs2J1r5Xk97BqaPm
-    // f93PgENfafd7Sd+RH1f635FMKM61NbZBzNMDJmKW1B4RgezLgxanJy5AqJNGfiuS
-    // 9m0daXKPEhAhh+Hx5LEYXxuSVgaSAJtvOZze5yHA/kHEy5+DZ5Gv31brEVHmAphA
-    // EFSdtDbf44hqGMk2LAeiahkqc+MXz+RVFAvuh24qR8NeulIszu5ExHM13ZVL1GIP
-    // IqnplKnX/Xjt8j1CJOxgiHJvqcX3LAg0NDh0CbmpSJVjjL/yqxwYMBSiLgS8ViT+
-    // AaGqLvuT95Oyq7IiMDngymTMT4ilWjeY+ovFWC3JxwCL8kzFVFBL680JhOlvBVft
-    // e9+JbJeV3xAq482FolBRXla6Eqe1eeFVjmY8+n/UqepT8CLk7hJxzN0VCVJsx7VT
-    // wlBjRobcIdaLtwJllu7Ebpc2MwLVgPJvvNHigLJVNW5SyHhleT2pJZDROgm+0itc
-    // 39L8MN5Jo/q/wqO1KO+Fx17xNiMhQr7rs+9zcy8a1/D8v0zmNbpayWx8z0V6TyYJ
-    // 2QhQAPuO7mnxsbzZPEnj93+2ifoojU3YOgvxQCUR4LNbreScSotJmX8ADi9rpmgp
-    // VxSUSpZ9smzX2kVMPQPWCOuNzuCJIGPmwI1+2wSGgYkPW1hjVReQTevrIt6YMKxh
-    // 7NuiJ9Hzi96uGAlcfPPp85wR2NUGJ+++lu6874AHa4nfwrxBqps/e/IFgbxfOXoo
-    // ZS1thHfViSlPeV6+gv2OdBb6mZbMlH2UWjKuXmvYPSKBy/PA3Kl9gyYbOnpBb7Cz
-    // Bt0jpx0oJtWmndzXpRRDOj/ehppSe1tbhe3D1Eg1EOn3C0IS284dQ2JzMATbdxV3
-    // okrKYcIxuYvCVNjgAo+GdfC+V3A4c15HlPjYsgy8hLIZGWbfFvNIFPNw7LmxAG6w
-    // UD+EAFKtijRV/vKjMraiVfaB8LQ+QLgBkgE+8JFRkFUmwzCWB2KoewHPUbk+7/a1
-    // 7PQx0+sk+ghIb6lkC0EOcAFjfDiQYJttZ/ax3txR76hHNHOcMKeFp5DgwBzlvllR
-    // BHKRDHflyr6CGf9gTMw83xwHp9HCpz/BleBLvoMd23FZ/BXkHlBWUusfLlUj+iNp
-    // uQuM/xXNZ9JTixibCcQzC5KFJsOcnGWkoID/nT22iR4G2nqivHcbq3GM/s+Ty9zQ
-    // q7Pot2cCkPOSuacyuZxrBsWmSGVibMnYEDcWs4N3Vsgw+hrk886VLDNEt7bDwy83
-    // KQflDKNSwEeav6NceWywmMWP6lQQoCPQtuUxdBpJ/vanrEOU8Tg5/PNiqnqtqtN2
-    // Z6g3ZNyGFaYXkzxizznrIaH81HUmC5wVHmozzH7FiLqIt2yj+IbOBD9T4KiarnQX
-    // zsgR+eYbHUO7wzOvlMj0O3n1jMHK01gBe5IlGcPW/n4/mUp8qACgVipKhO45NxL8
-    // u9+BcPoBNCFD23sCnjUHChGHEhfNyQutjXyFUzmIkni4M5idudgri7KDHAdt/Sid
-    // 6X2/R+b/p5zK9DqqtaEeRyQutzBJsCHaup9w46ySuen+NdfbCzITvaDpOpQJua9x
-    // 4R+YEE6h31tlp13whR3wKNs7nrpS9oRQo3tXKIzDSXYZM81DuSR1fJ+6H9yAfkg5
-    // 4ScerEFSU+nvwzx5Gpj8AfDQHKHOAb6uGjGMp2bDhIWqqYJZS5JkcqF3CNr7C6EE
-    // A8iGy/QisX2cxquT2uKjjoIVSVVQKjrV4LI3f13bHEJ5I6RBrSWNic7WAKBkjxTH
-    // OPtuz2cgL5KAs/hvhMqVaEmeGvC9mW0jy3S0rFFMZapb8OFfFM2fEVNNzMvVy2Gd
-    // RAZMPY4hzyqHzlLDUOF8fGa+Tly6cG0Rjvt+EsGy7w3yhR4FEUD71T2Hdh4Qlj+f
-    // J1TDw6uEHFoYZQB9mRM+b7zDZX6Q7f4Yqk8Zp4bmlvdvoPtFS8ai8qosHDKZfuJe
-    // 5yRQhx7GUL6se2kzcb12ZvHWdq4i9DRZ9mamcr4lnqWc1lWF/yPxow42fcGEYiSn
-    // fg458CL16dV2JMrlNI67KX/oxKQbtI8Qqow9GA0xHT9APeRHDwQH9hhPE+I9nzjk
-    // vXiKSk1CyQcMFJv63Jelq9v9SlM4OhbLM6BnBMCc5UqZ5y7plN+j+1y07+TVB+qE
-    // 1b8WXHKkWNm1PyUkX57amLjHzvk/z7yIAWQV35ZuZe0Hq65QfNuG8T6aMTNEUEVj
-    // ciuYB1KM5XhtTJvn/EyDktpCMvPF5X++uT6Pq2dbHUSVng/JHWm8qOStBnzosvHR
-    // Ebmw4uSELfqrIONBid3rUNJ0HuLhm9IcSspj+kmAkumOjX8tQ/GER/3DKs7phjir
-    // sCAQBf9BxnJUICP8jbr+OYXfJs6FsPNrtEZOg+78BdFQpWGgLptUWRTjHUPR3bb2
-    // J2i7ADAgW2t6eh+bhJ5JyDQ0xqGRVx57mHOvAlKkaa/GNMVexTqEH4eybilsQCpY
-    // jEtwj9SJMe5jD3J4hzAQUaeOfyruuZ2R2nC1C/070TRL6qXf6DNnWeXiYIOuYW36
-    // ere7RirrD3vwbgu1jzsixYgGSRXLYis42brchhzw7+9Ut3vvQCMc03aO3fe+6Aji
-    // WZo3nW1v3vEf3fS4fFtQF7VP1a2A0Leawv7ZxXUS2A8S
-    // -----END ENCRYPTED PRIVATE KEY-----`;
-    //     const publicKey = `-----BEGIN PUBLIC KEY-----
-    // MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzGSOl6+oYHZyHRzJYtC3
-    // wlqczFs2QKHLi6bnQj1Sb6J4Kx0UkJqb2yJpyFenBTjW+W4rMM7bt9RzM4pHqjWI
-    // ubTDFL8aU8R1LxOI/9HqpC9CTyZpmGjrCZoJz07sMz/RNo6e8nwpAdEN3Z8sSaGD
-    // Wm+Jv8uk8NtXDksyXa9b1aAylxMCIu+yg1V+QvAqfxFW2HHQodjE1/8/QNMqPr90
-    // DoCS35atn5vl6XQyHY40jk5r6it/zr7IBkuZnPJHSL3Mcvf2lZXYSg4Q2TQ9q4G5
-    // zx4UsYK3oPI/bP4+KK2o+nmdHjP+YlWpgIjMOZ7bYBu90APHUaRskRAwbruBdN0v
-    // UQuUvrZ+ePptXBwvqDycCwF0VVYSUKWC0rCkk+zGNiramsILRGEbkHZ0OCIW6vs1
-    // aijKiUbDLVFXRjzwKFlrczt0DszEZDvBbVU6aaia1fvHoMTa9Qh48IL7czncgwc+
-    // 7n8IxyiE69PAB/Y54AoNbANsAjbHJKL5POE3g4BfJfvzGStTGHT08tdMwfyWlKa4
-    // V1f9/W1PiPvr018oTyEpjYuitA1AsslJWce2PysVQc5w4EVJHMSz9feqNYv8eFSD
-    // rEXSHLXwtK0TK8asdX13zi2klGe6zpkejAuLVq+PUbMV6RzTLue5qlOp/pwGuVFM
-    // Z9vYX8dtRkmfeDitSjRTpEkCAwEAAQ==
-    // -----END PUBLIC KEY-----`;
+    // const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
+    //   modulusLength: 2048,
+    //   publicKeyEncoding: {
+    //     type: 'spki',
+    //     format: 'pem',
+    //   },
+    //   privateKeyEncoding: {
+    //     type: 'pkcs8',
+    //     format: 'pem',
+    //     cipher: 'aes-256-cbc',
+    //     passphrase: 'sks_secret',
+    //   },
+    // });
+    // console.log(publicKey);
+    // console.log('-------------------');
+    // console.log(privateKey);
+    const privateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIDrmClOodJAACAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBDFUSMr1yfAK9Lt9r4Idi5EBIIE
+0JmkwwNWz+ya4IffVvzQS2fEbIRoAcxoBEKaZjLd2cCBQbE/0BODdlEWcJ7Z4Z3k
+1NfDaqQToh+k9sE2C108q2jCETLiLPWodTMAMO0pVHBiiJeh2ZOoDxwyDWsyHYcA
+6S7EhuQPOY7Fd8WKWeYcH1m8TLyL40fmWq0cseCoyvP1M0LRQ5OFKD7+uOYJBQhq
+7pPwuJouorKMUHbxpribrOmr8fspfkglhP6+TZ7p7XzAs6e92mNz1SfiflmChoPH
+sqcJb0SJaHCdzblMT/yCF1Gm+h91gpU9L3sJUbivBtjFkX4LsE8DMs15dkPIbWHq
+YTJx+2QSOpGp6cK1D7LS8LInptHxI/UGRVYH3FLP1oUJuuFj+Wl7PKvOpZcc5uk1
+u5tbHmUkhpJeklqsCWi6brQpPxiQAiCeiqMiTOQLlwiRNTT51waOqrvb60onDHAw
+bEWfb0FQ0o3kb1yEQd/qPTJXWPZ96WhM3/7VNGoEDKwCzv5m8G1JbO4ct79iPF5x
+Y7rx0uKJFPbekNACRmb9U0f3DpXm8hdgCKVKmbkgG2ZZnnmJg2lzmT72lwQfdcnv
+O6IjXVLoDLjAYqjGe6HXQchi5rBHgmoguyHP6nGJ67n50hQ+upecVyp7k7LvuXi/
+jHF8/zJfDZaEvjf6CwkePYk9XbOnvyls+RWZM1ZwX4xbk6nbONzo71uRrI0E8sKS
+kWFCtvdbNJ//PaugrQNRMTs5z8Q3qMIyXRPXrxPFM/3lECaIEYvRrPyEYfdANqod
+JrMru+hbHvutTPhDuOgJ+RVgirwfZpxPQS5aHHXQu8bMps9DEL15i6xKOVX5lqvL
+lEL0YmqmRo7Idb9D+l0pyPAg9X1AwTziION/1cOPvWmjGVZqqaBv+jsMVlB+1o0o
+BrJBy9SEzw5ya7sYi1BCwO6k7qAsB1qSmnu8Gg/RXAIz6D9nJiJbB5kwusVQretn
+RqTj8ldBOgo+1la3hHzW8INTAVrlnmZjNMEGN4olYcJv6vHK9XTk7ruIkteJYD8Y
+2jIFU3evsPTs4ugYxArEmzYsr1ZJR91aWf7naKcUlsap9k2zgHVw7Ks31D8T1OT3
+mXQZdkY9hx+0kdh8iSYOkCSa237usV/TbYg12ncB8xSVsMQMNnEQHWIcgFUBeZoo
+KQ27ijLmy5YYx8KYDAm7UJZ3Z00OrFa1D5qjippXkrDKbBwM3SrDSSVBtfKMGxyi
+epF9hMBs6ecBBSIF9sZg0LHfMlbOIWyNLklHUtdBQ4+vavzbG1V66p0pB7HJp6rp
+YC3moNRhHXyUFpvkIis7gFQ4xdE6FMEJsrHeZQHuOzRIB4XlwiCiAIg+IDmnP0hd
+8Sxv0drpFU+zjR2aMr4bfhYdBG35NE/xfOp+ba25yCWCilljCIj46+jD0E2UvSrw
+9iDtf75OXF2njqaLwmnFtHyAOA54IcXi9Y3NaXUXFxmK9iif5UbKa/dR+8rmOCF2
+cozCs4Ujribcpgs3cqjkVX0Z12B7YdCZM1Tpj7BgPOLjpi0h0s5wbP9QMm3yb2S2
+SKteoIypVcUXdpPqSwXtsUOUSuj7MeNXW2mkmQsH+W/n2Zn5OxgFKZ0JZ4z/OHei
+hK1UFYPQ9BEBMzsJ2ttBLwak//hAMaUJDT8EKxEoBdqb
+-----END ENCRYPTED PRIVATE KEY-----`;
+    const publicKey = `-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqIvXeEZJ2kx0xZxgcWeC
+rRQ3+JQjgt7UOUN45PKnw5XNuRCxCbEvnjjLJwJZcrXo0qO54f5rafbPqYoSA5ed
+Wt07dY5dVJ02OUl56uIwhoFArJpUzMywFq94BvTaO5Gz58uVUDKgFRYYx9z4/t10
+6AliNHb3KEbovwMqIpGYLIr5JmImfyaCi7eAqwHsLH/HALqGFLHcr6oFaquA9abP
+J/6wp465qmQuIUhqR9Nf3HIa/hjcF6ZTBlZhV//tzFH1wDIsUeMn8vS9Gi9vpwYa
+AQsB8qxp2yXhZrEbMdD+E27te67SxedRK3IZ13xAeuQ+XB0kVDIPkfRw8eUg3mK2
+XQIDAQAB
+-----END PUBLIC KEY-----`;
 
-    const data = { code: '1', org: '2', type: '中心管理员' };
-    const enc = crypto.publicEncrypt(publicKey, Buffer.from(JSON.stringify(data)));
-    const str = enc.toString('base64');
-    console.log(str);
-    const sb = Buffer.from(str, 'base64');
-    const decpub = crypto.privateDecrypt(
+    const data = this.ctx.request.body;
+    const enc = crypto.publicEncrypt(
       {
-        key: privateKey,
-        passphrase: 'sks_secret',
+        key: publicKey,
+        padding: crypto.constants.RSA_PKCS1_PADDING,
       },
-      sb
+      Buffer.from(JSON.stringify(data))
     );
-    console.log(`decpub:${decpub.toString()}`);
+    const str = enc.toString('base64');
+    // const sb = Buffer.from(str, 'base64');
+    // const decpub = crypto.privateDecrypt(
+    //   {
+    //     key: privateKey,
+    //     passphrase: 'sks_secret',
+    //   },
+    //   sb
+    // );
+    return enc.toString('base64');
     // for (const trainPlan of allTranPlan) {
     //   const { termnum = [] } = trainPlan;
     //   const termids = termnum.map(f => ObjectId(f._id).toString());

+ 25 - 2
app/service/yunjiuye.js

@@ -59,9 +59,32 @@ class YunjiuyeService extends Service {
     assert(type, '用户角色不能为空');
     assert(ytype, '身份不能为空');
     const userModel = this.ctx.model.User;
-    const res = await userModel.findOne({ mobile, type });
+    let res = await userModel.findOne({ mobile, type });
     if (!res) {
-      throw new BusinessError(ErrorCode.USER_NOT_EXIST);
+      const userData = { name: code, mobile, type, status: '1' };
+      // 没有账号,需要创建
+      // 中心端,直接创建中心端账号即可
+      // 教师,班主任,学校,对应创建数据,再形成用户数据
+      if (type === '0') {
+        // 中心没什么需要处理的
+        userData.name = code;
+      } else if (type === '1') {
+        // 班主任,需要生成班主任数据
+        const obj = { name: code, mobile };
+        const res = await this.ctx.model.Headteacher.create(obj);
+        if (res) userData.uid = ObjectId(res._id).toString();
+      } else if (type === '2') {
+        // 学校管理员
+        const obj = { name: code };
+        const res = await this.ctx.model.School.create(obj);
+        if (res) userData.uid = ObjectId(res._id).toString();
+      } else if (type === '3') {
+        // 教师
+        const data = { name: code, phone: mobile };
+        const res = await this.ctx.model.Teacher.create(data);
+        if (res) userData.uid = ObjectId(res._id).toString();
+      }
+      res = await userModel.create(userData);
     }
     const yjycModel = this.ctx.model.Yjyconnect;
     const obj = { ycode: code, yorg: org, suid: ObjectId(res._id).toString(), ytype };