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