From 792cbb986fb8c32f6bbc1638c4ae264372e7a28f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 一月 2025 19:31:36 +0800
Subject: [PATCH] 新增引流接口及业务逻辑
---
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