Sfoglia il codice sorgente

feat: ali sms cloud code

ryanemax 7 mesi fa
parent
commit
9151132799

+ 1 - 1
docker-front

@@ -1 +1 @@
-Subproject commit fa9142c46427d306cdc0025ef9466717265d83e3
+Subproject commit 670fb82d36d8c078793a4f4dbf7b1b399924573b

+ 80 - 0
server/cloud/aliyun/func-aliyun-sms.js

@@ -0,0 +1,80 @@
+
+const sms = require("ali-sms");
+const SMSAccessKeyID     = process.env.ALI_SMS_ACCESSKEYID || "LTAI5tETwA37KgHfDo5p2Ej6";
+const SMSAccessKeySecret = process.env.ALI_SMS_ACCESSKEYSECRET || "EBDQEchETlNcEYzE8zYb1zl4gBImrJ";
+
+/**
+ * @desc
+ curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' http://8.140.98.43/parse/functions/aliSmsSend
+ curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "mobileList": ["18607007073"],"templateCode":"SMS_468995773","params":{},"signName":"普通高等教育教材网" }' http://127.0.0.1:61337/parse/functions/aliSmsSend
+ * @returns
+ 成功
+ {"result":"{\"Message\":\"OK\",\"RequestId\":\"41DDC6F4-A8B8-55A3-95E7-AD06D3F0E94F\",\"Code\":\"OK\",\"BizId\":\"261804722010619993^0\"}"}
+ 失败
+ {"result":"{\"Message\":\"手机号码格式错误\",\"RequestId\":\"63C4A4DB-B337-5630-8E00-51535C7377D7\",\"Code\":\"isv.MOBILE_NUMBER_ILLEGAL\"}"}
+
+ */
+ export function defineAliSMSSend(){
+    // function defineAuthingLogin(){
+        Parse.Cloud.define("aliSmsSend", async (request) => {
+            let mobileList = request.params.mobileList;
+            let signName = request.params.signName;
+            let params = request.params.params;
+            let templateCode = request.params.templateCode;
+            
+            let result = await sendAliyunSMS({
+                signName:signName,
+                mobileList:mobileList,
+                params:params,
+                templateCode:templateCode
+                
+            })
+            return result
+        },{
+            fields : {
+                mobileList:{
+                    required:true
+                },
+                params:{
+                    required:true
+                },
+                signName:{
+                    required:true
+                },
+                templateCode:{
+                    required:true
+                },
+            }
+        });
+}
+
+
+/**
+ * @desc
+    手机号解绑验证码 SMS_469065757
+    手机号修改验证码 SMS_469055726
+    手机号绑定验证码 SMS_468890757
+    密码重置验证码 SMS_468915747
+    账号认证失败通知 SMS_468995773
+    账号认证成功通知 SMS_468870790
+    账号注册通知 SMS_469060724
+ */
+async function sendAliyunSMS(options){
+    return new Promise(resolve=>{
+        const config = {
+            accessKeyID       : SMSAccessKeyID,
+            accessKeySecret   : SMSAccessKeySecret,
+            paramString       : {code: '123456'},
+            recNum            : ['18691770343','18607007073'],
+            signName          : '普通高等教育教材网',
+            templateCode      : 'SMS_468870790',
+        };
+        sms(config, (err, body) => {
+            console.log(err, body);
+            resolve(body||err)
+        });
+    })
+
+}
+
+module.exports.sendAliyunSMS = sendAliyunSMS()

+ 34 - 0
server/cloud/aliyun/sms.md

