[Day 10]怎麽每天都像在赶末班电车R(後端篇)

挑战目标: MockNative Camp前端


今天到101取I13 pro替换我的I10,不知道是年纪大了还是怎麽样,从下订到等待到取货,完全没有什麽兴奋的感觉,拿回家拆开後也就放着转移资料过去,就开始赶铁人赛的东西了,这还真的是挑战,每天前後端都需要生东西出来,尤其是其中一边卡Bug或是有其他事耽搁,导致每天都非常赶得在写文章,不过我觉得是个很不错的挑战,每天固定花时间逼自己前进跟归纳也是不错的方式。

幸好自己前後端只有前端是选择几乎没写过的React/NextJS,後端选择了熟悉的JAVA/Spring,还好当时取消後端使用Rust完全不熟但有兴趣的语言,不然双双遇到Bug真的会搞死自己。

昨天实作了patch,发现了问题,就是密码不应该是可以一起被更新的,如果前端带错值或是没带到passowrd,会直接把用户的密码给更新成null,还有email也是作为登入帐号,不可以被随便更新,所以我们今天就来refactor一下(拖台钱。
PatchReq.java

package com.mock.nativecamp.payload.user;

import lombok.Data;

@Data
public class PatchReq {
    private String name;
    private String birthday;
    private String gender;
    private String credit_token;
    private String profilePic;
    private Boolean news;
    private String userNationality;
    private String userResidence;
    private Boolean genderNotify;
    private Boolean birthdayNotify;
    private Boolean userNationalityNotify;
    private Boolean userResidenceNotify;
    private String timezone;
}

Users.java 这边的update method也要跟着拿掉

 public Users updateUser(Users user, PatchReq patchReq) {
        user.setName(patchReq.getName());
        user.setBirthday(patchReq.getBirthday());
        user.setGender(patchReq.getGender());
        user.setCreditToken(patchReq.getCredit_token());
        user.setProfilePic(patchReq.getProfilePic());
        user.setNews(patchReq.getNews());
        user.setUserNationality(patchReq.getUserNationality());
        user.setUserNationalityNotify(patchReq.getUserNationalityNotify());
        user.setUserResidence(patchReq.getUserNationality());
        user.setUserNationalityNotify(patchReq.getUserNationalityNotify());
        user.setGenderNotify(patchReq.getGenderNotify());
        user.setBirthdayNotify(patchReq.getBirthdayNotify());
        user.setTimezone(patchReq.getTimezone());
        return user;
    }

这样就可以避免更新到密码或是帐号的方式,但相对的我们必须要新增相对应的API来做更新帐号和密码。
这两只API我们晚点再做,先来推进一下进度,我们先来看一下教师的新增流程,
https://ithelp.ithome.com.tw/upload/images/20210925/20140358TvZAh6hIHU.png
首先会需要输入信箱和密码,然後会寄信到信箱中,从验证的URL会导向注册页面
https://ithelp.ithome.com.tw/upload/images/20210925/20140358yjz7xdIyzd.png
这边我们就可以先来想一下要怎麽设计API了,因为教师属於另外一个网页不是我们mock的目标,所以不考虑照他的流程走,直接使用API新增,这边就可以开始来设计我们的model。

Teachers.java

package com.mock.nativecamp.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "Teachers")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teachers {
    @Id
    private String userId;
    private String name;
    private String email;
    private String password;
    private String status;
    private String timezone;
    private String birthday;
    private String country;
    private String nationality;
    private String referrer_Email;
}

详细的我们留到明天在继续观察好了,我需要从其他页面获取教师可能会有的栏位之後再来继续扩充。


<<:  Day 24:程序「动」起来

>>:  ASP.NET Core MVC

30天打造品牌特色电商网站 Day.18 文字的样子

之前曾在 Day8 有跟大家提过字体常用的样式,今天来带大家深入探讨各式文字怎麽设计,才会带给使用者...

Day 14 - 寻访其他组件

在开发Vue时,官方建议使用属性及事件对其他元件做处理,不过凡事总有例外的嘛~ 还是会有一些情境中会...

Day 29 - Vanilla JS Countdown Timer

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

Day29 LINE BOT & NBA - 球队数据查询

其实这个区块原本是预计要做这个的 但是因为他的 JSON 我没法参透出他的意涵q 所以今天改做其他内...

[前端/JavaScript] 实作汇出excel下载按钮的超好用套件:ExcelJS(下)- 用React汇出excel (export excel)

有关於ExcelJS这个套件的教学与说明,请先看我的上一篇文章: [前端/ES6] 实作汇出exce...