main
parent
eb93192a7b
commit
1396a52945
@ -0,0 +1,32 @@ |
|||||||
|
package wusthelper.web.api.v2.dto.response; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Score; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
@Data |
||||||
|
@Accessors(chain = true) |
||||||
|
public class GraduateScoreResponse { |
||||||
|
|
||||||
|
//课程名
|
||||||
|
private String name; |
||||||
|
|
||||||
|
//课程学分
|
||||||
|
private Double credit; |
||||||
|
|
||||||
|
//选修学期
|
||||||
|
private Integer term; |
||||||
|
|
||||||
|
//得分
|
||||||
|
private String point; |
||||||
|
|
||||||
|
public static GraduateScoreResponse from(Score score) { |
||||||
|
GraduateScoreResponse graduateScoreResponse = new GraduateScoreResponse(); |
||||||
|
graduateScoreResponse.setName(score.getCourseName()); |
||||||
|
graduateScoreResponse.setCredit(Double.parseDouble(score.getCredit())); |
||||||
|
graduateScoreResponse.setTerm(Integer.parseInt(score.getTerm())); |
||||||
|
graduateScoreResponse.setPoint(score.getGradePoint()); |
||||||
|
|
||||||
|
return graduateScoreResponse; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,56 @@ |
|||||||
|
package wusthelper.web.api.v2.dto.response; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.StudentInfo; |
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude; |
||||||
|
import lombok.Data; |
||||||
|
import wusthelper.web.util.StringUtil; |
||||||
|
|
||||||
|
@Data |
||||||
|
@JsonInclude(JsonInclude.Include.NON_NULL) |
||||||
|
public class GraduateStudentInfoResponse { |
||||||
|
private Long id; |
||||||
|
|
||||||
|
//学号
|
||||||
|
private String studentNum; |
||||||
|
|
||||||
|
//密码
|
||||||
|
private String password; |
||||||
|
|
||||||
|
//姓名
|
||||||
|
private String name; |
||||||
|
|
||||||
|
//学位
|
||||||
|
private String degree; |
||||||
|
|
||||||
|
//导师姓名
|
||||||
|
private String tutorName; |
||||||
|
|
||||||
|
//学院
|
||||||
|
private String academy; |
||||||
|
|
||||||
|
//专业
|
||||||
|
private String specialty; |
||||||
|
|
||||||
|
//年级
|
||||||
|
private Integer grade; |
||||||
|
|
||||||
|
//头像
|
||||||
|
private String avatar; |
||||||
|
|
||||||
|
public static GraduateStudentInfoResponse from(StudentInfo studentInfo) { |
||||||
|
GraduateStudentInfoResponse graduateStudentInfoResponse = new GraduateStudentInfoResponse(); |
||||||
|
// graduateStudentInfo.setId();
|
||||||
|
graduateStudentInfoResponse.setStudentNum(studentInfo.getStudentNumber()); |
||||||
|
// graduateStudentInfo.setPassword();
|
||||||
|
graduateStudentInfoResponse.setName(studentInfo.getName()); |
||||||
|
graduateStudentInfoResponse.setDegree(""); |
||||||
|
graduateStudentInfoResponse.setTutorName(""); |
||||||
|
graduateStudentInfoResponse.setAcademy(studentInfo.getCollege()); |
||||||
|
graduateStudentInfoResponse.setSpecialty(studentInfo.getMajor()); |
||||||
|
int grade = StringUtil.getGradeFromStudentNumber(studentInfo.getStudentNumber()); |
||||||
|
graduateStudentInfoResponse.setGrade(grade); |
||||||
|
graduateStudentInfoResponse.setAvatar(""); |
||||||
|
|
||||||
|
return graduateStudentInfoResponse; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
package wusthelper.web.api.v2.dto.response; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.physics.PhysicsCourse; |
||||||
|
import lombok.Data; |
||||||
|
import wusthelper.WebBackendMain; |
||||||
|
import wusthelper.web.util.GlobalLogger; |
||||||
|
|
||||||
|
import java.sql.Date; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class PhysicsCourseResponse { |
||||||
|
private String courseName; |
||||||
|
|
||||||
|
private String teacherName; |
||||||
|
|
||||||
|
private Integer week; |
||||||
|
|
||||||
|
private Integer weekDay; |
||||||
|
|
||||||
|
private Date courseDate; |
||||||
|
|
||||||
|
private Integer startSection; |
||||||
|
|
||||||
|
private Integer endSection; |
||||||
|
|
||||||
|
private String buildingName; |
||||||
|
|
||||||
|
private String areaNum; |
||||||
|
|
||||||
|
private String roomNum; |
||||||
|
|
||||||
|
private String campusName; |
||||||
|
|
||||||
|
public static PhysicsCourseResponse from(PhysicsCourse course) { |
||||||
|
PhysicsCourseResponse physicsCourseResponse = new PhysicsCourseResponse(); |
||||||
|
physicsCourseResponse.setCourseName(course.getName()); |
||||||
|
physicsCourseResponse.setTeacherName(course.getTeacher()); |
||||||
|
physicsCourseResponse.setWeek(course.getStartWeek()); |
||||||
|
physicsCourseResponse.setWeekDay(course.getWeekDay()); |
||||||
|
physicsCourseResponse.setStartSection(course.getStartSection()); |
||||||
|
physicsCourseResponse.setEndSection(course.getEndSection()); |
||||||
|
|
||||||
|
try { |
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); |
||||||
|
java.util.Date parseDate = formatter.parse(course.getDate()); |
||||||
|
physicsCourseResponse.setCourseDate(new java.sql.Date(parseDate.getTime())); |
||||||
|
} catch (Exception e) { |
||||||
|
GlobalLogger.log.error("物理实验课程解析错误,{}", e.getMessage()); |
||||||
|
GlobalLogger.log.debug("", e); |
||||||
|
} |
||||||
|
|
||||||
|
var place = course.getClassroom(); |
||||||
|
physicsCourseResponse.setBuildingName(place.getBuilding()); |
||||||
|
physicsCourseResponse.setAreaNum(place.getArea()); |
||||||
|
physicsCourseResponse.setRoomNum(place.getRoom()); |
||||||
|
physicsCourseResponse.setCampusName(place.getCampus()); |
||||||
|
|
||||||
|
return physicsCourseResponse; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
package wusthelper.web.api.v2.module.graduate; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestHeader; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
import wusthelper.web.api.v2.TokenTool; |
||||||
|
import wusthelper.web.api.v2.dto.response.CourseResponse; |
||||||
|
import wusthelper.web.api.v2.dto.response.GraduateScoreResponse; |
||||||
|
import wusthelper.web.api.v2.dto.response.GraduateStudentInfoResponse; |
||||||
|
import wusthelper.web.api.v2.dto.response.StudentInfoResponse; |
||||||
|
import wusthelper.web.response.Response; |
||||||
|
import wusthelper.web.service.campus.graduate.GraduateCourseTableService; |
||||||
|
import wusthelper.web.service.campus.graduate.GraduateScoreService; |
||||||
|
import wusthelper.web.service.campus.graduate.GraduateStudentInfoService; |
||||||
|
import wusthelper.web.service.campus.graduate.GraduateTrainingPlanService; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/v2/yjs") |
||||||
|
public class GraduateController { |
||||||
|
|
||||||
|
private final GraduateStudentInfoService studentInfoService; |
||||||
|
private final GraduateCourseTableService courseTableService; |
||||||
|
private final GraduateScoreService scoreService; |
||||||
|
private final GraduateTrainingPlanService trainingPlanService; |
||||||
|
|
||||||
|
public GraduateController(GraduateStudentInfoService studentInfoService, |
||||||
|
GraduateCourseTableService courseTableService, |
||||||
|
GraduateScoreService scoreService, |
||||||
|
GraduateTrainingPlanService trainingPlanService) { |
||||||
|
|
||||||
|
this.studentInfoService = studentInfoService; |
||||||
|
this.courseTableService = courseTableService; |
||||||
|
this.scoreService = scoreService; |
||||||
|
this.trainingPlanService = trainingPlanService; |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping("/get-student-info") |
||||||
|
public Response<GraduateStudentInfoResponse> getStudentInfo(@RequestHeader("Token") String token) { |
||||||
|
var user = TokenTool.getStudentNumber(token); |
||||||
|
var studentInfo = studentInfoService.getStudentInfo(user); |
||||||
|
var response = GraduateStudentInfoResponse.from(studentInfo); |
||||||
|
|
||||||
|
return Response.success(response); |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping("/get-course") |
||||||
|
public Response<List<CourseResponse>> getCourses(@RequestHeader("Token") String token) { |
||||||
|
var user = TokenTool.getStudentNumber(token); |
||||||
|
var courses = courseTableService.getCourseTable(user); |
||||||
|
var resultList = new ArrayList<CourseResponse>(courses.size()); |
||||||
|
for (var course : courses) { |
||||||
|
resultList.add(CourseResponse.from(course)); |
||||||
|
} |
||||||
|
|
||||||
|
return Response.success(resultList); |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping("/get-grade") |
||||||
|
public Response<List<GraduateScoreResponse>> getScore(@RequestHeader("Token") String token) { |
||||||
|
var user = TokenTool.getStudentNumber(token); |
||||||
|
var scores = scoreService.getScore(user); |
||||||
|
var resultList = new ArrayList<GraduateScoreResponse>(scores.size()); |
||||||
|
for (var score : scores) { |
||||||
|
resultList.add(GraduateScoreResponse.from(score)); |
||||||
|
} |
||||||
|
|
||||||
|
return Response.success(resultList); |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping("/get-scheme") |
||||||
|
public Response<String> getTrainingPlan(@RequestHeader("Token") String token) { |
||||||
|
var user = TokenTool.getStudentNumber(token); |
||||||
|
var page = trainingPlanService.getTrainingPlan(user); |
||||||
|
|
||||||
|
return Response.success(page); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
package wusthelper.web.api.v2.module.graduate; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import wusthelper.web.api.v2.TokenTool; |
||||||
|
import wusthelper.web.response.Response; |
||||||
|
import wusthelper.web.service.campus.UserLoginService; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/v2/yjs") |
||||||
|
public class GraduateLoginController { |
||||||
|
private final UserLoginService userLoginService; |
||||||
|
|
||||||
|
public GraduateLoginController(UserLoginService userLoginService) { |
||||||
|
this.userLoginService = userLoginService; |
||||||
|
} |
||||||
|
|
||||||
|
@PostMapping("/login") |
||||||
|
public Response<String> login(@RequestParam("stuNum") String username, |
||||||
|
@RequestParam("jwcPwd") String password, |
||||||
|
@RequestHeader(name = "Platform", required = false) String platform) { |
||||||
|
|
||||||
|
var user = userLoginService.login(username, password, UserLoginService.LoginType.Graduate); |
||||||
|
|
||||||
|
String token = TokenTool.signToken(user.getUid(), user.getStuNum()); |
||||||
|
|
||||||
|
return Response.success(token); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
package wusthelper.web.api.v2.module.physics; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestHeader; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
import wusthelper.web.api.v2.TokenTool; |
||||||
|
import wusthelper.web.api.v2.dto.response.CourseResponse; |
||||||
|
import wusthelper.web.api.v2.dto.response.PhysicsCourseResponse; |
||||||
|
import wusthelper.web.api.v2.dto.response.ScoreResponse; |
||||||
|
import wusthelper.web.response.Response; |
||||||
|
import wusthelper.web.service.campus.physics.PhysicsCourseTableService; |
||||||
|
import wusthelper.web.service.campus.physics.PhysicsScoreService; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/v2/wlsy") |
||||||
|
public class PhysicsController { |
||||||
|
|
||||||
|
private final PhysicsCourseTableService courseTableService; |
||||||
|
private final PhysicsScoreService scoreService; |
||||||
|
|
||||||
|
public PhysicsController(PhysicsCourseTableService courseTableService, |
||||||
|
PhysicsScoreService scoreService) { |
||||||
|
|
||||||
|
this.courseTableService = courseTableService; |
||||||
|
this.scoreService = scoreService; |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping("/get-course") |
||||||
|
public Response<List<PhysicsCourseResponse>> getCourses(@RequestHeader("Token") String token) { |
||||||
|
var user = TokenTool.getStudentNumber(token); |
||||||
|
var courses = courseTableService.getCourseTable(user); |
||||||
|
var resultList = new ArrayList<PhysicsCourseResponse>(courses.size()); |
||||||
|
for (var course : courses) { |
||||||
|
resultList.add(PhysicsCourseResponse.from(course)); |
||||||
|
} |
||||||
|
|
||||||
|
return Response.success(resultList); |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping("/get-grade") |
||||||
|
public Response<List<ScoreResponse>> getScore(@RequestHeader("Token") String token) { |
||||||
|
var user = TokenTool.getStudentNumber(token); |
||||||
|
var scores = scoreService.getScore(user); |
||||||
|
var resultList = new ArrayList<ScoreResponse>(scores.size()); |
||||||
|
for (var score : scores) { |
||||||
|
resultList.add(ScoreResponse.from(score)); |
||||||
|
} |
||||||
|
|
||||||
|
return Response.success(resultList); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package wusthelper.web.api.v2.module.physics; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import wusthelper.web.api.v2.TokenTool; |
||||||
|
import wusthelper.web.response.Response; |
||||||
|
import wusthelper.web.service.campus.UserLoginService; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/v2/wlsy") |
||||||
|
public class PhysicsLoginController { |
||||||
|
private final UserLoginService userLoginService; |
||||||
|
|
||||||
|
public PhysicsLoginController(UserLoginService userLoginService) { |
||||||
|
this.userLoginService = userLoginService; |
||||||
|
} |
||||||
|
|
||||||
|
@PostMapping("/login") |
||||||
|
public Response<Object> login(@RequestParam("wlsyPwd") String password, |
||||||
|
@RequestHeader("Token") String token) { |
||||||
|
String username = TokenTool.getStudentNumber(token); |
||||||
|
userLoginService.login(username, password, UserLoginService.LoginType.Graduate); |
||||||
|
|
||||||
|
return Response.success(); |
||||||
|
} |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package wusthelper.web.rpc.graduate; |
package wusthelper.web.rpc.http.graduate; |
||||||
|
|
||||||
import org.springframework.cloud.openfeign.FeignClient; |
import org.springframework.cloud.openfeign.FeignClient; |
||||||
import org.springframework.web.bind.annotation.GetMapping; |
import org.springframework.web.bind.annotation.GetMapping; |
@ -0,0 +1,27 @@ |
|||||||
|
package wusthelper.web.rpc.http.graduate; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Course; |
||||||
|
import jakarta.validation.constraints.NotNull; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import wusthelper.internal.rpc.response.RpcResponseDto; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Component |
||||||
|
@FeignClient(name = "wusthelper.graduate", contextId = "graduate-courseTable") |
||||||
|
public interface GraduateCourseTableRemote { |
||||||
|
String ROOT_PATH = "/course_table"; |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH) |
||||||
|
RpcResponseDto<List<Course>> get(@RequestParam("cookie") String cookie); |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH + "/agent") |
||||||
|
RpcResponseDto<String> agent(@RequestParam("cookie") @NotNull String cookie); |
||||||
|
|
||||||
|
@PostMapping(ROOT_PATH + "/parse") |
||||||
|
RpcResponseDto<List<Course>> parse(String html); |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
package wusthelper.web.rpc.http.graduate; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Score; |
||||||
|
import jakarta.validation.constraints.NotNull; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import wusthelper.internal.rpc.response.RpcResponseDto; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Component |
||||||
|
@FeignClient(name = "wusthelper.graduate", contextId = "graduate-score") |
||||||
|
public interface GraduateScoreRemote { |
||||||
|
String ROOT_PATH = "/score"; |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH) |
||||||
|
RpcResponseDto<List<Score>> get(@RequestParam("cookie") String cookie); |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH + "/agent") |
||||||
|
RpcResponseDto<String> agent(@RequestParam("cookie") @NotNull String cookie); |
||||||
|
|
||||||
|
@PostMapping(ROOT_PATH + "/parse") |
||||||
|
RpcResponseDto<List<Score>> parse(String html); |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package wusthelper.web.rpc.graduate; |
package wusthelper.web.rpc.http.graduate; |
||||||
|
|
||||||
import cn.wustlinghang.mywust.data.global.StudentInfo; |
import cn.wustlinghang.mywust.data.global.StudentInfo; |
||||||
import jakarta.validation.constraints.NotNull; |
import jakarta.validation.constraints.NotNull; |
@ -0,0 +1,24 @@ |
|||||||
|
package wusthelper.web.rpc.http.graduate; |
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import wusthelper.internal.rpc.response.RpcResponseDto; |
||||||
|
|
||||||
|
@Component |
||||||
|
@FeignClient(name = "wusthelper.graduate", contextId = "graduate-trainingPlan") |
||||||
|
public interface GraduateTrainingPlanRemote { |
||||||
|
String ROOT_PATH = "/training_plan"; |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH) |
||||||
|
RpcResponseDto<String> get(@RequestParam("cookie") String cookie); |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH + "/agent") |
||||||
|
RpcResponseDto<String> agent(@RequestParam("cookie") @NotNull String cookie); |
||||||
|
|
||||||
|
@PostMapping(ROOT_PATH + "/parse") |
||||||
|
RpcResponseDto<String> parse(String html); |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package wusthelper.web.rpc.http.physics; |
||||||
|
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import wusthelper.internal.rpc.response.RpcResponseDto; |
||||||
|
|
||||||
|
@FeignClient(name = "wusthelper.physics", contextId = "physics-cookie") |
||||||
|
public interface PhysicsCookieRemote { |
||||||
|
String COOKIE_ROOT_PATH = "/cookie"; |
||||||
|
|
||||||
|
@GetMapping(COOKIE_ROOT_PATH) |
||||||
|
RpcResponseDto<String> login(@RequestParam("username") String username, |
||||||
|
@RequestParam("password") String password); |
||||||
|
|
||||||
|
@GetMapping(COOKIE_ROOT_PATH + "/verify") |
||||||
|
RpcResponseDto<Boolean> verify(@RequestParam("cookie") String cookie); |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
package wusthelper.web.rpc.http.physics; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Course; |
||||||
|
import cn.wustlinghang.mywust.data.physics.PhysicsCourse; |
||||||
|
import jakarta.validation.constraints.NotNull; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import wusthelper.internal.rpc.response.RpcResponseDto; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Component |
||||||
|
@FeignClient(name = "wusthelper.physics", contextId = "physics-courseTable") |
||||||
|
public interface PhysicsCourseTableRemote { |
||||||
|
String ROOT_PATH = "/course_table"; |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH) |
||||||
|
RpcResponseDto<List<PhysicsCourse>> get(@RequestParam("cookie") String cookie); |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH + "/agent") |
||||||
|
RpcResponseDto<String> agent(@RequestParam("cookie") @NotNull String cookie); |
||||||
|
|
||||||
|
@PostMapping(ROOT_PATH + "/parse") |
||||||
|
RpcResponseDto<List<Course>> parse(String html); |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
package wusthelper.web.rpc.http.physics; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Score; |
||||||
|
import jakarta.validation.constraints.NotNull; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import wusthelper.internal.rpc.response.RpcResponseDto; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Component |
||||||
|
@FeignClient(name = "wusthelper.physics", contextId = "physics-score") |
||||||
|
public interface PhysicsScoreRemote { |
||||||
|
String ROOT_PATH = "/score"; |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH) |
||||||
|
RpcResponseDto<List<Score>> get(@RequestParam("cookie") String cookie); |
||||||
|
|
||||||
|
@GetMapping(ROOT_PATH + "/agent") |
||||||
|
RpcResponseDto<String> agent(@RequestParam("cookie") @NotNull String cookie); |
||||||
|
|
||||||
|
@PostMapping(ROOT_PATH + "/parse") |
||||||
|
RpcResponseDto<List<Score>> parse(String html); |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package wusthelper.web.rpc.undergrad; |
package wusthelper.web.rpc.http.undergrad; |
||||||
|
|
||||||
import org.springframework.stereotype.Component; |
import org.springframework.stereotype.Component; |
||||||
import wusthelper.internal.rpc.response.RpcResponseDto; |
import wusthelper.internal.rpc.response.RpcResponseDto; |
@ -1,4 +1,4 @@ |
|||||||
package wusthelper.web.rpc.undergrad; |
package wusthelper.web.rpc.http.undergrad; |
||||||
|
|
||||||
import cn.wustlinghang.mywust.data.global.StudentInfo; |
import cn.wustlinghang.mywust.data.global.StudentInfo; |
||||||
import org.springframework.stereotype.Component; |
import org.springframework.stereotype.Component; |
@ -1,99 +0,0 @@ |
|||||||
package wusthelper.web.service.campus; |
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
||||||
import com.github.yitter.idgen.YitIdHelper; |
|
||||||
import org.springframework.stereotype.Service; |
|
||||||
import wusthelper.data.dao.mapper.StudentMapper; |
|
||||||
import wusthelper.data.dao.mapper.UserBasicMapper; |
|
||||||
import wusthelper.data.entity.Student; |
|
||||||
import wusthelper.data.entity.UserBasic; |
|
||||||
import wusthelper.web.data.entity.CookieType; |
|
||||||
import wusthelper.web.service.campus.graduate.GraduateCookieService; |
|
||||||
import wusthelper.web.service.campus.undergrad.UndergradCookieService; |
|
||||||
import wusthelper.web.service.cookie.CookieManager; |
|
||||||
import wusthelper.web.util.PasswordCodec; |
|
||||||
|
|
||||||
/** |
|
||||||
* 通用的用户登录信息服务,包括登录和(已存储的)用户信息获取等,同时自动存入新用户基本()信息 |
|
||||||
*/ |
|
||||||
@Service |
|
||||||
public class GeneralUserLoginService { |
|
||||||
private final UserBasicMapper studentMapper; |
|
||||||
private final PasswordCodec passwordCodec; |
|
||||||
|
|
||||||
private final UndergradCookieService undergradCookieService; |
|
||||||
private final GraduateCookieService graduateCookieService; |
|
||||||
|
|
||||||
|
|
||||||
public GeneralUserLoginService(UserBasicMapper studentMapper, |
|
||||||
PasswordCodec passwordCodec, |
|
||||||
|
|
||||||
UndergradCookieService undergradCookieService, |
|
||||||
GraduateCookieService graduateCookieService) { |
|
||||||
|
|
||||||
this.studentMapper = studentMapper; |
|
||||||
this.passwordCodec = passwordCodec; |
|
||||||
|
|
||||||
this.undergradCookieService = undergradCookieService; |
|
||||||
this.graduateCookieService = graduateCookieService; |
|
||||||
} |
|
||||||
|
|
||||||
public enum UserType {Undergrad, Graduate} |
|
||||||
|
|
||||||
/** |
|
||||||
* 登录验证,同时自动存库(基本信息) |
|
||||||
* |
|
||||||
* @param username 用户名(即学号) |
|
||||||
* @param password 密码(明文原文) |
|
||||||
* @param userType 用户类型,现在有本科生和研究生 |
|
||||||
* @return 用户信息 |
|
||||||
*/ |
|
||||||
public UserBasic login(String username, String password, UserType userType) { |
|
||||||
var cookie = switch (userType) { |
|
||||||
case Undergrad -> undergradCookieService.getLoginCookie(username, password); |
|
||||||
case Graduate -> graduateCookieService.getLoginCookie(username, password); |
|
||||||
}; |
|
||||||
|
|
||||||
var cookieType = switch (userType) { |
|
||||||
case Undergrad -> CookieType.Undergrad; |
|
||||||
case Graduate -> CookieType.Graduate; |
|
||||||
}; |
|
||||||
|
|
||||||
// 保存cookie,并将用户基本信息存库
|
|
||||||
CookieManager.store(username, cookie, cookieType); |
|
||||||
return this.saveOrUpdateUser(username, password, userType); |
|
||||||
} |
|
||||||
|
|
||||||
private UserBasic saveOrUpdateUser(String username, String password, UserType userType) { |
|
||||||
var query = new QueryWrapper<UserBasic>() |
|
||||||
.eq("stu_num", username) |
|
||||||
.eq("deleted", 0) |
|
||||||
.last("limit 1"); |
|
||||||
|
|
||||||
var user = studentMapper.selectOne(query); |
|
||||||
if (user != null) { |
|
||||||
var encrypted = passwordCodec.encode(password); |
|
||||||
user.setOfficialPwd(encrypted); |
|
||||||
if (userType == UserType.Undergrad) { |
|
||||||
user.setLibPwd(encrypted); |
|
||||||
} |
|
||||||
studentMapper.update(user, query); |
|
||||||
} else { |
|
||||||
var uid = YitIdHelper.nextId(); |
|
||||||
user = UserBasic.builder() |
|
||||||
.uid(uid) |
|
||||||
.stuNum(username) |
|
||||||
.build(); |
|
||||||
|
|
||||||
var encrypted = passwordCodec.encode(password); |
|
||||||
user.setOfficialPwd(encrypted); |
|
||||||
if (userType == UserType.Undergrad) { |
|
||||||
user.setLibPwd(encrypted); |
|
||||||
} |
|
||||||
|
|
||||||
studentMapper.insert(user); |
|
||||||
} |
|
||||||
|
|
||||||
return user; |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,126 @@ |
|||||||
|
package wusthelper.web.service.campus; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.github.yitter.idgen.YitIdHelper; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.data.dao.mapper.UserBasicMapper; |
||||||
|
import wusthelper.data.entity.UserBasic; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.service.campus.graduate.GraduateCookieService; |
||||||
|
import wusthelper.web.service.campus.library.LibraryCookieService; |
||||||
|
import wusthelper.web.service.campus.physics.PhysicsCookieService; |
||||||
|
import wusthelper.web.service.campus.undergrad.UndergradCookieService; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
import wusthelper.web.util.PasswordCodec; |
||||||
|
|
||||||
|
/** |
||||||
|
* 通用的用户登录信息服务,包括登录和(已存储的)用户信息获取等,同时自动存入新用户密码信息 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class UserLoginService { |
||||||
|
private final UserBasicMapper studentMapper; |
||||||
|
private final PasswordCodec passwordCodec; |
||||||
|
|
||||||
|
private final UndergradCookieService undergradCookieService; |
||||||
|
private final GraduateCookieService graduateCookieService; |
||||||
|
private final LibraryCookieService libraryCookieService; |
||||||
|
private final PhysicsCookieService physicsCookieService; |
||||||
|
|
||||||
|
public UserLoginService(UserBasicMapper studentMapper, |
||||||
|
PasswordCodec passwordCodec, |
||||||
|
|
||||||
|
UndergradCookieService undergradCookieService, |
||||||
|
GraduateCookieService graduateCookieService, |
||||||
|
LibraryCookieService libraryCookieService, |
||||||
|
PhysicsCookieService physicsCookieService) { |
||||||
|
|
||||||
|
this.studentMapper = studentMapper; |
||||||
|
this.passwordCodec = passwordCodec; |
||||||
|
|
||||||
|
this.undergradCookieService = undergradCookieService; |
||||||
|
this.graduateCookieService = graduateCookieService; |
||||||
|
this.libraryCookieService = libraryCookieService; |
||||||
|
this.physicsCookieService = physicsCookieService; |
||||||
|
} |
||||||
|
|
||||||
|
public enum LoginType {Undergrad, Graduate, Library, Physics} |
||||||
|
|
||||||
|
/** |
||||||
|
* 登录验证,同时自动存库(基本信息) |
||||||
|
* |
||||||
|
* @param username 用户名(即学号) |
||||||
|
* @param password 密码(明文原文) |
||||||
|
* @param loginType 用户类型,现在有本科生和研究生 |
||||||
|
* @return 用户信息 |
||||||
|
*/ |
||||||
|
public UserBasic login(String username, String password, LoginType loginType) { |
||||||
|
var cookie = switch (loginType) { |
||||||
|
case Undergrad -> undergradCookieService.getLoginCookie(username, password); |
||||||
|
case Graduate -> graduateCookieService.getLoginCookie(username, password); |
||||||
|
case Library -> libraryCookieService.getLoginCookie(username, password); |
||||||
|
case Physics -> physicsCookieService.getLoginCookie(username, password); |
||||||
|
}; |
||||||
|
|
||||||
|
var cookieType = switch (loginType) { |
||||||
|
case Undergrad -> CookieType.Undergrad; |
||||||
|
case Graduate -> CookieType.Graduate; |
||||||
|
case Library -> CookieType.Library; |
||||||
|
case Physics -> CookieType.Physics; |
||||||
|
}; |
||||||
|
|
||||||
|
// 保存cookie,并将用户基本信息存库
|
||||||
|
CookieManager.store(username, cookie, cookieType); |
||||||
|
return this.saveOrUpdateUser(username, password, loginType); |
||||||
|
} |
||||||
|
|
||||||
|
private UserBasic saveOrUpdateUser(String username, String password, LoginType loginType) { |
||||||
|
var user = studentMapper.selectOne(new QueryWrapper<UserBasic>() |
||||||
|
.eq("stu_num", username) |
||||||
|
.eq("deleted", 0) |
||||||
|
.last("limit 1") |
||||||
|
); |
||||||
|
|
||||||
|
if (user != null) { |
||||||
|
this.fillPassword(password, user, loginType); |
||||||
|
this.updateUser(username, user); |
||||||
|
} else { |
||||||
|
user = this.newUser(username, password, loginType); |
||||||
|
} |
||||||
|
|
||||||
|
return user; |
||||||
|
} |
||||||
|
|
||||||
|
private void updateUser(String username, UserBasic user) { |
||||||
|
studentMapper.update(user, new QueryWrapper<UserBasic>() |
||||||
|
.eq("stu_num", username) |
||||||
|
.eq("deleted", 0) |
||||||
|
.last("limit 1") |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
private UserBasic newUser(String username, String password, LoginType loginType) { |
||||||
|
var uid = YitIdHelper.nextId(); |
||||||
|
UserBasic user = UserBasic.builder() |
||||||
|
.uid(uid) |
||||||
|
.stuNum(username) |
||||||
|
.build(); |
||||||
|
|
||||||
|
this.fillPassword(password, user, loginType); |
||||||
|
|
||||||
|
studentMapper.insert(user); |
||||||
|
return user; |
||||||
|
} |
||||||
|
|
||||||
|
private void fillPassword(String password, UserBasic user, LoginType loginType) { |
||||||
|
var encrypted = passwordCodec.encode(password); |
||||||
|
switch (loginType) { |
||||||
|
case Undergrad -> { |
||||||
|
user.setOfficialPwd(encrypted); |
||||||
|
user.setLibPwd(encrypted); |
||||||
|
} |
||||||
|
case Graduate -> user.setOfficialPwd(encrypted); |
||||||
|
case Library -> user.setLibPwd(encrypted); |
||||||
|
case Physics -> user.setPhysicsPwd(encrypted); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package wusthelper.web.service.campus.graduate; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Course; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.graduate.GraduateCourseTableRemote; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class GraduateCourseTableService { |
||||||
|
private final GraduateCourseTableRemote courseTableRemote; |
||||||
|
|
||||||
|
private final CookieManager cookieManager; |
||||||
|
|
||||||
|
public GraduateCourseTableService(GraduateCourseTableRemote courseTableRemote, CookieManager cookieManager) { |
||||||
|
this.courseTableRemote = courseTableRemote; |
||||||
|
this.cookieManager = cookieManager; |
||||||
|
} |
||||||
|
|
||||||
|
public List<Course> getCourseTable(String user) { |
||||||
|
String cookie = cookieManager.getCookie(user, CookieType.Graduate); |
||||||
|
var rpcResp = courseTableRemote.get(cookie); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
// todo 异步存用户课表,异常判断等等
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
package wusthelper.web.service.campus.graduate; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Score; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.graduate.GraduateScoreRemote; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class GraduateScoreService { |
||||||
|
private final GraduateScoreRemote scoreRemote; |
||||||
|
private final CookieManager cookieManager; |
||||||
|
|
||||||
|
public GraduateScoreService(GraduateScoreRemote scoreRemote, CookieManager cookieManager) { |
||||||
|
this.scoreRemote = scoreRemote; |
||||||
|
this.cookieManager = cookieManager; |
||||||
|
} |
||||||
|
|
||||||
|
public List<Score> getScore(String user) { |
||||||
|
String cookie = cookieManager.getCookie(user, CookieType.Graduate); |
||||||
|
var rpcResp = scoreRemote.get(cookie); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
// todo 异步存用户课表,异常判断等等
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package wusthelper.web.service.campus.graduate; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.graduate.GraduateTrainingPlanRemote; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class GraduateTrainingPlanService { |
||||||
|
private final GraduateTrainingPlanRemote trainingPlanRemote; |
||||||
|
private final CookieManager cookieManager; |
||||||
|
|
||||||
|
public GraduateTrainingPlanService(GraduateTrainingPlanRemote trainingPlanRemote, CookieManager cookieManager) { |
||||||
|
this.trainingPlanRemote = trainingPlanRemote; |
||||||
|
this.cookieManager = cookieManager; |
||||||
|
} |
||||||
|
|
||||||
|
public String getTrainingPlan(String user) { |
||||||
|
String cookie = cookieManager.getCookie(user, CookieType.Graduate); |
||||||
|
var rpcResp = trainingPlanRemote.get(cookie); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
// todo 异步存用户课表,异常判断等等
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
package wusthelper.web.service.campus.library; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.graduate.GraduateCookieRemote; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class LibraryCookieService { |
||||||
|
private final GraduateCookieRemote graduateCookieRemote; |
||||||
|
|
||||||
|
public LibraryCookieService(GraduateCookieRemote graduateCookieRemote) { |
||||||
|
this.graduateCookieRemote = graduateCookieRemote; |
||||||
|
} |
||||||
|
|
||||||
|
public String getLoginCookie(String username, String password) throws ServiceException { |
||||||
|
var rpcResp = graduateCookieRemote.login(username, password); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean checkCookie(String cookie) { |
||||||
|
return graduateCookieRemote.verify(cookie).data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package wusthelper.web.service.campus.physics; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.physics.PhysicsCookieRemote; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class PhysicsCookieService { |
||||||
|
private final PhysicsCookieRemote physicsCookieRemote; |
||||||
|
|
||||||
|
public PhysicsCookieService(PhysicsCookieRemote physicsCookieRemote) { |
||||||
|
this.physicsCookieRemote = physicsCookieRemote; |
||||||
|
} |
||||||
|
|
||||||
|
public String getLoginCookie(String username, String password) throws ServiceException { |
||||||
|
var rpcResp = physicsCookieRemote.login(username, password); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean checkCookie(String cookie) { |
||||||
|
return physicsCookieRemote.verify(cookie).data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package wusthelper.web.service.campus.physics; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Course; |
||||||
|
import cn.wustlinghang.mywust.data.physics.PhysicsCourse; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.physics.PhysicsCourseTableRemote; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class PhysicsCourseTableService { |
||||||
|
private final PhysicsCourseTableRemote courseTableRemote; |
||||||
|
|
||||||
|
private final CookieManager cookieManager; |
||||||
|
|
||||||
|
public PhysicsCourseTableService(PhysicsCourseTableRemote courseTableRemote, CookieManager cookieManager) { |
||||||
|
this.courseTableRemote = courseTableRemote; |
||||||
|
this.cookieManager = cookieManager; |
||||||
|
} |
||||||
|
|
||||||
|
public List<PhysicsCourse> getCourseTable(String user) { |
||||||
|
String cookie = cookieManager.getCookie(user, CookieType.Physics); |
||||||
|
var rpcResp = courseTableRemote.get(cookie); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
// todo 异步存用户课表,异常判断等等
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
package wusthelper.web.service.campus.physics; |
||||||
|
|
||||||
|
import cn.wustlinghang.mywust.data.global.Score; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import wusthelper.code.ServiceCode; |
||||||
|
import wusthelper.web.data.entity.CookieType; |
||||||
|
import wusthelper.web.exception.ServiceException; |
||||||
|
import wusthelper.web.rpc.http.physics.PhysicsScoreRemote; |
||||||
|
import wusthelper.web.service.cookie.CookieManager; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class PhysicsScoreService { |
||||||
|
private final PhysicsScoreRemote scoreRemote; |
||||||
|
private final CookieManager cookieManager; |
||||||
|
|
||||||
|
public PhysicsScoreService(PhysicsScoreRemote scoreRemote, CookieManager cookieManager) { |
||||||
|
this.scoreRemote = scoreRemote; |
||||||
|
this.cookieManager = cookieManager; |
||||||
|
} |
||||||
|
|
||||||
|
public List<Score> getScore(String user) { |
||||||
|
String cookie = cookieManager.getCookie(user, CookieType.Physics); |
||||||
|
var rpcResp = scoreRemote.get(cookie); |
||||||
|
if (rpcResp.code() != ServiceCode.Ok) { |
||||||
|
ServiceException.error(rpcResp.code()); |
||||||
|
} |
||||||
|
|
||||||
|
// todo 异步存用户课表,异常判断等等
|
||||||
|
return rpcResp.data(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package wusthelper.web.util; |
||||||
|
|
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
|
||||||
|
public class GlobalLogger { |
||||||
|
public static final Logger log = LoggerFactory.getLogger("wusthelper"); |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -1 +1 @@ |
|||||||
Subproject commit 0ca9d1a48da91b30933a3dd35e3428bb5207078f |
Subproject commit 5da31b26d1a8b7560f068d8bf507d01e34c1cdaf |
Loading…
Reference in new issue