Parcourir la source

feat: 添加api接口

ChenSiTong il y a 6 ans
Parent
commit
ac0b2bd2f1

+ 24 - 4
src/config/server-info.js

@@ -1,16 +1,36 @@
 // const host = 'http://106.14.178.184:8080/seec_helper'
 // const host = 'http://192.168.3.70:18080'
-const host = process.env.NODE_ENV === 'development' ? 'http://localhost:18080' : ''
+const host = process.env.NODE_ENV === 'development' ? 'http://localhost:8080' : ''
 
 const slideUrl = host + '/api/slide'
 
-const useSlideServer = postfix => postfix ? slideUrl + '/' + postfix : slideUrl
+const useSlideServer = postfix => postfix ? slideUrl + postfix : slideUrl
 
 const courseUrl = host + '/api/course'
 
-const useCourseServer = postfix => postfix ? courseUrl + '/' + postfix : courseUrl
+const useCourseServer = postfix => postfix ? courseUrl + postfix : courseUrl
+
+const codeUrl = host + '/api/code'
+
+const useCodeServer = postfix => postfix ? codeUrl + postfix : codeUrl
+
+const userUrl = host + '/api/user'
+
+const useUserServer = postfix => postfix ? userUrl + postfix : userUrl
+
+const commentUrl = host + '/api/comment'
+
+const useCommentServer = postfix => postfix ? commentUrl + postfix : commentUrl
+
+const replyUrl = host + '/api/reply'
+
+const useReplyServer = postfix => postfix ? replyUrl + postfix : replyUrl
 
 export {
   useSlideServer,
-  useCourseServer
+  useCourseServer,
+  useCodeServer,
+  useUserServer,
+  useCommentServer,
+  useReplyServer
 }

+ 3 - 0
src/plugins/axios.js

@@ -39,6 +39,9 @@ _axios.interceptors.response.use(
   }
 )
 
