架构初始化

This commit is contained in:
menxipeng
2025-07-15 23:17:06 +08:00
parent 121448abc4
commit 991ca432e1
84 changed files with 6284 additions and 80 deletions

View File

@@ -3,21 +3,38 @@ package com.ruoyi.system.config;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.teaopenapi.models.Config;
import com.aliyuncs.exceptions.ClientException;
import com.ruoyi.common.constant.AliKeyConfig;
import com.ruoyi.common.core.domain.entity.ShopUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import static com.alibaba.fastjson2.JSONObject.toJSONString;
public class AliConfig {
private static final Logger log = LoggerFactory.getLogger(AliConfig.class);
public static Client createClient() {
Config config = new Config()
// 配置 AccessKey ID请确保代码运行环境配置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
.setAccessKeyId(AliKeyConfig.ACCESS_KEY_ID)
// 配置 AccessKey Secret请确保代码运行环境配置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
.setAccessKeySecret(AliKeyConfig.ACCESS_KEY_SECRET);
// System.getenv()方法表示获取系统环境变量不要直接在getenv()中填入AccessKey信息。
// 配置 Endpoint。中国站请使用dysmsapi.aliyuncs.com
@@ -30,6 +47,12 @@ public class AliConfig {
}
}
public static void main(String[] args) {
ShopUser shopUser = new ShopUser();
shopUser.setPhone("13943965645");
shopUser.setCode("123456");
sendMsg(shopUser);
}
public static String sendMsg(ShopUser shopUser) {
// 初始化请求客户端
@@ -38,13 +61,15 @@ public class AliConfig {
// 1. 生成6位验证码
String code = String.valueOf((int)((Math.random()*9+1)*100000));
String templateParam = "{\"name\":\"" + shopUser.getUsername() + "\",\"number\":\""+ shopUser.getPhone() +"\"}";
//String templateParam = "{\"name\":\"" + shopUser.getUsername() + "\",\"number\":\""+ shopUser.getPhone() +"\"}";
String templateParam = "您的验证码为:"+ shopUser.getCode() +",请勿泄露于他人!";
// 构造API请求对象请替换请求参数值
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(shopUser.getPhone())
.setSignName("music")
.setTemplateCode(code)
.setSignName("阿里云短信测试")
.setTemplateCode("SMS_323405385")
.setTemplateParam(templateParam); // TemplateParam为序列化后的JSON字符串。
// 获取响应对象
@@ -63,4 +88,74 @@ public class AliConfig {
return null;
}
public static String ossUp(String objectName, InputStream inputStream){
// 配置参数
String endpoint = "https://oss-cn-beijing.aliyuncs.com";
String accessKeyId = AliKeyConfig.ACCESS_KEY_ID;
String accessKeySecret = AliKeyConfig.ACCESS_KEY_SECRET;
String bucketName = "wenzhuangmusic";
// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 上传字符串内容作为文件
ossClient.putObject(bucketName, objectName, inputStream);
System.out.println("文件上传成功:" + objectName);
return "/file/download/"+objectName;
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭OSSClient
if (ossClient != null) {
ossClient.shutdown();
}
}
return null;
}
public static byte[] ossDown(String objectName) {
// 配置参数
String endpoint = "https://oss-cn-beijing.aliyuncs.com";
String accessKeyId = AliKeyConfig.ACCESS_KEY_ID;
String accessKeySecret = AliKeyConfig.ACCESS_KEY_SECRET;
String bucketName = "wenzhuangmusic";
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// ossObject包含文件所在的存储空间名称、文件名称、文件元数据以及一个输入流。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// 读取文件内容到字节数组。
byte[] readBuffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(readBuffer)) != -1) {
byteArrayOutputStream.write(readBuffer, 0, bytesRead);
}
// 获取最终的字节数组。
byte[] fileBytes = byteArrayOutputStream.toByteArray();
// 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
inputStream.close();
byteArrayOutputStream.close();
// ossObject对象使用完毕后必须关闭否则会造成连接泄漏导致请求无连接可用程序无法正常工作。
ossObject.close();
return fileBytes;
} catch (OSSException oe) {
oe.printStackTrace();
} catch (Throwable ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return null;
}
}