<?php

namespace app\home\controller;

use app\home\validate\UploadValidate;
use app\model\ConfigModel;
use app\model\FileModel;
use think\exception\ValidateException;
use think\facade\Filesystem;
use think\facade\Log;
use think\response\Json;


class Upload extends HomeBaseController
{

    /**
     * @desc 上传用户头像
     * @return Json
     */
    public function uploadHeaderImage(): Json
    {
        $filess = $_FILES['file']?? "";
        try {
            // 获取文件
            $file = $this->request->file('file');
            // 参数校验
            validate(UploadValidate::class)->scene('uploadImage')->check(['image' => $file]);
            // 将文件存储在本地
            $name = Filesystem::disk('local')->putFile('', $file);
            $path = '/bs/image/'.$name;
            // 入库
            $id = FileModel::insertFile($path, 2);
            return json(['code' => '0', 'message' => 'Request successful.','data' => ['id' => $id]]);
        }catch (ValidateException $validateException){
            // 参数校验失败 异常类
            $message = $validateException->getError();
            return json(['code' => '1004001', 'message' => $message]);
        }catch (\Exception $exception){
            return json(['code' => '100500', 'message' => 'System error','data' => [$exception->getMessage(), $exception->getTrace(), $exception->getFile(),$filess]]);
        }
    }
    public function uploadRechargeImage(): Json
    {
        try {
            // 获取文件
            $file = $this->request->file('file');
            // 参数校验
            validate(UploadValidate::class)->scene('uploadImage')->check(['image' => $file]);

            // 将文件存储在本地
            $name = Filesystem::disk('local')->putFile('', $file);
            $path = '/bs/image/'.$name;

            // 入库
            $id = FileModel::insertFile($path, 2);
            return json(['code' => '0', 'message' => 'Request successful.','data' => ['id' => $id]]);
        }catch (\Exception $exception){
            return json(['code' => '100500', 'message' => 'System error','data' => [$exception->getMessage()]]);
        }
    }

    public function getConfig(): Json
    {
        try {
            $param = $this->request->param();
            if (empty($param['name'])) return json(['code' => '1', 'message' => '参数错误', 'data' => []]);
            $name = $param['name'];
            $value = ConfigModel::where('name', $name)->value('value');

            return json(['code' => '0', 'message' => 'Request successful.', 'data' => ['value' => $value]]);
        } catch (\Exception $exception) {
            return json(['code' => '100500', 'message' => 'System error', 'data' => [$exception->getMessage()]]);
        }
    }
}