+// with cookie
+_axios.defaults.withCredentials = true
+
 Plugin.install = function (Vue, options) {
   Vue.axios = _axios
   window.axios = _axios

+ 39 - 0
src/server/code.js

@@ -0,0 +1,39 @@
+import {
+  useCodeServer
+} from '@/config/server-info'
+import httpCode from '@/server/enums/http-code'
+import axios from 'axios'
+
+export function sendEmailCode(email) {
+  return axios
+    .post(useCodeServer('/email'), null, {
+      params: {
+        email
+      }
+    })
+    .then(res => {
+      const emptyResponse = res.data
+      if (emptyResponse.code === httpCode.success) {
+
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function sendPhoneCode(phone) {
+  return axios
+    .post(useCodeServer('/phone'), null, {
+      params: {
+        phone
+      }
+    })
+    .then(res => {
+      const emptyResponse = res.data
+      if (emptyResponse.code === httpCode.success) {
+
+      } else {
+        // TODO
+      }
+    })
+}

+ 84 - 0
src/server/comment.js

@@ -0,0 +1,84 @@
+import {
+  useCommentServer
+} from '@/config/server-info'
+import axios from 'axios'
+import httpCode from '@/server/enums/http-code'
+
+export function createComment(slideId, pageNumber, title, content) {
+  const data = {
+    slideId,
+    pageNumber,
+    title,
+    content
+  }
+  return axios
+    .post(useCommentServer(), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function removeComment(commentId) {
+  return axios
+    .delete(useCommentServer('/' + commentId))
+    .then(res => {
+      const emptyResponse = res.data
+      if (emptyResponse.code === httpCode.success) {
+
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function topComment(commentId) {
+  return axios
+    .post(useCommentServer('/' + commentId + '/top'))
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function unTopComment(commentId) {
+  return axios
+    .post(useCommentServer('/' + commentId + '/unTop'))
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function getComments(slideId, pageNumber, { key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useCommentServer('/slide/' + slideId), {
+      params: {
+        pageNumber,
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}

+ 119 - 9
src/server/course.js

@@ -1,14 +1,124 @@
 import {
   useCourseServer
-} from '@/config/server-info.js'
+} from '@/config/server-info'
 import axios from 'axios'
+import httpCode from '@/server/enums/http-code'
 
-export function getTeacherCourse () {
-  return axios.get(useCourseServer('teacher')).then(res => {
-    if (res.data.code === 200) {
-      return res.data.data
-    } else {
-      // todo
-    }
-  })
+export function createCourse(name, bio, code, cover) {
+  const data = {
+    name,
+    bio,
+    code,
+    cover
+  }
+
+  return axios
+    .post(useCourseServer(), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function modifyCourse(id, name, bio, code, cover) {
+  const data = {
+    id,
+    name,
+    bio,
+    code,
+    cover
+  }
+
+  return axios
+    .put(useCourseServer(), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function chooseCourse(courseId, code) {
+  const data = {
+    courseId,
+    code
+  }
+
+  return axios
+    .post(useCourseServer('/choose'), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function getCourses({ key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useCourseServer(), {
+      params: {
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function teacherGetCourses({ key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useCourseServer('/teacher'), {
+      params: {
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function studentGetCourses({ key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useCourseServer('/student'), {
+      params: {
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
 }

+ 8 - 0
src/server/enums/http-code.js

@@ -0,0 +1,8 @@
+export default {
+  success: 200,
+  paramError: 400,
+  notLogin: 401,
+  forbidden: 403,
+  notFound: 404,
+  sysError: 500
+}

+ 5 - 1
src/server/enums/slide-state.js

@@ -1,3 +1,7 @@
 export default {
-  draft: 'DRAFT'
+  draft: 'DRAFT',
+  beforeClass: 'BEFORE_CLASS',
+  inClass: 'IN_CLASS',
+  afterClass: 'AFTER_CLASS',
+  finish: 'FINISH'
 }

+ 4 - 0
src/server/enums/user-type.js

@@ -0,0 +1,4 @@
+export default {
+  teacher: 'TEACHER',
+  student: 'STUDENT'
+}

+ 35 - 0
src/server/reply.js

@@ -0,0 +1,35 @@
+import {
+  useReplyServer
+} from '@/config/server-info'
+import axios from 'axios'
+import httpCode from '@/server/enums/http-code'
+
+export function createReply(commentId, content) {
+  const data = {
+    commentId,
+    content
+  }
+  axios
+    .post(useReplyServer(), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function removeReply(replyId) {
+  axios
+    .delete('/' + replyId)
+    .then(res => {
+      const emptyResponse = res.data
+      if (emptyResponse.code === httpCode.success) {
+
+      } else {
+        // TODO
+      }
+    })
+}

+ 105 - 41
src/server/slide.js

@@ -1,54 +1,118 @@
 import {
   useSlideServer
-} from '@/config/server-info.js'
+} from '@/config/server-info'
 import axios from 'axios'
+import httpCode from '@/server/enums/http-code'
 
-export function teacherGetSlideById (id) {
-  return axios.get(useSlideServer('teacher/' + id)).then(res => {
-    if (res.data.code === 200) {
-      return res.data.data
-    }
-  })
-}
+export function createSlide(courseId, name, file) {
+  let data = new FormData()
+  data.append('courseId', courseId)
+  data.append('name', name)
+  data.append('file', file)
 
-export function teacherGetRecentSlides () {
-  return axios.get(useSlideServer('teacher'), {
-    params: {
-      sort: 'updateTime,desc'
-    }
-  }).then(res => {
-    if (res.data.code === 200) {
-      return res.data.data
-    }
-  })
+  return axios
+    .post(useSlideServer(), data, {
+      headers: {
+        'Content-Type': 'multipart/form-data'
+      }
+    })
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // todo
+      }
+    })
 }
 
-export function createSlide (courseId, name) {
+export function modifySlide(id, name, state) {
   const data = {
-    courseId,
+    id,
     name,
-    items: [],
-    state: 'DRAFT'
+    state
   }
-  return axios.post(useSlideServer(), data).then(res => {
-    if (res.data.code === 200) {
-      return res.data.data
-    } else {
-      // todo
-    }
-  })
+  return axios
+    .put(useSlideServer(), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // todo
+      }
+    })
 }
 
-export function updateSlide (slideInfo, items) {
-  const data = {
-    ...slideInfo,
-    items: items
-  }
-  return axios.put(useSlideServer(), data).then(res => {
-    if (res.data.code === 200) {
-      return res.data.data
-    } else {
-      // todo
-    }
-  })
+export function teacherGetSlides({ key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useSlideServer('/teacher'), {
+      params: {
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function teacherGetSlidesByCourse(courseId, { key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useSlideServer('/teacher/course/' + courseId), {
+      params: {
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function studentGetSlidesByCourse(courseId, { key = '', page = 0, size = 2000, sort = '' }) {
+  return axios
+    .get(useSlideServer('/student/course/' + courseId), {
+      params: {
+        key,
+        page,
+        size,
+        sort
+      }
+    })
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function getSlideUrl(slideId) {
+  return axios
+    .get(useSlideServer('/' + slideId + '/url'))
+    .then(res => {
+      const pageResourceResponse = res.data
+      if (pageResourceResponse.code === httpCode.success) {
+        return pageResourceResponse.data
+      } else {
+        // TODO
+      }
+    })
 }

+ 83 - 0
src/server/user.js

@@ -0,0 +1,83 @@
+import {
+  useUserServer
+} from '@/config/server-info'
+import httpCode from '@/server/enums/http-code'
+import axios from 'axios'
+
+export function register(name, email, emailCode, phone, phoneCode, password) {
+  const data = {
+    name,
+    email,
+    emailCode,
+    phone,
+    phoneCode,
+    password
+  }
+  return axios
+    .post(useUserServer('/register'), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function emailLogin(email, password) {
+  const data = {
+    username: email,
+    password
+  }
+
+  return axios
+    .post(useUserServer('/login/email', data))
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function logout() {
+  return axios
+    .post(useUserServer('/logout'))
+    .then(res => {
+      const emptyResponse = res.data
+      if (emptyResponse.code === httpCode.success) {
+
+      } else {
+        // TODO
+      }
+    })
+}
+
+export function modifyUser(name, password) {
+  const data = {
+    name,
+    password
+  }
+  return axios
+    .put(useUserServer(), data)
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      }
+    })
+}
+
+export function getUserInfo() {
+  return axios
+    .get(useUserServer())
+    .then(res => {
+      const resourceResponse = res.data
+      if (resourceResponse.code === httpCode.success) {
+        return resourceResponse.data
+      }
+    })
+}