挑战目标: MockNative Camp
昨天我们将SignupReq.java给建立完,现在要开始做繁杂的工作,Object间的转换,不知道有没有更快速的方式。
首先要先在Teachers.java中加入一个method
package com.mock.nativecamp.model;
import com.mock.nativecamp.payload.teacher.SignupReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.List;
@Document(collection = "Teachers")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teachers {
@Id
private String userId;
private String firstName;
private String middleName;
private String lastName;
private String email;
private String password;
private String status;
private String timezone;
private String birthday;
private String country;
private String nationality;
private String referrerEmail;
private String classStatus;
private String introductionVideo;
private String rating;
private String lastLogin;
private Integer classCount;
private Integer reservationCount;
private Integer reservationCancelCount;
private String selfIntroduction;
private String employeeIntroduction;
private String teachingYears;
private List<String> picList;
private List<String> badge;
private List<String> characteristic;
private List<String> hobby;
public Teachers addTeachers(SignupReq signupReq) {
Teachers teachers = new Teachers();
teachers.setFirstName(signupReq.getFirstName());
teachers.setMiddleName(signupReq.getMiddleName());
teachers.setLastName(signupReq.getLastName());
teachers.setEmail(signupReq.getEmail());
teachers.setPassword(signupReq.getPassword());
teachers.setBirthday(signupReq.getBirthday());
teachers.setReferrerEmail(signupReq.getReferrerEmail());
teachers.setCountry(signupReq.getCountry());
teachers.setNationality(signupReq.getNationality());
return teachers;
}
}
然後TeachersController.java新增POST teacher、GET all teacher、GET one teacher
package com.mock.nativecamp.controller;
import com.mock.nativecamp.payload.teacher.SignupReq;
import com.mock.nativecamp.service.TeachersServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@RequestMapping("/teachers")
public class TeachersController {
private final TeachersServer teachersServer;
public TeachersController(TeachersServer teachersServer) {
this.teachersServer = teachersServer;
}
/**
* Signup teacher
* @param signupReq
* @return AdminUser
* @throws Exception
*/
@PostMapping(path = "/signup", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Object SignupUser(@RequestBody SignupReq signupReq) throws Exception {
return teachersServer.signupTeacher(signupReq);
}
/**
* Get all Teachers
* @return Teachers list
* @throws Exception
*/
@GetMapping(path = "/all", produces = MediaType.APPLICATION_JSON_VALUE)
public Object GetAllTeachers() throws Exception {
return teachersServer.getAllTeachers();
}
/**
* Get one Teacher
* @return Teachers
* @throws Exception
*/
@GetMapping(path = "/teacher", produces = MediaType.APPLICATION_JSON_VALUE)
public Object GetTeacher(@RequestParam String id) throws Exception {
return teachersServer.getTeacher(id);
}
}
在teachersServer.java还有TeachersRepository.java中加入相对应的code。
teachersServer.java
package com.mock.nativecamp.service;
import com.mock.nativecamp.model.Teachers;
import com.mock.nativecamp.payload.teacher.SignupReq;
import com.mock.nativecamp.repository.TeachersRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class TeachersServer {
@Autowired
private TeachersRepository teachersRepository;
public Object signupTeacher(SignupReq signupReq) {
Teachers teachers = new Teachers().addTeachers(signupReq);
teachersRepository.save(teachers);
return new ResponseEntity(HttpStatus.ACCEPTED);
}
public Object getAllTeachers() {
return teachersRepository.findAll();
}
public Object getTeacher(String id) {
return teachersRepository.findByUserId(id);
}
}
TeachersRepository.java
package com.mock.nativecamp.repository;
import com.mock.nativecamp.model.Teachers;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface TeachersRepository extends MongoRepository<Teachers, String>{
Teachers findByUserId(String id);
}
接下来就只剩patch了,关於patch因为我是偷懒的设计,由前端带完整资料过来,直接做更新,所以不应该在model中将原本NonNull的栏位拿掉,应该要保持原有的规则,所以修改後的teacher PatchReq.java
package com.mock.nativecamp.payload.teacher;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NonNull;
@Data
@AllArgsConstructor()
public class PatchReq {
@NonNull
private String firstName;
private String middleName;
@NonNull
private String lastName;
@NonNull
private String email;
@NonNull
private String birthday;
@NonNull
private String country;
@NonNull
private String nationality;
}
新增教师
查询所有教师
查询单一教师
明天再来继续完成更新的API,真的很佩服时间管理大师,怎麽有办法在一天的时间内处理好这麽多事情啊?
<<: [神经机器翻译理论与实作] Google Translate的神奇武器- Seq2Seq (I)
>>: [Day12] 第十二章-完成注册API 修改route,controller,model(使用passport认证)
今天这个范例是来自第三方套件 utility-types,在有了前几天的知识後,让我们来试着了解这...
网站架构是骨头,布景主题是皮肤,Menu 是大肌肉 昨天【领域展开 12 式】 安装 Soledad...
Store location data is information about the geogr...
本系列文之後也会置於个人网站 Client与一些安全相关的设定 在OAuth架构下的Client(...
前言 今天读到Theme主题实作,刚好又是app主题色系变化。这次采用setTheme和Style来...