All files / server/routes userTodo.js

100% Statements 43/43
100% Branches 6/6
100% Functions 5/5
100% Lines 43/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 634x 4x 4x   4x 1x 1x 1x           1x 1x   4x 2x 2x 2x 2x 2x 2x 1x 1x   1x 1x   2x 1x   1x     4x 3x 2x   1x   3x 3x   4x 1x 1x   4x 1x 1x 1x 1x     4x 4x 4x 4x 4x   4x  
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