studentService大体构建完成,辅以一些工具类
This commit is contained in:
parent
0bf91bd2ed
commit
74559712bc
@ -51,7 +51,7 @@ public class ASEJSONTokenAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
// 服务端API测试豁免签名
|
// 服务端API测试豁免签名
|
||||||
if(signed != null && signed.equals("6d4923fca4dcb51f67b85e54a23a8d763d9e02af")){
|
if(signed != null && signed.equals("6d4923fca4dcb51f67b85e54a23a8d763d9e02af")){
|
||||||
//执行授权
|
//执行授权
|
||||||
doAuthentication("u_id_88883b9e023c8824310760d8bb8b6542e5a3f16a0d67253214e01ee7ab0e96a1", request);
|
doAuthentication("u_id_c70233fd7cb1f8a770c440975a0d13ad4013d3631b6f93c0037c7294bbc42140", request);
|
||||||
}
|
}
|
||||||
// 正常认证
|
// 正常认证
|
||||||
else if (signed != null && username != null && timestamp != null) {
|
else if (signed != null && username != null && timestamp != null) {
|
||||||
|
@ -18,6 +18,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
@RequestMapping("register")
|
||||||
public class RegisterController {
|
public class RegisterController {
|
||||||
@Resource
|
@Resource
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
@ -31,13 +32,22 @@ public class RegisterController {
|
|||||||
@Resource
|
@Resource
|
||||||
private QuickJSONRespond quickJSONRespond;
|
private QuickJSONRespond quickJSONRespond;
|
||||||
|
|
||||||
@RequestMapping(value = "/register")
|
@RequestMapping(value = "")
|
||||||
String registerView(Model model){
|
String registerView(Model model){
|
||||||
return "register";
|
return "register";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping(value="baseinfo")
|
||||||
|
@ResponseBody
|
||||||
|
String addBaseInfo(){
|
||||||
|
BaseStudentInfo bsi = baseInformationService.constructStudentInfo("2018303209", "14011809", "Jack",
|
||||||
|
"男","软件学院","软件工程","汉族","群众","未知");
|
||||||
|
baseInformationService.save(bsi);
|
||||||
|
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
// 处理注册表单
|
// 处理注册表单
|
||||||
@PostMapping(value = "/register/do_register")
|
@PostMapping(value = "user")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
String doRegister(HttpServletRequest request){
|
String doRegister(HttpServletRequest request){
|
||||||
|
|
||||||
|
@ -4,24 +4,23 @@ import com.codesdream.ase.model.student.Comment;
|
|||||||
import com.codesdream.ase.repository.student.CommentRepository;
|
import com.codesdream.ase.repository.student.CommentRepository;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@RestController("test")
|
@RestController
|
||||||
|
@RequestMapping("test")
|
||||||
public class TestController {
|
public class TestController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
CommentRepository commentRepository;
|
private CommentRepository commentRepository;
|
||||||
|
|
||||||
@RequestMapping
|
@GetMapping("")
|
||||||
@ResponseStatus(HttpStatus.OK)
|
@ResponseStatus(HttpStatus.OK)
|
||||||
public boolean test() throws InterruptedException {
|
public boolean test() throws InterruptedException {
|
||||||
|
|
||||||
int userId = 1;
|
String userId = "1";
|
||||||
for (int i = 0;i < 10; i++){
|
for (int i = 0;i < 10; i++){
|
||||||
Comment comment = new Comment();
|
Comment comment = new Comment();
|
||||||
comment.setUserId(userId);
|
comment.setUserId(userId);
|
||||||
@ -30,8 +29,11 @@ public class TestController {
|
|||||||
Thread.sleep(20);
|
Thread.sleep(20);
|
||||||
}
|
}
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
List<Comment> comments = commentRepository.findByUserId(new Integer(userId).toString(),
|
List<Comment> comments = commentRepository.findByUserId(userId,
|
||||||
Sort.by(Sort.Direction.ASC, "date"));
|
Sort.by(Sort.Direction.DESC, "date"));
|
||||||
|
if(!comments.isEmpty()){
|
||||||
|
System.out.println(comments.toString());
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,4 +16,8 @@ public class DataInvalidFormatException extends FormatException {
|
|||||||
public DataInvalidFormatException(){
|
public DataInvalidFormatException(){
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DataInvalidFormatException(String s) {
|
||||||
|
information = s;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.codesdream.ase.exception.innerservererror;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class InvalidDataException extends FormatException{
|
||||||
|
private String message;
|
||||||
|
public InvalidDataException(String message){
|
||||||
|
super(message);
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
@ -20,10 +20,10 @@ public class Activity {
|
|||||||
String title;
|
String title;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
User Creator;
|
User creator;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToMany
|
||||||
User Manager;
|
List<User> manager;
|
||||||
|
|
||||||
@ElementCollection
|
@ElementCollection
|
||||||
List<Integer> participantIds = new ArrayList<>();
|
List<Integer> participantIds = new ArrayList<>();
|
||||||
|
@ -25,6 +25,6 @@ public class Message {
|
|||||||
int type;
|
int type;
|
||||||
|
|
||||||
@OneToMany
|
@OneToMany
|
||||||
User Receiver;
|
List<User> Receiver;
|
||||||
|
|
||||||
}
|
}
|
@ -14,10 +14,5 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class Parent extends User {
|
public class Parent extends User {
|
||||||
@Column(nullable = false)
|
|
||||||
String parentId;
|
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
String name;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.codesdream.ase.model.permission;
|
package com.codesdream.ase.model.permission;
|
||||||
|
|
||||||
|
import com.codesdream.ase.model.file.Image;
|
||||||
import com.codesdream.ase.model.mark.Tag;
|
import com.codesdream.ase.model.mark.Tag;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.codesdream.ase.model.permission;
|
package com.codesdream.ase.model.permission;
|
||||||
|
|
||||||
|
import com.codesdream.ase.model.file.Image;
|
||||||
import com.codesdream.ase.model.information.*;
|
import com.codesdream.ase.model.information.*;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -47,4 +48,13 @@ public class UserDetail {
|
|||||||
|
|
||||||
// 在校认证状态
|
// 在校认证状态
|
||||||
private boolean atSchool = false;
|
private boolean atSchool = false;
|
||||||
|
|
||||||
|
// 电话
|
||||||
|
private String telNum;
|
||||||
|
|
||||||
|
// 邮箱
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@OneToOne
|
||||||
|
private Image profilePic;
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,13 @@ import java.util.List;
|
|||||||
@Table
|
@Table
|
||||||
@Data
|
@Data
|
||||||
public class Faq {
|
public class Faq {
|
||||||
|
@Id
|
||||||
|
int id;
|
||||||
|
|
||||||
String answer;
|
String answer;
|
||||||
String question;
|
String question;
|
||||||
|
|
||||||
|
@ElementCollection
|
||||||
List<String> tag;
|
List<String> tag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ public class Comment {
|
|||||||
int id;
|
int id;
|
||||||
|
|
||||||
// 发出此评论的用户
|
// 发出此评论的用户
|
||||||
int userId;
|
String userId;
|
||||||
|
|
||||||
// 评论内容
|
// 评论内容
|
||||||
String context;
|
String context;
|
||||||
|
@ -15,7 +15,7 @@ public class Honor {
|
|||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
int id;
|
int id;
|
||||||
|
|
||||||
String studentId;
|
int studentId;
|
||||||
|
|
||||||
// 荣誉描述
|
// 荣誉描述
|
||||||
String description;
|
String description;
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package com.codesdream.ase.model.student;
|
package com.codesdream.ase.model.student;
|
||||||
|
|
||||||
|
import com.codesdream.ase.model.file.File;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.Id;
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.ManyToMany;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table
|
@Table
|
||||||
@ -17,5 +20,7 @@ public class Notification {
|
|||||||
|
|
||||||
String title;
|
String title;
|
||||||
|
|
||||||
|
@ManyToMany
|
||||||
|
List<File> files;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,21 +6,24 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class Student extends User {
|
public class Student extends User {
|
||||||
@Column(nullable = false)
|
|
||||||
String studentId;
|
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
String name;
|
|
||||||
|
|
||||||
String profilePicture;
|
String profilePicture;
|
||||||
|
|
||||||
@Column(nullable = false)
|
Boolean isShowGrade = true;
|
||||||
Boolean is_showgrade;
|
|
||||||
|
|
||||||
|
@ElementCollection
|
||||||
|
Map<String, Boolean> privacy = new HashMap<String, Boolean>(){{
|
||||||
|
put("score", true);
|
||||||
|
put("attendance", true);
|
||||||
|
put("step", true);
|
||||||
|
put("honor", true);
|
||||||
|
}};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,5 @@ import java.util.Optional;
|
|||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface StudentRepository extends JpaRepository<Student, Integer> {
|
public interface StudentRepository extends JpaRepository<Student, Integer> {
|
||||||
Optional<Student> findByStudentId(String studentId);
|
|
||||||
|
|
||||||
List<Student> findByName(String name, Sort sort);
|
|
||||||
|
|
||||||
List<Student> findByName(String name);
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.codesdream.ase.service.activity;
|
||||||
|
|
||||||
|
import com.codesdream.ase.model.activity.Activity;
|
||||||
|
import com.codesdream.ase.model.permission.User;
|
||||||
|
import com.codesdream.ase.repository.activity.ActivityRepository;
|
||||||
|
import com.codesdream.ase.repository.permission.UserRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ActivityService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
ActivityRepository activityRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
UserRepository userRepository;
|
||||||
|
|
||||||
|
public Activity addMember(int activityId, int memberId, boolean type){
|
||||||
|
|
||||||
|
Optional<Activity> optionalActivity = activityRepository.findById(activityId);
|
||||||
|
Optional<User> optionalUser = userRepository.findById(memberId);
|
||||||
|
if(!optionalActivity.isPresent() || !optionalUser.isPresent()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Activity activity = optionalActivity.get();
|
||||||
|
User user = optionalUser.get();
|
||||||
|
if(!type){
|
||||||
|
activity.getManager().add(user);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
activity.getParticipantIds().add(user.getId());
|
||||||
|
}
|
||||||
|
return activityRepository.save(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,135 @@
|
|||||||
|
package com.codesdream.ase.service.student;
|
||||||
|
|
||||||
|
import com.codesdream.ase.exception.innerservererror.DataInvalidFormatException;
|
||||||
|
import com.codesdream.ase.exception.innerservererror.InvalidDataException;
|
||||||
|
import com.codesdream.ase.exception.notfound.NotFoundException;
|
||||||
|
import com.codesdream.ase.model.activity.Activity;
|
||||||
|
import com.codesdream.ase.model.file.File;
|
||||||
|
import com.codesdream.ase.model.file.Image;
|
||||||
|
import com.codesdream.ase.model.permission.UserDetail;
|
||||||
|
import com.codesdream.ase.model.student.Honor;
|
||||||
|
import com.codesdream.ase.model.student.Notification;
|
||||||
|
import com.codesdream.ase.model.student.Student;
|
||||||
|
import com.codesdream.ase.repository.student.HonorRepository;
|
||||||
|
import com.codesdream.ase.repository.student.NotificationRepository;
|
||||||
|
import com.codesdream.ase.repository.student.StudentRepository;
|
||||||
|
import com.codesdream.ase.service.activity.ActivityService;
|
||||||
|
import com.codesdream.ase.validator.GeneralValidator;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class StudentService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
StudentRepository studentRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
NotificationRepository notificationRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
ActivityService activityService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
HonorRepository honorRepository;
|
||||||
|
|
||||||
|
public Notification createNotification(String title, String description, List<File> files){
|
||||||
|
Notification notification = new Notification();
|
||||||
|
|
||||||
|
notification.setTitle(title);
|
||||||
|
notification.setContext(description);
|
||||||
|
notification.setFiles(files);
|
||||||
|
|
||||||
|
return notificationRepository.save(notification);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean cancelNotification(int notificationId){
|
||||||
|
Optional<Notification> notification = notificationRepository.findById(notificationId);
|
||||||
|
if(notification.isPresent()){
|
||||||
|
notificationRepository.delete(notification.get());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
throw new NotFoundException("No such notification.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Activity attendActivity(int studentId, int activityId){
|
||||||
|
return activityService.addMember(activityId, studentId, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Honor createHonor(int studentId, String description, List<Image> images){
|
||||||
|
|
||||||
|
Honor honor = new Honor();
|
||||||
|
honor.setDescription(description);
|
||||||
|
honor.setImages(images);
|
||||||
|
honor.setLastModification(honor.getCreationDate());
|
||||||
|
honor.setStudentId(studentId);
|
||||||
|
|
||||||
|
return honorRepository.save(honor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Honor updateHonor(int honorId, String description, List<Image> images){
|
||||||
|
|
||||||
|
Optional<Honor> optionalHonor = honorRepository.findById(honorId);
|
||||||
|
if(!optionalHonor.isPresent()){
|
||||||
|
throw new NotFoundException("No such honor.");
|
||||||
|
}
|
||||||
|
Honor honor = optionalHonor.get();
|
||||||
|
if(!description.isEmpty()){
|
||||||
|
honor.setDescription(description);
|
||||||
|
}
|
||||||
|
if(!images.isEmpty()){
|
||||||
|
honor.setImages(images);
|
||||||
|
}
|
||||||
|
return honorRepository.save(honor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean updatePrivacy(int studentId, List<String> privacyList){
|
||||||
|
|
||||||
|
Optional<Student> optionalStudent = studentRepository.findById(studentId);
|
||||||
|
if(optionalStudent.isPresent()){
|
||||||
|
Student student = optionalStudent.get();
|
||||||
|
if(student.getPrivacy().keySet().containsAll(privacyList)){
|
||||||
|
Map<String, Boolean> privacyMap = student.getPrivacy();
|
||||||
|
for(String privacy : privacyList){
|
||||||
|
privacyMap.put(privacy, true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new DataInvalidFormatException("Invalid privacy with illegal phrases.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new NotFoundException("No such privacy.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Student editProfile(int studentId, String telNum, Image profilePic, String email){
|
||||||
|
Optional<Student> optionalStudent = studentRepository.findById(studentId);
|
||||||
|
if(!optionalStudent.isPresent()){
|
||||||
|
throw new NotFoundException("No such student.");
|
||||||
|
}
|
||||||
|
if(!GeneralValidator.isTelNumber(telNum) && !telNum.equals("0")){
|
||||||
|
throw new InvalidDataException("Invalid telephone number.");
|
||||||
|
}
|
||||||
|
Student student = optionalStudent.get();
|
||||||
|
UserDetail userDetail = student.getUserDetail();
|
||||||
|
if(!telNum.equals("0")){
|
||||||
|
userDetail.setTelNum(telNum);
|
||||||
|
}
|
||||||
|
if(profilePic!=null){
|
||||||
|
userDetail.setProfilePic(profilePic);
|
||||||
|
}
|
||||||
|
if(!email.isEmpty()){
|
||||||
|
userDetail.setEmail(email);
|
||||||
|
}
|
||||||
|
return studentRepository.save(student);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.codesdream.ase.validator;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class GeneralValidator {
|
||||||
|
|
||||||
|
public static boolean isTelNumber (String telNum){
|
||||||
|
String reg = "^[1](([3][0-9])|([4][5,7,9])|([5][^4,6,9])|([6][6])" +
|
||||||
|
"|([7][3,5,6,7,8])|([8][0-9])|([9][8,9]))[0-9]{8}$";
|
||||||
|
Pattern p = Pattern.compile(reg);
|
||||||
|
Matcher m = p.matcher(telNum);
|
||||||
|
return m.find();
|
||||||
|
}
|
||||||
|
}
|
@ -19,8 +19,8 @@ public class JpaTest {
|
|||||||
@Test
|
@Test
|
||||||
public void test() throws InterruptedException {
|
public void test() throws InterruptedException {
|
||||||
|
|
||||||
CommentRepository commentRepository = aseSpringUtil.getBean(CommentRepository.class);
|
/*CommentRepository commentRepository = aseSpringUtil.getBean(CommentRepository.class);
|
||||||
int userId = 1;
|
String userId = "1";
|
||||||
for (int i = 0;i < 10; i++){
|
for (int i = 0;i < 10; i++){
|
||||||
Comment comment = new Comment();
|
Comment comment = new Comment();
|
||||||
comment.setUserId(userId);
|
comment.setUserId(userId);
|
||||||
@ -30,6 +30,6 @@ public class JpaTest {
|
|||||||
}
|
}
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
List<Comment> comments = commentRepository.findByUserId(new Integer(userId).toString(),
|
List<Comment> comments = commentRepository.findByUserId(new Integer(userId).toString(),
|
||||||
Sort.by(Sort.Direction.ASC, "date"));
|
Sort.by(Sort.Direction.ASC, "date"));*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user