第2篇 Scrum 冲刺博客
一、站立式会议
1.1 会议照片
1.2 成员完成情况
成员 |
昨天完成的任务 |
今天计划完成的任务 |
工作中的困难 |
郭沛 |
完成第一篇Scrum冲刺博客撰写以及测试登录接口 |
团队的创建、解散 |
postman接口文档编写规范上出现格式问题 |
柴政 |
将三种排序算法应用内部类的比较器汇集入同一排序业务类中,前端需要的新任务列表生成功能完成 |
完成了第一版的三种算法设计 |
在编码过程中花费额外时间加深对日期日历类的学习;同时发现自己的代码模块调用逻辑比较混乱,于是进行了修改 |
洪梓豪 |
完成个人计划文档的书写 |
消息推送 |
消息推送不是很熟悉,需要查找资料 |
王树干 |
完善日程静态页面 |
对接后端接口,完善日程功能 |
代码比较冗余,规范性不够 |
黎其钻 |
完善了设置界面,正在搞登陆校验和权限 |
完成团队的创建和删除 |
框架不会用,很多地方忘了 |
简蕙兰 |
打开XD看了看,喔好丑鸭,于是改了一丢丢颜色。 |
打开XD看一看,UI会不会比昨天顺眼 |
每天都嫌弃昨天的作品,每天都想从头再来 |
二、项目燃尽图
三、成员代码/文档签入记录
3.1 代码签入
后台:
前端:
3.2 Issue链接
成员 | Issue链接 |
郭沛 | |
柴政 | |
洪梓豪 | |
王树干 | |
黎其钻 | |
简蕙兰 |
(设计好像没有这玩意儿) |
3.3 CodeReview代码规范文档
四、最新项目程序/模块
4.1 程序代码
个人计划部分(后台代码):
1 /**
2 * @author Red Date.
3 * @date 2020/5/9 13:00
4 */
5 @Service
6 @Log4j2
7 public class PersonalPlanServiceImpl implements PersonalPlanService {
8
9 @Resource
10 private PlanMapper planMapper;
11 @Resource
12 private TaskMapper taskMapper;
13
14 /**
15 * 获取个人计划的内容
16 * @param planId 计划的id
17 * @return 个人计划的内容
18 */
19 @Override
20 public PlanVo getPersonalPlan(Integer planId) {
21 Plan plan = planMapper.getPlanByPlanId(planId);
22 if(VerifyUtil.isNull(plan)){
23 log.info("{}该计划不存在",planId);
24 throw new ErrorException("该计划"+planId+"不存在");
25 }
26 List<Task> taskList = taskMapper.getTaskByPlanId(planId);
27 PlanVo planVo = new PlanVo();
28 BeanUtils.copyProperties(plan,planVo);
29 planVo.setTaskList(taskList);
30 log.info("获取计划:{}的内容成功",planId);
31 return planVo;
32 }
33
34 /**
35 * 添加个人计划
36 *
37 * @param personalPlanVo 个人计划内容
38 * @return 插入的内容
39 */
40 @Transactional
41 @Override
42 public PlanVo insertPersonalPlan(PlanVo personalPlanVo) {
43 Plan plan = new Plan();
44 plan.setType(0);
45 BeanUtils.copyProperties(personalPlanVo,plan);
46 if(planMapper.insertPlan(plan)!=1){
47 log.info("个人计划插入数据库失败,可能部分字段为空");
48 throw new ErrorException("系统出现异常,请稍后重试");
49 }
50 List<Task> taskList = personalPlanVo.getTaskList();
51 List<Task> result = new ArrayList<>();
52 for (Task task : taskList){
53 task.setPlanId(plan.getPlanId());
54 task.setUserId(personalPlanVo.getUserId());
55 if(taskMapper.insertTask(task)!=1){
56 log.info("子任务插入数据库失败");
57 throw new ErrorException("系统出现异常,请稍后重试");
58 }
59 result.add(task);
60 }
61 personalPlanVo.setPlanId(plan.getPlanId());
62 personalPlanVo.setTaskList(result);
63 return personalPlanVo;
64 }
65
66 /**
67 * 修改个人计划的内容
68 * @param personalPlanVo 个人计划的内容
69 * @return 修改后的内容
70 */
71 @Transactional
72 @Override
73 public PlanVo updatePersonalPlan(PlanVo personalPlanVo) {
74 if(planMapper.updatePlanByPlanId(personalPlanVo.getPlanName(),personalPlanVo.getPlanId()) != 1){
75 log.info("计划{}修改失败",personalPlanVo.getPlanId());
76 throw new ErrorException("系统出现异常,请稍后重试");
77 }
78 for (Task task:personalPlanVo.getTaskList()){
79 if(taskMapper.updateTask(task) != 1){
80 log.info("子计划{}修改失败",task.getTaskId());
81 throw new ErrorException("系统出现异常,请稍后重试");
82 }
83 }
84 return personalPlanVo;
85 }
86
87 /**
88 * 删除个人计划
89 * @param planId 个人计划的id
90 * @return 是否删除成功,成功返回true
91 */
92 @Override
93 public boolean deletePersonalPlan(Integer planId) {
94 if(planMapper.deletePlanByPlanId(planId)!=1){
95 log.info("该个人计划{}不存在",planId);
96 throw new ErrorException("该个人计划:"+planId+"不存在");
97 }
98 log.info("个人计划{}删除成功",planId);
99 return true;
100 }
101
102 /**
103 * 删除子任务
104 * @param taskId 子任务的id
105 * @return 是否删除成功,成功返回true
106 */
107 @Override
108 public boolean deleteTask(Integer taskId) {
109 if(taskMapper.deleteTaskByTaskId(taskId)!=1){
110 log.info("该子任务不存在{}",taskId);
111 throw new ErrorException("该子任务:"+taskId+"不存在");
112 }
113 log.info("子任务{}删除成功",taskId);
114 return true;
115 }
116 }
日程表子任务部分(前端代码):
1 <style scoped lang="scss">
2 .xiala {
3 position: absolute;
4 top: 0;
5 left: 20%;
6 width: 2em;
7 height: 90%;
8 .line {
9 position: absolute;
10 top: 0;
11 right: 75%;
12 width: 2px;
13 height: 100%;
14 background: #ffe55e;
15 }
16 .gou {
17 display: block;
18 position: absolute;
19 bottom: -2em;
20 right: 0;
21 width: 2em;
22 height: 2em;
23 transform-style: preserve-3d;
24 transform: rotateY(-180deg);
25 }
26 }
27 </style>
28
29 <template>
30 <div class="schedule">
31 <div class="xiala">
32 <div class="line"></div>
33 <img class="gou" src="../../../static/images/gou.png" />
34 </div>
35 <mylist v-if="scheduleList" :scheduleList="scheduleList"></mylist>
36 <mypicker></mypicker>
37 </div>
38 </template>
39
40 <script>
41 // Use Vuex
42 import store from "./store";
43 import mylist from "./mylist/mylist.vue";
44 import mypicker from "./mypicker/mypicker.vue";
45
46 export default {
47 data() {
48 return {
49 scheduleList: null
50 };
51 },
52 computed: {},
53 methods: {
54 prefixInteger(num, n) {
55 return (Array(n).join(0) + num).slice(-n);
56 },
57 // 格式化发送给后台的日期字符串
58 handleTime(obj) {
59 let date = obj;
60 if (!date) {
61 date = new Date();
62 }
63 let year = date.getFullYear();
64 let month = this.prefixInteger(date.getMonth() + 1, 2);
65 let day = this.prefixInteger(date.getDate(), 2);
66 return `${year}-${month}-${day}`;
67 },
68 // 处理日程列表里面开始时间的显示格式
69 handleStartTime(scheduleList) {
70 let len = scheduleList.length;
71 for (let i = 0; i < len; i++) {
72 let time = new Date(scheduleList[i].startTime);
73 scheduleList[i].start_time = `${time.getHours()}:00`;
74 }
75 },
76 getSchedule() {
77 let send = {
78 algorithm: store.state.algorithm,
79 date: this.handleTime(store.state.date)
80 };
81 console.log("获取日程列表,发送:", send);
82 setTimeout(() => {
83 let res = [
84 {
85 taskId: 1,
86 taskName: "安康打卡",
87 lasting: 20,
88 startTime: "2020-12-11 07:00:00",
89 status: 1
90 },
91 {
92 taskId: 2,
93 taskName: "测试测试测试测试测试",
94 lasting: 20,
95 startTime: "2020-12-11 08:00:00",
96 status: 0
97 },
98 {
99 taskId: 3,
100 taskName:
101 "测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试",
102 lasting: 20,
103 startTime: "2020-12-11 08:30:00",
104 status: 1
105 }
106 ];
107 this.handleStartTime(res);
108 this.scheduleList = res;
109 }, 1000);
110 }
111 },
112 components: {
113 mylist,
114 mypicker
115 },
116 mounted() {
117 this.getSchedule();
118 }
119 };
120 </script>
4.2 运行截图
五、成员每日总结
成员 |
小结 |
郭沛 |
今天是Scrum冲刺阶段的第一天,学习了燃尽图意义,完成每日开发任务,很充实! |
柴政 |
编写自己模块的同时不断学习他人好的代码规范,充实又有进步。 |
洪梓豪 |
了解了后台如何主动给前端推送消息 |
王树干 |
今天事情比较多,整体构思比较多,敲的代码比较少 |
黎其钻 |
今天写了n个bug,改了n+1个bug |
简蕙兰 |
今天又画了奇奇怪怪的东西! |