Skip to content

Commit 7f0477e

Browse files
committed
后端 - AI 生成基础代码
能顺利启动,但是逻辑不一定正确
1 parent a8df8c6 commit 7f0477e

25 files changed

+1261
-2
lines changed

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
<dependency>
6161
<groupId>org.projectlombok</groupId>
6262
<artifactId>lombok</artifactId>
63+
<version>1.18.38</version>
6364
<optional>true</optional>
6465
</dependency>
6566
<dependency>
@@ -91,6 +92,7 @@
9192
<path>
9293
<groupId>org.projectlombok</groupId>
9394
<artifactId>lombok</artifactId>
95+
<version>1.18.38</version>
9496
</path>
9597
</annotationProcessorPaths>
9698
</configuration>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package com.yupi.codertestbackend.controller;
2+
3+
import com.yupi.codertestbackend.model.dto.level.GenerateLevelRequest;
4+
import com.yupi.codertestbackend.model.entity.Level;
5+
import com.yupi.codertestbackend.model.entity.User;
6+
import com.yupi.codertestbackend.model.vo.BaseResponse;
7+
import com.yupi.codertestbackend.model.vo.ResultUtils;
8+
import com.yupi.codertestbackend.service.LevelService;
9+
import com.yupi.codertestbackend.service.UserService;
10+
import io.swagger.v3.oas.annotations.Operation;
11+
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import jakarta.annotation.Resource;
13+
import jakarta.servlet.http.HttpServletRequest;
14+
import lombok.extern.slf4j.Slf4j;
15+
import org.springframework.web.bind.annotation.*;
16+
17+
/**
18+
* 关卡接口
19+
*/
20+
@RestController
21+
@RequestMapping("/level")
22+
@Slf4j
23+
@Tag(name = "关卡接口")
24+
public class LevelController {
25+
26+
@Resource
27+
private LevelService levelService;
28+
29+
@Resource
30+
private UserService userService;
31+
32+
/**
33+
* 生成关卡
34+
*
35+
* @param generateLevelRequest 生成关卡请求体
36+
* @param request 请求对象
37+
* @return 生成的关卡
38+
*/
39+
@PostMapping("/generate")
40+
@Operation(summary = "生成关卡")
41+
public BaseResponse<Level> generateLevel(@RequestBody GenerateLevelRequest generateLevelRequest,
42+
HttpServletRequest request) {
43+
try {
44+
// 获取当前登录用户
45+
User user = userService.getLoginUser(request);
46+
47+
// 使用用户当前薪资或请求中的薪资
48+
Integer salary = generateLevelRequest.getSalary();
49+
if (salary == null) {
50+
salary = user.getSalary();
51+
}
52+
53+
Level level = levelService.generateLevel(salary);
54+
return ResultUtils.success(level);
55+
} catch (Exception e) {
56+
log.error("生成关卡失败", e);
57+
return ResultUtils.error(50000, e.getMessage());
58+
}
59+
}
60+
61+
/**
62+
* 获取关卡详情
63+
*
64+
* @param id 关卡ID
65+
* @return 关卡详情
66+
*/
67+
@GetMapping("/{id}")
68+
@Operation(summary = "获取关卡详情")
69+
public BaseResponse<Level> getLevelById(@PathVariable String id) {
70+
try {
71+
Level level = levelService.getById(id);
72+
if (level == null) {
73+
return ResultUtils.error(40400, "关卡不存在");
74+
}
75+
return ResultUtils.success(level);
76+
} catch (Exception e) {
77+
log.error("获取关卡详情失败", e);
78+
return ResultUtils.error(50000, e.getMessage());
79+
}
80+
}
81+
}
82+
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package com.yupi.codertestbackend.controller;
2+
3+
import com.yupi.codertestbackend.model.dto.user.UserLoginRequest;
4+
import com.yupi.codertestbackend.model.dto.user.UserRegisterRequest;
5+
import com.yupi.codertestbackend.model.entity.User;
6+
import com.yupi.codertestbackend.model.vo.BaseResponse;
7+
import com.yupi.codertestbackend.model.vo.ResultUtils;
8+
import com.yupi.codertestbackend.model.vo.UserVO;
9+
import com.yupi.codertestbackend.service.UserService;
10+
import io.swagger.v3.oas.annotations.Operation;
11+
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import jakarta.annotation.Resource;
13+
import jakarta.servlet.http.HttpServletRequest;
14+
import lombok.extern.slf4j.Slf4j;
15+
import org.springframework.web.bind.annotation.*;
16+
17+
/**
18+
* 用户接口
19+
*/
20+
@RestController
21+
@RequestMapping("/user")
22+
@Slf4j
23+
@Tag(name = "用户接口")
24+
public class UserController {
25+
26+
@Resource
27+
private UserService userService;
28+
29+
/**
30+
* 用户注册
31+
*
32+
* @param userRegisterRequest 用户注册请求体
33+
* @return 新用户 id
34+
*/
35+
@PostMapping("/register")
36+
@Operation(summary = "用户注册")
37+
public BaseResponse<String> userRegister(@RequestBody UserRegisterRequest userRegisterRequest) {
38+
try {
39+
String userId = userService.userRegister(userRegisterRequest);
40+
return ResultUtils.success(userId);
41+
} catch (Exception e) {
42+
log.error("用户注册失败", e);
43+
return ResultUtils.error(40000, e.getMessage());
44+
}
45+
}
46+
47+
/**
48+
* 用户登录
49+
*
50+
* @param userLoginRequest 用户登录请求体
51+
* @param request 请求对象
52+
* @return 脱敏后的用户信息
53+
*/
54+
@PostMapping("/login")
55+
@Operation(summary = "用户登录")
56+
public BaseResponse<UserVO> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {
57+
try {
58+
UserVO userVO = userService.userLogin(userLoginRequest, request);
59+
return ResultUtils.success(userVO);
60+
} catch (Exception e) {
61+
log.error("用户登录失败", e);
62+
return ResultUtils.error(40000, e.getMessage());
63+
}
64+
}
65+
66+
/**
67+
* 获取当前登录用户
68+
*
69+
* @param request 请求对象
70+
* @return 当前用户信息
71+
*/
72+
@GetMapping("/current")
73+
@Operation(summary = "获取当前登录用户")
74+
public BaseResponse<UserVO> getCurrentUser(HttpServletRequest request) {
75+
try {
76+
User user = userService.getLoginUser(request);
77+
UserVO userVO = userService.getLoginUserVO(user);
78+
return ResultUtils.success(userVO);
79+
} catch (Exception e) {
80+
log.error("获取当前用户失败", e);
81+
return ResultUtils.error(40100, e.getMessage());
82+
}
83+
}
84+
85+
/**
86+
* 用户注销
87+
*
88+
* @param request 请求对象
89+
* @return 是否成功
90+
*/
91+
@PostMapping("/logout")
92+
@Operation(summary = "用户注销")
93+
public BaseResponse<Boolean> userLogout(HttpServletRequest request) {
94+
try {
95+
boolean result = userService.userLogout(request);
96+
return ResultUtils.success(result);
97+
} catch (Exception e) {
98+
log.error("用户注销失败", e);
99+
return ResultUtils.error(40000, e.getMessage());
100+
}
101+
}
102+
}
103+
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.yupi.codertestbackend.controller;
2+
3+
import com.yupi.codertestbackend.model.dto.level.SubmitAnswerRequest;
4+
import com.yupi.codertestbackend.model.entity.User;
5+
import com.yupi.codertestbackend.model.entity.UserLevel;
6+
import com.yupi.codertestbackend.model.vo.BaseResponse;
7+
import com.yupi.codertestbackend.model.vo.ResultUtils;
8+
import com.yupi.codertestbackend.service.UserLevelService;
9+
import com.yupi.codertestbackend.service.UserService;
10+
import io.swagger.v3.oas.annotations.Operation;
11+
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import jakarta.annotation.Resource;
13+
import jakarta.servlet.http.HttpServletRequest;
14+
import lombok.extern.slf4j.Slf4j;
15+
import org.springframework.web.bind.annotation.*;
16+
17+
import java.util.List;
18+
19+
/**
20+
* 用户关卡接口
21+
*/
22+
@RestController
23+
@RequestMapping("/user-level")
24+
@Slf4j
25+
@Tag(name = "用户关卡接口")
26+
public class UserLevelController {
27+
28+
@Resource
29+
private UserLevelService userLevelService;
30+
31+
@Resource
32+
private UserService userService;
33+
34+
/**
35+
* 提交答案
36+
*
37+
* @param submitAnswerRequest 提交答案请求体
38+
* @param request 请求对象
39+
* @return 结果报告
40+
*/
41+
@PostMapping("/submit")
42+
@Operation(summary = "提交答案")
43+
public BaseResponse<UserLevel> submitAnswer(@RequestBody SubmitAnswerRequest submitAnswerRequest,
44+
HttpServletRequest request) {
45+
try {
46+
// 获取当前登录用户
47+
User user = userService.getLoginUser(request);
48+
49+
UserLevel userLevel = userLevelService.submitAnswer(submitAnswerRequest, user.getId());
50+
return ResultUtils.success(userLevel);
51+
} catch (Exception e) {
52+
log.error("提交答案失败", e);
53+
return ResultUtils.error(50000, e.getMessage());
54+
}
55+
}
56+
57+
/**
58+
* 获取闯关历史
59+
*
60+
* @param request 请求对象
61+
* @return 闯关历史列表
62+
*/
63+
@GetMapping("/history")
64+
@Operation(summary = "获取闯关历史")
65+
public BaseResponse<List<UserLevel>> getUserLevelHistory(HttpServletRequest request) {
66+
try {
67+
// 获取当前登录用户
68+
User user = userService.getLoginUser(request);
69+
70+
List<UserLevel> historyList = userLevelService.getUserLevelHistory(user.getId());
71+
return ResultUtils.success(historyList);
72+
} catch (Exception e) {
73+
log.error("获取闯关历史失败", e);
74+
return ResultUtils.error(50000, e.getMessage());
75+
}
76+
}
77+
78+
/**
79+
* 获取闯关详情
80+
*
81+
* @param id 闯关记录ID
82+
* @return 闯关详情
83+
*/
84+
@GetMapping("/{id}")
85+
@Operation(summary = "获取闯关详情")
86+
public BaseResponse<UserLevel> getUserLevelById(@PathVariable String id) {
87+
try {
88+
UserLevel userLevel = userLevelService.getById(id);
89+
if (userLevel == null) {
90+
return ResultUtils.error(40400, "闯关记录不存在");
91+
}
92+
return ResultUtils.success(userLevel);
93+
} catch (Exception e) {
94+
log.error("获取闯关详情失败", e);
95+
return ResultUtils.error(50000, e.getMessage());
96+
}
97+
}
98+
}
99+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.yupi.codertestbackend.mapper;
2+
3+
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4+
import com.yupi.codertestbackend.model.entity.Level;
5+
6+
/**
7+
* 关卡数据库操作
8+
*/
9+
public interface LevelMapper extends BaseMapper<Level> {
10+
11+
}
12+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.yupi.codertestbackend.mapper;
2+
3+
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4+
import com.yupi.codertestbackend.model.entity.UserLevel;
5+
6+
/**
7+
* 用户关卡数据库操作
8+
*/
9+
public interface UserLevelMapper extends BaseMapper<UserLevel> {
10+
11+
}
12+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.yupi.codertestbackend.mapper;
2+
3+
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4+
import com.yupi.codertestbackend.model.entity.User;
5+
6+
/**
7+
* 用户数据库操作
8+
*/
9+
public interface UserMapper extends BaseMapper<User> {
10+
11+
}
12+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.yupi.codertestbackend.model.dto.level;
2+
3+
import lombok.Data;
4+
5+
import java.io.Serializable;
6+
7+
/**
8+
* 生成关卡请求体
9+
*/
10+
@Data
11+
public class GenerateLevelRequest implements Serializable {
12+
13+
private static final long serialVersionUID = 3191241716373120793L;
14+
15+
/**
16+
* 当前薪资(用于匹配难度)
17+
*/
18+
private Integer salary;
19+
}
20+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.yupi.codertestbackend.model.dto.level;
2+
3+
import lombok.Data;
4+
5+
import java.io.Serializable;
6+
import java.util.List;
7+
8+
/**
9+
* 提交答案请求体
10+
*/
11+
@Data
12+
public class SubmitAnswerRequest implements Serializable {
13+
14+
private static final long serialVersionUID = 3191241716373120793L;
15+
16+
/**
17+
* 关卡ID
18+
*/
19+
private String levelId;
20+
21+
/**
22+
* 用户选择的选项
23+
*/
24+
private List<String> userOptions;
25+
}
26+

0 commit comments

Comments
 (0)