@@ -0,0 +1,34 @@
+
+# 开发参数
+阿里云hep-api-authing-sms@cloudhep.onaliyun.com
+AccessKey ID LTAI5tETwA37KgHfDo5p2Ej6
+AccessKey Secret EBDQEchETlNcEYzE8zYb1zl4gBImrJ
+
+手机号解绑验证码:SMS_469065757
+手机号修改验证码:SMS_469055726
+手机号绑定验证码:SMS_468890757
+密码重置验证码:SMS_468915747
+账号认证失败通知:SMS_468995773
+账号认证成功通知:SMS_468870790
+账号注册通知:SMS_469060724
+
+
+
+
+# 示例样板
+
+【普通高等教育教材网】账号注册通知:您已经成功注册,请耐心等待审核认证结果,待认证通过后即可登录。
+
+【普通高等教育教材网】账号认证成功通知:您的账号已经通过认证,可使用注册时的账号密码登录系统使用管理功能。
+
+【普通高等教育教材网】账号认证失败通知:抱歉,您申请的账号认证失败,请仔细核对相关信息和材料后再尝试。
+
+【普通高等教育教材网】您的密码重置验证码是:${code}, 5分钟内有效。请勿将验证码告知他人并确定该申请为您本人操作。
+
+【普通高等教育教材网】您的手机号绑定验证码是:${code}, 5分钟内有效。请勿将验证码告知他人并确定该申请为您本人操作。
+
+【普通高等教育教材网】您在的手机号修改验证码是:${code}, 5分钟内有效。请勿将验证码告知他人并确定该申请为您本人操作。
+
+【普通高等教育教材网】您的手机号解绑验证码是:${code}, 5分钟内有效。请勿将验证码告知他人并确定该申请为您本人操作。
+
+

+ 36 - 0
server/package-lock.json

@@ -10,6 +10,7 @@
       "license": "ISC",
       "dependencies": {
         "ali-oss": "^6.20.0",
+        "ali-sms": "^1.0.3",
         "authing-js-sdk": "^4.23.51",
         "authing-node-sdk": "^3.1.0",
         "chromiumly": "^3.6.0",
@@ -3563,6 +3564,41 @@
         "node": ">=4.0.0"
       }
     },
+    "node_modules/ali-sms": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/ali-sms/-/ali-sms-1.0.3.tgz",
+      "integrity": "sha512-D9uF3YNTUs+ZK6nHtZcOPJMd1d6uvzjqKb+cAg9GpFw4X6OqZE4buuuqtV6T6dOXUyYAWw9toj9hULLzzZ9PXg==",
+      "dependencies": {
+        "debug": "^2.3.3",
+        "request": "^2.79.0",
+        "uuid": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ali-sms/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/ali-sms/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+    },
+    "node_modules/ali-sms/node_modules/uuid": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
+      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
     "node_modules/ansi-escapes": {
       "version": "4.3.2",
       "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",

+ 1 - 0
server/package.json

@@ -29,6 +29,7 @@
   "license": "ISC",
   "dependencies": {
     "ali-oss": "^6.20.0",
+    "ali-sms": "^1.0.3",
     "authing-js-sdk": "^4.23.51",
     "authing-node-sdk": "^3.1.0",
     "chromiumly": "^3.6.0",

+ 2 - 0
server/server.js

@@ -44,6 +44,7 @@ global.config["LOCAL"] = argv.local || process.env["LOCAL"] || appConfig["LOCAL"
 
 import  {textbookRouter} from "./api/textbook/routes";
 import { defineAliOssSTS } from "./cloud/aliyun"
+import { defineAliSMSSend } from "./cloud/aliyun/func-aliyun-sms"
 import { defineAuthingLogin, defineDepartmentTrigger, defineUserAfterDelete, defineUserBeforeSave } from "./cloud/authing"
 import { defineAuthingDepartSync } from "./cloud/authing"
 import { defineUserAfterSave } from "./cloud/authing"
@@ -183,6 +184,7 @@ async function initParseAndDatabase(){
       defineAuthingLogin();
       defineAuthingDepartSync();
       defineAliOssSTS();
+      defineAliSMSSend();
       defineUserAfterSave();
       defineUserBeforeSave();
       defineUserAfterDelete();