• 第3篇 Scrum 冲刺博客


    一、站立式会议

    1.1 会议照片

    1.2 成员完成情况

    成员

    昨天完成的任务

    今天计划完成的任务

    工作中的困难

    郭沛

    团队的创建与解散

    团队成员编辑(增加和删除)

    主要是团队成员权限的校验问题

    柴政

    三种算法初版设计

    与其他模块进行一部分对接

    要抽空编码

    洪梓豪

    学习了一部分消息队列的知识

    继续学习消息队列

    需要学习新的知识

    王树干

    完善日程模块

    根据最新版的日程设计稿完善了页面

    其他课程作业较多,开发时间较少

    黎其钻

    完成了团队创建和管理页面

    完成团队队伍管理和任务列表

    第三方组件库的组件太少了,好多都要自己写

    简蕙兰

    再次检查了UI

    添加了“设置-关于我们”页面

    作业好多…实验好烦…课设好难…


    二、项目燃尽图


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

    3.1 代码签入

    后台

    前端

    3.2 Issue链接

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

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

     

     

    3.3 CodeReview代码规范文档

     


    四、最新项目程序/模块

    4.1 程序代码

    团队成员编辑部分(后台代码):

      1 @Service
      2 @Log4j2
      3 public class GroupServiceImpl implements GroupService {
      4 
      5     @Resource
      6     private MemberMapper memberMapper;
      7 
      8     @Resource
      9     private GroupMapper groupMapper;
     10 
     11     @Resource
     12     private PlanMapper planMapper;
     13 
     14     @Resource
     15     private TaskMapper taskMapper;
     16 
     17     @Resource
     18     private WechatMapper wechatMapper;
     19 
     20     @Override
     21     public GroupVo updateMember(MemberVo memberVo, UserPo userPo) throws Exception {
     22 
     23         if (VerifyUtil.isNull(memberVo) || VerifyUtil.isEmpty(memberVo.getGroupId())
     24                 || VerifyUtil.isEmpty(memberVo.getUserId()) || VerifyUtil.isEmpty(memberVo.getType())) {
     25             log.info("前端传过来的参数为空");
     26             throw new ErrorException("网络传输异常,请重试");
     27         }
     28         if (!memberVo.getType().equals("add") && !memberVo.getType().equals("delete")) {
     29             log.info("传输的类型type错误");
     30             throw new ErrorException("请选择正确的修改成员列表的方式");
     31         }
     32         Group group = groupMapper.getGroupByGroupId(memberVo.getGroupId());
     33         Member member = new Member();
     34         member.setGroupId(memberVo.getGroupId());
     35         member.setMemberId(memberVo.getUserId());
     36         //先判断是要删除还是添加成员
     37         if (memberVo.getType().equals("add")) {
     38             //说明是添加成员
     39             //判断下是否已经达到上限
     40             if (memberMapper.getGroupMemberNum(memberVo.getGroupId()) < group.getLimit()) {
     41                 if (memberMapper.insertMember(member) != 1) {
     42                     log.info("将id为{}的成员添加到Id为{}的队伍失败", member.getMemberId(), member.getGroupId());
     43                     throw new ErrorException("服务器异常,请重试");
     44                 }
     45             }
     46             else {
     47                 log.info("Id为{}的队伍人员已满", group.getGroupId());
     48                 throw new ErrorException("该团队成员数量已达上限");
     49             }
     50         }
     51         if (memberVo.getType().equals("delete")) {
     52             //说明是删除成员,需要先校验执行该操作人的身份-->若为群主则可以删除别人||或者本人自己想退出该团队
     53             if (group.getCreatorId().equals(userPo.getUserId()) || member.getMemberId().equals(userPo.getUserId())) {
     54                 //说明是群或者本人想退群,则有权限
     55                 if (memberMapper.deleteGroupMember(member) != 1) {
     56                     log.info("将id为{}的成员从Id为{}的队伍剔除失败", member.getMemberId(), member.getGroupId());
     57                     throw new ErrorException("服务器异常,请重试");
     58                 }
     59             }
     60             else {
     61                 log.info("{}的成员无权限将{}的成员从{}的队伍中剔除", userPo.getUserId(), member.getMemberId(), 
                member.getGroupId());
    62 throw new ErrorException("您没有权限将该成员踢出本团队"); 63 } 64 } 65 //Todo 将返回的数据进行完善 66 GroupVo groupVo = new GroupVo(); 67 groupVo.setGroupId(memberVo.getGroupId()); 68 groupVo.setGroupName(group.getGroupName()); 69 List<Plan> planList = planMapper.getPlanByType(memberVo.getGroupId()); 70 for (Plan plan : planList) { 71 plan.setTaskList(taskMapper.getTaskByPlanId(plan.getPlanId())); 72 } 73 groupVo.setGroupPlanList(planList); 74 List<Member> memberList = memberMapper.getMemberByGroupId(memberVo.getGroupId()); 75 List<UserPo> memberVoList = new LinkedList<>(); 76 for (Member m : memberList) { 77 UserPo user = wechatMapper.getUserByUserId(m.getMemberId()); 78 memberVoList.add(user); 79 } 80 groupVo.setGroupMemberList(memberVoList); 81 groupVo.setLimit(group.getLimit()); 82 return groupVo; 83 } 84 85 /** 86 * 新增团队 87 * @param group 88 * @param userPo 89 * @return 90 */ 91 @Override 92 public GroupVo addGroup(Group group, UserPo userPo) { 93 if (VerifyUtil.isEmpty(group.getGroupName()) || VerifyUtil.isEmpty(group.getLimit())) { 94 log.info("前端传过来的参数不完整"); 95 throw new ErrorException("请将数据填写完整"); 96 } 97 group.setCreatorId(userPo.getUserId()); 98 groupMapper.insertGroup(group); 99 //将创建者本人加入到该团队中 100 memberMapper.insertMember(new Member(group.getGroupId(), userPo.getUserId())); 101 group = groupMapper.getGroupByGroupId(group.getGroupId()); 102 GroupVo groupVo = new GroupVo(); 103 groupVo.setGroupId(group.getGroupId()); 104 groupVo.setGroupName(group.getGroupName()); 105 groupVo.setCreatorId(group.getCreatorId()); 106 groupVo.setLimit(group.getLimit()); 107 groupVo.setGroupPlanList(null); 108 List<Member> memberList = memberMapper.getMemberByGroupId(group.getGroupId()); 109 List<UserPo> memberVoList = new ArrayList<>(); 110 for (Member member : 111 memberList) { 112 UserPo user = wechatMapper.getUserByUserId(member.getMemberId()); 113 memberVoList.add(user); 114 } 115 groupVo.setGroupMemberList(memberVoList); 116 return groupVo; 117 } 118 119 /** 120 * 删除团队 121 * @param groupId 122 * @param userPo 123 * @return 124 */ 125 @Override 126 public String deleteGroup(Integer groupId, UserPo userPo) { 127 //判断该团队是否存在 128 Group group = groupMapper.getGroupByGroupId(groupId); 129 if (group != null) { 130 //判断该成员是否为创建者 131 if (group.getCreatorId().equals(userPo.getUserId())) { 132 groupMapper.deleteGroupByGroupId(groupId); 133 return "success"; 134 } 135 else { 136 log.info("用户{}无权限删除id为{}的团队", userPo.getName(), groupId); 137 throw new ErrorException("您不是该团队创建者,无权限删除该团队"); 138 } 139 } 140 else { 141 log.info("团队id为{}不存在", groupId); 142 throw new ErrorException("该团队不存在"); 143 } 144 } 145 }

    日程表子任务部分(前端代码):

     1 <template>
     2   <div class="team">
     3     <div class="list">
     4       <TeamCard :state="'create'" />
     5       <TeamCard :state="'edit'" />
     6     </div>
     7   </div>
     8 </template>
     9 
    10 <script>
    11 // Use Vuex
    12 import store from './store'
    13 import PlanList from './component/PlanList'
    14 import TeamCard from './component/TeamCard'
    15 export default {
    16   data() {
    17     return {
    18       teamData: {
    19         group_id: 1232,
    20         group_name: '攻城狮',
    21         creator_id: 'zuan',
    22         limit: 5
    23       },
    24       toDoList: [],
    25       memberList: [
    26         {_id: 1, nickName: '钻', avatarUrl: '../user.png'},
    27         {_id: 2, nickName: '树', avatarUrl: '../user.png'}, 
    28         {_id: 3, nickName: '沛', avatarUrl: '../user.png'},
    29         {_id: 4, nickName: '政', avatarUrl: '../user.png'}, 
    30         {_id: 5, nickName: '兰', avatarUrl: '../user.png'}, 
    31       ]
    32     }
    33   },
    34   components: {
    35     PlanList,
    36     TeamCard
    37   },
    38   computed: {
    39   },
    40   methods: {
    41     createTeam() {
    42       return 
    43     },
    44     exitTeam() {},
    45     addMember() {},
    46     removeMember() {}
    47   },
    48   created() {
    49     
    50   },
    51 }
    52 </script>
    53 <style>
    54 </style>

    4.2 运行截图

     


    五、成员每日总结

     

     

    成员

    小结

    郭沛

    今天主要是继续写一些业务代码并对每个接口进行测试,同时撰写第三篇冲刺博客,希望继续保持状态!加油!

    柴政

    今天主要复习了操作系统关于算法部分的课程,并对算法进行优化

    洪梓豪

    今天主要学习了消息队列的知识

    王树干

    今天还是在完善日程部分,准备开始对接后台接口

    黎其钻

    今天依然是想回学校的一天,家里效率太低了,而且使用组件库的过程中发现很多bug,还是自己写的东西靠谱

    简蕙兰

    神情恍惚的周六,这就是996的福报吗?

     

     

  • 相关阅读:
    create mysql database
    mysql install
    mac os vim 乱码
    Three.js 基础入门
    Echarts修改提示框及自定义提示框内容
    Echarts3实例 南丁格尔饼图
    南丁格尔玫瑰图3
    Echarts实战案例代码:饼图pie之南丁格尔玫瑰图rose实现代码
    记录下vue 中引用echarts 出现 "TypeError: Cannot read property 'getAttribute' of undefined"问题
    echarts 中国地图,根据省份数值高低改变省份颜色深浅
  • 原文地址:https://www.cnblogs.com/Allforward/p/12945148.html
Copyright © 2020-2023  润新知