From c27f4f482b44f7bd6d973dae8a85b93a02fbc2b4 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Fri, 22 Mar 2024 21:30:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E7=94=9F=E6=88=90?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manger/controller/IndexController.java | 16 ++++++-- .../manger/service/ValidateCodeService.java | 12 ++++++ .../service/impl/ValidateCodeServiceImpl.java | 36 ++++++++++++++++++ .../manger/controller/IndexController.class | Bin 2016 -> 2690 bytes .../spzx/model/vo/system/ValidateCodeVo.java | 12 ++++-- .../spzx/model/vo/system/ValidateCodeVo.class | Bin 2466 -> 2882 bytes 6 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ValidateCodeService.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ValidateCodeServiceImpl.java diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/IndexController.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/IndexController.java index 7125688..d4c6c90 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/IndexController.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/IndexController.java @@ -1,17 +1,16 @@ package com.atguigu.spzx.manger.controller; import com.atguigu.spzx.manger.service.SysUserService; +import com.atguigu.spzx.manger.service.ValidateCodeService; import com.atguigu.spzx.model.dto.system.LoginDto; import com.atguigu.spzx.model.vo.result.Result; import com.atguigu.spzx.model.vo.result.ResultCodeEnum; import com.atguigu.spzx.model.vo.system.LoginVo; +import com.atguigu.spzx.model.vo.system.ValidateCodeVo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @Tag(name = "用户接口") @RestController @@ -19,6 +18,8 @@ import org.springframework.web.bind.annotation.RestController; public class IndexController { @Autowired private SysUserService sysUserService; + @Autowired + private ValidateCodeService validateCodeService; @Operation(summary = "登录请求", description = "登录请求实现") @PostMapping("login") @@ -26,4 +27,11 @@ public class IndexController { LoginVo vo = sysUserService.login(loginDto); return Result.success(vo, ResultCodeEnum.SUCCESS); } + + @Operation(summary = "生成验证码", description = "生成验证码信息") + @GetMapping("generateValidateCode") + public Result generateValidateCode() { + ValidateCodeVo vo = validateCodeService.generateValidateCode(); + return Result.success(vo, ResultCodeEnum.SUCCESS); + } } diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ValidateCodeService.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ValidateCodeService.java new file mode 100644 index 0000000..d40b649 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ValidateCodeService.java @@ -0,0 +1,12 @@ +package com.atguigu.spzx.manger.service; + +import com.atguigu.spzx.model.vo.system.ValidateCodeVo; + +public interface ValidateCodeService { + /** + * 生成验证码信息 + * + * @return 验证码响应结果实体类 + */ + ValidateCodeVo generateValidateCode(); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ValidateCodeServiceImpl.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ValidateCodeServiceImpl.java new file mode 100644 index 0000000..d91db0d --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ValidateCodeServiceImpl.java @@ -0,0 +1,36 @@ +package com.atguigu.spzx.manger.service.impl; + +import cn.hutool.captcha.CaptchaUtil; +import cn.hutool.captcha.CircleCaptcha; +import com.atguigu.spzx.manger.service.ValidateCodeService; +import com.atguigu.spzx.model.vo.system.ValidateCodeVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +@Service +public class ValidateCodeServiceImpl implements ValidateCodeService { + @Autowired + private RedisTemplate redisTemplate; + + /** + * 生成验证码信息 + * + * @return 验证码响应结果实体类 + */ + @Override + public ValidateCodeVo generateValidateCode() { + // 1. 通过工具生成验证码 + CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(150, 48, 4, 2); + String code = captcha.getCode(); + String base64Image = "data:image/png;base64," + captcha.getImageBase64(); + // 2. 验证码存储到Redis中,Redis的key为UUID,值为验证码的值 + String key = UUID.randomUUID().toString(); + // 3. 返回ValidateCodeVo + redisTemplate.opsForValue().set(key, code, 1, TimeUnit.MINUTES); + return ValidateCodeVo.builder().codeKey(key).codeValue(base64Image).build(); + } +} diff --git a/spzx-manager/target/classes/com/atguigu/spzx/manger/controller/IndexController.class b/spzx-manager/target/classes/com/atguigu/spzx/manger/controller/IndexController.class index d23e1fabbd7f5e57b4d6cd4dba2c98bf68e8000a..75663be0a9152709fbbe872fc80130a2ef059d92 100644 GIT binary patch delta 748 zcmZva%}*0S7{;I3?ONSd2^2J>B-9ouZGp8@flbrI6w)PJo0^bt z08+Btfh!k8O+XG9uKX1o2*}?+Vti&w01Jnicjn#S^S;l_>|w>%8uQ@q?jC@b7~3-E zw9p;gM!<`Q2nzUSQ(rQZsTr$pYSQ{(rO`JFNCt}7wXCc*0e zL8d=nQclqoN|pghA{8eqtH<-j(~X5cn}w6LfS@BD}*}j8R5SUSC;G=iX36j6|F}!DvLcA-0sHnX@baRH22lEJ^^a zgu!(s9&;zfAK5@>^hKSp`$1j`O{M@pz0@gjpah(YiJ}edEaKtocA%4V7kPs>$I#88 z;fXpz9am2|p4oVggpC*cF$9vIAZ$8#Mba&uzve>lU3;MCm8T(Uq=l;JPt^ZHNMI!P z9ljmZeq&a{rO6=8hLp+sCB?Z(Q(5a}*^-~WazFjj&j8+B_z6=#h(=ldt%ChL^*eqZ OvN4Pi_8q-o-~R*g^o)`K delta 291 zcmX|*O-=$q6okK?$p{W6h7dPkA~=I02*a;GqoW5Q@e;joX+pvY<|M?0i3<+E$|HCT zSH|iNanY|{bydChRwv)b@$UC?3luzW;&t%;8ZN@}tMc<=2&i#{;Y{*@uq_OPk!KyT zOw0(Q{s(5`<#SbMh6ahM8z2KIU7?}Qg;=M|57Rg2jWrUQTGjIYHlcW9?|0oLJ>_at zxuP%kKzd~K4cB@BLx16^x{+RH88fj=nJG43Vyu=f& z`h*XT<1jqQjKiqR2+Y9f=nKyHH~1)`?>>t7-Q8`H{=k8z*?aG~=bm%VcfNBrzy5pg zM*zckFM*iAXu&O8(x0u`vsKHR|M(-T?9Ql?wcuLbWzSb-Yf6^v8R@GL%BS4!rOTsL zyELOJDF_&8n1~C+5800G9~Nlp>78mu63q#u(r7_izZ3wI>s-_1!W(@jZb9jbTLBT6xi@ z+}#k!o~b&%T~<@JXHS>Z5yx?T>DzQ5FfeX2?H|h7SyizX_FAs=ELm5u%4)`z)?}fm z$}%U=GNZgg#h%xv8RlPKfAZ(IR~}uzGN;qkR$DIUq%f1yAy)*(2<>wcVRhQ^4n~My z`?&3>iE4RTRnAI=rRm}pWNAuPY`uZbaXDrzJPF-GC3lmfa&^0RiVDVVz(x9K*QERTwk}b%jXMI_b;8 zTwcycL7S(~jO9n^dW`g}D6d-b$-TPCR4|PWCw(`JM_|{pF^yrTCf#bKppMxZ__egu z&@guE8WGr9qr=0ipFX_z*`xbc|G4($!*8zr{=?Nrx9*cn6Uy`RN@tL$WsbV8@A(xu zA0q0t$1#z@DV$E=ZCxX01iI_hXFCh-oQm2)ST@IG!FMYp;^&QFM2ex&1mLa zVbM!oj5&^~jFhD3DFW2F^jy@36L?o(#|m6l3para%*y|(k}n}P*v5XAWq*qC!%oh2 z-^*1C$3A}hJq&PzeR$=@AhnvY8y2_r@JtsK^ZmUpfbILQrzb_K>cOLENfJBfF=>IiU2Vv0@d K9M0n+vi||z@@J_4 delta 1194 zcmah|O-~b16g_YHrZa7a(ts2zs8AGPiWU_RiYP*r55=OQ8y7lCLqmvFTim$lFK}Vz z9~cuiE;K48EKD>e8eRAo_#pzG*C|k%CZ?VD?zfR(f6DJ-&V8W|lkB{^q1)o78}cVh8euj5La-pv z%~Oc`34T2V^wQ8+&tM}!4_3@I!I&g>!CkjML%c6T_Hk8awVvdv;OT%Q>wZLyDKEbHZJnDH=n5%lcW}RW2 zE_jHL%Go{4YRHEFKz5b8p)kEZS1=pPm>d~mCEVY}ywR4@`_|Cr#?5$XuQ^_8r(uvv zZkJ#V0~jQy7Tm%R6KI@(G|o}ygN+LqrX(?iPK;2}F^4v!DETo;oDKvG^Dn{%%uPfM zX#AUE69+vpAeK;JIY5>YO&&`|jxeWcrk?l;^DTwyd-SM!z1*1sH4j5fEOrow%5`)6 zsY