scrum项目冲刺_Day4会议总结

Posted Aurora-RenShuoyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrum项目冲刺_Day4会议总结相关的知识,希望对你有一定的参考价值。

今日团队任务:

  1. 图片转excel(5天)
    1. 前端开发(需团队风格统一)
    2. 调用接口(后端),json数据->excel
    3. 前后端连接           任烁玚(进行中)             
  2. 图片转html(8天)
    1. 前端开发(需团队风格统一)
    2. 图片转为pdf(存储)
    3. pdf转html(调用接口)[html存储到数据库]
    4. 前后台数据同步       孟德昊(进行中)
  3. excel存储到数据库(5天)
    1. 接收前端excel数据导入数据库
    2. 数据分类汇总
    3. 与前端结合实现历史记录查询的功能  田振阳(进行中)
  4. 检查与测试
    1. 组长定期对成员工作进行检查,督促成员完成每任务
    2. 组长对成员代码进行定期测试,找出其中问题
    3. 团队成员对工作进行总的评审找出其中需要加以改进的地方

我的任务:

  1. excel存储到数据库(5天)
      1. 前端开发(需团队风格统一)
      2. 调用接口(后端),json数据->excel
      3. 前后端连接           

昨日任务:完成json转excel

今日任务:通过java代码将excel导入数据库

我遇到的困难:前端框架使用不熟练

解决:学习使用,增加熟练度

今日团队完成情况:

任务1:完成部分前端界面功能菜单设计

任务2:完成前端界面开发。

任务3:实现通过java代码准确的导入数据或通过脚本控制插件实现

团队任务燃尽图:

 

逐梦校友圈——β冲刺day6

这个作业属于哪个课程 <福州大学2021春软件工程实践S班>
这个作业要求在哪里 团队作业六——beta冲刺+事后诸葛亮
团队名称 逐梦校友圈
这个作业的目标 β每日冲刺文档

SCRUM

任务总览

前端

  • 昨日安排
任务 完成情况
修复bug 已完成
个人信息上传 已完成
对已排查bug进行修改 已完成
继续完成贴文详情界面 已完成
读取聊天数据及聊天 已完成
  • 明日安排
任务 分派人员
拉黑内容调用 茂基
学生证上传 语涵
修修评论bug 炜华
完成帖子详情界面的评论部分 伟峰
测试 建斌

后端

  • 昨日安排
任务 完成情况
实现查找单个帖子详细信息接口 已完成
完成用户接收消息service、controller层代码 已完成
评论组局 已完成
  • 明日安排
任务 分派人员
测试 亮亮
完成剩余接口测试 海翔
对组局的整体部分查漏补缺 小螃蟹

成员描述

成员 昨日成就 存在问题 问题解决方案或描述 明日安排
语涵104 身份验证图片上传界面和功能 (1.5h/3h) 技术开拓 刚开始尝试了将头像上传和身份验证上传放在一个界面,后来认为将此放在我的界面更符合用户使用习惯,技术上图片上传还需要完善 身份验证图片上传界面和功能
建斌209 写读取聊天历史数据及聊天(5h) 测试
茂基222 修改bug组件重新渲染后部分数据丢失 (3h) 布局问题 布局太难了吧,没掌握精髓,好花时间 拉黑等内容的调用
炜华230 帖子详情界面具体内容显示已完成 (3h) 详情划分 帖子详情界面内容较多,在研究应用上花了多个小时 完成帖子详情界面的评论部分
伟峰432 完善加入组局、组局踢人功能 (7h/9h) 时间 时间时间时间,我需要更多时间 修修评论bug
亮亮215 优化十大热帖查询、优化帖子按类别查询、修复十大热帖信息与当前用户不匹配的错误、实现根据帖子id查询帖子详情接口(200min) 测试
海翔321 完成私聊前3个接口测试(35min) 完成剩余接口测试
小螃蟹411 评论组局(2.5h) 字段混淆 之前设计数据库表的时候没有设计id_To字段(也就是被回复用户的ID)导致我在实现将评论分级展示的时候逻辑有点混乱,后面还是队友帮我捋清楚思路。 对组局的整体部分查漏补缺
丫比125 项目督促,博客园撰写,询问详细版本信息,制订接下来的计划(1.5h) 督促开发,博客园撰写,询问详细进度情况,进行扫尾工作。

