SettingController.php 4.43 KB
<?php

namespace App\Http\Controllers\V1;

use App\Http\Controllers\Controller;

use App\Models\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Jiannei\Response\Laravel\Support\Facades\Response;

class SettingController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function index()
    {
        if ($this->getClientTerminal() == 'ios'){
            $terminal = 2;
        }else{
            $terminal = 1;
        }

        $array = [];
        $settings = Setting::query()->where('terminal','=', $terminal)
            ->where('version', '=',Setting::CURRENT_VERSION)
            ->get();
        foreach ($settings as $setting){
            $coneten = json_decode($setting->content,true);
            $array[$setting->keyword] = $coneten;
        }

        return Response::success($array);
    }

    public function uploadImage(Request $request)
    {
        $validator = Validator::make($request->all(),[
            'image' => 'required|mimes:jpeg,png,bmp,gif'
        ]);

        if ($validator->fails()){
            return Response::fail('',500,$validator->errors());
        }

        $hashName = $request->file('image')->hashName();

        $hash_hex = md5($hashName);

        // 16进制表示的字符串一共32字节,表示16个二进制字节。
        // 前16个字符用来第一级求摸,后16个用做第二级
        $hash_hex_l1 = substr($hash_hex, 0, 8);
        $hash_hex_l2 = substr($hash_hex, 8, 8);
        $dir_l1 = hexdec($hash_hex_l1) % 256;
        $dir_l2 = hexdec($hash_hex_l2) % 512;
        $dir = 'uploads/'. $dir_l1. '/' . $dir_l2;

        if( !Storage::disk('public')->exists($dir)) Storage::disk('public')->makeDirectory($dir);

        $file = $request->file('image')->store($dir,'public');

        return Response::success([
            'relative_path' => $file,
            'absolute_path' => Storage::disk('public')->url($file),
        ]);
    }

    public function uploadVideo(Request $request)
    {
        $validator = Validator::make($request->all(),[
            'video' => 'required|mimes:mp4,flv,mov,avi'
        ]);

        if ($validator->fails()){
            return Response::fail('',500,$validator->errors());
        }

        $hashName = $request->file('video')->hashName();

        $hash_hex = md5($hashName);

        // 16进制表示的字符串一共32字节,表示16个二进制字节。
        // 前16个字符用来第一级求摸,后16个用做第二级
        $hash_hex_l1 = substr($hash_hex, 0, 8);
        $hash_hex_l2 = substr($hash_hex, 8, 8);
        $dir_l1 = hexdec($hash_hex_l1) % 256;
        $dir_l2 = hexdec($hash_hex_l2) % 512;
        $dir = 'uploads/'. $dir_l1. '/' . $dir_l2;

        if( !Storage::disk('public')->exists($dir)) Storage::disk('public')->makeDirectory($dir);

        $file = $request->file('video')->store($dir,'public');

        return Response::success([
            'relative_path' => $file,
            'absolute_path' => Storage::disk('public')->url($file),
        ]);
    }

    public function uploadAudio(Request $request)
    {
        $validator = Validator::make($request->all(),[
            'audio' => 'required|mimes:aac,mp3,wav,m4a,amr'
        ]);

        if ($validator->fails()){
            return Response::fail('',500,$validator->errors());
        }

        $hashName = $request->file('audio')->hashName();

        $hash_hex = md5($hashName);

        // 16进制表示的字符串一共32字节,表示16个二进制字节。
        // 前16个字符用来第一级求摸,后16个用做第二级
        $hash_hex_l1 = substr($hash_hex, 0, 8);
        $hash_hex_l2 = substr($hash_hex, 8, 8);
        $dir_l1 = hexdec($hash_hex_l1) % 256;
        $dir_l2 = hexdec($hash_hex_l2) % 512;
        $dir = 'uploads/'. $dir_l1. '/' . $dir_l2;

        if( !Storage::disk('public')->exists($dir)) Storage::disk('public')->makeDirectory($dir);

        $file = $request->file('audio')->store($dir,'public');

        return Response::success([
            'relative_path' => $file,
            'absolute_path' => Storage::disk('public')->url($file),
        ]);
    }


    public function protocol()
    {
        return view('protocol');
    }

    public function agreement()
    {
        return view('protocol');
    }

    public function delete_data()
    {
        return view('delete_data');
    }
}