ci: 添加 Docker 构建和推送工作流
- 新增 Dockerfile 和 .dockerignore 文件 - 添加 Gitea 持续集成工作流,用于构建和推送 Docker 镜像 - 新增 .gitignore 文件,忽略构建和配置文件 - 添加项目结构和规范文档,包括 TypeScript、模块化、API、数据库等规范 - 新增前端和后端的基础代码结构
This commit is contained in:
72
docs/aliyun-sms.md
Normal file
72
docs/aliyun-sms.md
Normal file
@@ -0,0 +1,72 @@
|
||||
```typescript
|
||||
// This file is auto-generated, don't edit it
|
||||
// 依赖的模块可通过下载工程中的模块依赖文件或右上角的获取 SDK 依赖信息查看
|
||||
import Dysmsapi20170525, * as $Dysmsapi20170525 from '@alicloud/dysmsapi20170525';
|
||||
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
|
||||
import Util, * as $Util from '@alicloud/tea-util';
|
||||
import { env } from '../../config/env.ts';
|
||||
|
||||
export class SMS {
|
||||
/**
|
||||
* @remarks
|
||||
* 使用AK&SK初始化账号Client
|
||||
* @returns Client
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
static createClient(): Dysmsapi20170525 {
|
||||
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
|
||||
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378664.html。
|
||||
if (!env.deploy?.alicloud) {
|
||||
throw new Error("Aliyun SMS configuration is required");
|
||||
}
|
||||
|
||||
const { accessKeyId, accessKeySecret } = env.deploy.alicloud;
|
||||
|
||||
let config = new $OpenApi.Config({
|
||||
accessKeyId,
|
||||
accessKeySecret,
|
||||
});
|
||||
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
|
||||
config.endpoint = `dysmsapi.aliyuncs.com`;
|
||||
return new (Dysmsapi20170525 as any).default(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送短信
|
||||
* @param phoneNumber 手机号
|
||||
* @param code 验证码
|
||||
* @param templateCode 模板代码,默认使用配置的验证码模板
|
||||
* @param signName 短信签名,默认使用配置的签名
|
||||
*/
|
||||
static async sendVerificationSMS(
|
||||
phoneNumber: string,
|
||||
code: string,
|
||||
templateCode?: string,
|
||||
signName?: string
|
||||
): Promise<boolean> {
|
||||
let client = this.createClient();
|
||||
let sendSmsRequest = new $Dysmsapi20170525.SendSmsRequest({
|
||||
signName: signName || (env.sms?.defaultSignName || "多八多"),
|
||||
templateCode: templateCode || (env.sms?.defaultTemplateCode || "SMS_164760103"),
|
||||
phoneNumbers: phoneNumber,
|
||||
templateParam: JSON.stringify({code: code}),
|
||||
});
|
||||
let runtime = new $Util.RuntimeOptions({ });
|
||||
try {
|
||||
// 发送短信
|
||||
const result = await client.sendSmsWithOptions(sendSmsRequest, runtime);
|
||||
console.log("SMS sent successfully:", result);
|
||||
return true;
|
||||
} catch (error: unknown) {
|
||||
// 错误处理
|
||||
const err = error as { message?: string, data?: { Recommend?: string } };
|
||||
console.error("SMS sending failed:", err.message);
|
||||
if (err.data && err.data["Recommend"]) {
|
||||
console.error("Recommendation:", err.data["Recommend"]);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user