Jelajahi Sumber

fix : 新增敏感词检测

bilingfeng 1 tahun lalu
induk
melakukan
d89445e272

+ 1 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java

@@ -23,7 +23,7 @@ public class SDKApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(SDKApplication.class, args);
-        System.out.println("赞象SDK服务启动成功 <角色新增拓展属性1> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <敏感词检测> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 9 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/UserController.java

@@ -47,6 +47,9 @@ public class UserController {
     @Autowired
     private IGameShellLogService gameShellLogService;
 
+    @Autowired
+    private IMsgSceneCheckService msgSceneCheckService;
+
     @ApiOperation(value = "游戏分享信息")
     @GetMapping("/share/game")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameShareVO.class)})
@@ -123,4 +126,10 @@ public class UserController {
         return ResultVO.ok(gameShellLogService.gameShellLogAdd(param, request));
     }
 
+    @ApiOperation(value = "敏感词检测")
+    @PostMapping("/msg/check")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = String.class)})
+    public ResultVO<String> msgCheck(@Validated @RequestBody MsgSceneCheckParam param, @ValidLogin UserData userData) {
+        return ResultVO.ok(msgSceneCheckService.msgCheck(param, userData));
+    }
 }

+ 31 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/pojo/param/MsgSceneCheckParam.java

@@ -0,0 +1,31 @@
+package com.zanxiang.game.module.sdk.pojo.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-11-13
+ * @description : 消息检测参数
+ */
+@Data
+public class MsgSceneCheckParam {
+
+    /**
+     * 文本内容
+     */
+    @NotBlank(message = "文本内容不可为空")
+    @ApiModelProperty(notes = "文本内容")
+    private String content;
+
+    /**
+     * 场景
+     */
+    @NotNull(message = "场景值不可为空")
+    @ApiModelProperty(notes = "场景枚举值(1 资料;2 评论;3 论坛;4 社交日志)")
+    private Integer scene;
+
+}

+ 21 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IMsgSceneCheckService.java

@@ -0,0 +1,21 @@
+package com.zanxiang.game.module.sdk.service;
+
+import com.zanxiang.game.module.sdk.pojo.param.MsgSceneCheckParam;
+import com.zanxiang.game.module.sdk.pojo.param.UserData;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-11-13
+ * @description : 小程序安全检测
+ */
+public interface IMsgSceneCheckService {
+
+    /**
+     * 消息检测
+     *
+     * @param param    : 检测参数
+     * @param userData : 用户信息
+     * @return : 返回检测结果
+     */
+    String msgCheck(MsgSceneCheckParam param, UserData userData);
+}

+ 64 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/MsgSceneCheckServiceImpl.java

@@ -0,0 +1,64 @@
+package com.zanxiang.game.module.sdk.service.impl;
+
+import com.zanxiang.game.module.mybatis.entity.User;
+import com.zanxiang.game.module.sdk.pojo.dto.GameAppletDTO;
+import com.zanxiang.game.module.sdk.pojo.param.MsgSceneCheckParam;
+import com.zanxiang.game.module.sdk.pojo.param.UserData;
+import com.zanxiang.game.module.sdk.service.IGameAppletService;
+import com.zanxiang.game.module.sdk.service.IMsgSceneCheckService;
+import com.zanxiang.game.module.sdk.service.IUserService;
+import com.zanxiang.game.module.sdk.service.api.WxApiService;
+import com.zanxiang.module.util.JsonUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-11-13
+ * @description : 小程序安全检测
+ */
+@Slf4j
+@Service
+public class MsgSceneCheckServiceImpl implements IMsgSceneCheckService {
+
+    @Autowired
+    private WxApiService wxApiService;
+
+    @Autowired
+    private IGameAppletService gameAppletService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public String msgCheck(MsgSceneCheckParam param, UserData userData) {
+        User user = userService.getById(userData.getUserId());
+        GameAppletDTO gameAppletDTO = gameAppletService.getByGameId(userData.getGameId());
+        String accessToken = wxApiService.getAccessToken(gameAppletDTO.getAppId(), gameAppletDTO.getAppSecret());
+        Map<String, Object> paramMap = new HashMap<>(4);
+        paramMap.put("content", param.getContent());
+        paramMap.put("version", 2);
+        paramMap.put("scene", param.getScene());
+        paramMap.put("openid", user.getOpenId());
+        URI uri = UriComponentsBuilder.fromHttpUrl("https://api.weixin.qq.com/wxa/msg_sec_check")
+                .queryParam("access_token", accessToken)
+                .build().toUri();
+        String result = null;
+        try {
+            result = restTemplate.postForObject(uri, paramMap, String.class);
+        } catch (Exception e) {
+            log.error("消息检测腾讯接口异常, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
+        }
+        return result;
+    }
+}