<?php

namespace app\admin\controller\sys_manage;

use app\admin\service\sys_manage\CategoryService;
use app\admin\validate\sys_manage\CategoryValidate;
use support\Request;

class CategoryController
{
    /**
     * @Desc 分类列表
     * @Author Gorden
     * @Date 2024/2/22 11:28
     *
     * @param Request $request
     * @return \support\Response
     */
    public function categoryList(Request $request)
    {
        $page = (int)$request->get('page', 1);
        $limit = (int)$request->get('limit', 10);
        $keywords = format_string($request->get('keywords', ''));

        return CategoryService::categoryList($page, $limit, $keywords);
    }

    /**
     * @Desc 分类详情
     * @Author Gorden
     * @Date 2024/2/22 11:37
     *
     * @param $id
     * @return \support\Response
     */
    public function categoryInfo($id)
    {
        return CategoryService::categoryInfo($id);
    }

    /**
     * @Desc 添加分类
     * @Author Gorden
     * @Date 2024/2/22 10:25
     *
     * @param Request $request
     * @return \support\Response
     */
    public function addCategory(Request $request)
    {
        $validate = new CategoryValidate();
        if (!$validate->scene('add')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return CategoryService::insertCategory($request->post());
    }

    /**
     * @Desc 修改分类
     * @Author Gorden
     * @Date 2024/2/22 11:05
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateCategory($id, Request $request)
    {
        $validate = new CategoryValidate();
        if (!$validate->scene('update')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return CategoryService::updateCategory($id, $request->post());
    }

    /**
     * @Desc 修改分类状态
     * @Author Gorden
     * @Date 2024/2/22 11:49
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateStatus($id, Request $request)
    {
        $validate = new CategoryValidate();
        if (!$validate->scene('update_status')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return CategoryService::updateStatus($id, $request->post());
    }

    /**
     * @Desc 删除分类
     * @Author Gorden
     * @Date 2024/2/22 11:57
     *
     * @param $id
     * @return \support\Response
     */
    public function delCategory($id)
    {
        return CategoryService::delCategory($id);
    }
}