实战:使用 Lumen 和 Vue 构建个人清单应用(四)开发清单模块接口

956 阅读2分钟

这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战

编辑用户信息

功能不复杂,我们只做昵称和性别的编辑,所以前端传入的参数只有nick_namesex两个,直接更新用户的这两个字段即可。

/**
  * updateUserInfo function
  * 更新用户信息
  * @return string
*/
public function updateUserInfo(Request $request)
{
    // 获取传入的全部参数
    $request = $request->all();

		// 参数校验
    if (empty($request['nick_name'])) {
    	return Util::ajaxMsg('-1', '传入参数不能为空');
    }

    $row = User::where('id', JWTAuth::parseToken()->touser()->id)
        ->update([
          'nick_name' => $request['nick_name']
        ]);

    return $row == 1
      ? Util::ajaxMsg('0', '修改信息成功', User::where('id', JWTAuth::parseToken()->touser()->id)->get())
      : Util::ajaxMsg('-1', '修改信息失败');
}

在路由组中添加

 // 更新用户信息
 $router->post('/user/updateUserInfo', 'UserController@updateUserInfo');

测试成功~同时给前端返回最新查询的用户信息,前端需要更新本地的缓存。 image.png

用户修改密码接口

这也是个更新的操作,只不过在更新数据前,需要验证传入的旧密码是否正确,代码如下:

/**
     * resetPassword function
     * 用户修改密码
     * @param Request $request
     * @return void
     */
    public function resetPassword(Request $request)
    {
        // 获取传入的全部参数
        $request = $request->all();

        if (empty($request['old_password']) || empty($request['password'])) {
            return Util::ajaxMsg('-1', '原密码和新密码不能为空');
        }

        $acount['id'] = JWTAuth::parseToken()->touser()->id;

        $acount['password'] = $request['old_password'];

        if (!JWTAuth::attempt($acount)) {
            return Util::ajaxMsg('-1', '旧密码输入错误');
        }

        if (empty($request['password']) || !Util::isPsw($request['password'])) {
            return Util::ajaxMsg('-1', '密码必须为6-10位字符,包含数字和大小写');
        }

        $row = User::where('id', '=', $acount['id'])->update([
            'password' => Hash::make($request['password']),
        ]);

        return $row == 1 ? Util::ajaxMsg('0', '修改密码成功') : Util::ajaxMsg('-1', '修改密码失败');
    }
 // 用户修改密码
 $router->post('/user/resetPassword', 'UserController@resetPassword');

清单模块接口

有了以上的用户模块的接口例子,去编写清单的增删改查就更容易的多,同样,我们新建一个 todoController.php 文件,并写入对应方法:获取代办事项列表(getTodoList),新增待办事项(addTodo),删除代办事项(delTodo),更新代办事项(updateTodo)。

获取代办事项列表

/**
  * getTodoList function
  * 获取代办事项列表
  * @return void
*/
public function getTodoList()
{
  $data = todo_list::where('user_id', JWTAuth::parseToken()->touser()->id)
    ->select('todo_id', 'content', 'status')
		->orderBy('status')
    ->simplePaginate(20);

  return Util::ajaxMsg('0', '获取成功', $data);
}

新增代办事项

/**
  * addTodo function
  * 新增待办事项
  * @param Request $request
  * @return void
*/
public function addTodo(Request $request)
{
  // 获取传入的全部参数
  $request = $request->all();

  // 参数校验
  if (empty($request['content'])) {
  	return Util::ajaxMsg('-1', '传入参数不能为空');
  }

  $newTodo = new todo_list;
  $newTodo->user_id = JWTAuth::parseToken()->touser()->id; // 生成 11 位 TODO_ID
  $newTodo->todo_id = Util::createId(); // 生成 11 位 TODO_ID
  $newTodo->content = $request['content']; // 传入的邮箱
  $newTodo->status = 1; // 状态,1-未完成,2-已完成

  return $newTodo->save()
    ? Util::ajaxMsg('0', '新增成功')
    : Util::ajaxMsg('-1', '新增失败');
}

更新代办事项

/**
  * updateTodo function
  * 更新代办事项
  * @param Request $request
  * @return void
*/
public function updateTodo(Request $request)
{
  // 获取传入的全部参数
  $request = $request->all();

  // 参数校验
  if (empty($request['status']) || empty($request['todo_id'])) {
  	return Util::ajaxMsg('-1', '传入参数不能为空');
  }

  $row = todo_list::where([
      ['user_id', JWTAuth::parseToken()->touser()->id],
      ['todo_id', $request['todo_id']],
    ])
    ->update([
    	'status' => $request['status'],
    ]);

  return $row == 1
    ? Util::ajaxMsg('0', '修改信息成功')
    : Util::ajaxMsg('-1', '修改信息失败');
}

删除代办事项

/**
  * delTodo function
  * 删除代办事项
  * @param Request $request
  * @return void
*/
public function delTodo(Request $request)
{
  // 获取传入的全部参数
  $request = $request->all();

  // 参数校验
  if (empty($request['todo_id'])) {
  	return Util::ajaxMsg('-1', '传入参数不能为空');
  }

  $row = todo_list::where([
      ['user_id', JWTAuth::parseToken()->touser()->id],
      ['todo_id', $request['todo_id']],
    ])
  	->delete();

  return $row == 1
    ? Util::ajaxMsg('0', '删除成功')
    : Util::ajaxMsg('-1', '删除失败');
}

并增加以上接口对应路由

// 获取代办事项列表
$router->get('/todo/getTodoList', 'TodoController@getTodoList');
// 新增待办事项
$router->post('/todo/addTodo', 'TodoController@addTodo');
// 更新代办事项
$router->post('/todo/updateTodo', 'TodoController@updateTodo');
// 删除代办事项
$router->post('/todo/delTodo', 'TodoController@delTodo');

欢迎阅读其它文章