Author:歪瑞古德小队

Project:海岛漂流

集合贴:团队作业4:项目冲刺集合贴(歪瑞古德小队)

一、Daily Scrum Meeting

1.1 会议照片

1.2 项目进展

团队成员 昨日完成任务 今日计划任务 遇到的困难
黄钰朝 #38根据名称搜索海岛 #40根据id返回一个海岛 我不知道要交概率论
作业,我太难了
黄煜淇 #43查询用户信息时返回距离 #44根据id星标海岛 概率论作业有点难做,
看着答案都不懂
余圣源 #50完成树洞和时间胶囊功能接入 #51完成写信界面和功能接入 太多的任务,时间真的
不够用,设计的功能太多了
张文俊 #57完成帖子界面和功能 #58完成发布动态,评论功能的接入 布局设计
丘丽珊 #64绘制第四天站立会议照片 #65绘制第五天站立会议
照片,一张信纸样式
作业好多,时间不够用
陈宇 #72用户查看树洞内容 #73查看一个海岛的动态列表 需要同时兼顾操作系统实验

二、项目燃尽图

三、签入记录

3.1 代码/文档签入记录

3.2 Code Review 记录

3.3 issue内容和链接

团队成员 issue内容和链接
黄钰朝 #38根据名称搜索海岛
黄煜淇 #43查询用户信息时返回距离
余圣源 #50完成树洞和时间胶囊功能接入
张文俊 #57完成帖子界面和功能
丘丽珊 #64绘制第四天站立会议照片
陈宇 #72用户查看树洞内容

四、最新模块截图

4.1 最新模块代码

(1)搜索海岛

    /**
* 分页查询User
*
* @param page 当前页数
* @param pageSize 页的大小
* @param factor 搜索关键词
* @return 返回mybatis-plus的Page对象,其中records字段为符合条件的查询结果
* @author chaos
* @since 2020-05-04
*/
@Override
public Page<UserVo> searchUsersByPage(int page, int pageSize, String factor) {
log.info("正在执行分页查询user: page = {} pageSize = {} factor = {}", page, pageSize, factor);
QueryWrapper<User> queryWrapper = new QueryWrapper<User>().like("nickname", factor);
Page<User> result = super.page(new Page<>(page, pageSize), queryWrapper);
log.info("分页查询user完毕: 结果数 = {} ", result.getRecords().size()); // 查看自己的信息
User self = (User) SecurityUtils.getSubject().getPrincipal(); //转成vo类型
List<User> records = result.getRecords();
List<UserVo> voRecords = new LinkedList<>();
for (User user : records) {
UserVo userVo = new UserVo();
BeanUtils.copyProperties(user, userVo);
userVo.setDistance(locationUtils.getDistance(self.getCity(), user.getCity()));
voRecords.add(userVo);
} Page<UserVo> userVoPage = new Page<>();
BeanUtils.copyProperties(result, userVoPage);
userVoPage.setRecords(voRecords);
return userVoPage;
} @Scheduled(cron = "0 15 * * * ?")
public void cacheUsers() {
log.info("正在清空缓存的用户数据");
if (users != null) {
users.clear();
}
log.info("正在缓存用户");
users = super.list();
log.info("缓存成功:{}条用户数据", users.size());
}

(2)树洞模块

