From c2976b80e8850be2d28dc2132c6659856b871f3c Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期四, 08 五月 2025 21:10:42 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaSV.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 104 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaSV.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaSV.java new file mode 100644 index 0000000..b8b819b --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaSV.java @@ -0,0 +1,104 @@ +package com.dy.pipIrrApp.captcha; + +import com.dy.pipIrrApp.captcha.dto.CaptchaDomain; +import com.dy.pipIrrGlobal.daoBa.BaCaptchaMapper; +import com.dy.pipIrrGlobal.pojoBa.BaCaptcha; +import com.google.code.kaptcha.Producer; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.imageio.ImageIO; +import java.io.ByteArrayOutputStream; +import java.util.Base64; +import java.util.UUID; + +/** + * @author ZhuBaoMin + * @date 2024-09-11 13:46 + * @LastEditTime 2024-09-11 13:46 + * @Description + */ + +@Slf4j +@Service +public class CaptchaSV { + @Autowired + private BaCaptchaMapper baCaptchaMapper; + + @Resource(name = "captchaProducer") + private Producer captchaProducer; + + @Resource(name = "captchaProducerMathOne") + private Producer captchaProducerMathOne; + + @Resource(name = "captchaProducerMathTwo") + private Producer captchaProducerMathTwo; + + private static final String TYPE_CHAR = "char"; + private static final String TYPE_MATH_ONE = "math"; + private static final String TYPE_MATH_TWO = "math2"; + + /** + * Kaptcha鐢熸垚楠岃瘉鐮佸疄浣� + * @param type锛宑har - 瀛楃(缂虹渷) | math - 涓�浣嶆暟绠楀紡 | math2 - 涓や綅鏁扮畻寮� + * @return + */ + public CaptchaDomain createGoogleCaptcha(String type) { + // 瀹氫箟楠岃瘉鐮佸疄浣� + CaptchaDomain captchaDomain = new CaptchaDomain(); + // 涓�浣嶆暟鍔犲噺涔橀櫎 + if (TYPE_MATH_ONE.equals(type)) { + // 鐢熸垚鏂囨湰 + String producerText = captchaProducerMathOne.createText(); + // 璁剧疆楠岃瘉鐮佸瓧绗� + captchaDomain.setText(producerText.substring(0, producerText.indexOf("@"))); + // 璁剧疆楠岃瘉鐮佺瓟妗堢爜 + captchaDomain.setCode(producerText.substring(producerText.indexOf("@") + 1)); + // 璁剧疆楠岃瘉鐮佸浘鐗� + captchaDomain.setImage(captchaProducerMathOne.createImage(captchaDomain.getText())); + } + // 涓や綅鏁板姞鍑忎箻闄� + else if (TYPE_MATH_TWO.equals(type)) { + String producerText = captchaProducerMathTwo.createText(); + captchaDomain.setText(producerText.substring(0, producerText.indexOf("@"))); + captchaDomain.setCode(producerText.substring(producerText.indexOf("@") + 1)); + captchaDomain.setImage(captchaProducerMathTwo.createImage(captchaDomain.getText())); + } + // 缂虹渷鎯呭喌锛氬瓧绗� + else { + captchaDomain.setText(captchaProducer.createText()); + captchaDomain.setCode(captchaDomain.getText()); + captchaDomain.setImage(captchaProducer.createImage(captchaDomain.getText())); + } + // 鐢熸垚base64 + try { + // 瀹氫箟瀛楄妭鏁扮粍杈撳嚭娴� + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + // 灏嗗浘鍍忎互 jpg 鐨勫舰寮忥紝鍐欏埌瀛楄妭鏁扮粍杈撳嚭娴佷腑 + ImageIO.write(captchaDomain.getImage(), "jpg", outputStream); + + // 鍐欏叆base64鏍煎紡 + captchaDomain.setBase64("data:image/jpg;base64," + Base64.getEncoder().encodeToString(outputStream.toByteArray())); + // 鍐欏叆鍞竴Token + captchaDomain.setToken(UUID.randomUUID().toString()); + // 杩斿洖缁撴灉 + return captchaDomain; + } catch (Exception e) { + System.out.println(e.getMessage()); + return null; + } + } + + /** + * 娣诲姞鍥剧墖楠岃瘉璁板綍 + * @param po + * @return + */ + public Long addCaptcha(BaCaptcha po) { + baCaptchaMapper.insert(po); + return po.getId(); + } + +} -- Gitblit v1.8.0