Harry技術添加存儲(minio、aliyun oss)、短信sms(aliyun、模擬)、郵件發送等功能

Harry技術添加存儲(minio、aliyun oss)、短信sms(aliyun、模擬)、郵件發送等功能

基于SpringBoot3+Vue3前后端分離的Java快速開發框架

項目簡介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-Plus、Knife4j等構建后端,基于Vue 3、Element-Plus 、TypeScript等構建前端的分離單體權限管理系統。

項目地址:

后端:

gitee: https://gitee.com/harry-tech/harry.git

gitcode: https://gitcode.com/harry-tech/harry.git

前端:

gitee: https://gitee.com/harry-tech/harry-vue.git

gitcode: https://gitcode.com/harry-tech/harry-vue.git

覺著有幫助,給個Star再走唄 ~~~~

公眾號搜“Harry技術”,關注我,帶你看不一樣的人間煙火!

image-20250110235139741

端口修改

之前后端服務的啟動端口設置為9000,而現在將其修改為9999。為什么會做出這樣的修改呢?這主要是由于在進行minio整合工作的時候,發現后端原本使用的9000端口與minio存儲服務的端口產生了沖突。在這種情況下,為了確保整個項目的順利運行(也方便大家在整合minio做出不必要的麻煩),經過權衡,只能做出調整,讓出原本使用的端口,將后端服務的啟動端口修改為9999

  • 后端修改
server:port: 9999
  • 前端修改

image-20250110232547591

注意:最近總是有小伙伴在運行項目的時候報錯,首先,確保本地安裝了redis、mysql等,其次查看一下前端.env.development文件中 Mock 服務是否為false狀態,當設置為false時,才會去加載后臺接口。

# 是否啟用 Mock 服務
VITE_MOCK_DEV_SERVER = false

添加存儲(minio、aliyun oss)

image-20250110233524780

有關minio的安裝,這里就不過多說了,可以參考《Windows下Minio的安裝以及基本使用》、《Spring Boot 3 整合 minio 實現文件存儲》這兩篇文章帶你入門。

minio依賴

  <minio.version>8.5.10</minio.version><!-- MinIO 對象存儲 --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version></dependency>

阿里云OSS依賴

<aliyun.oss.version>3.17.4</aliyun.oss.version><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${aliyun.oss.version}</version></dependency>

在項目啟動前,先選擇你需要的存儲服務器,比如你想使用minio作為存儲,那么你在yml文件中進行相關的配置,將type設置為minio

# 文件存儲配置
oss:# OSS 類型 (目前支持aliyun、minio)type: minio# MinIO 對象存儲服務minio:# 服務Endpointendpoint: http://localhost:9090# 訪問憑據access-key: eFbF9rSBtgfqiLGDcPDo# 憑據密鑰secret-key: Sfgc06T1S6zhzVTzCwIFhr6KUs7zqCwOwFkHHez4# 存儲桶名稱bucket-name: harry# (可選)自定義域名,如果配置了域名,生成的文件URL是域名格式,未配置則URL則是IP格式custom-domain:# 阿里云OSS對象存儲服務aliyun:# 服務Endpointendpoint: oss-cn-beijing.aliyuncs.com# 訪問憑據access-key-id: XXX# 憑據密鑰access-key-secret: XXX# 存儲桶名稱bucket-name: honghh

短信sms(aliyun、模擬)

這次更新里,我們接入了阿里云的短信服務。比如你在個人中心換個手機號,就得先拿到一個短信驗證碼。但在咱們本地測試的時候,老發真實短信也太費錢了。所以啊,我特意加了個模擬發送短信的功能,這樣在后臺就能直接打印出驗證碼來,你只需要輸入這個驗證碼就能完成驗證了。那么,我們應該如何開啟模擬功能呢?很簡單,只需要將sms.aliyun.enable設置為false就可以了。

sms:aliyun:enable: false  #如果enable為false時 則不發送短信accessKeyId: XXXaccessKeySecret: XXXregionId: cn-shanghaisignName: Harry技術templateCodes:# 注冊(預留)register: SMS_xxx# 登錄(預留)login: SMS_xxx# 修改密碼changePassword: SMS_xxx
@Slf4j
@Component
@ConditionalOnProperty(value = "sms.aliyun.enable", havingValue = "false")
public class FakeSmsStrategy implements SmsStrategy {@Overridepublic SendSmsResponse send(SmsParam smsParam) {log.info("FakeSmsStrategy smsParam:{}", JSONUtil.toJsonStr(smsParam));String str = "{\"bizId\":\"111111111\",\"code\":\"OK\",\"message\":\"并未真實發送\",\"requestId\":\"111111111\"}";return BeanUtil.copyProperties(JSONUtil.parseObj(str), SendSmsResponse.class);}
}

郵件發送