/**
* <p>
* 树洞
* 服务实现类
* </p>
*
* @author chaos
* @since 2020-05-21
*/
@Slf4j
@Service
public class TreeHoleServiceImpl extends ServiceImpl<TreeHoleMapper, TreeHole> implements TreeHoleService { @Resource
TreeHoleMapper treeHoleMapper; @Resource
MessageMapper messageMapper; @Override
public Page<TreeHole> listTreeHolesByPage(int page, int pageSize) {
log.info("正在执行分页查询treeHole: page = {} pageSize = {} ", page, pageSize);
//TODO 这里需要自定义用于匹配的字段,并把wrapper传入下面的page方法
Page<TreeHole> result = super.page(new Page<>(page, pageSize));
log.info("分页查询treeHole完毕: 结果数 = {} ", result.getRecords().size());
return result;
} @Override
public TreeHoleVo getTreeHoleById(int id) {
log.info("正在查询treeHole中id为{}的数据", id);
TreeHole treeHole = super.getById(id);
if(treeHole==null){
return null;
}
TreeHoleVo treeHoleVo=new TreeHoleVo();
treeHoleVo.setHole(treeHole);
Map<String,Object> map=new HashMap<>();
map.put("tree_hole_id",id);
treeHoleVo.setMessages(messageMapper.selectByMap(map));
log.info("查询id为{}的treeHole{}", id, (null == treeHole ? "无结果" : "成功"));
return treeHoleVo;
} @Override
public int insertTreeHole(TreeHole treeHole) {
log.info("正在插入treeHole");
treeHole.setCreateTime(LocalDateTime.now());
Integer userTreeNumber=treeHoleMapper.getUserTreeNumber(treeHole.getCreatorId());
if(userTreeNumber>=5){
log.error("插入treeHole失败,用户树洞超过五个");
throw new BizException("用户树洞已有5个,无法添加");
}
if (super.save(treeHole)) {
log.info("插入treeHole成功,id为{}", treeHole.getTreeHoleId());
return treeHole.getTreeHoleId();
} else {
log.error("插入treeHole失败");
throw new BizException("添加失败");
}
} @Override
public int deleteTreeHoleById(int id,Integer userId) {
log.info("正在删除id为{}的treeHole", id);
if(!userId.equals(treeHoleMapper.getUserIdByTreeId(id))){
log.error("更新id为{}的treeHole失败,登录用户与树洞拥有用户不同",id);
throw new BizException("登录用户与树洞拥有用户不同");
}
if (super.removeById(id)) {
log.info("删除id为{}的treeHole成功", id);
return id;
} else {
log.error("删除id为{}的treeHole失败", id);
throw new BizException("删除失败[id=" + id + "]");
}
} @Override
public int updateTreeHole(TreeHole treeHole) {
log.info("正在更新id为{}的treeHole", treeHole.getTreeHoleId());
Integer userId=treeHoleMapper.getUserIdByTreeId(treeHole.getTreeHoleId());
if(!userId.equals(treeHole.getCreatorId())){
log.error("更新id为{}的treeHole失败,登录用户与树洞拥有用户不同", treeHole.getTreeHoleId());
throw new BizException("登录用户与树洞拥有用户不同");
}
if (super.updateById(treeHole)) {
log.info("更新d为{}的treeHole成功", treeHole.getTreeHoleId());
return treeHole.getTreeHoleId();
} else {
log.error("更新id为{}的treeHole失败", treeHole.getTreeHoleId());
throw new BizException("更新失败[id=" + treeHole.getTreeHoleId() + "]");
}
} @Override
public List<TreeHole> getByUserId(Integer userId) {
log.info("正在查询用户id为{}的树洞",userId);
Map<String, Object> map=new HashMap<>();
map.put("creator_id",userId);
return treeHoleMapper.selectByMap(map);
} }

4.2 程序运行截图

五、每日总结

团队成员 总结内容
黄钰朝 开发进度比较顺利,就是作业太多
黄煜淇 今天一点代码工作都没有,早上进行了积极分子讨论会议,下午复习了操作系统。
余圣源 完善了树洞的功能,写了下fifo算法,发现与题目要求有偏差,重写,很不开心
张文俊 flex天下第一
丘丽珊 离终点又进步了一点点,开心!
陈宇 今天早上就完成任务,提高了效率

最新文章

  1. Elasticsearch DSL中Query与Filter的不同
  2. android LocalActivityManager说明
  3. 百度分享不支持https的解决方案
  4. 在浏览器中打不开Oracle 11gR2的企业管理器页面
  5. Java 装箱、拆箱 包装器
  6. UNIX网络编程卷1 时间获取程序server TCP 协议相关性
  7. [bzoj4592] [Shoi2015]脑洞治疗仪
  8. 无需超级用户mpi多机执行
  9. System系统类
  10. Conda命令指标
  11. 五一之起一台服务器玩玩-centosl系统搭建lamp
  12. SharePoint Framework 在web部件中使用第三方样式 - 将第三方样式打到包中
  13. rocketmq (一)运行原理以及使用问题
  14. 51Nod 1810 连续区间
  15. py库: pyautogui (自动测试模块,模拟鼠标、键盘动作)
  16. WDA-1-环境配置
  17. Android Studio 发布 APK
  18. 字符串分割(C++)(转载)
  19. css points
  20. 《关于ES6的学习》

热门文章

  1. js控制语句练习(回顾)
  2. CORS跨域操作cookie
  3. PHP max() 函数
  4. UOJ 422 [集训队作业2018] 小Z的礼物 min-max容斥 期望 轮廓线dp
  5. Python代码规范性检测
  6. linux之SAMBA共享目录服务端架设
  7. RESTFUL风格的URL请求及参数接收
  8. Java集合最全解析,学集合,看这篇就够用了!!!
  9. 基于Socket访问西门子PLC系列教程(二)
  10. 基于索引的QA问答对匹配流程梳理