113
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | https://bbs.csdn.net/forums/2401_CS_SE_FZU |
|---|---|
| 这个作业要求在哪里 | https://bbs.csdn.net/topics/619397949 |
| 这个作业的目标 | CodeArt团队实战总结 |
| 其他参考文献 | CSDN,博客园 |
222200315张俊腾
优化排行榜接口,增加分页功能
- ```
public Response<List<LeaderboardEntry>> getRescueLeaderboard(Long userId, int page, int size) {
Pageable pageable = PageRequest.of(page, size);
List<Object[]> results = rescueInfoRepository.findRescueCountsByUid(pageable);
List<LeaderboardEntry> leaderboard = new ArrayList<>();
int rank = page * size + 1;
for (Object[] row : results) {
Long uid = (Long) row[0];
Long rescueCount = (Long) row[1];
Optional<User> optionalUser = userRepository.findById(uid);
if (optionalUser.isPresent()) {
String username = optionalUser.get().getUsername();
LeaderboardEntry entry = new LeaderboardEntry(rank, username, rescueCount);
leaderboard.add(entry);
rank++;
}
}
return new Response<>(200, "success", leaderboard);
}
```
222200309孙阳
进展一:测试获取用户奖牌功能,获取用户消息功能


222200304卢君豪
进展一:“完成/取消求助”controller的实现
@PostMapping("/accomplish")
public Response<Null> accomplishHelpRequest(@RequestParam Long helpRequestID, @RequestParam Integer status) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null || !authentication.isAuthenticated()) {
return new Response<>(403, "未认证的用户没有权限执行此操作", null);
}
return helpRequestService.accomplishHelpRequest(helpRequestID, status);
}
进展二:“完成/取消求助”的service的实现
public Response<Null> accomplishHelpRequest(Long helpRequestID, Integer status) {
HelpRequest helpRequest = helpRequestRepository.findById(helpRequestID).orElse(null);
if (helpRequest == null) {
return new Response<>(401, "求助信息不存在", null);
}
if (status != 2 && status != 3) {
return new Response<>(401, "状态无效", null);
}
if (helpRequest.getStatus() != 1) {
return new Response<>(401, "求助已结束,", null);
}
helpRequest.setStatus(status);
helpRequestRepository.save(helpRequest);
return new Response<>(200, "success", null);
}
222200310李怡涵
进展一:获取时间的修复
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(userUploadRequest.getExpiryAt(), formatter);
OffsetDateTime offsetDateTime = localDateTime.atOffset(ZoneOffset.UTC);
LocalDateTime expiryTime = offsetDateTime.toLocalDateTime();
liveInfo.setExpiryAt(expiryTime);
进展二:token的各种错误的测试




222200311李梓玄
进展一:实现地图控件添加覆盖物(实况信息和求助信息)

