我们是这次稳了队,队员分别是温治乾、莫少政、黄思扬、余泽端、江海灵
一、会议
1.1 26号站立式会议照片:
1.2 昨天已完成的事情
团队成员 |
任务内容 |
黄思扬 |
Web 端首页、内容管理页开发、账号详情页、图文编辑页、数据统计页开发(前端) |
莫少政 |
登录页、注册页开发和活动列表页、详情页开发(前端) |
余泽端 |
登录功能、注册功能(后台) |
温治乾 |
登录功能,注册功能(后台) |
江海灵 |
活动墙模块可能发生用户行为测试,发现漏洞并修复(测试) |
1.3 今天计划完成的工作
团队成员 |
今天计划完成的任务 |
黄思扬 |
活动平台首页(前端) |
莫少政 |
活动登录页(前端) |
余泽端 |
登录功能(后端) |
温治乾 |
短信验证码功能(后端) |
江海灵 |
检验登录功能(测试) |
1.4 工作中遇到的问题
1)前端部分:
黄思扬:在使用vue-router实现页面动态渲染组件时,路由跳转失败。
原因: 在路由配置中,使用父子路由来实现标签页模块切换,父路由必须指定子路由中的某一个路由路径来作为首次加载的路由,这包括路由重定向的地址也必须正确。而我一开始在嵌套子路由时没有搞清父子路由之间的关系,没有配置好才导致出错。
2)后端部分:
余泽端:注册、登录功能逻辑比较复杂,花了不少时间来理清整个逻辑结构,同时注册、登录涉及到很多状态量,在设计数据表时反复重构多次,因为如果这时没有良好设计的数据表,很可能会影响到后续开发
温治乾:短信验证码功能是我之前从来没有接触过的功能,首先我的入手点是自己申请了一个阿里云账号了解一下云短信服务方面的内容,包括短信签名、内容模板、发送总量阈值、发送频率、AccessKey等方面的内容。一开始不知道怎么入手,然后看了一下官方的短信服务API参考文档以及样例程序进行更详细的理解。然后我们小组使用的是腾讯云,不过大同小异,所以问题不大
二、项目跟进
燃尽图
三、代码跟进
团队成员 |
签入记录 |
前端组: 莫少政 黄思扬 |
|
后端组: 余泽端 温治乾 |
|
(2)后端部分:
四、适当的项目程序/模块的最新(运行截图)
短信验证码的效果截图:
4.1 最新模块的代码
注:由于模块代码较多,因而以下选取一些作代表
前端部分
1)解决路由冲突
src/components/platformModule/indexModule/index.vue
1 <template> 2 <div class="index-container"> 3 <div class="noticeBoard-container"> 4 <div class="noticeBoard ivu-card-shadow"> 5 <div class="noticeIcon"> 6 <Icon type="md-notifications-outline" color="#9A9A9A" size="30" /> 7 </div> 8 <div class="noticeInfo"> 9 <a href>关于开展第二次407全体代表大会的公告</a> 10 </div> 11 <div class="noticeDate"> 12 <p>2019-11-12</p> 13 </div> 14 </div> 15 </div> 16 <div class="statistic-container"> 17 <div class="statistic ivu-card-shadow"> 18 <div class="headerText"> 19 <h2>帐号情况</h2> 20 </div> 21 <div class="middleContent"> 22 <div class="statistic-unit boderRight"> 23 <Icon type="md-eye" color="#9A9A9A" size="50" /> 24 <h1 class="text">昨日阅读</h1> 25 <h1 class="data">2000</h1> 26 </div> 27 <div class="statistic-unit boderRight"> 28 <Icon type="md-trending-up" color="#9A9A9A" size="50" /> 29 <h1 class="text">新增人数</h1> 30 <h1 class="data">10</h1> 31 </div> 32 <div class="statistic-unit"> 33 <Icon type="md-people" color="#9A9A9A" size="50" /> 34 <h1 class="text">总用户数</h1> 35 <h1 class="data">2000</h1> 36 </div> 37 </div> 38 </div> 39 </div> 40 </div> 41 </template> 42 43 <script> 44 export default { 45 name: "platformIndex", 46 data() { 47 return {}; 48 } 49 }; 50 </script> 51 52 <style> 53 .index-container { 54 } 55 .index-container .noticeBoard-container { 56 padding: 0 2%; 57 } 58 .index-container .noticeBoard-container .noticeBoard { 59 display: flex; 60 flex-wrap: nowrap; 61 justify-content: space-evenly; 62 font-size: 16px; 63 color: #9a9a9a; 64 border: 1px solid #eee; 65 border-radius: 6px; 66 padding: 1.2% 0; 67 } 68 .index-container .noticeBoard-container .noticeBoard .noticeIcon { 69 display: flex; 70 align-items: center; 71 } 72 .index-container .noticeBoard-container .noticeBoard .noticeInfo { 73 80%; 74 text-align: left; 75 padding: 1% 0; 76 } 77 .index-container .noticeBoard-container .noticeBoard .noticeDate { 78 padding: 1% 0; 79 8%; 80 } 81 .index-container .statistic-container { 82 padding: 2% 2%; 83 } 84 .index-container .statistic-container .statistic { 85 padding: 1.2% 0; 86 border: 1px solid #eee; 87 border-radius: 6px; 88 } 89 .index-container .statistic-container .statistic .headerText { 90 100%; 91 padding: 2% 3%; 92 text-align: left; 93 } 94 .index-container .statistic-container .statistic .middleContent { 95 display: flex; 96 flex-wrap: nowrap; 97 padding: 2% 3%; 98 } 99 .index-container .statistic-container .statistic .middleContent .statistic-unit { 100 33.3%; 101 } 102 .index-container .statistic-container .statistic .middleContent .statistic-unit .text { 103 color: #9a9a9a; 104 font-weight: 400; 105 } 106 .index-container .statistic-container .statistic .middleContent .statistic-unit .data { 107 font-size: 42px; 108 } 109 .boderRight { 110 border-right: 1px solid #ddd; 111 } 112 </style>
2) 登录页
src/views/Home.vue
1 <template> 2 <div id="register"> 3 <div>sssssss</div> 4 </div> 5 </template> 6 7 <script> 8 import Footer from '@/components/public/Footer.vue' 9 const axios = require('axios'); 10 11 export default { 12 name: 'register', 13 components: { 14 Footer 15 }, 16 data: function() { 17 return { 18 codeImgUrl: 'https://docs.qq.com/cgi-bin/online_docs/wxqrcode/?page=pages%2Flandingpage%2Flandingpage&ac=login&xsrf=13d87ebf0ecbd43e&ts=1574694066327', 19 loginText: '使用 iGDUT 小程序<br />扫描二维码登录' 20 } 21 }, 22 created: function() { 23 window.reload() 24 } 25 } 26 </script> 27 28 <style lang="scss" scoped> 29 30 31 #register { 32 background-color: white; 33 } 34 </style>
后端部分
3)短信发送接口,验证接口,并添加60s过期功能
src/main/java/com/sixers/activitywall/ActivitywallApplication.java
1 package com.sixers.bean.login;
2
3 /**
4 * Create by Allen
5 * Date: 2019/11/27
6 * Time: 21:18
7 */
8 public class InstitutionBean {
9 private String name;
10 private String id;
11 private String logo; //头像地址
12
13 public String getName() {
14 return name;
15 }
16
17 public void setName(String name) {
18 this.name = name;
19 }
20
21 public String getId() {
22 return id;
23 }
24
25 public void setId(String id) {
26 this.id = id;
27 }
28
29 public String getLogo() {
30 return logo;
31 }
32
33 public void setLogo(String logo) {
34 this.logo = logo;
35 }
36 }
4)完成获取二维码状态接口
src/main/java/com/sixers/bean/wxcode/WxCodeStatusBean.java 0 → 100644
1 package com.sixers.bean.wxcode; 2 3 import com.sixers.bean.BaseResultBean; 4 5 /** 6 * Create by Allen 7 * Date: 2019/11/26 8 * Time: 0:58 9 */ 10 public class WxCodeStatusBean extends BaseResultBean { 11 private Integer statusCode; 12 13 public Integer getStatusCode() { 14 return statusCode; 15 } 16 17 public void setStatusCode(int statusCode) { 18 this.statusCode = statusCode; 19 } 20 }
五、每日每人总结
黄思扬:由于我也是第一次上手vue框架进行开发,对框架语法还不是很熟悉,引入模块后的配置使用也是不怎么熟练,所以才会出现路由跳转失败这样的问题。后续会加强对框架的学习和使用
余泽端:确定好一份接口文档,对以后的开发起到至关重要的作用,开发时候,不会出现接口修改
莫少政: 初次上手前端开发,不太适应,还好需要多多磨合
温治乾:今天初步完成了短信验证码的功能,不过还有一些涉及到与注册功能联系起来以及与状态有关的问题,得想办法解决
江海灵:加油,努力完成任务