這次更新里,我們還引入了郵件發送,如果你沒有基礎,你可以去學習這篇文章進行入門《使用Java實現郵件發送功能,郵件發送API JavaMail》,配置也是很簡單的。

引入依賴

        <!--   郵件發送     --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

功能實現

/*** @author harry* @公眾號 Harry技術*/
public interface MailService {/*** 發送簡單文本郵件** @param to      收件人地址* @param subject 郵件主題* @param text    郵件內容*/void sendMail(String to, String subject, String text) ;/*** 發送帶附件的郵件** @param to      收件人地址* @param subject 郵件主題* @param text    郵件內容* @param filePath 附件路徑*/void sendMailWithAttachment(String to, String subject, String text, String filePath);

完善個人中心

個人中心

修改文件內容

image-20250110231702161

總結

本次更新主要包含以下內容:

  1. 端口修改:為避免與Minio存儲服務沖突,后端啟動端口從9000改為9999。
  2. 添加存儲支持:集成Minio和阿里云OSS對象存儲服務,詳細配置請參考相關文檔。
  3. 短信服務:接入阿里云短信服務,并增加模擬發送功能,方便本地測試。
  4. 郵件發送:引入郵件發送功能,支持簡單文本郵件和帶附件郵件。
  5. 完善個人中心:優化個人中心頁面,提升用戶體驗。

注意事項:

