From 14e95631f075f951a44033faeab3075bb05eda1d Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 13 五月 2025 14:57:47 +0800
Subject: [PATCH] 解决问题:取水口解绑之后,不能获取取水口详情信息。
---
pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java | 143 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 143 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java
new file mode 100644
index 0000000..e11e3f3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java
@@ -0,0 +1,143 @@
+package com.dy.pipIrrApp.captcha;
+
+import com.dy.common.multiDataSource.DataSourceContext;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrApp.captcha.dto.CaptchaDomain;
+import com.dy.pipIrrGlobal.pojoBa.BaCaptcha;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.imageio.ImageIO;
+import java.io.IOException;
+import java.util.Calendar;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-11 13:45
+ * @LastEditTime 2024-09-11 13:45
+ * @Description
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path="captcha")
+public class CaptchaCtrl {
+ @Autowired
+ private CaptchaSV captchaSV;
+
+ /**
+ * 鑾峰彇楠岃瘉鐮�
+ * @param type锛屽浘鐗囩被鍨嬶細char-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮�
+ * @return
+ */
+ @GetMapping("/get")
+ @ResponseBody
+ public BaseResponse<CaptchaDomain> getCaptcha(HttpServletRequest request, @RequestParam(value = "type", required = false, defaultValue = "char") String type) {
+ // 閰嶇疆鏁版嵁婧�
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ String wxDataSourceName = httpRequest.getHeader("tag");
+ if(wxDataSourceName != null && wxDataSourceName.trim().length() > 0){
+ log.info("寰俊寮�鍙戯紝璁剧疆鏁版嵁婧愬悕绉颁负:" + wxDataSourceName);
+ //鎶婄粍缁囧崟浣嶆爣绛句綔涓烘暟鎹簮鍚嶇О
+ DataSourceContext.set(wxDataSourceName);
+ } else {
+ log.info("鐢ㄦ埛鏈�夋嫨鏁版嵁婧�");
+ }
+
+ // 鐢熸垚楠岃瘉鐮佸疄浣�
+ CaptchaDomain captchaDomain = captchaSV.createGoogleCaptcha(type);
+ if (null != captchaDomain) {
+
+ // 楠岃瘉鐮佷繚瀛樿嚦redis
+ // redisUtils.set(captchaDomain.getToken(), captchaDomain.getCode(), 300L);
+
+ // 楠岃瘉鐮佷繚瀛樿嚦session
+ //HttpSession session = (HttpSession) request.getSession();
+ //session.setAttribute(captchaDomain.getToken(), captchaDomain.getCode());
+
+ /**
+ * 楠岃瘉淇濆瓨鍒版暟鎹簱
+ * 鑾峰彇褰撳墠鏃堕棿鎴冲苟寤跺悗3鍒嗛挓
+ */
+ Long timestamp = System.currentTimeMillis();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(timestamp);
+ calendar.add(Calendar.SECOND, 180);
+
+ BaCaptcha baCaptcha = new BaCaptcha();
+ baCaptcha.setToken(captchaDomain.getToken());
+ baCaptcha.setCode(captchaDomain.getCode());
+ baCaptcha.setExpiration(calendar.getTimeInMillis());
+ Long rec = captchaSV.addCaptcha(baCaptcha);
+ //System.out.println("token: " + captchaDomain.getToken() + "; code: " + captchaDomain.getCode());
+
+ // 鏃犵敤淇℃伅璁剧┖
+ captchaDomain.setText(null);
+ captchaDomain.setCode(null);
+ // 杩斿洖鍓嶇淇℃伅
+ return BaseResponseUtils.buildSuccess(captchaDomain);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * 鐩存帴杈撳嚭鍥剧墖
+ * @param type锛屽浘鐗囩被鍨嬶細char-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮�
+ */
+ @GetMapping("/get/image")
+ public void getCaptchaImage(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "type", required = false, defaultValue = "char") String type) {
+ CaptchaDomain captchaDomain = null;
+
+ // 鐢熸垚璋锋瓕楠岃瘉鐮佸疄浣�
+ captchaDomain = captchaSV.createGoogleCaptcha(type);
+
+ // 楠岃瘉鐮佷繚瀛樿嚦redis
+ // redisUtils.set(captchaDomain.getToken(), captchaDomain.getCode(), 300L);
+
+ // 楠岃瘉鐮佷繚瀛樿嚦session
+ //HttpSession session = (HttpSession) request.getSession();
+ //session.setAttribute(captchaDomain.getToken(), captchaDomain.getCode());
+
+ /**
+ * 楠岃瘉淇濆瓨鍒版暟鎹簱
+ * 鑾峰彇褰撳墠鏃堕棿鎴冲苟寤跺悗3鍒嗛挓
+ */
+ Long timestamp = System.currentTimeMillis();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(timestamp);
+ calendar.add(Calendar.SECOND, 180);
+
+ BaCaptcha baCaptcha = new BaCaptcha();
+ baCaptcha.setToken(captchaDomain.getToken());
+ baCaptcha.setCode(captchaDomain.getCode());
+ baCaptcha.setExpiration(calendar.getTimeInMillis());
+ Long rec = captchaSV.addCaptcha(baCaptcha);
+ //System.out.println("token: " + captchaDomain.getToken() + "; code: " + captchaDomain.getCode());
+
+ // 浠ユ枃浠舵祦鐨勫舰寮忥紝杈撳嚭楠岃瘉鐮佸浘鐗�
+ ServletOutputStream out = null;
+ try {
+ response.setContentType("image/jpeg");
+ out = response.getOutputStream();
+ ImageIO.write(captchaDomain.getImage(), "jpg", out);
+ out.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (out != null) {
+ out.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
--
Gitblit v1.8.0