时间统计模块
后端
-
1.修正list参数all 出现null的问题 原因:(1) 新增用户时未设置show short entries(是否显示时常不足1分钟的时间条目)这一项的默认值;(2)loginUserResp这个dto中也未设置这个属性;
-
2.解决 查出某个分类已统计的时间总和的问题
-
问题: 这里我需要用jpa查询部分字段,于是我在jpa中写了如下内容
@Modifying
@Query(value ="select category_id, duration from time_entry where user_id= :userId ", nativeQuery = true)
List<TimeEntry> findCatAndDurByUserId(String userId);
复制代码
事实证明,这样是不行的,即使写了select category_id, duration,jpa还是会尝试为entity获取所有的列数据,所以它不会不断报错Column 'cxxx' not found.
解决: 参考这里解决问题
我使用了最高赞的方法。 (1)在timeentry的entity类中增加一个接口。
public interface ProjectCategoryIdAndDuration{
String getCategoryId();
Long getDuration();
}
(2)在接口中把返回类型改为这个接口类型
@Modifying
@Query(value ="select id, category_id, duration from time_entry where user_id= :userId ", nativeQuery = true)
List<TimeEntry.ProjectCategoryIdAndDuration> findCatAndDurByUserId(String userId);
- 3. 分类获取改为按创建时间升序排序
- 4. 解决获取duration时category id为null的问题
- 问题分析 发现还是2中获取部分字段有问题
List<TimeEntry.ProjectCategoryIdAndDuration> entries = repository.findCatAndDurByUserId(userId);
for (TimeEntry.ProjectCategoryIdAndDuration entry : entries) {
System.out.println(entry.getCategoryId()); //null
System.out.println(entry.getDuration());
}
这里我确保数据库数据是不为空的,奇怪的是,属性只有一个单词的话,都是能正常读取的,例如start属性。
最后改成了这样倒是能正常获取,虽然绝对不是一个好的解决方法...但先不在这个问题上耗时间了
@Modifying
@Query(value ="select t from TimeEntry t where t.userId = :userId ")
List<TimeEntry.ProjectCategoryIdAndDuration> findCatAndDurByUserId(String userId);
- 5. 解决删除分类报错
No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
解决:加上@Transactional即可
前端
- 1. 修正计算duration的代码。
- 2. 统一删除分类方面前后端api并测试删除
- 3. 测试编辑分类
- 4. 删除后原分类项目的处理 整理思路是每次获取数据后,都要和cat比对,如果项目的cat id不存在,那么就把它变为“默认分类” (1)分类的duration被加到默认分类上 (2)时间条目显示默认分类
用户模块
前端
- 1. 修正修改goal的自定义文本框获取modalvalue为null的问题, 这部分主要参考了vue的官方文档这里
- 2. 修正goal自定义文本框无法focus的问题
this.$nextTick(() => { this.$refs.goalInput.$refs.textarea.focus() // textarea是自定义多行文本框中的ref,而goalInput是父组件中的ref }) - 3. 加上提交后不能为空的校验
- 4. 找回密码
-
- 4.1找回密码页面改为用手机号找回,页面改善
-
- 4.2 相关校验和方法写完
-
- 4.3测试相关功能
后端
- 1. 用户注册时设置默认goal
- 2. 更新goal的api
- 3. 更新用户其他资料(头像外)
-
- 3.1 将邮箱改为手机号,并将手机号改为不可修改
-
- 3.2 修正更改是否显示短条目的问题(传递的数据始终是true,最终发现原因是一处拼写错误...)
-
- 3.3 增加修改密码的api调用和重新登录跳转
-
- 3.4 修正方法中一些冗余的部分,去掉删除账号功能
- 4.找回密码功能
-
- 4.1 找回密码相关api写完
-
- 4.2 短信验证码获取增加按时间倒序排序
-
- 4.3 问题:短信验证码设置的是5分钟有效,用户在1分钟后可以重新获取,此时如果最新的验证码已使用,前面5分钟内未使用的验证码还可以继续使用。应该考虑每次发送验证码后,把前面的验证码都变成已使用状态。我想的方法是每次新增后,把5分钟的前面一条设置为已使用。
待办模块
后端
- 获取某月还有未完成待办的日期
思路:设置一个todo_memo表,里面存储每天todo是否全部都做完(allDone字段)。每次添加一个todo时,把对应memo表当天更新为allDone为false,每次标记一个todo为完成时,用jpa的exists查询当天是否还有未完成的待办,没有的话,把allDone设置为true。
子步骤:
-
- 1.1 memo表和实体类,repository, service, controller
-
- 1.2 增添todo时更新或新增memo条目,并且设置allDone为false。
-
- 1.4 删除todo时查找memo表;
-
- 1.5 更新todo完成状态时查找memo表;
前端
- 获取某月还有未完成待办的日期页面显示
加入拖动滑块验证的功能????