第5篇 Scrum 冲刺博客

一、站立式会议

1.1 会议照片

1.2 成员完成情况

成员

昨天完成的任务

今天计划完成的任务

工作中的困难

郭沛

团队计划增删改接口

对团队计划增删改接口进行测试并添加了查看接口

团队计划中用户权限的校验问题

柴政

加深对算法的理解

继续提高算法对截止时间的要求

判断条件如何控制?

洪梓豪

继续学习消息队列,用户修改昵称

修改之前的文档

需要抽空写代码

王树干

动工个人计划

完善个人计划的静态页面

作业较多,时间匆忙

黎其钻

修改了数据流,添加了云函数,登陆流程正式完工

修改团队页面详情逻辑,添加计划页面

日益增长的娱乐渴望与ddl逐渐迫近的焦虑之间的矛盾

简蕙兰

画了会议照片

砍掉了一些功能

噜噜噜…


二、项目燃尽图


三、成员代码/文档签入记录

3.1 代码签入

后台

前端

3.2 Issue链接

成员  Issue链接
郭沛
柴政
洪梓豪
王树干
黎其钻
简蕙兰

(设计好像没有这玩意儿)

 

 

3.3 CodeReview代码规范文档

 


四、最新项目程序/模块

4.1 程序代码

排序算法部分(后台代码):

  1 /**
  2      * 添加团队计划以及修改团队计划接口(若为添加团队计划,则planId为空,若为修改团队计划,则planId不能为空)
  3      * @param planVo
  4      * @return
  5      */
  6     @Override
  7     public PlanVo addGroupPlan(PlanVo planVo) {
  8         //先对数据进行校验
  9         if (VerifyUtil.isNull(planVo) || VerifyUtil.isEmpty(planVo.getPlanName()) || VerifyUtil.isEmpty(planVo.getType())) {
 10             log.info("前端传过来的参数为空");
 11             throw new ErrorException("请填写要添加的计划");
 12         }
 13 
 14         //校验该成员是否在团队中
 15         if (!groupPermission(planVo.getType(), planVo.getUserId())) {
 16             log.info("用户{}不属于该团队", planVo.getUserId());
 17             throw new ErrorException("您还不是该团队的成员,无权访问");
 18         }
 19         //判断下是否planVo是否存在
 20         if (VerifyUtil.isEmpty(planVo.getPlanId())) {
 21             //说明是新的大计划(需要先插入)
 22             log.info("即将插入一条新的大计划");
 23             Plan plan = new Plan();
 24             plan.setType(planVo.getType());
 25             BeanUtils.copyProperties(planVo, plan);
 26             if(planMapper.insertPlan(plan) != 1){
 27                 log.info("个人计划插入数据库失败,可能部分字段为空");
 28                 throw new ErrorException("系统出现异常,请稍后重试");
 29             }
 30             List<Task> taskList = planVo.getTaskList();
 31             if (!VerifyUtil.isEmpty(taskList)) {
 32                 List<Task> result = new ArrayList<>();
 33                 for (Task task : taskList){
 34                     task.setPlanId(plan.getPlanId());
 35                     task.setUserId(planVo.getUserId());
 36                     if(taskMapper.insertTask(task) != 1){
 37                         log.info("子任务插入数据库失败");
 38                         throw new ErrorException("系统出现异常,请稍后重试");
 39                     }
 40                     result.add(task);
 41                 }
 42                 planVo.setPlanId(plan.getPlanId());
 43                 planVo.setTaskList(result);
 44             }
 45             return planVo;
 46         }
 47         else {
 48             //可能是修改团队大计划
 49             log.info("即将对id为{}的大计划名称进行修改", planVo.getPlanId());
 50             planMapper.updatePlanByPlanId(planVo.getPlanName(), planVo.getPlanId());
 51             List<Task> taskList = planVo.getTaskList();
 52             if (!VerifyUtil.isEmpty(taskList)) {
 53                 List<Task> result = new ArrayList<>();
 54                 for (Task task : taskList) {
 55                     task.setPlanId(planVo.getPlanId());
 56                     task.setUserId(planVo.getUserId());
 57                     if (taskMapper.insertTask(task) != 1) {
 58                         log.info("子任务插入数据库失败");
 59                         throw new ErrorException("系统出现异常,请稍后重试");
 60                     }
 61                     result.add(task);
 62                 }
 63                 planVo.setPlanId(planVo.getPlanId());
 64                 planVo.setTaskList(result);
 65             }
 66             return planVo;
 67         }
 68     }
 69 
 70     @Override
 71     public boolean deleteGroupPlan(Integer planId, UserPo userPo) {
 72         if (VerifyUtil.isEmpty(planId)) {
 73             log.info("前端的planId参数为空");
 74             throw new ErrorException("请选择要删除的团队计划");
 75         }
 76         Plan plan = planMapper.getPlanByPlanId(planId);
 77         if (VerifyUtil.isNull(plan)) {
 78             log.info("id为{}的大计划不存在", planId);
 79             throw new ErrorException("该团队计划不存在");
 80         }
 81         if (plan.getUserId().equals(userPo.getUserId())) {
 82             //说明该计划是用户创建的
 83             planMapper.deletePlanByPlanId(planId);
 84             return true;
 85         }
 86         else {
 87             log.info("id为{}的大计划不是用户{}所创建的", planId, userPo.getUserId());
 88             throw new ErrorException("该计划不是您创建的,您无权限删除");
 89         }
 90     }
 91 
 92 
 93     //团队权限校验方法
 94     private Boolean groupPermission(Integer groupId, Integer userId) {
 95         //查看该团队是否存在
 96         if (VerifyUtil.isNull(groupMapper.getGroupByGroupId(groupId))) {
 97             log.info("id为{}的团队不存在", groupId);
 98             throw new ErrorException("该团队不存在");
 99         }
100         //判断该成员是否在该团队中
101         List<Member> memberList = memberMapper.getMemberByGroupId(groupId);
102         for (Member member : memberList) {
103             //说明该成员在团队中
104             if (member.getMemberId().equals(userId)) {
105                 return true;
106             }
107         }
108         return false;
109     }
View Code

