job51-gitlab-cr-node-jt-1 2.5.5 → 2.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +2 -2
- package/package.json +1 -1
- package/diff +0 -636
- package/log.txt +0 -1817
package/index.js
CHANGED
|
@@ -81,7 +81,7 @@ class GitLabCodeReviewer {
|
|
|
81
81
|
debugLog(`========== Diff Block ${blockIndex} 开始 ==========`);
|
|
82
82
|
debugLog(`文件路径:${diffObject.new_path || diffObject.old_path}`);
|
|
83
83
|
debugLog(`line_info: old_start=${diffObject.line_info?.old_start}, old_count=${diffObject.line_info?.old_count}, new_start=${diffObject.line_info?.new_start}, new_count=${diffObject.line_info?.new_count}`);
|
|
84
|
-
debugLog(`diff
|
|
84
|
+
debugLog(`diff 内容预览(前 500 字符):${diffObject.diff?.substring(0, 500)}`);
|
|
85
85
|
debugLog(`========== Diff Block ${blockIndex} 结束 ==========`);
|
|
86
86
|
|
|
87
87
|
// 构造包含元数据的 diff 内容
|
|
@@ -210,7 +210,7 @@ ${diffObject.diff}`;
|
|
|
210
210
|
|
|
211
211
|
// 打印报告内容前 500 字符(避免过长)
|
|
212
212
|
const reportPreview = claudeResult?.length > 500 ? claudeResult.substring(0, 500) + '...' : claudeResult;
|
|
213
|
-
debugLog(`AI 审核报告内容预览:${
|
|
213
|
+
debugLog(`AI 审核报告内容预览:${reportPreview}`);
|
|
214
214
|
|
|
215
215
|
// 使用正则提取 LINE_INFO 内容(支持换行)
|
|
216
216
|
const lineInfoMatch = claudeResult?.match(/<LINE_INFO>\s*\[([^\]]*)\]\s*<\/LINE_INFO>/);
|
package/package.json
CHANGED
package/diff
DELETED
|
@@ -1,636 +0,0 @@
|
|
|
1
|
-
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
|
|
2
|
-
index e3829e9ad..92d19ba89 100644
|
|
3
|
-
--- a/.gitlab-ci.yml
|
|
4
|
-
+++ b/.gitlab-ci.yml
|
|
5
|
-
@@ -1,4 +1,30 @@
|
|
6
|
-
-include:
|
|
7
|
-
- - project: 'linton.cao/ai-public-templates'
|
|
8
|
-
- file: '/code-review/gitlab-ci.yml'
|
|
9
|
-
- ref: main
|
|
10
|
-
|
|
11
|
-
+stages:
|
|
12
|
-
+ - ai
|
|
13
|
-
+ai:
|
|
14
|
-
+ stage: ai
|
|
15
|
-
+ # 调整规则以适应您想要触发作业的方式:
|
|
16
|
-
+ # - 手动运行
|
|
17
|
-
+ # - 合并请求事件
|
|
18
|
-
+ # - 当评论包含 '@claude' 时的 web/API 触发
|
|
19
|
-
+ rules:
|
|
20
|
-
+ - if: '$CI_PIPELINE_SOURCE == "web"'
|
|
21
|
-
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
22
|
-
+ variables:
|
|
23
|
-
+ GIT_STRATEGY: fetch
|
|
24
|
-
+ script:
|
|
25
|
-
+ - echo "Running AI code review for merge request $CI_MERGE_REQUEST_IID"
|
|
26
|
-
+ - echo "Project ID $CI_PROJECT_ID"
|
|
27
|
-
+ - echo "MR IID $CI_MERGE_REQUEST_IID"
|
|
28
|
-
+ - echo "API URL $CI_API_V4_URL"
|
|
29
|
-
+ # 构建 API URL
|
|
30
|
-
+ - API_URL="$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/changes"
|
|
31
|
-
+ - >
|
|
32
|
-
+ curl --header "PRIVATE-TOKEN: glpat-gYMwUhqyCcH8UUZ8xykA"
|
|
33
|
-
+ "$API_URL" > mr_changes.json
|
|
34
|
-
+ - cat mr_changes.json
|
|
35
|
-
+ - >
|
|
36
|
-
+ claude
|
|
37
|
-
+ -p "请分析以下合并请求的代码变更并提供代码审查反馈。特别关注潜在的错误、代码质量、最佳实践和安全问题。变更详情: $(cat mr_changes.json)"
|
|
38
|
-
+ --permission-mode acceptEdits
|
|
39
|
-
+ --allowedTools "Bash(*) Read(*) Edit(*) Write(*) mcp__gitlab"
|
|
40
|
-
+ --debug
|
|
41
|
-
|
|
42
|
-
diff --git a/51job-dev-boot-bbs/pom.xml b/51job-dev-boot-bbs/pom.xml
|
|
43
|
-
index c63beac38..6be1ef1e0 100644
|
|
44
|
-
--- a/51job-dev-boot-bbs/pom.xml
|
|
45
|
-
+++ b/51job-dev-boot-bbs/pom.xml
|
|
46
|
-
@@ -103,7 +103,7 @@
|
|
47
|
-
<dependency>
|
|
48
|
-
<groupId>org.jsoup</groupId>
|
|
49
|
-
<artifactId>jsoup</artifactId>
|
|
50
|
-
- <version>1.14.6</version>
|
|
51
|
-
+ <version>1.14.3</version>
|
|
52
|
-
</dependency>
|
|
53
|
-
|
|
54
|
-
<!-- 引入es -->
|
|
55
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/client/feign/UserTaskClient.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/client/feign/UserTaskClient.java
|
|
56
|
-
deleted file mode 100644
|
|
57
|
-
index ced593c06..000000000
|
|
58
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/client/feign/UserTaskClient.java
|
|
59
|
-
+++ /dev/null
|
|
60
|
-
@@ -1,49 +0,0 @@
|
|
61
|
-
-package com.job51.dev.bbs.client.feign;
|
|
62
|
-
-
|
|
63
|
-
-import com.job51.dev.bbs.entity.dto.UserTaskPop;
|
|
64
|
-
-import com.job51.dev.common.entity.dto.Result;
|
|
65
|
-
-import org.springframework.cloud.openfeign.FeignClient;
|
|
66
|
-
-import org.springframework.web.bind.annotation.GetMapping;
|
|
67
|
-
-import org.springframework.web.bind.annotation.PathVariable;
|
|
68
|
-
-import org.springframework.web.bind.annotation.PostMapping;
|
|
69
|
-
-import org.springframework.web.bind.annotation.RequestBody;
|
|
70
|
-
-import org.springframework.web.bind.annotation.RequestParam;
|
|
71
|
-
-
|
|
72
|
-
-import java.util.List;
|
|
73
|
-
-
|
|
74
|
-
-/**
|
|
75
|
-
- * 用户任务API
|
|
76
|
-
- */
|
|
77
|
-
-@FeignClient(value = "51job-user-task-v1", contextId = "51job-user-task")
|
|
78
|
-
-public interface UserTaskClient {
|
|
79
|
-
-
|
|
80
|
-
- /**
|
|
81
|
-
- * 获取用户是否展示任务模块
|
|
82
|
-
- *
|
|
83
|
-
- * @param accountId 用户id
|
|
84
|
-
- * @return 是否展示:true-展示,false-不展示,默认false
|
|
85
|
-
- */
|
|
86
|
-
- @GetMapping("/inner/user-task" + "/user-task/module-control/{accountId}")
|
|
87
|
-
- Result<Boolean> userTaskModuleControl(@PathVariable Long accountId);
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
- /**
|
|
91
|
-
- * 获取第一个 未完成的 有弹窗的 任务信息
|
|
92
|
-
- *
|
|
93
|
-
- * @param accountId 用户id
|
|
94
|
-
- * @return 用户弹窗信息
|
|
95
|
-
- */
|
|
96
|
-
- @GetMapping("/inner/user-task" + "/user-task/pop/{accountId}")
|
|
97
|
-
- Result<UserTaskPop> getUserTaskPop(@PathVariable Long accountId);
|
|
98
|
-
-
|
|
99
|
-
- /**
|
|
100
|
-
- * 判断当前用户是否为对应任务目标人群
|
|
101
|
-
- *
|
|
102
|
-
- * @param accountId 用户id
|
|
103
|
-
- * @param actionType 任务类型
|
|
104
|
-
- * @return Boolean
|
|
105
|
-
- */
|
|
106
|
-
- @GetMapping("/inner/user-task" + "/user-task/target-people")
|
|
107
|
-
- Result<Boolean> isTargetPeople(@RequestParam Long accountId, @RequestParam String actionType);
|
|
108
|
-
-
|
|
109
|
-
-}
|
|
110
|
-
|
|
111
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/TestMultiIssuesController.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/TestMultiIssuesController.java
|
|
112
|
-
deleted file mode 100644
|
|
113
|
-
index 9b31b0d75..000000000
|
|
114
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/TestMultiIssuesController.java
|
|
115
|
-
+++ /dev/null
|
|
116
|
-
@@ -1,72 +0,0 @@
|
|
117
|
-
-package com.job51.dev.bbs.controller;
|
|
118
|
-
-
|
|
119
|
-
-import com.job51.dev.bbs.service.ForumService;
|
|
120
|
-
-import com.job51.dev.bbs.service.PostService;
|
|
121
|
-
-import com.job51.dev.bbs.service.UserService;
|
|
122
|
-
-import org.springframework.beans.factory.annotation.Autowired;
|
|
123
|
-
-import org.springframework.web.bind.annotation.*;
|
|
124
|
-
-
|
|
125
|
-
-/**
|
|
126
|
-
- * 测试多问题 diff 场景的 Controller
|
|
127
|
-
- * 用于测试 AI 代码审查在同一个 diff 块中检测多个问题的场景
|
|
128
|
-
- */
|
|
129
|
-
-@RestController
|
|
130
|
-
-@RequestMapping("/api/test")
|
|
131
|
-
-public class TestMultiIssuesController {
|
|
132
|
-
-
|
|
133
|
-
- @Autowired
|
|
134
|
-
- private ForumService forumService;
|
|
135
|
-
-
|
|
136
|
-
- @Autowired
|
|
137
|
-
- private PostService postService;
|
|
138
|
-
-
|
|
139
|
-
- @Autowired
|
|
140
|
-
- private UserService userService;
|
|
141
|
-
-
|
|
142
|
-
- /**
|
|
143
|
-
- * 测试接口 - 包含多个空指针风险问题
|
|
144
|
-
- * 这些问题都在同一个 diff 块中,用于测试多问题评论发布
|
|
145
|
-
- */
|
|
146
|
-
- @GetMapping("/forum/data")
|
|
147
|
-
- public Object getForumData(@RequestParam String forumId,
|
|
148
|
-
- @RequestParam String userId,
|
|
149
|
-
- @RequestParam String postId) {
|
|
150
|
-
- // 问题 1: forumService 可能为 null(未判空)
|
|
151
|
-
- Object forumInfo = forumService.getForumInfo(forumId);
|
|
152
|
-
-
|
|
153
|
-
- // 问题 2: postService 可能为 null(未判空)
|
|
154
|
-
- Object postDetail = postService.getPostDetail(postId);
|
|
155
|
-
-
|
|
156
|
-
- // 问题 3: userService 可能为 null(未判空)
|
|
157
|
-
- Object userInfo = userService.getUserInfo(userId);
|
|
158
|
-
-
|
|
159
|
-
- // 问题 4: 链式调用未判空 - forumInfo 可能为 null
|
|
160
|
-
- String forumName = forumInfo.toString();
|
|
161
|
-
-
|
|
162
|
-
- // 问题 5: 链式调用未判空 - postDetail 可能为 null
|
|
163
|
-
- Integer postCount = postDetail.hashCode();
|
|
164
|
-
-
|
|
165
|
-
- return new Object() {
|
|
166
|
-
- public String forumName = forumName;
|
|
167
|
-
- public Integer postCount = postCount;
|
|
168
|
-
- public Object userInfo = userInfo;
|
|
169
|
-
- };
|
|
170
|
-
- }
|
|
171
|
-
-
|
|
172
|
-
- /**
|
|
173
|
-
- * 另一个测试接口 - 更多空指针场景
|
|
174
|
-
- */
|
|
175
|
-
- @PostMapping("/post/create")
|
|
176
|
-
- public Object createPost(@RequestBody Object postData) {
|
|
177
|
-
- // 问题 6: postData 未判空
|
|
178
|
-
- String title = postData.toString();
|
|
179
|
-
-
|
|
180
|
-
- // 问题 7: forumService 可能为 null
|
|
181
|
-
- Object result = forumService.createPost(title);
|
|
182
|
-
-
|
|
183
|
-
- // 问题 8: result 可能为 null
|
|
184
|
-
- Boolean success = result.equals(true);
|
|
185
|
-
-
|
|
186
|
-
- return success;
|
|
187
|
-
- }
|
|
188
|
-
-}
|
|
189
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/open/UserController.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/open/UserController.java
|
|
190
|
-
index b3b20455c..b1d8c318c 100644
|
|
191
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/open/UserController.java
|
|
192
|
-
+++ b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/controller/open/UserController.java
|
|
193
|
-
@@ -2,11 +2,7 @@ package com.job51.dev.bbs.controller.open;
|
|
194
|
-
|
|
195
|
-
import com.job51.dev.bbs.entity.Base64DecodeMultipartFile;
|
|
196
|
-
import com.job51.dev.bbs.entity.dto.UserDTO;
|
|
197
|
-
-import com.job51.dev.bbs.entity.query.*;
|
|
198
|
-
-import com.job51.dev.bbs.entity.vo.PagesListVO;
|
|
199
|
-
-import com.job51.dev.bbs.entity.vo.UserDetailInfoVO;
|
|
200
|
-
-import com.job51.dev.bbs.entity.vo.UserInfoVO;
|
|
201
|
-
-import com.job51.dev.bbs.entity.vo.VestUserVO;
|
|
202
|
-
+import com.job51.dev.bbs.entity.query.UserQuery;
|
|
203
|
-
import com.job51.dev.bbs.entity.vo.UserVO;
|
|
204
|
-
import com.job51.dev.bbs.enums.DefaultAvatarEnum;
|
|
205
|
-
import com.job51.dev.bbs.exception.BbsBusinessException;
|
|
206
|
-
@@ -46,7 +42,6 @@ import static com.job51.dev.bbs.constant.BbsConstant.*;
|
|
207
|
-
public class UserController {
|
|
208
|
-
private static final String API_PREFIX = "/open/bbs/users";
|
|
209
|
-
private static final String API_NOAUTH_PREFIX = "/open/noauth/bbs/users";
|
|
210
|
-
- private static final String ADMIN_API_PREFIX = "/admin/bbs/users";
|
|
211
|
-
|
|
212
|
-
@Resource
|
|
213
|
-
private WordFilterUtils wordFilterUtils;
|
|
214
|
-
@@ -202,161 +197,6 @@ public class UserController {
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
- /**
|
|
219
|
-
- * 网关登录
|
|
220
|
-
- * @param loginQuery 登录参数
|
|
221
|
-
- * @return 用户信息
|
|
222
|
-
- */
|
|
223
|
-
- @PostMapping(API_NOAUTH_PREFIX + "/login")
|
|
224
|
-
- public Result<UserDTO> login(@RequestBody LoginQuery loginQuery) {
|
|
225
|
-
- return Result.success(userService.login(loginQuery));
|
|
226
|
-
- }
|
|
227
|
-
-
|
|
228
|
-
- /**
|
|
229
|
-
- * 根据用户 ID 获取用户信息
|
|
230
|
-
- * @param userId 用户 id
|
|
231
|
-
- * @return 用户信息
|
|
232
|
-
- */
|
|
233
|
-
- @GetMapping(API_NOAUTH_PREFIX + "/{userId}/info")
|
|
234
|
-
- public Result<UserDTO> getUserInfo(@PathVariable Long userId) {
|
|
235
|
-
- return Result.success(userService.getUserInfo(userId));
|
|
236
|
-
- }
|
|
237
|
-
-
|
|
238
|
-
- /**
|
|
239
|
-
- * 上传头像,并返回头像的访问链接
|
|
240
|
-
- * @param image 头像
|
|
241
|
-
- * @return 头像的访问链接
|
|
242
|
-
- */
|
|
243
|
-
- @PostMapping(value = API_PREFIX + "/avatar/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
|
244
|
-
- public Result<String> uploadAvatar(@RequestPart("image") MultipartFile image) {
|
|
245
|
-
- return Result.success(userService.uploadAvatar(image));
|
|
246
|
-
- }
|
|
247
|
-
-
|
|
248
|
-
- /**
|
|
249
|
-
- * 同步用户简历信息
|
|
250
|
-
- * @param userId 用户 id
|
|
251
|
-
- * @return 用户信息
|
|
252
|
-
- */
|
|
253
|
-
- @PostMapping(API_PREFIX + "/sync/{userId}")
|
|
254
|
-
- public Result<UserDTO> syncUserInfo(@PathVariable Long userId) {
|
|
255
|
-
- return Result.success(userService.syncUserInfo(userId));
|
|
256
|
-
- }
|
|
257
|
-
-
|
|
258
|
-
- /**
|
|
259
|
-
- * 注销 bbs 账号
|
|
260
|
-
- * @param foreignId 其他系统的用户 id
|
|
261
|
-
- * @param fromDomain 来源
|
|
262
|
-
- * @return 是否成功
|
|
263
|
-
- */
|
|
264
|
-
- @PostMapping(API_PREFIX + "/logoff")
|
|
265
|
-
- public Result<Boolean> logoff(@RequestParam Long foreignId, @RequestParam String fromDomain) {
|
|
266
|
-
- return Result.success(userService.logoff(foreignId, fromDomain));
|
|
267
|
-
- }
|
|
268
|
-
-
|
|
269
|
-
- /**
|
|
270
|
-
- * 用户信息全量导入 redis
|
|
271
|
-
- * @return 结果
|
|
272
|
-
- */
|
|
273
|
-
- @PostMapping(ADMIN_API_PREFIX + "/redis/push")
|
|
274
|
-
- public Result<String> pushAllInfoToRedis() {
|
|
275
|
-
- return Result.success(userService.pushAllInfoToRedis());
|
|
276
|
-
- }
|
|
277
|
-
-
|
|
278
|
-
- /**
|
|
279
|
-
- * 用户信息增量导入 redis
|
|
280
|
-
- * @return 结果
|
|
281
|
-
- */
|
|
282
|
-
- @PostMapping(ADMIN_API_PREFIX + "/redis/increment")
|
|
283
|
-
- public Result<String> incrementPushInfoToRedis() {
|
|
284
|
-
- return Result.success(userService.incrementPushInfoToRedis());
|
|
285
|
-
- }
|
|
286
|
-
-
|
|
287
|
-
- // ==================== 后台管理接口 ====================
|
|
288
|
-
-
|
|
289
|
-
- /**
|
|
290
|
-
- * 创建马甲号
|
|
291
|
-
- * @param query 入参
|
|
292
|
-
- * @param adminId 管理员 ID
|
|
293
|
-
- * @return 是否成功
|
|
294
|
-
- */
|
|
295
|
-
- @PostMapping(ADMIN_API_PREFIX + "/vest")
|
|
296
|
-
- public Result<Boolean> addVest(@RequestBody VestAddQuery query, @RequestParam String adminId) {
|
|
297
|
-
- return Result.success(userService.addVest(query, adminId));
|
|
298
|
-
- }
|
|
299
|
-
-
|
|
300
|
-
- /**
|
|
301
|
-
- * 马甲号列表
|
|
302
|
-
- * @param query 查询参数
|
|
303
|
-
- * @return 马甲号列表
|
|
304
|
-
- */
|
|
305
|
-
- @GetMapping(ADMIN_API_PREFIX + "/vest")
|
|
306
|
-
- public Result<PagesListVO<VestUserVO>> indexVest(VestUserQuery query) {
|
|
307
|
-
- return Result.success(userService.indexVest(query));
|
|
308
|
-
- }
|
|
309
|
-
-
|
|
310
|
-
- /**
|
|
311
|
-
- * 马甲号详情
|
|
312
|
-
- * @param id 马甲号 ID
|
|
313
|
-
- * @return 马甲号详情
|
|
314
|
-
- */
|
|
315
|
-
- @GetMapping(ADMIN_API_PREFIX + "/vest/{id}")
|
|
316
|
-
- public Result<VestUserVO> showVest(@PathVariable Long id) {
|
|
317
|
-
- return Result.success(userService.showVest(id));
|
|
318
|
-
- }
|
|
319
|
-
-
|
|
320
|
-
- /**
|
|
321
|
-
- * 编辑马甲号
|
|
322
|
-
- * @param query 入参
|
|
323
|
-
- * @param adminId 管理员 ID
|
|
324
|
-
- * @return 是否成功
|
|
325
|
-
- */
|
|
326
|
-
- @PutMapping(ADMIN_API_PREFIX + "/vest")
|
|
327
|
-
- public Result<Boolean> editVest(@RequestBody VestEditQuery query, @RequestParam String adminId) {
|
|
328
|
-
- return Result.success(userService.editVest(query, adminId));
|
|
329
|
-
- }
|
|
330
|
-
-
|
|
331
|
-
- /**
|
|
332
|
-
- * 用户管理列表
|
|
333
|
-
- * @param query 查询参数
|
|
334
|
-
- * @return 用户列表
|
|
335
|
-
- */
|
|
336
|
-
- @GetMapping(ADMIN_API_PREFIX)
|
|
337
|
-
- public Result<PagesListVO<UserInfoVO>> indexUser(UserInfoQuery query) {
|
|
338
|
-
- return Result.success(userService.indexUser(query));
|
|
339
|
-
- }
|
|
340
|
-
-
|
|
341
|
-
- /**
|
|
342
|
-
- * 后台 - 用户详情
|
|
343
|
-
- * @param id 用户 ID
|
|
344
|
-
- * @return 用户详情
|
|
345
|
-
- */
|
|
346
|
-
- @GetMapping(ADMIN_API_PREFIX + "/{id}")
|
|
347
|
-
- public Result<UserDetailInfoVO> show(@PathVariable Long id) {
|
|
348
|
-
- return Result.success(userService.show(id));
|
|
349
|
-
- }
|
|
350
|
-
-
|
|
351
|
-
- /**
|
|
352
|
-
- * 内部调用,查询用户详情
|
|
353
|
-
- * @param foreignId bbs 外部 id
|
|
354
|
-
- * @param fromDomain 来源
|
|
355
|
-
- * @return 用户详情
|
|
356
|
-
- */
|
|
357
|
-
- @GetMapping(ADMIN_API_PREFIX + "/detail")
|
|
358
|
-
- public Result<UserDTO> show(@RequestParam String foreignId, @RequestParam String fromDomain) {
|
|
359
|
-
- return Result.success(userService.show(foreignId, fromDomain));
|
|
360
|
-
- }
|
|
361
|
-
-
|
|
362
|
-
- /**
|
|
363
|
-
- * 用户封禁
|
|
364
|
-
- * @param adminId 管理员邮箱
|
|
365
|
-
- * @param query 入参
|
|
366
|
-
- * @return 是否成功
|
|
367
|
-
- */
|
|
368
|
-
- @PostMapping(ADMIN_API_PREFIX + "/ban")
|
|
369
|
-
- public Result<Boolean> banUser(@RequestParam String adminId, @RequestBody BanUserQuery query) {
|
|
370
|
-
- return Result.success(userService.banUser(adminId, query));
|
|
371
|
-
- }
|
|
372
|
-
-
|
|
373
|
-
private Boolean isDefaultNickname(String nickname, Integer foreignType) {
|
|
374
|
-
String regex;
|
|
375
|
-
if (FOREIGN_TYPE_YJS.contains(foreignType)) {
|
|
376
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/entity/dto/UserTaskPop.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/entity/dto/UserTaskPop.java
|
|
377
|
-
deleted file mode 100644
|
|
378
|
-
index 0884e34f8..000000000
|
|
379
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/entity/dto/UserTaskPop.java
|
|
380
|
-
+++ /dev/null
|
|
381
|
-
@@ -1,48 +0,0 @@
|
|
382
|
-
-package com.job51.dev.bbs.entity.dto;
|
|
383
|
-
-
|
|
384
|
-
-import lombok.AllArgsConstructor;
|
|
385
|
-
-import lombok.Builder;
|
|
386
|
-
-import lombok.Data;
|
|
387
|
-
-import lombok.NoArgsConstructor;
|
|
388
|
-
-
|
|
389
|
-
-import java.io.Serializable;
|
|
390
|
-
-
|
|
391
|
-
-/**
|
|
392
|
-
- * @author jingtao
|
|
393
|
-
- * @version V1.0
|
|
394
|
-
- * @date 2026/3/25
|
|
395
|
-
- **/
|
|
396
|
-
-@Data
|
|
397
|
-
-@Builder
|
|
398
|
-
-@NoArgsConstructor
|
|
399
|
-
-@AllArgsConstructor
|
|
400
|
-
-public class UserTaskPop implements Serializable {
|
|
401
|
-
- /**
|
|
402
|
-
- * 任务ID
|
|
403
|
-
- */
|
|
404
|
-
- private Long taskId;
|
|
405
|
-
- /**
|
|
406
|
-
- * 任务动作类型
|
|
407
|
-
- */
|
|
408
|
-
- private String actionType;
|
|
409
|
-
- /**
|
|
410
|
-
- * 任务code
|
|
411
|
-
- *
|
|
412
|
-
- * @link com.job51.boot.user.task.biz.model.vo.UserTaskVO#code
|
|
413
|
-
- */
|
|
414
|
-
- private String contentId;
|
|
415
|
-
- /**
|
|
416
|
-
- * 任务名
|
|
417
|
-
- *
|
|
418
|
-
- * @link com.job51.boot.user.task.biz.model.vo.UserTaskVO#name
|
|
419
|
-
- */
|
|
420
|
-
- private String popupContent;
|
|
421
|
-
- /**
|
|
422
|
-
- * 跳转连接
|
|
423
|
-
- */
|
|
424
|
-
- private String jumpUrl;
|
|
425
|
-
- /**
|
|
426
|
-
- * (弹窗)图片连接
|
|
427
|
-
- */
|
|
428
|
-
- private String imgUrl;
|
|
429
|
-
-}
|
|
430
|
-
|
|
431
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/sdk/UserTaskSDK.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/sdk/UserTaskSDK.java
|
|
432
|
-
deleted file mode 100644
|
|
433
|
-
index 731ba220a..000000000
|
|
434
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/sdk/UserTaskSDK.java
|
|
435
|
-
+++ /dev/null
|
|
436
|
-
@@ -1,29 +0,0 @@
|
|
437
|
-
-package com.job51.dev.bbs.sdk;
|
|
438
|
-
-
|
|
439
|
-
-import com.job51.dev.bbs.client.feign.UserTaskClient;
|
|
440
|
-
-import com.job51.dev.bbs.entity.dto.UserTaskPop;
|
|
441
|
-
-import com.job51.dev.common.entity.dto.Result;
|
|
442
|
-
-import org.springframework.stereotype.Component;
|
|
443
|
-
-
|
|
444
|
-
-import javax.annotation.Resource;
|
|
445
|
-
-
|
|
446
|
-
-/**
|
|
447
|
-
- * @author jingtao
|
|
448
|
-
- * @version V1.0
|
|
449
|
-
- * @date 2026/3/25
|
|
450
|
-
- **/
|
|
451
|
-
-@Component
|
|
452
|
-
-public class UserTaskSDK {
|
|
453
|
-
-
|
|
454
|
-
-
|
|
455
|
-
- @Resource
|
|
456
|
-
- private UserTaskClient userTaskClient;
|
|
457
|
-
-
|
|
458
|
-
- public UserTaskPop userTaskModuleControl(Long accountId) {
|
|
459
|
-
- Result<UserTaskPop> userTaskPop = userTaskClient.getUserTaskPop(accountId);
|
|
460
|
-
- if (userTaskPop.requestSucceeded() && userTaskPop.getResultbody() != null) {
|
|
461
|
-
- return userTaskPop.getResultbody();
|
|
462
|
-
- }
|
|
463
|
-
- return null;
|
|
464
|
-
- }
|
|
465
|
-
-}
|
|
466
|
-
|
|
467
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/ForumCategoryForumServiceImpl.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/ForumCategoryForumServiceImpl.java
|
|
468
|
-
index a4ac26619..e64cd4e8d 100644
|
|
469
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/ForumCategoryForumServiceImpl.java
|
|
470
|
-
+++ b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/ForumCategoryForumServiceImpl.java
|
|
471
|
-
@@ -4,11 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
472
|
-
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
473
|
-
import com.job51.dev.bbs.entity.bo.ForumCategory;
|
|
474
|
-
import com.job51.dev.bbs.entity.bo.ForumCategoryForum;
|
|
475
|
-
-import com.job51.dev.bbs.entity.dto.UserTaskPop;
|
|
476
|
-
import com.job51.dev.bbs.mapper.ForumCategoryForumMapper;
|
|
477
|
-
-import com.job51.dev.bbs.sdk.UserTaskSDK;
|
|
478
|
-
import com.job51.dev.bbs.service.IForumCategoryForumService;
|
|
479
|
-
-import lombok.extern.slf4j.Slf4j;
|
|
480
|
-
import org.springframework.stereotype.Service;
|
|
481
|
-
import org.springframework.util.CollectionUtils;
|
|
482
|
-
|
|
483
|
-
@@ -19,16 +16,12 @@ import java.util.List;
|
|
484
|
-
* @author pengtao.lv
|
|
485
|
-
* @since 2022/11/23
|
|
486
|
-
*/
|
|
487
|
-
-@Slf4j
|
|
488
|
-
@Service
|
|
489
|
-
public class ForumCategoryForumServiceImpl extends ServiceImpl<ForumCategoryForumMapper, ForumCategoryForum>
|
|
490
|
-
implements IForumCategoryForumService {
|
|
491
|
-
@Resource
|
|
492
|
-
private ForumCategoryForumMapper forumCategoryForumMapper;
|
|
493
|
-
|
|
494
|
-
- @Resource
|
|
495
|
-
- private UserTaskSDK userTaskSDK;
|
|
496
|
-
-
|
|
497
|
-
@Override
|
|
498
|
-
public List<ForumCategory> getForumCategoryListByForumId(Long forumId) {
|
|
499
|
-
return forumCategoryForumMapper.getForumCategoryListByForumId(forumId);
|
|
500
|
-
@@ -36,10 +29,6 @@ public class ForumCategoryForumServiceImpl extends ServiceImpl<ForumCategoryForu
|
|
501
|
-
|
|
502
|
-
@Override
|
|
503
|
-
public Long getNewForumCategoryByForumId(Long forumId) {
|
|
504
|
-
- UserTaskPop userTaskPop = userTaskSDK.userTaskModuleControl(forumId);
|
|
505
|
-
- if (userTaskPop != null && userTaskPop.getContentId() != null){
|
|
506
|
-
- return Long.parseLong(userTaskPop.getContentId());
|
|
507
|
-
- }
|
|
508
|
-
LambdaQueryWrapper<ForumCategoryForum> queryWrapper = new LambdaQueryWrapper<>();
|
|
509
|
-
queryWrapper.select(ForumCategoryForum::getForumCategoryId);
|
|
510
|
-
queryWrapper.eq(ForumCategoryForum::getForumId, forumId);
|
|
511
|
-
diff --git a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/TestMultiIssuesService.java b/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/TestMultiIssuesService.java
|
|
512
|
-
deleted file mode 100644
|
|
513
|
-
index 2d5b09bfb..000000000
|
|
514
|
-
--- a/51job-dev-boot-bbs/src/main/java/com/job51/dev/bbs/service/impl/TestMultiIssuesService.java
|
|
515
|
-
+++ /dev/null
|
|
516
|
-
@@ -1,75 +0,0 @@
|
|
517
|
-
-package com.job51.dev.bbs.service.impl;
|
|
518
|
-
-
|
|
519
|
-
-import com.job51.dev.bbs.mapper.ForumMapper;
|
|
520
|
-
-import com.job51.dev.bbs.mapper.PostMapper;
|
|
521
|
-
-import com.job51.dev.bbs.mapper.UserMapper;
|
|
522
|
-
-import org.springframework.beans.factory.annotation.Autowired;
|
|
523
|
-
-import org.springframework.stereotype.Service;
|
|
524
|
-
-
|
|
525
|
-
-import java.util.List;
|
|
526
|
-
-import java.util.Map;
|
|
527
|
-
-
|
|
528
|
-
-/**
|
|
529
|
-
- * 测试多问题 diff 场景的 Service
|
|
530
|
-
- * 用于测试 AI 代码审查在同一个 diff 块中检测多个问题的场景
|
|
531
|
-
- */
|
|
532
|
-
-@Service
|
|
533
|
-
-public class TestMultiIssuesService {
|
|
534
|
-
-
|
|
535
|
-
- @Autowired
|
|
536
|
-
- private ForumMapper forumMapper;
|
|
537
|
-
-
|
|
538
|
-
- @Autowired
|
|
539
|
-
- private PostMapper postMapper;
|
|
540
|
-
-
|
|
541
|
-
- @Autowired
|
|
542
|
-
- private UserMapper userMapper;
|
|
543
|
-
-
|
|
544
|
-
- /**
|
|
545
|
-
- * 测试方法 - 包含多个空指针风险问题
|
|
546
|
-
- */
|
|
547
|
-
- public Map<String, Object> getTestData(String forumId, String userId) {
|
|
548
|
-
- // 问题 1: forumMapper 可能为 null
|
|
549
|
-
- Object forum = forumMapper.selectById(forumId);
|
|
550
|
-
-
|
|
551
|
-
- // 问题 2: 链式调用 - forum 可能为 null
|
|
552
|
-
- String forumName = forum.toString();
|
|
553
|
-
-
|
|
554
|
-
- // 问题 3: userMapper 可能为 null
|
|
555
|
-
- Object user = userMapper.selectById(userId);
|
|
556
|
-
-
|
|
557
|
-
- // 问题 4: 链式调用 - user 可能为 null
|
|
558
|
-
- String userName = user.toString();
|
|
559
|
-
-
|
|
560
|
-
- // 问题 5: postMapper 可能为 null
|
|
561
|
-
- List<Object> posts = postMapper.selectByForumId(forumId);
|
|
562
|
-
-
|
|
563
|
-
- // 问题 6: 集合未判空直接访问
|
|
564
|
-
- Object firstPost = posts.get(0);
|
|
565
|
-
-
|
|
566
|
-
- return new java.util.HashMap<String, Object>() {{
|
|
567
|
-
- put("forumName", forumName);
|
|
568
|
-
- put("userName", userName);
|
|
569
|
-
- put("firstPost", firstPost);
|
|
570
|
-
- }};
|
|
571
|
-
- }
|
|
572
|
-
-
|
|
573
|
-
- /**
|
|
574
|
-
- * 测试方法 2 - 更多空指针场景
|
|
575
|
-
- */
|
|
576
|
-
- public Object processData(Object inputData) {
|
|
577
|
-
- // 问题 7: inputData 未判空
|
|
578
|
-
- String dataStr = inputData.toString();
|
|
579
|
-
-
|
|
580
|
-
- // 问题 8: 链式调用未判空
|
|
581
|
-
- Integer dataLen = dataStr.length();
|
|
582
|
-
-
|
|
583
|
-
- // 问题 9: forumMapper 可能为 null
|
|
584
|
-
- Integer count = forumMapper.countAll();
|
|
585
|
-
-
|
|
586
|
-
- // 问题 10: 自动拆箱可能 NPE
|
|
587
|
-
- boolean isPositive = count > 0;
|
|
588
|
-
-
|
|
589
|
-
- return isPositive ? dataLen : -1;
|
|
590
|
-
- }
|
|
591
|
-
-}
|
|
592
|
-
diff --git a/51job-dev-boot-subscribe/src/main/java/com/job51/dev/subscribe/service/impl/UserSubscribeInfoServiceImpl.java b/51job-dev-boot-subscribe/src/main/java/com/job51/dev/subscribe/service/impl/UserSubscribeInfoServiceImpl.java
|
|
593
|
-
index b68722c12..99c04c5f0 100644
|
|
594
|
-
--- a/51job-dev-boot-subscribe/src/main/java/com/job51/dev/subscribe/service/impl/UserSubscribeInfoServiceImpl.java
|
|
595
|
-
+++ b/51job-dev-boot-subscribe/src/main/java/com/job51/dev/subscribe/service/impl/UserSubscribeInfoServiceImpl.java
|
|
596
|
-
@@ -167,6 +167,7 @@ public class UserSubscribeInfoServiceImpl extends ServiceImpl<UserSubscribeInfoM
|
|
597
|
-
List<UserSubscribeInfo> addList = new ArrayList<>();
|
|
598
|
-
|
|
599
|
-
for (SubjectSubscribeAddQuery item : query.getItems()) {
|
|
600
|
-
+ UserSubscribeInfo subscribeInfo = new UserSubscribeInfo();
|
|
601
|
-
|
|
602
|
-
//验证一遍专区id
|
|
603
|
-
List<ActivityZoneDTO> activityZoneList = activityZoneService.getActivityZoneDataByIdList(Collections.singletonList(item.getSubjectId()));
|
|
604
|
-
@@ -186,7 +187,7 @@ public class UserSubscribeInfoServiceImpl extends ServiceImpl<UserSubscribeInfoM
|
|
605
|
-
continue;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
- UserSubscribeInfo subscribeInfo = new UserSubscribeInfo();
|
|
609
|
-
+
|
|
610
|
-
subscribeInfo.setAccountId(accountId);
|
|
611
|
-
subscribeInfo.setSubscribeType(SubscribeEnum.SUBJECT_SUBSCRIBE.getSubscribeType());
|
|
612
|
-
subscribeInfo.setSubjectId(item.getSubjectId());
|
|
613
|
-
(END)
|
|
614
|
-
//验证一遍专区id
|
|
615
|
-
List<ActivityZoneDTO> activityZoneList = activityZoneService.getActivityZoneDataByIdList(Collections.singletonList(item.getSubjectId()));
|
|
616
|
-
@@ -186,7 +187,7 @@ public class UserSubscribeInfoServiceImpl extends ServiceImpl<UserSubscribeInfoM
|
|
617
|
-
continue;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
- UserSubscribeInfo subscribeInfo = new UserSubscribeInfo();
|
|
621
|
-
+
|
|
622
|
-
subscribeInfo.setAccountId(accountId);
|
|
623
|
-
subscribeInfo.setSubscribeType(SubscribeEnum.SUBJECT_SUBSCRIBE.getSubscribeType());
|
|
624
|
-
subscribeInfo.setSubjectId(item.getSubjectId());
|
|
625
|
-
(END)
|
|
626
|
-
//验证一遍专区id
|
|
627
|
-
List<ActivityZoneDTO> activityZoneList = activityZoneService.getActivityZoneDataByIdList(Collections.singletonList(item.getSubjectId()));
|
|
628
|
-
@@ -186,7 +187,7 @@ public class UserSubscribeInfoServiceImpl extends ServiceImpl<UserSubscribeInfoM
|
|
629
|
-
continue;
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
- UserSubscribeInfo subscribeInfo = new UserSubscribeInfo();
|
|
633
|
-
+
|
|
634
|
-
subscribeInfo.setAccountId(accountId);
|
|
635
|
-
subscribeInfo.setSubscribeType(SubscribeEnum.SUBJECT_SUBSCRIBE.getSubscribeType());
|
|
636
|
-
subscribeInfo.setSubjectId(item.getSubjectId());
|