All files / vue-koa-demo/server/routes userTodo.js

0% Statements 0/43
0% Branches 0/6
0% Functions 0/5
0% Lines 0/43
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63                                                                                                                             
const router = require('koa-router')()
const Todo = require('../models/todo')
const mongoose = require('mongoose')
 
const add = async (ctx, next) => {
  const { todoDetail, todoTime } = ctx.request.body
  const userId = ctx.session.userName
  const todoDoc = await Todo.create({
    userId,
    todoTime,
    todoDetail,
    todoState: 'todo'
  })
  await todoDoc.save()
  ctx.body = { success: true, msg: '添加日程成功' }
}
const get = async (ctx, next) => {
  const page = ctx.request.URL.searchParams.get('page')
  const todoState = ctx.request.URL.searchParams.get('filter')
  const userId = ctx.session.userName
  let todoDoc = ''
  let todoTotal = 0
  if (todoState === 'all') {
    todoDoc = await Todo.find({ userId }).sort({ 'todoTime': -1 }).limit(8).skip(8 * (page - 1))
    todoTotal = await Todo.find({ userId })
  } else {
    todoDoc = await Todo.find({ userId, todoState: todoState }).sort({ 'todoTime': -1 }).limit(8).skip(8 * (page - 1))
    todoTotal = await Todo.find({ userId, todoState: todoState })
  }
  if (todoDoc.length) {
    ctx.body = { success: true, todoList: todoDoc, todoTotal: todoTotal.length }
  } else {
    ctx.body = { success: true, todoList: [], todoTotal: 0 }
  }
}
const toggledone = async (ctx, next) => {
  if (ctx.request.body.todoState === 'todo') {
    await Todo.update({ '_id': mongoose.Types.ObjectId(ctx.params['todoId']) }, { $set: { 'todoState': 'done' } })
  } else {
    await Todo.update({ '_id': mongoose.Types.ObjectId(ctx.params['todoId']) }, { $set: { 'todoState': 'todo' } })
  }
  const todoDoc = await Todo.find({ 'userId': ctx.session.userName })
  ctx.body = { success: true, todoList: todoDoc }
}
const detail = async (ctx, next) => {
  const todoDoc = await Todo.findOne({ '_id': mongoose.Types.ObjectId(ctx.params['todoId']) })
  ctx.body = { success: true, todo: todoDoc }
}
const updateDetail = async (ctx, next) => {
  const { _id, todoDetail } = ctx.request.body
  await Todo.update({ '_id': mongoose.Types.ObjectId(_id) }, { $set: { 'todoDetail': todoDetail } })
  const todoDoc = await Todo.find({ 'userId': ctx.session.userName })
  ctx.body = { success: true, todoList: todoDoc }
}
 
router.post('/add', add)
router.get('/get', get)
router.post('/update', updateDetail)
router.post('/done/:todoId', toggledone)
router.get('/detail/:todoId', detail)
 
module.exports = router