个人设置部分(前端代码):

 1 <style scoped lang="scss">
 2 .plan-list {
 3   position: relative;
 4   margin: 8.5em auto 0 auto;
 5   padding: 2em 0 1em 0;
 6   width: 95%;
 7   font-size: 16px;
 8   border-radius: 15px;
 9   background-color: rgba(255, 251, 220, 0.8);
10   .top {
11     position: absolute;
12     top: -2em;
13     height: 4em;
14     width: 100%;
15     line-height: 4em;
16     color: #ffd600;
17     .date {
18       display: inline-block;
19       width: 45%;
20       font-size: 18px;
21       text-align: center;
22       background-position: 60% -0.15em;
23       background-repeat: no-repeat;
24       background-size: auto 100%;
25       background-image: url(../../../../static/images/fish3.png);
26     }
27     .name {
28       display: inline-block;
29       width: 55%;
30       font-size: 18px;
31     }
32   }
33   .dataCon {
34     .list {
35       display: flex;
36       align-items: center;
37       margin: 0.5em 0;
38       .startTime {
39         display: inline-block;
40         width: 25%;
41         text-align: center;
42         color: #111;
43         font-weight: bold;
44       }
45       .taskName {
46         display: inline-block;
47         width: 75%;
48         text-align: left;
49         color: #666;
50         .lastTime {
51           color: #999;
52         }
53       }
54     }
55     .done {
56         text-decoration: line-through;
57     }
58   }
59 }
60 </style>
61 
62 <template>
63   <div class="plan-list">
64     <div class="top">
65       <div class="date">4月5日</div>
66       <div class="name">{{title}}</div>
67     </div>
68     <div class="dataCon">
69       <div class="list" :class="{'done': item.status}" v-for="(item, index) in scheduleList" :key="index">
70         <span class="startTime">{{item.startTime}}</span>
71         <span class="taskName">
72           {{item.taskName}}
73           <span class="lastTime">(预计耗时:{{item.lasting}}分钟)</span>
74         </span>
75       </div>
76     </div>
77   </div>
78 </template>
79 
80 <script>
81 export default {
82   props: {
83     scheduleList: Object
84   },
85   data() {
86     return {
87       title: '今天啥也不想干',
88       
89     };
90   },
91   methods: {},
92   mounted() {
93     console.log(this.scheduleList);
94   }
95 };
96 </script>
View Code

4.2 运行截图


五、成员每日总结

成员

小结

郭沛

由于其他科目作业较多,导致目前进度稍微延迟了一点,后续会合理安排好时间,保证项目进度!

柴政

最后几天继续改进吧

洪梓豪

需要学习的东西还有很多

王树干

最近事情较多,有点难专心开发,接下来要给自己腾点空白时间来专心敲码

黎其钻

修改了页面的数据流

简蕙兰

噜噜噜噜噜噜…

 

猜你喜欢

转载自www.cnblogs.com/Allforward/p/12961989.html