内容展示

  afterRead: function (event) {
    const that = this;
    console.log(event.detail.file.url);
    this.setData({
      fileList: [event.detail.file],
    });
    console.log(this.data.fileList)

    this.submitImage();
  },

  submitImage:function (e) {
    let that=this;
    const file = that.data.fileList;
    let promiseArr=[];
    let imgServerUrls=new Array();
    console.log(that.data.fileList);
    file.forEach(function (e) {
      var FSM = wx.getFileSystemManager();
      let imageType=getApp().getImageType(e.url);
      promiseArr.push(
          new Promise(function (resolve,reject) {
            FSM.readFile({
              filePath: e.url,
              encoding: "base64",
              success: function (data) {
                wx.request({
                 //获取图片信息
                  }
                })
              }
            });
          })
      )
    })
getPostList(){
    let that = this;
    let baseUrl = app.globalData.baseUrl;
    request({                                           //调用接口获取个人帖子列表
      url: baseUrl + \'/api/user/post/list\',
      method:\'GET\',
      success(res){
        console.log(res);
        if(res.data.code === 200){
          let tempData = res.data.data.reverse();              //获取逆序列表
          if(tempData!= null) {
            for (let i = 0; i < tempData.length; i++) {        //时间转换
              tempData[i].gmtCreate = timeago.format(new Date(tempData[i].gmtCreate), \'zh_CN\');
            }
          }
          that.setData({
            postList:tempData,
          })
        }
      }
    })
  },
//处理组局成员
if (i < partyMemmberCntNow) {
        // 判断是否是局长,如果是就赋值组长的配置
        if (partyParticipantsId[i] == partyPublisherID) {
          member.url = baseUrl + \'/static/\' + partyPublisherMsg.iconUrl;
          member.isPublisher = true;
          member.text = \'局长\';
          //如果是自己,就赋值相应的配置
          if (partyParticipantsId[i] == userId) {
            member.myself = true;
            member.text = \'自己\'
          }
}
//不是组长,是组员的情况
else {
        member = {
                index: i,
                url: this.data.memberIconUrl,
                userId: participantsId[i],
                isOccupied: true,
                ifShow: false,
                isPublisher: false,
                myself: false,
                text: \'成员\'
        }
        //如果当前用户已经是组员,赋值相应的配置
        if (partyParticipantsId[i] == userId) {
          member.myself = true;
          member.text = \'自己\'
        }
      }
  • 亮亮215

完成issue1

完成issue2

完成issue3

优化十大热帖热搜

 -- 核心SQL语句,查询出点赞数前十的待连接的帖子信息,按点赞数降序,时间倒序排列,已连接发帖人昵称,帖子类名,需要继续连接其他相关信息
SELECT
   post.id AS id,
   post.publisher_id AS publisher_id,
   post.`status` AS `status`,
   post.post_type_id AS post_type_id,
   post.message AS message,
   post.image_urls AS image_urls,
   post.gmt_create AS gmt_create,
   post.gmt_modified AS gmt_modified,
   post.deleted AS deleted,
   `user`.username AS username,
   post_type.`name` AS post_type_name,
   #{currentUserId} AS currentUserId
FROM
   post,
   `user`,
   post_type,
   -- 查询点赞数最多的十个帖子的id和点赞数(用于排序)
   (select  
    	post_like.post_id,count(distinct post_like.id) as cnt
    from post_like,post
    where post_like.deleted = 0 and  post_like.post_id = post.id and post.deleted = 0 and post.status=0
    group by post_like.post_id
    order by count(distinct post_like.id) desc
    limit 0,10
    ) as top
WHERE
   top.post_id = post.id AND
   post.publisher_id = `user`.id AND
   post.post_type_id = post_type.id
ORDER BY
   top.cnt DESC,
   gmt_create DESC,
   id DESC

优化按类别查询

 -- 核心SQL语句,查询指定类别的待连接的帖子信息,按时间倒序排列,已连接发帖人昵称,帖子类名,需要继续连接其他相关信息
SELECT
    post.id AS id,
    post.publisher_id AS publisher_id,
    post.`status` AS `status`,
    post.post_type_id AS post_type_id,
    post.message AS message,
    post.image_urls AS image_urls,
    post.gmt_create AS gmt_create,
    post.gmt_modified AS gmt_modified,
    post.deleted AS deleted,
    `user`.username AS username,
    post_type.`name` AS post_type_name,
    #{queryMap.currentUserId} AS currentUserId
FROM
    post,
    `user`,
    post_type
WHERE
    post.deleted = 0 AND
    post.`status` = 0 AND
    -- 指定帖子类别id
    post.post_type_id = #{queryMap.typeId}  AND
    post.publisher_id = `user`.id AND
    post.post_type_id = post_type.id
ORDER BY
    gmt_create DESC,
    id DESC

十大热帖与当前用户信息不符

if (user != null) {
          Long id = user.getId();//获取当前用户id
@SpringBootTest

public class PrivateChatServiceImplTest {



  @Autowired

  PrivateChatServiceImpl privateChatService;



  @Test

  void listChatTest(){



    Result<List<Map<String, Object>>> result = privateChatService.listChat(123456L);

    System.out.println(result);

  }



  @Test

  void clearListTest(){

    Result<Integer> result = new Result<>();



    result.setCode(ExceptionInfo.valueOf("OK").getCode());

    result.setMessage(ExceptionInfo.valueOf("OK").getMessage());

    result.setData(3);

    Assertions.assertEquals(result,privateChatService.clearList(123456L));

  }



  @Test

  void deleteOneTest(){



    Result<Integer> result = new Result<>();



    result.setCode(ExceptionInfo.valueOf("USER_DIALOG_ID_NULL").getCode());

    result.setMessage(ExceptionInfo.valueOf("USER_DIALOG_ID_NULL").getMessage());



    Assertions.assertEquals(result,privateChatService.deleteOne(123456L,null));



    result.setCode(ExceptionInfo.valueOf("OK").getCode());

    result.setMessage(ExceptionInfo.valueOf("OK").getMessage());

    result.setData(1);

    Assertions.assertEquals(result,privateChatService.deleteOne(123456L,3L));

  }



}
  • 小螃蟹411

完成issue

//组局评论分级展示
for (PartyComment partyComment : partyComments) {
  // 当前评论为父评论
  if (partyComment.getId().equals(partyComment.getPreId())) {
    Map<String, Object> map = new HashMap<>();
    map.put("commentId", partyComment.getId());
    map.put("commentUserId", partyComment.getIdFrom());
    User user = userMapper.selectById(partyComment.getIdFrom());
    map.put("commentUsername", user.getUsername());
    map.put("images", user.getUserIconUrl());
    List<Map<String, Object>> childrenList = new LinkedList<>();
    for (PartyComment comment : partyComments) {
      // 当前评论不为父评论,且为当前父评论的子评论
      if (!comment.getId().equals(partyComment.getId()) && comment.getPreId()
          .equals(partyComment.getId())) {
        Map<String, Object> childrenMap = new HashMap<>();
        childrenMap.put("commentId", comment.getId());
        childrenMap.put("commentUserId", comment.getIdFrom());
        User user1 = userMapper.selectById(comment.getIdFrom());
        childrenMap.put("commentUsername", user1.getUsername());
        childrenMap.put("images", user1.getUserIconUrl());
        childrenMap.put("message", comment.getInformation());
        childrenMap.put("preId", comment.getPreId());
        map.put("gmtCreate", comment.getGmtCreate());
        childrenMap.put("replyId", partyComment.getIdFrom());
        childrenList.add(childrenMap);
      }
    }
    map.put("childrenComments", childrenList);
    map.put("message", partyComment.getInformation());
    map.put("preId", partyComment.getPreId());
    map.put("gmtCreate", partyComment.getGmtCreate());
    mapList.add(map);
  }
}

会议图片

img

PM报告

工作总结

项目燃尽图

img

(由于一个仓库里的燃尽图在导入时候必须放到同一个milestone当中,所以是α和β冲刺的结合燃尽图,请从Jun六月开始查看)

任务总量变化

变化日期 变化数量 变化描述 预计处理时间
2021/06/12 +67 β冲刺整体issue总览 7days
2021/06/14 +1 bug微信小程序scroll-view下拉刷新被触发多次,导致发帖页面不明缘由抽风,开始持续出现500错误 2days
2021/06/15 +1 新加添加测试,便于调试 1day

最新项目截图

头像私聊框

img

组局详情

img

组员移除

img

img

加入组局

img

评论组局

img

嵌套评论

img

以上是关于scrum项目冲刺_Day4会议总结的主要内容,如果未能解决你的问题,请参考以下文章

Outfits——Day4-Beta冲刺

scrum项目冲刺_day10会议总结

scrum项目冲刺_day9会议总结

团队项目Scrum冲刺-day2

逐梦校友圈——站立式会议+alpha冲刺置顶

Outfits——Day6-Beta冲刺