管理系統類畢設(六)---完善後端接口以及前端接入(接入了學生的查詢 新增 修改 教師,考試,成績類似於學生)

後端接口已經完成開發
完善後端接口以及前端接入(接入了學生的查詢 新增 修改 教師,考試,成績類似於學生)
代碼已更新 https://github.com/dmhsq/edusys
github代碼尚未完全加註釋(困)
目前效果如下
在這裏插入圖片描述




後端完善

新增修改和新增接口

@PostMapping("/admin/change")
    public RespBean change(@RequestParam("type") Integer type,
                           @RequestBody Object object){
   
   
        return reviseService.change(type,object);
    }


    @PostMapping("/admin/add")
    public RespBean add(@RequestParam("type") Integer type,
                           @RequestBody Object object){
   
   
        return addService.add(type,object);
    }

修改服務

說明

根據類型判斷類型 然後轉換
轉換語句如下

 ObjectMapper objectMapper =new ObjectMapper();
        Student student = objectMapper.convertValue(object,Student.class);
        Optional<Student> studentOptional = studentRepository.findById(student.getUserId());

代碼

新增 和 修改 類似 只是刪除了以下語句

Optional<Student> studentOptional = studentRepository.findById(student.getUserId());
        if (!studentOptional.isPresent()){
   
   
            return RespBean.error("失敗","不存在學生信息");
        }

修改服務整體代碼塊如下

package edusys.one.service;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.util.JSONPObject;
import edusys.one.dao.ExamRepository;
import edusys.one.dao.ResultRepository;
import edusys.one.dao.StudentRepository;
import edusys.one.dao.TeacherRepository;
import edusys.one.domain.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Optional;


/**
 * @Author: 張燦
 * @Time: 2021/1/10 15:41
 */
@Service
public class ReviseService {
   
   

    @Autowired
    ExamRepository examRepository;

    @Autowired
    ResultRepository resultRepository;

    @Autowired
    StudentRepository studentRepository;

    @Autowired
    TeacherRepository teacherRepository;


    public RespBean change(Integer type,Object object){
   
   
        Integer zero=0,one=1,two=2,three=3;
        if (type.equals(zero)){
   
   
            return changeStu(object);
        }else if (type.equals(one)){
   
   
            return changeTch(object);
        }else if (type.equals(two)){
   
   
            return changeExam(object);
        }else if (type.equals(three)){
   
   
            return changeRust(object);
        }
        return RespBean.error("錯誤","錯誤");
    }


    private RespBean changeStu(Object object){
   
   
        ObjectMapper objectMapper =new ObjectMapper();
        Student student = objectMapper.convertValue(object,Student.class);
        Optional<Student> studentOptional = studentRepository.findById(student.getUserId());
        if (!studentOptional.isPresent()){
   
   
            return RespBean.error("失敗","不存在學生信息");
        }
        studentRepository.saveAndFlush(student);
        return RespBean.ok("成功",true);
    }

    private RespBean changeTch(Object object){
   
   
        ObjectMapper objectMapper =new ObjectMapper();
        Teacher teacher = objectMapper.convertValue(object, Teacher.class);
        Optional<Teacher> teacherOptional = teacherRepository.findById(teacher.getTeacherId());
        if (!teacherOptional.isPresent()){
   
   
            return RespBean.error("失敗","不存在老師信息");
        }
        teacherRepository.saveAndFlush(teacher);
        return RespBean.ok("成功",true);
    }

    private RespBean changeExam(Object object){
   
   
        ObjectMapper objectMapper =new ObjectMapper();
        Exam exam = objectMapper.convertValue(object, Exam.class);
        Optional<Exam> examOptional = examRepository.findById(exam.getExamId());
        if (!examOptional.isPresent()){
   
   
            return RespBean.error("失敗","不存在老師信息");
        }
        examRepository.saveAndFlush(exam);
        return RespBean.ok("成功",true);
    }

