xielin 5 년 전
부모
커밋
b0e27aadf2

+ 3 - 1
.env.example

@@ -29,4 +29,6 @@ APOLLO_NAMESPACES="application,community-manage"
 APOLLO_CONFIG_SERVER=http://127.0.0.1:18080
 
 RPC_NODE_URL=https://127.0.0.1:8888
-RPC_KEOSD_URL=http://127.0.0.1:8900
+RPC_KEOSD_URL=http://127.0.0.1:8900
+OSS_URL=https://oss.caihongxingqiu.com/
+TRACE_SERVICE_URL=http://192.168.23.111:9900

+ 4 - 1
app/Http/Controllers/IndexController.php

@@ -34,6 +34,9 @@ class IndexController extends Controller
             return $this->response->error($validator->errors()->first(), 500);
         }
         $meta = $this->metaRepository->view($request->all());
-        return $this->response->item($meta, new MetaTransformer());
+        if($meta){
+            return $this->response->item($meta, new MetaTransformer());
+        }
+        return $this->response->error('该批次信息不存在', 500);
     }
 }

+ 1 - 0
app/Http/Controllers/MetaController.php

@@ -56,6 +56,7 @@ class MetaController extends Controller
     {
         $validator = Validator::make($request->all(), [
             'patch_num' => 'required|alpha_num|max:16',
+            'produce_date' => 'required|date',
             'variety' => 'required|max:4',
             'variety_img' => 'required|url',
             'age' => 'required|max:4',

+ 71 - 0
app/Http/Controllers/UeditorController.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Intervention\Image\Facades\Image;
+use Illuminate\Support\Facades\Storage;
+
+class UeditorController extends Controller
+{
+    //
+
+    public function index(Request $request)
+    {
+        $action = $request->action;
+        switch ($action) {
+            case 'config':
+                $callback = $request->callback;
+
+                $CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(public_path("config.json"))), true);
+
+                return  response($callback.'('.json_encode($CONFIG).')');
+                break;
+            case 'uploadimage':
+
+                if($request->hasFile('upfile') && $request->file('upfile')->isValid()){
+                    $path = $request->has('path') ? $request->path.'/' : date('Ym').'/';
+                    //获取文件的原文件名 包括扩展名
+                    $yuanname= $request->file('upfile')->getClientOriginalName();
+                    $size = $request->file('upfile')->getSize();
+                    //获取文件的扩展名
+                    $kuoname=$request->file('upfile')->getClientOriginalExtension();
+                    //获取文件的绝对路径,但是获取到的在本地不能打开
+                    $filePath=$request->file('upfile')->getRealPath();
+                    //要保存的文件名 时间+扩展名
+                    $filename=time() . '_' . uniqid() .'.'.$kuoname;
+
+                    $img = Image::make($filePath);
+                    if ($img->getWidth()>720) {
+                        $img->resize(720, null, function ($constraint) {
+                            $constraint->aspectRatio();
+                        });
+                        $img->encode('jpg', 90);
+                        $data = $img->getEncoded();
+                        $imageUrl = Storage::put($path.$filename, $data);
+                    } else {
+                        $imageUrl = Storage::put($path.$filename, file_get_contents($filePath));
+                    }
+
+
+                    if($imageUrl){
+                        return [
+                            'state' => 'SUCCESS',
+                                'url'   => env('OSS_URL').$path.$filename,
+                                'title' => $filename,
+                                'original'  => $yuanname,
+                                'type'  => $kuoname,
+                                'size'  => $size
+                            ];
+                    }else{
+                        return $this->response->error('图片上传失败,请重试', 500);
+                    }
+                }else{
+                    return $this->response->error('图片上传失败,请重试', 500);
+                }
+
+                break;
+        }
+    }
+
+}

+ 4 - 0
app/Repositories/MetaRepository.php

@@ -22,6 +22,9 @@ class MetaRepository {
     public function index($request){
         $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
         $where = [];
+        if(isset($request['patch_num']) && $request['patch_num']){
+            $where = ['patch_num','like',"%".$request['patch_num']];
+        }
         return $this->meta->where($where)->orderBy('id', 'desc')->paginate($perPage);
     }
     //详情
@@ -45,6 +48,7 @@ class MetaRepository {
         }
         $data = [
             'patch_num' => $request['patch_num'],
+            'produce_date' => $request['produce_date'],
             'variety' => $request['variety'],
             'variety_img' => $request['variety_img'],
             'age' => $request['age'],

+ 6 - 0
app/Transformers/MetaTransformer.php

@@ -21,6 +21,7 @@ class MetaTransformer extends TransformerAbstract
 
         return [
             "patch_num" => $meta['patch_num'],
+            "produce_date" => Carbon::parse($meta['produce_date'])->format('Y-m-d'),
             "variety" => $meta['variety'],
             "variety_img" => $meta['variety_img'],
             "age" => $meta['age'],
@@ -28,10 +29,15 @@ class MetaTransformer extends TransformerAbstract
             "food_img" => $meta['food_img'],
             "water" => $meta['water'],
             "water_img" => $meta['water_img'],
+            "farm" => \GuzzleHttp\json_decode($meta['farm'],true),
+            "report" => $meta['report'],
             "status" => $meta['status'],
             "trans_id" => $meta['trans_id'],
             "zip" => $meta['zip'],
             "md5" => $meta['md5'],
+            "trans_id" => $meta['trans_id'],
+            "block_height" => $meta['block_height'],
+            "block_time" => $meta['block_time'],
             "qrcode" => QrCode::size(200)->generate($meta['patch_num']),
             "created_at" => Carbon::parse($meta['created_at'])->toDateTimeString(),
             "updated_at" => Carbon::parse($meta['updated_at'])->toDateTimeString(),

+ 9 - 4
bootstrap/app.php

@@ -1,6 +1,6 @@
 <?php
 
-require_once __DIR__.'/../vendor/autoload.php';
+require_once __DIR__ . '/../vendor/autoload.php';
 
 (new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
     dirname(__DIR__)
@@ -32,6 +32,7 @@ $app->configure('customer');
 $app->configure('database');
 $app->configure('constants');
 $app->configure('aliyunvod');
+$app->configure('cors');
 
 /*
 |--------------------------------------------------------------------------
@@ -70,12 +71,14 @@ $app->singleton(
 // ]);
 
 $app->middleware([
-    App\Http\Middleware\SqlMiddleware::class
+    App\Http\Middleware\SqlMiddleware::class,
+    \Barryvdh\Cors\HandleCors::class
 ]);
 
 $app->routeMiddleware([
     'auth' => App\Http\Middleware\Authenticate::class,
     'jwt.chxq_auth' => App\Http\Middleware\JwtAuthMiddleware::class,
+    'cors' => \Barryvdh\Cors\HandleCors::class
 ]);
 
 /*
@@ -98,6 +101,8 @@ $app->register(\Illuminate\Redis\RedisServiceProvider::class);
 $app->register(\Junliuxian\AliOSS\AliOssServiceProvider::class);
 $app->register(\ZanySoft\Zip\ZipServiceProvider::class);
 $app->register(\SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class);
+$app->register(\Barryvdh\Cors\ServiceProvider::class);
+$app->register(\Intervention\Image\ImageServiceProvider::class);
 /*
 |--------------------------------------------------------------------------
 | Load The Application Routes
@@ -112,8 +117,8 @@ $app->register(\SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class);
 $app->router->group([
     'namespace' => 'App\Http\Controllers',
 ], function ($router) {
-    require __DIR__.'/../routes/api.php';
-    require __DIR__.'/../routes/web.php';
+    require __DIR__ . '/../routes/api.php';
+    require __DIR__ . '/../routes/web.php';
 });
 
 return $app;

+ 2 - 0
composer.json

@@ -6,6 +6,7 @@
     "type": "project",
     "require": {
         "php": ">=7.1.3",
+        "barryvdh/laravel-cors": "^0.11.4",
         "dingo/api": "^2.2",
         "doctrine/dbal": "^2.9",
         "guzzlehttp/guzzle": "^6.3",
@@ -13,6 +14,7 @@
         "junliuxian/ali-oss-storage": "~2.0",
         "laravel/lumen-framework": "5.8.*",
         "league/csv": "^9.1",
+        "intervention/image": "^2.4",
         "linland/php-eos-rpc-sdk": "dev-master",
         "multilinguals/apollo-client": "^0.1.2",
         "predis/predis": "^1.1",

+ 23 - 0
config/cors.php

@@ -0,0 +1,23 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Laravel CORS
+    |--------------------------------------------------------------------------
+    |
+    | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
+    | to accept any value.
+    |
+    */
+   
+    'supportsCredentials' => false,
+    'allowedOrigins' => ['*'],
+    'allowedOriginsPatterns' => [],
+    'allowedHeaders' => ['*'],
+    'allowedMethods' => ['*'],
+    'exposedHeaders' => [],
+    'maxAge' => 0,
+
+];

+ 1 - 0
database/migrations/2019_11_26_092044_create_meta_table.php

@@ -16,6 +16,7 @@ class CreateMetaTable extends Migration
         Schema::create('meta', function (Blueprint $table) {
             $table->bigIncrements('id');
             $table->string('patch_num')->default('')->comment('批次号');
+            $table->dateTime('produce_date')->nullable()->comment('产蛋时间');
             $table->string('variety')->default('')->comment('鸡种');
             $table->string('variety_img')->default('')->comment('鸡种图片');
             $table->string('age')->default('')->comment('鸡龄');

+ 94 - 0
public/config.json

@@ -0,0 +1,94 @@
+/* 前后端通信相关的配置,注释只允许使用多行方式 */
+{
+    /* 上传图片配置项 */
+    "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
+    "imageFieldName": "upfile", /* 提交的图片表单名称 */
+    "imageMaxSize": 2048000, /* 上传大小限制,单位B */
+    "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
+    "imageCompressEnable": true, /* 是否压缩图片,默认是true */
+    "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
+    "imageInsertAlign": "none", /* 插入的图片浮动方式 */
+    "imageUrlPrefix": "", /* 图片访问路径前缀 */
+    "imagePathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
+    /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
+    /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
+    /* {time} 会替换成时间戳 */
+    /* {yyyy} 会替换成四位年份 */
+    /* {yy} 会替换成两位年份 */
+    /* {mm} 会替换成两位月份 */
+    /* {dd} 会替换成两位日期 */
+    /* {hh} 会替换成两位小时 */
+    /* {ii} 会替换成两位分钟 */
+    /* {ss} 会替换成两位秒 */
+    /* 非法字符 \ : * ? " < > | */
+    /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
+
+    /* 涂鸦图片上传配置项 */
+    "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
+    "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
+    "scrawlPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
+    "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
+    "scrawlUrlPrefix": "", /* 图片访问路径前缀 */
+    "scrawlInsertAlign": "none",
+
+    /* 截图工具上传 */
+    "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
+    "snapscreenPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
+    "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
+    "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
+
+    /* 抓取远程图片配置 */
+    "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
+    "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
+    "catcherFieldName": "source", /* 提交的图片列表表单名称 */
+    "catcherPathFormat": "/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
+    "catcherUrlPrefix": "", /* 图片访问路径前缀 */
+    "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
+    "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
+
+    /* 上传视频配置 */
+    "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
+    "videoFieldName": "upfile", /* 提交的视频表单名称 */
+    "videoPathFormat": "/ueditor/php/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
+    "videoUrlPrefix": "", /* 视频访问路径前缀 */
+    "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
+    "videoAllowFiles": [
+        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
+        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
+
+    /* 上传文件配置 */
+    "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
+    "fileFieldName": "upfile", /* 提交的文件表单名称 */
+    "filePathFormat": "/ueditor/php/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
+    "fileUrlPrefix": "", /* 文件访问路径前缀 */
+    "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
+    "fileAllowFiles": [
+        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
+        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
+        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
+        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
+        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
+    ], /* 上传文件格式显示 */
+
+    /* 列出指定目录下的图片 */
+    "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
+    "imageManagerListPath": "/ueditor/php/upload/image/", /* 指定要列出图片的目录 */
+    "imageManagerListSize": 20, /* 每次列出文件数量 */
+    "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
+    "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
+    "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
+
+    /* 列出指定目录下的文件 */
+    "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
+    "fileManagerListPath": "/ueditor/php/upload/file/", /* 指定要列出文件的目录 */
+    "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
+    "fileManagerListSize": 20, /* 每次列出文件数量 */
+    "fileManagerAllowFiles": [
+        ".png", ".jpg", ".jpeg", ".gif", ".bmp",
+        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
+        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
+        ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
+        ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
+    ] /* 列出的文件类型 */
+
+}

+ 5 - 1
routes/api.php

@@ -14,9 +14,13 @@
 $api = app('Dingo\Api\Routing\Router');
 
 $api->version('v1', [
-    'namespace' => 'App\Http\Controllers',
+    'namespace' => 'App\Http\Controllers'
 ], function ($api) {
 
+    //百度编辑器
+    $api->get('ueupload', 'UeditorController@index');
+    $api->post('ueupload', 'UeditorController@index');
+
     //前台
     $api->get('egg', 'IndexController@index');