  • 確保本地安裝Redis、MySQL等。
  • 檢查前端.env.development文件中Mock服務是否設置為false,以加載后臺接口。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65811.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue2: el-table為每一行添加超鏈接,并實現光標移至文字上時改變形狀

為表格中的某一列添加超鏈接 一個表格通常有許多列,網上許多教程都可以實現為某一列添加超鏈接,如下,實現了當光標懸浮在“姓名”上時,改變為手形,點擊可實現跳轉。 <el-table :data="tableData"><el-table-column label="姓名" prop=&quo…

R數據分析:多分類問題預測模型的ROC做法及解釋

有同學做了個多分類的預測模型,結局有三個類別,做的模型包括多分類邏輯回歸、隨機森林和決策樹,多分類邏輯回歸是用ROC曲線并報告AUC作為模型評估的,后面兩種模型報告了混淆矩陣,審稿人就提出要統一模型評估指標。那么肯定是統一成ROC了,剛好借這個機會給大家講講ROC在多…

A3. Springboot3.x集成LLama3.2實戰

本文將介紹集成ollama官網提供的API在Springboot工程中進行整合。由于沒找到java-llama相關合適的sdk可以使用,因此只好對接官方給出的API開發一套RESTFull API服務。下面將從Ollama以下幾個API展開介紹,逐漸的了解其特性以及可以干些什么。具體llama API說明可參數我前面寫的…

面試:類模版中函數聲明在.h,定義在.cpp中,其他cpp引用引入這個頭文件,會有什么錯誤?

1、概述 類模版中函數聲明在.h&#xff0c;定義在.cpp中&#xff0c;其他cpp引用引入這個頭文件&#xff0c;會有什么錯誤?報編譯錯誤&#xff1a;error C2512: Demo<int>: no appropriate default constructor available 舉例如下代碼&#xff1a;demo.h 聲明模版類 …

記一次學習skynet中的C/Lua接口編程解析protobuf過程

1.引言 最近在學習skynet過程中發現在網絡收發數據的過程中數據都是裸奔&#xff0c;就想加入一種數據序列化方式&#xff0c;json、xml簡單好用&#xff0c;但我就是不想用&#xff0c;于是就想到了protobuf&#xff0c;對于protobuf C/C的使用個人感覺有點重&#xff0c;正好…

SQLAlchemy

https://docs.sqlalchemy.org.cn/en/20/orm/quickstart.htmlhttps://docs.sqlalchemy.org.cn/en/20/orm/quickstart.html 聲明模型 在這里&#xff0c;我們定義模塊級構造&#xff0c;這些構造將構成我們從數據庫中查詢的結構。這種結構被稱為 聲明式映射&#xff0c;它同時定…

Trimble自動化激光監測支持歷史遺產實現可持續發展【滬敖3D】

故事橋&#xff08;Story Bridge&#xff09;位于澳大利亞布里斯班&#xff0c;建造于1940年&#xff0c;全長777米&#xff0c;橫跨布里斯班河&#xff0c;可載汽車、自行車和行人往返于布里斯班的北部和南部郊區。故事橋是澳大利亞最長的懸臂橋&#xff0c;是全世界兩座手工建…

CentOS 和 Ubantu你該用哪個

文章目錄 **一、CentOS 和 Ubuntu 的詳細介紹****1. CentOS****1.1 基本信息****1.2 特點****1.3 缺點** **2. Ubuntu****2.1 基本信息****2.2 特點****2.3 缺點** **二、CentOS 和 Ubuntu 的異同****1. 相同點****2. 不同點****3. 使用體驗對比** **三、總結和選擇建議** Cent…

Android RIL(Radio Interface Layer)全面概述和知識要點(3萬字長文)

在Android面試時,懂得越多越深android framework的知識,越為自己加分。 目錄 第一章:RIL 概述 1.1 RIL 的定義與作用 1.2 RIL 的發展歷程 1.3 RIL 與 Android 系統的關系 第二章:RIL 的架構與工作原理 2.1 RIL 的架構組成 2.2 RIL 的工作原理 2.3 RIL 的接口與協議…

前端學習-事件對象與典型案例(二十六)

目錄 前言 事件對象 目標 事件對象是什么 語法 獲取事件對象 部分常用屬性 示例代碼 示例代碼&#xff1a;評論回車發布 總結 前言 長風破浪會有時&#xff0c;直掛云帆濟滄海。 事件對象 目標 能說出什么是事件對象 事件對象是什么 也是個對象&#xff0c;這個對…

Playwright vs Selenium:全面對比分析

在現代軟件開發中&#xff0c;自動化測試工具在保證應用質量和加快開發周期方面發揮著至關重要的作用。Selenium 作為自動化測試領域的老牌工具&#xff0c;長期以來被廣泛使用。而近年來&#xff0c;Playwright 作為新興工具迅速崛起&#xff0c;吸引了眾多開發者的關注。那么…

Windows 程序設計3:寬窄字節的區別及重要性

文章目錄 前言一、寬窄字節簡介二、操作系統及VS編譯器對寬窄字節的編碼支持1. 操作系統2. 編譯器 三、寬窄字符串的優缺點四、寬窄字節數據類型總結 前言 Windows 程序設計3&#xff1a;寬窄字節的區別及重要性。 一、寬窄字節簡介 在C中&#xff0c;常用的字符串指針就是ch…

進階——十六屆藍橋杯嵌入式熟練度練習(LED的全開,全閉,點亮指定燈,交替閃爍,PWM控制LED呼吸燈)

點亮燈的函數 void led_show(unsigned char upled) { HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,upled<<8,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RE…

力扣 最大子數組和

動態規劃&#xff0c;前綴和&#xff0c;維護狀態更新。 題目 從題可以看出&#xff0c;找的是最大和的連續子數組&#xff0c;即一個數組中的其中一個連續部分。從前往后遍歷&#xff0c;每遍歷到一個數可以嘗試做疊加&#xff0c;注意是嘗試&#xff0c;因為有可能會遇到一個…

Homestyler 和 Tripo AI 如何利用人工智能驅動的 3D 建模改變定制室內設計

讓設計夢想照進現實 在Homestyler,我們致力于為每一個夢想設計師提供靈感的源泉,而非挫折。無論是初學者打造第一套公寓,或是專業設計師展示作品集,我們的直觀工具都能讓您輕松以驚人的3D形式呈現空間。 挑戰:實現定制設計的新紀元 我們知道,將個人物品如傳家寶椅子、…

如何當前正在運行的 Elasticsearch 集群信息

要查看當前正在運行的 Elasticsearch 集群信息&#xff0c;可以通過以下幾種方法&#xff1a; 1. 使用 _cluster/health API _cluster/health API 返回集群的健康狀態、節點數量、分片狀態等信息。可以用 curl 命令直接訪問&#xff1a; curl -X GET "http://localhost…

算法練習4——一個六位數

這道題特別妙 大家仔細做一做 我這里采用的是動態規劃來解這道題 結合題目要求找出數與數之間的規律 抽象出狀態轉移方程 題目描述 有一個六位數&#xff0c;其個位數字 7 &#xff0c;現將個位數字移至首位&#xff08;十萬位&#xff09;&#xff0c;而其余各位數字順序不…

client-go 的 QPS 和 Burst 限速

1. 什么是 QPS 和 Burst &#xff1f; 在 kubernetes client-go 中&#xff0c;QPS 和 Burst 是用于控制客戶端與 Kubernetes API 交互速率的兩個關鍵參數&#xff1a; QPS (Queries Per Second) 定義&#xff1a;表示每秒允許發送的請求數量&#xff0c;即限速器的平滑速率…

B-tree 數據結構詳解

1. 引言 1.1 什么是 B-tree&#xff1f; B-tree&#xff08;Balanced Tree&#xff0c;平衡樹&#xff09;是一種自平衡的多路搜索樹數據結構&#xff0c;其核心特性包括&#xff1a; 多路性&#xff1a; 每個節點可以包含多個關鍵字和子節點&#xff0c;而非僅二分。平衡性…

Python 正則表達式完全指南

# Python 正則表達式完全指南 正則表達式&#xff08;Regular Expression&#xff09;是Python中進行文本處理的強大工具。本指南將詳細介紹Python中正則表達式的使用方法和實踐技巧。 ## 1. 基礎知識 ### 1.1 導入正則表達式模塊 python import re ### 1.2 創建正則表達式 在…