From 3244b550596e0330031b3f4547356927df83b0ad Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 19 五月 2025 11:48:35 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java |   98 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 80 insertions(+), 18 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
index 52f457e..6a25b2b 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.account.controller;
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.alipay.api.internal.util.codec.Base64;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -15,8 +16,10 @@
 import com.ruoyi.account.wx.pojo.AppletUserEncrypteData;
 import com.ruoyi.account.wx.tools.WxAppletTools;
 import com.ruoyi.account.wx.tools.WxUtils;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.FileUploadUtils;
+import com.ruoyi.common.core.utils.HttpUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.redis.service.RedisService;
@@ -30,13 +33,14 @@
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
-import org.springframework.mock.web.MockMultipartFile;
+//import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -63,16 +67,23 @@
     private WeixinProperties wxConfig;
     @Autowired
     private RestTemplate wxRestTemplate;
+    @Resource
+    private RedisService redisService;
+
     /**
      * 上传文件存储在本地的根路径
      */
-    @Value("${file.path}")
-    private String localFilePath;
+//    @Value("${file.upload.location}")
+//    private String localFilePath;
+
+
+
+
     @ApiOperation(value = "通过code获得openid,获取用户信息",tags = {"微信小程序登录"})
     @PostMapping("/openIdByJsCode")
     public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserEncrypteData data) {
         log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode());
-        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
         Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(data.getCode()));
         String openid = body.getOpenid();
         String sessionKey = body.getSessionKey();
@@ -99,17 +110,17 @@
     public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserDecodeData appletUserDecodeData) {
         return AjaxResult.success(appUserService.wxLogin(appletUserDecodeData, null));
     }
-    public static MultipartFile convertInputStreamToMultipartFile(InputStream inputStream, String fileName, String contentType) throws IOException {
-        return new MockMultipartFile(fileName, fileName, contentType, inputStream);
-    }
 
-    /**
-     * 获取微信小程序二维码
-     */
-    public void getQRCode() {
+//    public static MultipartFile convertInputStreamToMultipartFile(InputStream inputStream, String fileName, String contentType) throws IOException {
+//        return new MockMultipartFile(fileName, fileName, contentType, inputStream);
+//    }
+
+    @ApiOperation(value = "获取微信小程序二维码",tags = {"获取微信小程序二维码"})
+    @PostMapping("/getQRCode")
+    public AjaxResult getQRCode() {
         InputStream inputStream = null;
         OutputStream outputStream = null;
-        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
         String accessToken = appletTools.getAccessToken("");
         try {
             String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
@@ -134,11 +145,10 @@
             System.err.println(Base64.encodeBase64String(result));
             inputStream = new ByteArrayInputStream(result);
             String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpeg";
-            MultipartFile multipartFile = convertInputStreamToMultipartFile(inputStream, finalFileName, "image/jpeg");
-            String name = FileUploadUtils.upload(localFilePath, multipartFile);
-            System.err.println(name);
-            // 保存文件到本地
-//            String s = ossService.uploadFile2OSS(inputStream, objectName);
+//            MultipartFile multipartFile = convertInputStreamToMultipartFile(inputStream, finalFileName, "image/jpeg");
+//            String name = FileUploadUtils.upload(localFilePath, multipartFile);
+//            System.err.println(name);
+            return AjaxResult.success(null);
         } catch (Exception e) {
             System.err.println("调用小程序生成微信永久小程序码URL接口异常" + e);
         } finally {
@@ -157,5 +167,57 @@
                 }
             }
         }
+        return AjaxResult.success();
+    }
+    
+    
+    /**
+     * 获取微信token
+     * @return
+     */
+    @PostMapping("/getWXToken")
+    public R<String> getWXToken(){
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
+        String accessToken = appletTools.getAccessToken("");
+        return R.ok(accessToken);
+    }
+    
+    
+    /**
+     * 敏感词检测
+     * @param content
+     * @param openid
+     * @return
+     */
+    @PostMapping("/sensitiveWordDetection")
+    public R<Boolean> sensitiveWordDetection (@RequestParam("content") String content, @RequestParam("openid") String openid){
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService);
+        String accessToken = appletTools.getAccessToken("");
+        com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
+        jsonObject.put("content", content);
+        jsonObject.put("version", 2);
+        jsonObject.put("scene", 2);
+        jsonObject.put("openid", openid);
+        String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken, jsonObject.toString());
+        com.alibaba.fastjson2.JSONObject object = com.alibaba.fastjson2.JSONObject.parseObject(post);
+        Integer errcode = object.getInteger("errcode");
+        if(0 != errcode){
+            throw new RuntimeException(object.getString("errmsg"));
+        }
+        JSONArray detail = object.getJSONArray("detail");
+        for (int i = 0; i < detail.size(); i++) {
+            JSONObject jsonObject1 = detail.getJSONObject(i);
+            Integer errcode1 = jsonObject1.getInteger("errcode");
+            if(0 == errcode1){
+                String suggest = jsonObject1.getString("suggest");
+                Integer label = jsonObject1.getInteger("label");
+                String keyword = jsonObject1.getString("keyword");
+                Integer prob = jsonObject1.getInteger("prob");
+                if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
+                    return R.ok(true);
+                }
+            }
+        }
+        return R.ok(false);
     }
 }

--
Gitblit v1.7.1