From 026447959141110afd24d18b61da953c62aa2209 Mon Sep 17 00:00:00 2001 From: zhubaomin <470473919@qq.com> Date: 星期三, 23 四月 2025 12:23:55 +0800 Subject: [PATCH] 各轮灌组开阀时间提前2分钟,第一组除外 --- 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