222200328夏振
进展一:新增管理员审核求助请求接口
222200401丁昌彪
进展一:实现完成求助和取消求助功能
222200312杨年申
进展一:完成UserController.deleteUserInfo的搭建
@DeleteMapping("/delete_user")
public Response deleteUserInfo(
@RequestParam("uid") Long uid,
@RequestHeader("Authorization") String token
) {
return userService.deleteUserInfo(uid,token);
}
进展二:完善deleteUserInfo的Service和Repository
public Response<Null> deleteUserInfo(long uid, String token) {
//检查令牌
Claims claims;
try {
claims = JwtUtil.extractClaims(token);
} catch (MalformedJwtException e) {
return new Response<>(400, "无效的令牌格式", null);
} catch (ExpiredJwtException e) {
return new Response<>(401, "令牌已过期", null);
} catch (IllegalArgumentException e) {
return new Response<>(400, "令牌不能为空", null);
} catch (JwtException e) {
return new Response<>(401, "无效的令牌", null);
} catch (Exception e) {
return new Response<>(500, "服务器内部错误", null);
}
long userId = Long.parseLong(claims.getSubject());
// 查找用户角色
Integer role = userRepository.findRoleById(userId);
if (role == null)
{
return new Response<>(400, "用户不存在",null);
} else if (role == 2) { // 如果是管理员
// 软删除 uid 匹配的用户
userRepository.softDeleteUserById(uid);
} else if (role == 1) { // 如果是普通用户
// 软删除 token 中解析出来的用户 ID
userRepository.softDeleteUserById(userId);
}
return new Response<>(200, "success",null);
}
@Modifying
@Transactional
@Query("UPDATE User u SET u.deletedAt = CURRENT_TIMESTAMP WHERE u.id = :uid")
void softDeleteUserById(Long uid);
222200230梁蕴潆
进展一:编写冲刺日记
进展二:完善了主页和捐赠部分插件的代码
| 成员 | 存在的问题/遇到的困难 | 接下来的安排 |
|---|---|---|
| 222200315张俊腾 | - 遇到的问题: - 在优化acceptHelpRequest方法时,如何有效地减少数据库查询次数.- 解答:- 通过调整检查顺序,首先检查用户是否已接取过该求助,避免不必要的类型检查和查询。 | 继续完善RescueService.java中的业务逻辑,确保接取求助功能在各种场景下都能稳定运行。 |
| 222200309孙阳 | 无 | 打算测试“新增用户消息功能,”开始编写“更新用户奖牌”的接口代码 |
| 222200304卢君豪 | 问题、困难1,不知道怎么用经纬度计算距离 - 解答,经查询资料所得,可以用哈弗辛公式计算 | 进行测试,排查bug |
| 222200310李怡涵 | 无 | - 继续修复已知的Bug,进行更完善的测试 |
| 222200311李梓玄 | 困难:地图覆盖物点击后无法自动隐藏,无法进行更近一步的操作 解决:需要继续学习地图控件,使用可以自定义信息窗的 MarkerInfoWindowContent | 继续学习地图控件,主要是自定义信息窗 MarkerInfoWindowContent - 完善上传实况和上传求助的字段检查 |
| 222200328夏振 | 暂时没有遇到问题 | 接下来还是把我剩下没完成的功能设计实现,并总结今天完成的内容 |
| 222200401丁昌彪 | 问题:不知道在特殊情况下如何实现等待后端的请求解决办法:暂未解决 | 完成更换手机号,完成注销账号 |
| 222200312杨年申 | - 问题、困难1- 需要确保用户只有在特定权限下才能删除其他用户的信息,普通用户只能删除自己的信息。- 解答- 在 Service 层中,根据请求者的角色和用户标识进行权限检查。- 问题、困难2 - 需要实现软删除功能,而不是直接从数据库中删除用户记录。- 解答 - 在用户实体中添加一个 deleted_at 字段,标识用户是否被删除。在删除操作中,将该字段更新,而不是直接执行删除。 | 安排实现updateToken接口 |
| 222200230梁蕴潆 | 无 | 总结今日的工作,初步实现下一项任务。 |

| 成员 | 相关图片 |
|---|---|
| 222200315张俊腾 |
|
| 222200309孙阳 |
|
| 222200304卢君豪 |
|
| 222200310李怡涵 |
|
| 222200311李梓玄 |
|
| 222200328夏振 |
|
| 222200401丁昌彪 |
|
| 222200312杨年申 |
|
| 222200230梁蕴潆 |
|
| 成员 | 心得体会 |
|---|---|
| 222200315张俊腾 | 做项目时既要确保系统既满足业务需求,又要保持数据的完整性和一致性。 |
| 222200309孙阳 | 代码编写要专心,否则只会永远debug |
| 222200304卢君豪 | 非常好的学习,使我“完成/取消求助” |
| 222200310李怡涵 | 后端编写代码时需要多加考虑前端用户的传入的数据 |
| 222200311李梓玄 | 感觉每天做一点点,工作量瞬间就下来了,非常爽 |
| 222200328夏振 | 感谢项目使我获得提升,谢谢 |
| 222200401丁昌彪 | 计划赶不上变化。 |
| 222200312杨年申 | 良好的代码结构:将修改逻辑拆分成多个步骤,不仅提升了代码的可读性,也便于将来进行维护和扩展。合理的代码结构可以提高团队协作效率。 |
| 222200230梁蕴潆 | 参与项目让我获得提升,学到很多新知识。 |