    private RespBean changeRust(Object object){
   
   
        ObjectMapper objectMapper =new ObjectMapper();
        Result result = objectMapper.convertValue(object, Result.class);
        Optional<Result> resultOptional = resultRepository.findByUserIdEqualsAndExamIdEquals(result.getUserId(),result.getExamId());
        if (!resultOptional.isPresent()){
   
   
            return RespBean.error("失敗","不存在考試/考生信息");
        }
        resultRepository.saveAndFlush(result);
        return RespBean.ok("成功",true);
    }

}

前端接入

配置代理

在這裏插入圖片描述
添加如下代碼(目前測試 後會修改)

devServer:{
   
   
    proxy:{
   
   
      "/api": {
   
   
        target: "http://localhost:8086/edusys/admin",
        changeOrigin: true,
        pathRewrite: {
   
   
          "^/api": ""
        }
      },
      "/login": {
   
   
        target:
          "http://localhost:8086/edusys/oauth/token?grant_type=password&client_id=password&client_secret=123&scope=all",
        changeOrigin: true,
        pathRewrite: {
   
   
          "^/login": ""
        }
      }
    }
  }

在這裏插入圖片描述

配置接口接入

在這裏插入圖片描述

配置axios

尚未統一封裝 只測試了三個接口外加登陸接口
在這裏插入圖片描述
每次發送前攜帶access_token

import axioes from "axios";
const axios = axioes.create({
   
   
  timeout: 3000,
  headers: {
   
   
    "Content-Type": "multipart/form-data"
  }
});

const login = (username, password) => {
   
   
  return axioes.post(`/login&username=${
     
     username}&password=${
     
     password}`);
};
//配置請求攔截器 在發送前攜帶access_token
axios.interceptors.request.use(
  config => {
   
   
    let token = localStorage.getItem("access_token");
    if (token) {
   
   
      config.headers.authorization = "bearer" + token;
    }
    return config;
  },
  error => {
   
   
    return Promise.reject(error);
  }
);


export {
   
    login, axios };

配置請求方法

在這裏插入圖片描述

import {
   
    login, axios } from "./axiosFun";

//查詢信息
export const find = params => {
   
   
  return axios.get("/api/find", {
   
    params: params });
};
//修改信息
export const change = (type, data) => {
   
   
  return axios.post(`/api/change?type=${
     
     type}`, JSON.stringify(data),{
   
   headers:{
   
   "Content-Type": "application/json"}});
};
//新增
export const add = (type, data) => {
   
   
  return axios.post(`/api/add?type=${
     
     type}`, JSON.stringify(data),{
   
   headers:{
   
   "Content-Type": "application/json"}});
};

//登陸
export const doLogin = (username, password) => {
   
   
  return login(username, password);
};

接入

在這裏插入圖片描述

說明

這裏使用了分頁功能
代碼在放置倉庫時會加註釋
在這裏插入圖片描述

接入新增

在這裏插入圖片描述

表單內容如下
在這裏插入圖片描述

前端代碼會在基礎功能開發完畢放置github












  大家好,我是代碼哈士奇,是一名軟件學院網絡工程的學生,因爲我是“狗”,狗走千里喫肉。想把大學期間學的東西和大家分享,和大家一起進步。但由於水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只在csdn這一個平臺進行更新,博客主頁:https://blog.csdn.net/qq_42027681

未經本人允許,禁止轉載

在這裏插入圖片描述


後續會推出

前端:vue入門 vue開發小程序 等
後端: java入門 springboot入門等
服務器:mysql入門 服務器簡單指令 雲服務器運行項目
python:推薦不溫卜火 一定要看哦
一些插件的使用等



大學之道亦在自身,努力學習,熱血青春
如果對編程感興趣可以加入我們的qq羣一起交流:974178910
在這裏插入圖片描述

有問題可以下方留言,看到了會回覆哦


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章