From 53305c3b2f7926ac096fa51553a1f3071203f91c Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 23 Oct 2025 23:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B3=A8=E9=87=8A=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysDictDataController.java | 4 +- .../system/VerificationController.java | 61 +++++++++++++++++++ .../system/VerificationEmailController.java | 58 ------------------ ...lService.java => VerificationService.java} | 11 +++- ...Impl.java => VerificationServiceImpl.java} | 18 +++++- 5 files changed, 89 insertions(+), 63 deletions(-) create mode 100644 vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationController.java delete mode 100644 vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationEmailController.java rename vetti-common/src/main/java/com/vetti/common/service/verification/{VerificationEmailService.java => VerificationService.java} (86%) rename vetti-common/src/main/java/com/vetti/common/service/verification/impl/{VerificationEmailServiceImpl.java => VerificationServiceImpl.java} (89%) diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/system/SysDictDataController.java b/vetti-admin/src/main/java/com/vetti/web/controller/system/SysDictDataController.java index bf5228f..ca50337 100644 --- a/vetti-admin/src/main/java/com/vetti/web/controller/system/SysDictDataController.java +++ b/vetti-admin/src/main/java/com/vetti/web/controller/system/SysDictDataController.java @@ -69,7 +69,7 @@ public class SysDictDataController extends BaseController @ApiOperation("查询字典数据详细") @PreAuthorize("@ss.hasPermi('system:dict:query')") @GetMapping(value = "/{dictCode}") - public AjaxResult getInfo(@PathVariable Long dictCode) + public AjaxResult getInfo(@PathVariable Long dictCode) { return success(dictDataService.selectDictDataById(dictCode)); } @@ -79,7 +79,7 @@ public class SysDictDataController extends BaseController */ @ApiOperation("根据字典类型查询字典数据信息") @GetMapping(value = "/type/{dictType}") - public AjaxResult dictType(@PathVariable String dictType) + public AjaxResult> dictType(@PathVariable String dictType) { List data = dictTypeService.selectDictDataByType(dictType); if (StringUtils.isNull(data)) diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationController.java b/vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationController.java new file mode 100644 index 0000000..2ee1fd0 --- /dev/null +++ b/vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationController.java @@ -0,0 +1,61 @@ +package com.vetti.web.controller.system; + +import com.vetti.common.core.controller.BaseController; +import com.vetti.common.core.domain.AjaxResult; +import com.vetti.common.service.verification.VerificationService; +import com.vetti.common.utils.MessageUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author ID + * @date 2025/8/28 16:16 + */ +@Api(tags ="验证码共通接口") +@RestController +@RequestMapping("/verification") +@RequiredArgsConstructor +public class VerificationController extends BaseController { + + @Resource + private final VerificationService verificationEmailService; + + + @ApiOperation("发送验证码(标题、内容走的配置文件)") + @PostMapping("/email/send") + public AjaxResult sendVerificationCode(@RequestParam String email) { + boolean isSent = verificationEmailService.sendVerificationEm7941VerificationCode(email); + if (isSent) { + return AjaxResult.success(MessageUtils.messageCustomize("systemVerificationEmailController10001")); + } else { + return AjaxResult.error(MessageUtils.messageCustomize("systemVerificationEmailController10002")); + } + } + + /** + * 验证邮箱验证码 + */ + @PostMapping("/email/verify") + public AjaxResult verifyCode(@RequestParam String email, @RequestParam String code) { + boolean isValid = verificationEmailService.verifyCode(email, code); + if (isValid) { + return AjaxResult.success(MessageUtils.messageCustomize("systemVerificationEmailController10003")); + } else { + return AjaxResult.error(MessageUtils.messageCustomize("systemVerificationEmailController10004")); + } + } + + @ApiOperation("发送验证码(手机)") + @PostMapping("/phone/send") + public AjaxResult sendPhoneVerificationCode(@RequestParam String phone) { + verificationEmailService.sendPhoneVerificationCode(phone); + return AjaxResult.success(MessageUtils.messageCustomize("systemVerificationEmailController10003")); + } +} diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationEmailController.java b/vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationEmailController.java deleted file mode 100644 index a86dc55..0000000 --- a/vetti-admin/src/main/java/com/vetti/web/controller/system/VerificationEmailController.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.vetti.web.controller.system; - -import cn.hutool.core.collection.CollectionUtil; -import com.vetti.common.core.controller.BaseController; -import com.vetti.common.core.domain.R; -import com.vetti.common.exception.ServiceException; -import com.vetti.common.service.verification.VerificationEmailService; -import com.vetti.common.utils.MessageUtils; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - -/** - * @author ID - * @date 2025/8/28 16:16 - */ -@Api(tags ="邮箱验证码") -@RestController -@RequestMapping("/verificationEmail") -@RequiredArgsConstructor -public class VerificationEmailController extends BaseController { - - @Resource - private final VerificationEmailService verificationEmailService; - - - @ApiOperation("发送验证码(标题、内容走的配置文件)") - @PostMapping("/send") - public R sendVerificationCode(@RequestParam String email) { - boolean isSent = verificationEmailService.sendVerificationEm7941VerificationCode(email); - if (isSent) { - return R.ok(MessageUtils.messageCustomize("systemVerificationEmailController10001")); - } else { - return R.fail(MessageUtils.messageCustomize("systemVerificationEmailController10002")); - } - } - - /** - * 验证邮箱验证码 - */ - @PostMapping("/verify") - public R verifyCode(@RequestParam String email, @RequestParam String code) { - boolean isValid = verificationEmailService.verifyCode(email, code); - if (isValid) { - return R.ok(MessageUtils.messageCustomize("systemVerificationEmailController10003")); - } else { - return R.fail(MessageUtils.messageCustomize("systemVerificationEmailController10004")); - } - } -} diff --git a/vetti-common/src/main/java/com/vetti/common/service/verification/VerificationEmailService.java b/vetti-common/src/main/java/com/vetti/common/service/verification/VerificationService.java similarity index 86% rename from vetti-common/src/main/java/com/vetti/common/service/verification/VerificationEmailService.java rename to vetti-common/src/main/java/com/vetti/common/service/verification/VerificationService.java index 744c3ce..5674b01 100644 --- a/vetti-common/src/main/java/com/vetti/common/service/verification/VerificationEmailService.java +++ b/vetti-common/src/main/java/com/vetti/common/service/verification/VerificationService.java @@ -2,7 +2,7 @@ package com.vetti.common.service.verification; import com.vetti.common.entity.verification.BaseTemplateEmail; -public interface VerificationEmailService { +public interface VerificationService { /** * 发送邮箱验证码(内容走的配置文件) @@ -47,4 +47,13 @@ public interface VerificationEmailService { * @return */ boolean verifyCode(String email, String code); + + /** + * 发送手机验证码 + * + * @param phone 收件人手机号 + * @return + */ + void sendPhoneVerificationCode(String phone); + } diff --git a/vetti-common/src/main/java/com/vetti/common/service/verification/impl/VerificationEmailServiceImpl.java b/vetti-common/src/main/java/com/vetti/common/service/verification/impl/VerificationServiceImpl.java similarity index 89% rename from vetti-common/src/main/java/com/vetti/common/service/verification/impl/VerificationEmailServiceImpl.java rename to vetti-common/src/main/java/com/vetti/common/service/verification/impl/VerificationServiceImpl.java index 53898f3..6533c48 100644 --- a/vetti-common/src/main/java/com/vetti/common/service/verification/impl/VerificationEmailServiceImpl.java +++ b/vetti-common/src/main/java/com/vetti/common/service/verification/impl/VerificationServiceImpl.java @@ -6,9 +6,10 @@ import com.vetti.common.constant.CacheConstants; import com.vetti.common.core.redis.RedisCache; import com.vetti.common.entity.verification.BaseTemplateEmail; import com.vetti.common.entity.verification.RoutezVerificationCodeTemplate; -import com.vetti.common.service.verification.VerificationEmailService; +import com.vetti.common.service.verification.VerificationService; import com.vetti.common.utils.MessageUtils; import com.vetti.common.utils.email.EmailUtil; +import com.vetti.common.utils.sms.TwilioSmsUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -21,7 +22,7 @@ import java.util.concurrent.TimeUnit; * @date 2025/9/4 16:49 */ @Service -public class VerificationEmailServiceImpl implements VerificationEmailService { +public class VerificationServiceImpl implements VerificationService { @Resource private TwilioConfig twilioConfig; @@ -32,6 +33,9 @@ public class VerificationEmailServiceImpl implements VerificationEmailService { @Resource private EmailUtil emailUtil; + @Resource + private TwilioSmsUtil twilioSmsUtil; + @Resource private RedisCache redisCache; @@ -129,6 +133,16 @@ public class VerificationEmailServiceImpl implements VerificationEmailService { return true; } + @Override + public void sendPhoneVerificationCode(String phone){ + + String code = generateVerificationCode(); + redisCache.setCacheObject(CacheConstants.VERIFICATION_EMAIL_CODE_KEY + phone, code, + verificationConfig.getExpirationMinutes(), TimeUnit.MINUTES); + String msg = "验证码为:"+code; + twilioSmsUtil.send(phone,msg); + } + private boolean sendVerificationCode(String email, String subject, String content) { String code = generateVerificationCode();