一、站立式会议
1.1会议照片
1.2.1 昨日完成工作
昨日已完成工作 |
完成情况 |
邮箱的定时发送提醒 |
已完成 |
添加备忘录功能 |
已完成 |
右滑删除备忘录功能 |
已完成 |
备忘录中字体的调整功能 |
已完成 |
点击修改功能 |
已完成 |
1.2.2 今日计划工作
成员 |
今日计划 |
困难 |
刘珮琳 |
备忘录中添加图片 |
无 |
魏宇峰 |
图片连接到本地相册,涂鸦照片保存到相册功能 |
无 |
陈起廷 |
备忘录可涂鸦功能 |
无 |
古梓欣 |
意外退出时后台记录功能 |
代码需要进一步优化 |
高明莹 |
day5博客的撰写 |
整理每个人的part耗费了一定的时间 |
二、项目燃尽图
三、签入记录
3.1代码/文档
3.2issue内容
四、最新项目程序/模块
4.1部分模块代码
/***
* 获取备忘录的数据
* @param pageLimit 页面限制
* @param userId 用户id
* @return
*/
Result getMemorandum(PageLimit pageLimit, Integer userId);
/***
* 根据id删除
* @param id id
* @param userId
* @return 删除是否成功
*/
Result deleteMemorandumById(int id, Integer userId);
/***
* 存储备忘录
* @param saveMemorandumBo 备忘录的信息和需要通知的时间
* @param userId 用户id
* @return 存储是否成功
*/
Result saveMemorandum(SaveMemorandumBo saveMemorandumBo, Integer userId);
/***
* 批量删除
* @param idList id的集合
* @param userId
* @return 数据
*/
Result deleteBatchMemorandum(List<Integer> idList, Integer userId);
/***
* 更新备忘录
* @param updateMemorandumBo 更新的数据
* @return 更新是否成功
*/
Result updateMemorandum(UpdateMemorandumBo updateMemorandumBo);
/**
* @author chenqiting
*/
@Service
@Slf4j
public class MemorandumServiceImpl extends ServiceImpl<MemorandumMapper, Memorandum> implements MemorandumService {
@Resource
private MemorandumMapper memorandumMapper;
@Resource(name = "redisTemplate")
private ZSetOperations<String, Memorandum> zSetOperations;
/***
* 延时任务队列在这里实现
*/
@Resource(name = "task")
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
@Resource
private AsyncRedisHandler asyncRedisHandler;
@PostConstruct
public void start() {
threadPoolTaskScheduler.scheduleAtFixedRate(asyncRedisHandler, 5000);
}
@Override
public Result getMemorandum(PageLimit pageLimit, Integer userId) {
List<Memorandum> memorandums = memorandumMapper.selectByIdAndPage(pageLimit, userId);
int size = memorandumMapper.selectCount(new QueryWrapper<Memorandum>().eq(Memorandum.COL_USER_ID, userId));
PageData<List<Memorandum>> listPageData = new PageData<>(size, memorandums);
return new Result<>(listPageData);
}
@Override
public Result deleteMemorandumById(int id, Integer userId) {
Memorandum memorandum = memorandumMapper.selectById(id);
if (memorandum.getUserId().compareTo(userId) == 0) {
zSetOperations.remove(SystemConstant.REMEMBER_KEY, memorandum);
}
memorandumMapper.delete(new UpdateWrapper<Memorandum>().eq(Memorandum.COL_USER_ID, userId).eq(Memorandum.COL_ID, id));
return ResultConstant.OK;
}
@Override
public Result saveMemorandum(SaveMemorandumBo saveMemorandumBo, Integer userId) {
saveMemorandumBo.getMemorandum().setUserId(userId);
memorandumMapper.insert(saveMemorandumBo.getMemorandum());
zSetOperations.add(SystemConstant.REMEMBER_KEY, saveMemorandumBo.getMemorandum(), saveMemorandumBo.getDate().getTime());
return ResultConstant.OK;
}
@Override
public Result deleteBatchMemorandum(List<Integer> idList, Integer userId) {
List<Memorandum> list = memorandumMapper.selectBatchIds(idList);
for (Memorandum memorandum : list) {
if (memorandum.getUserId().compareTo(userId) == 0){
zSetOperations.remove(SystemConstant.REMEMBER_KEY, memorandum);
}else {
idList.remove(memorandum.getId());
}
}
memorandumMapper.delete(new UpdateWrapper<Memorandum>().in(Memorandum.COL_ID,idList));
return ResultConstant.OK;
}
@Override
public Result updateMemorandum(UpdateMemorandumBo updateMemorandumBo) {
memorandumMapper.updateContentById(updateMemorandumBo);
return ResultConstant.OK;
}
}
public class AsyncRedisHandler implements Runnable {
@Resource(name = "redisTemplate")
private ZSetOperations<String, Memorandum> operations;
@Resource
private UserMapper userMapper;
@Resource
private AsyncService asyncService;
@Override
public void run() {
Set<Memorandum> set = operations.rangeByScore(SystemConstant.REMEMBER_KEY, 0, System.currentTimeMillis());
if (!(set == null || set.isEmpty())) {
log.info("开始执行:" + set);
for (Memorandum memorandum : set) {
//先移除,防止并发
Long count = operations.remove(SystemConstant.REMEMBER_KEY, memorandum);
if (Objects.nonNull(count) && count != 0){
User user = userMapper.selectById(memorandum.getUserId());
asyncService.sendMessageForTime(memorandum.getContent(),user.getEmail());
}
}
}
}
}
4.2截图
五、每日总结
成员 |
小结 |
陈起廷 |
后台开发并没有实现到什么,前端可以渲染搞定 |
魏宇峰 |
工作:使用之前已封装的基类进行备忘录模块开发(测试);困难:之前封装的基类不能完美地符合需求,改动基类的同时保证其稳定性 |
刘珮琳 |
今天的话,备忘录中添加图片主要是和相册的联动,和团队的其他成员一起互相讨论了,整体来说还可以。 |
高明莹 |
今天的我负责博客的撰写,需要收集每个人的想法以及已经完成的功能遇到的困难等,通过一天天的磨练,队员之间的沟通越来越好了,团队合作也比以前默契。 |
古梓欣 |
在队友的指导下完成今日任务,但是代码还是有可以优化的地方。 | |