第十三周总结

一、本周工作内容
​​Spring Boot后端开发​​
完成了3个核心控制器的开发(Goals/BlogLink/StudentHonor)
实现了15个主要业务接口
编写了4个ServiceImpl实现类(约1200行代码)
​​关键功能实现​​
// 目标管理核心逻辑示例
@Transactional
public Result addGoalWithSubGoals(Goals goal, String[] subGoalContents) {
// 检查活跃目标冲突
if (hasActiveGoal(goal.getStudentId())) {
return Result.fail("已有进行中的周目标");
}

// 保存主目标
if (!save(goal)) return Result.fail("保存失败");

// 批量保存子目标
List<SubGoals> subGoalsList = Arrays.stream(subGoalContents)
    .filter(content -> !content.isBlank())
    .map(content -> new SubGoals(goal.getGoalId(), content))
    .collect(Collectors.toList());
    
return subGoalsService.saveBatch(subGoalsList) ? 
       Result.success() : Result.fail("子目标保存失败");

}
​​复杂业务处理​​
实现了目标状态自动更新逻辑
开发了博客分类动态管理
完成了荣誉奖项的水印处理
二、技术收获
​​Spring相关​​
掌握了@Transactional事务管理
熟练使用MyBatis Plus的Wrapper条件构造
实践了RESTful接口设计规范
​​业务逻辑​​
// 按月统计目标完成率
Map<String, Double> monthlyCompletion = goals.stream()
.collect(Collectors.groupingBy(
g -> new SimpleDateFormat("yyyy-MM").format(g.getStartDate()),
Collectors.averagingDouble(g ->
getCompletionRate(g.getGoalId())
)
));
​​异常处理​​
统一使用Result封装响应
采用try-catch处理业务异常
使用@Slf4j记录错误日志
三、遇到的问题及解决
​​事务不一致问题​​
​​现象​​:主目标保存成功但子目标保存失败
​​解决​​:添加@Transactional注解
@Transactional
public Result addGoalWithSubGoals(...) {
// 业务逻辑
}
​​NPE异常​​
​​现象​​:subGoalContents可能为null
​​解决​​:添加空值检查
if (subGoalContents == null || subGoalContents.length == 0) {
return Result.fail("子目标不能为空");
}
​​日期处理问题​​
​​现象​​:前端传字符串日期,后端需要Date类型
​​解决​​:使用SimpleDateFormat转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
goal.setStartDate(sdf.parse((String)params.get("startDate")));
四、代码统计
模块 文件数 代码行数 耗时(h)
控制器层 3 450 8
服务实现层 4 1200 15
工具类 1 150 2
单元测试 6 300 5
​​合计​​ ​​14​​ ​​2100​​ ​​30​​
五、下周计划
​​前端联调​​
对接目标管理界面
集成博客统计图表
开发荣誉奖项上传组件
​​性能优化​​
添加Redis缓存层
实现分页查询
优化统计查询SQL
​​安全加固​​
添加JWT认证
实现接口权限控制
增加敏感数据加密

posted @ 2025-06-15 15:21  vivi_vimi  阅读(11)  评论(0)    收藏  举报