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天下第一
丘丽珊 离终点又进步了一点点,开心!
陈宇 今天早上就完成任务,提高了效率

团队作业4:第五篇Scrum冲刺博客(歪瑞古德小队)的更多相关文章

  1. 团队作业4:第二篇Scrum冲刺博客(歪瑞古德小队)

    目录 一.Daily Scrum Meeting 1.1 会议照片 1.2 项目进展 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3.2 Code Review 记录 3.3 issue ...

  2. 团队作业4:第一篇Scrum冲刺博客(歪瑞古德小队)

    目录 一.Alpha阶段任务认领 二.明日任务安排 三.项目预期任务量 四.敏捷开发前的感想 五.团队期望 Author:歪瑞古德小队 Project:海岛漂流 集合贴:团队作业4:项目冲刺集合贴(歪 ...

  3. 第五篇Scrum冲刺博客--Interesting-Corps

    第五篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 音乐详情页面跳转.设计及布局实现设计 搜索页面以及音乐详情页面数据导入及测试 叶学涛 编写分 ...

  4. 团队作业5:Alpha版本测试和发布(歪瑞古德小队)

    目录 一.项目文档和代码 二.Alpha版本测试报告 2.1 功能测试 2.1.1 功能列表 2.1.2 场景测试 2.1.3 测试结果 2.1.4 bug清单 2.2 兼容性测试 2.3 性能测试 ...

  5. Beta阶段——第五篇 Scrum 冲刺博客

    i. 提供当天站立式会议照片一张: ii. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 对宿舍权限的管理 (2) 今天计划完成的工作: 完善权限管理,进行舍员充值分明 ...

  6. 第五篇Scrum冲刺博客

    一.Daily Scrum Meeting照片 二.每个人的工作 成员 ItemID 已完成工作 明天计划完成的工作 遇到的困难 张鸿 o1 整合界面至游戏中 将其他剩余功能进行整合 游戏状态的切换 ...

  7. 第五篇 Scrum 冲刺博客

    一.站立式会议 1. 会议照片 2. 工作汇报 团队成员名称 昨日(26日)完成的工作 今天(27日)计划完成的工作 工作中遇到的困难 陈锐基 - 完成发布页面的布局- 完成发布动态的功能 - 优化当 ...

  8. Beta阶段第五篇Scrum冲刺博客-Day4

    1.站立式会议 提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 张晨晨:目标增加单词收藏功能 郭琪容:学习收藏功能的实 ...

  9. 2020.5.25 第五篇 Scrum冲刺博客

    Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.每日站立会议 1.1 会议照片 1.2 项目完成情况 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3. ...

随机推荐

  1. Redis 和 memcache 简单比较

    1.Redis不仅仅支持简单的key-value类型的数据,同时还提供list.set.zset.hash等数据结构的存储. 2.Redis支持master-slave(主--从)模式应用. 3.Re ...

  2. myBatis源码解析-日志篇(1)

    上半年在进行知识储备,下半年争取写一点好的博客来记录自己源码之路.在学习源码的路上也掌握了一些设计模式,可所谓一举两得.本次打算写Mybatis的源码解读. 准备工作 1. 下载mybatis源码 下 ...

  3. 自定义bind

    Function.prototype.mybind = function (context, ...args1) { // 判断是否为函数 if (typeof this !== 'function' ...

  4. PHP natcasesort() 函数

    定义和用法 natcasesort() 函数用"自然排序"算法对数组进行排序.键值保留它们原始的键名. 在自然排序算法中,数字 2 小于 数字 10.在计算机排序算法中,10 小于 ...

  5. PHP xml_parser_set_option() 函数

    定义和用法 xml_parser_set_option() 函数为 XML 解析设置选项.高佣联盟 www.cgewang.com 如果成功,该函数则返回 TRUE.如果失败,则返回 FALSE. 语 ...

  6. mongoDB数据库原生配置

    最近小冷在工作中使用到了mongoDB数据库,所以就简单的写了个demo,和大家简单分享下,如果大家也有想分享的东西或者需要分享的东西,生活或者其他都行,可以关注小冷公众号秦川以北或者加小冷微信qxy ...

  7. 三个技巧帮助Docker镜像瘦身

    在构建Docker容器时,应该尽量想办法获得体积更小的镜像,因为传输和部署体积较小的镜像速度更快. 但RUN语句总是会创建一个新层,而且在生成镜像之前还需要使用很多中间文件,在这种情况下,该如何获得体 ...

  8. Spring学习总结(8)-接口多个实现类的动态调用

    需求描述:当一个接口有2个以上的实现类时,调用方需要根据参数选择只其中一个实现类 Spring版本:5.1.8.RELEASE 1. 接口和实现类 /** * 接口 */ public interfa ...

  9. 京东架构师:日均 5 亿查询量的ElasticSearch架构如何设计?

    作者:张sir  来源:京东技术(id:jingdongjishu) 1. 背景 京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数 ...

  10. swift demo1 tableview

    代码如下: // // ViewController.swift // demo1_tableview // // Created by Alice_ss on 2018/2/24. // Copyr ...