gq 8 éve
szülő
commit
d6b9bd7b49

+ 14 - 0
server/app/Http/Controllers/Admin/Dream/InfoController.php

xqd xqd
@@ -73,6 +73,14 @@ class InfoController extends Controller
             return $this->showWarning('请添加图片',$url);
         }
         $id = DreamInfoModel::insertGetId($data);
+        //        生成二维码
+        $info['transaction_id'] = date('YmdHis') . mt_rand(1000, 9999);
+        $info['code'] = 'WECHATPAY_' . $info['transaction_id'];
+        $code_url = env('APP_URL').'/user/meet?dream_id='.$id;
+        $code_path = public_path('qrcodes/'.$info['code'].'.png');
+        \QrCode::format('png')->size(500)->generate($code_url,$code_path);
+        $code =  env('APP_URL').'/qrcodes/'.$info['code'].'.png';
+        DreamInfoModel::where('id',$id)->update(compact('code'));
         if($id) {
             $arr = [];
             foreach ($pics['url'] as $pic) {
@@ -202,4 +210,10 @@ class InfoController extends Controller
             return  $this->showWarning("操作失败");
         }
     }
+
+    public function show_code(Request $request)
+    {
+        $code = $request->code;
+        return view('admin.dream.info.show_code',compact('code'));
+    }
 }

+ 8 - 2
server/app/Http/Controllers/Api/V1/DreamController.php

xqd xqd
@@ -541,7 +541,6 @@ class DreamController extends Controller
         $a = $setting?$setting->key:1;
         $b = $setting?$setting->value:1;
         $t = 21*3600 / 60;
-
         $days = $request->days;
         $data = $request->except('_token','pics','days');
         $data['user_id'] = $user->id;
@@ -555,7 +554,14 @@ class DreamController extends Controller
         $data['created_at'] = date('Y-m-d H:i:s');
         $data['updated_at'] = date('Y-m-d H:i:s');
         $dream_id = DreamInfoModel::insertGetId($data);
-
+//        生成二维码
+        $info['transaction_id'] = date('YmdHis') . mt_rand(1000, 9999);
+        $info['code'] = 'WECHATPAY_' . $info['transaction_id'];
+        $code_url = env('APP_URL').'/user/meet?dream_id='.$dream_id;
+        $code_path = public_path('qrcodes/'.$info['code'].'.png');
+        \QrCode::format('png')->size(500)->generate($code_url,$code_path);
+        $code =  env('APP_URL').'/qrcodes/'.$info['code'].'.png';
+        DreamInfoModel::where('id',$dream_id)->update(compact('code'));
         if ($dream_id) {
 //            梦想创建成功 关联关系中最新动态+1
             /*         $info = UserCareUser::where('other_user_id',$user->id)->paginate(20);

+ 57 - 0
server/app/Http/Controllers/Api/V1/HomeController.php

xqd xqd
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api\V1;
 use App\Models\BaseDictionaryOptionModel;
 
 use App\Models\DreamInfoModel;
+use App\Models\MeetInfoModel;
 use App\Models\SupportDreamModel;
 use App\Models\UserCareUser;
 use App\Models\UserInfoModel;
@@ -86,4 +87,60 @@ class HomeController extends Controller
         return $this->api(compact('user','near_dream','sup_dreams','imgs','dreams','score'));
 
     }
+
+//    见面
+    /**
+     * @api {get} /api/user/meet/ 见面
+     * @apiDescription 见面
+     * @apiGroup Home
+     * @apiPermission Passport
+     * @apiVersion 0.1.0
+     * @apiParam {int} dream_id 梦想id
+     * @apiSuccessExample {json} Success-Response:
+     * HTTP/1.1 200 OK
+    {
+        "status": true,
+        "status_code": 0,
+        "message": "",
+        "data": ""
+    }
+     * @apiErrorExample {json} Error-Response:
+     *HTTP/1.1 400 Bad Request
+    {
+        "status": false,
+        "status_code": 1412,
+        "message": "梦想暂未实现",   /梦想不存在/不是最大支持者
+        "data": null
+    }
+     */
+    public function meet(Request $request)
+    {
+        $user = $this->getUser();
+        $dream_id = $request->dream_id;
+        $dream = DreamInfoModel::find($dream_id);
+        if (empty($dream)) return $this->error(ErrorCode::DREAM_NOT_EXIST);
+        $dream_user_id = $dream->user_id;
+        if ($dream->get_coin < $dream->coin)  return $this->error(ErrorCode::DREAM_STATUS);
+//        找到最大支持者
+        $arr = [] ;//支持者 和支持分数
+        $sups = SupportDreamModel::where('dream_id',$dream_id)->get()->groupBy('user_id')->toArray();
+        foreach ($sups as $k => $sup) {
+            $score = 0;
+            foreach ($sup as $v){
+                $score += $v['score'];
+            }
+            $arr[$k] = $score;
+        }
+        $sup_id= iconv('UTF-8', 'GBK', array_search(max($arr),$arr));
+
+        if ($user->id != $sup_id) return $this->error(ErrorCode::SUP_ERROR);
+//        见面成功写入数据记录
+        $data = [
+            'user_id'=>$user->id,
+            'dream_id'=>$dream_id,
+            'dream_user_id'=>$dream_user_id,
+        ];
+        MeetInfoModel::create($data);
+        return $this->api('');
+    }
 }

+ 2 - 0
server/app/Models/DreamInfoModel.php

xqd
@@ -37,6 +37,8 @@ class DreamInfoModel extends BaseModel
                            'time',
                            'get_coin',
                            'mark',
+                           'parameter',
+                           'code',
                            'status'
                           ];
 

+ 11 - 0
server/app/Models/MeetInfoModel.php

xqd
@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class MeetInfoModel extends Model
+{
+    protected $table = 'meet_info';
+    protected $fillable = ['user_id','dream_id','dream_user_id'];
+}

+ 4 - 0
server/app/Services/Base/ErrorCode.php

xqd
@@ -69,10 +69,14 @@ final class ErrorCode {
 //    const MERCHANT_BALANCE_NOT_ENOUGH = 1311;
     const KEY_ERROR = 1310;
     const SUP_TOP = 1410;
+    const SUP_ERROR = 1411;
+    const DREAM_STATUS = 1412;
 
     //错误常量枚举
     private static $_msg = [
         self::DREAM_NOT_EXIST => '梦想不存在',
+        self::DREAM_STATUS => '梦想暂未实现',
+        self::SUP_ERROR => '你不是最大支持者',
         self::SUP_TOP => '支持已达上限',
         self::ATTACHMENT_DELETE_FAILED => '删除附件文件失败',
         self::ATTACHMENT_MOVE_FAILED => '移动附件失败',

+ 2 - 1
server/composer.json

xqd
@@ -12,7 +12,8 @@
         "laravel/framework": "5.4.*",
         "laravel/passport": "^2.0",
         "laravel/tinker": "~1.0",
-        "orangehill/iseed": "^2.4"
+        "orangehill/iseed": "^2.4",
+        "simplesoftwareio/simple-qrcode": "1.3.*"
     },
     "require-dev": {
         "fzaninotto/faker": "~1.4",

+ 2 - 1
server/config/app.php

xqd xqd
@@ -181,6 +181,7 @@ return [
         Laravel\Passport\PassportServiceProvider::class,
         Dingo\Api\Provider\LaravelServiceProvider::class,
         Orangehill\Iseed\IseedServiceProvider::class,
+        SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
     ],
 
     /*
@@ -229,7 +230,7 @@ return [
         'URL' => Illuminate\Support\Facades\URL::class,
         'Validator' => Illuminate\Support\Facades\Validator::class,
         'View' => Illuminate\Support\Facades\View::class,
-
+        'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
     ],
 
 ];

+ 33 - 0
server/database/migrations/2017_07_03_100013_add_code_parameter_to_dream_info.php

xqd
@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class AddCodeParameterToDreamInfo extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('dream_info', function (Blueprint $table) {
+            $table->string('code')->comment('梦想二维码地址')->default('')->after('sign');
+            $table->integer('parameter')->comment('梦想分数参数')->default(0)->after('sign');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('dream_info', function (Blueprint $table) {
+            //
+        });
+    }
+}

+ 34 - 0
server/database/migrations/2017_07_03_110549_create_meet_info_table.php

xqd
@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateMeetInfoTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('meet_info', function (Blueprint $table) {
+            $table->increments('id');
+            $table->integer('user_id')->comment('当前用户ID');
+            $table->integer('dream_id')->comment('扫码梦想ID');
+            $table->integer('dream_user_id')->comment('梦想用户ID');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('meet_info');
+    }
+}

BIN
server/public/qrcodes/WECHATPAY_201707031013455982.png


BIN
server/public/qrcodes/WECHATPAY_201707031016026999.png


BIN
server/public/qrcodes/WECHATPAY_201707031026222621.png


+ 12 - 3
server/resources/views/admin/dream/info/edit.blade.php

xqd
@@ -134,13 +134,22 @@
                 </div>    
                 <div class="form-group">
                                     
-                 <label class="control-label col-sm-3">梦想排行分数</label>
+                 <label class="control-label col-sm-3">排行参数</label>
                                     
                    <div class="col-sm-9">
-                     <input id="data_score" name="data[score]" class="form-control" value="{{ $data['score'] or ''}}" required="" aria-required="true"  placeholder=""> 
+                      <input id="data_score" name="data[parameter]" class="form-control" value="{{ $data['parameter'] or ''}}" required="" aria-required="true"  placeholder="">
                     </div>
                                 
-                </div>    
+                </div>
+                <div class="form-group">
+
+                 <label class="control-label col-sm-3">梦想排行分数</label>
+
+                   <div class="col-sm-9">
+                     <input id="data_score" name="data[score]" class="form-control" value="{{ $data['score'] or ''}}" required="" aria-required="true"  placeholder="">
+                    </div>
+
+                </div>
                 <div class="form-group">
                                     
                  <label class="control-label col-sm-3">梦想标签</label>

+ 6 - 0
server/resources/views/admin/dream/info/index.blade.php

xqd xqd
@@ -43,6 +43,8 @@
             <th class="sorting" data-sort="get_coin"> 获得梦想币 </th>
 			<th class="sorting" data-sort="mark"> 梦想分 </th>
 			<th class="sorting" data-sort="sign"> 梦想标签 </th>
+			<th class="sorting" data-sort="parameter"> 排行参数 </th>
+			<th class="sorting" data-sort="code"> 二维码 </th>
 			<th class="sorting" data-sort="status"> 梦想状态 </th>
 			<th class="sorting" data-sort="created_at"> 梦想发布时间 </th>
 			<th class="sorting" data-sort="end_time"> 梦想结束时间 </th>
@@ -60,6 +62,10 @@
             <td>{{ $item->get_coin }}</td>
 			<td>{{ $item->mark }}</td>
 			<td>{{ $item->sign }}</td>
+			<td>{{ $item->parameter }}</td>
+			<td>
+				<a onclick="layer.open({type: 2,area: ['80%', '90%'],content: '{{ U('/Dream/Info/show_code',['code'=> $item->code])}}'});"  class="btn btn-primary ">查看</a>
+			</td>
 			<td>{{ dict()->get('dream_info','status',$item->status) }}</td>
 			<td>{{$item->created_at }}</td>
 			<td>{{$item->end_time}}</td>

+ 20 - 0
server/resources/views/admin/dream/info/show_code.blade.php

xqd
@@ -0,0 +1,20 @@
+@extends('admin.layout')
+
+@section('content')
+<div class="row">
+    <div class="ibox-content">
+        <div class="list-group">
+                                 
+               <div class="list-group-item">
+                                                  
+                   <h3 class="list-group-item-heading">二维码</h3>
+                                                   
+                   <p class="list-group-item-text">
+                       <img src="{{$code}}" alt="">
+                   </p>
+                                                 
+               </div>                     
+        </div>
+    </div>
+</div>
+@endsection

+ 3 - 0
server/routes/admin.php

xqd
@@ -42,6 +42,9 @@ Route::group(['middleware' => ['auth.admin']], function() {
     Route::get('Interaction/Info/view', 'Interaction\InfoController@view');
     Route::post('Interaction/Info/update/{id}', 'Interaction\InfoController@update');
 
+//后台显示二维码
+//    Route::get('/Dream/Info/show_code', 'Dream\InfoController@showCode');
+
     $uri =  request()->path();
     $uri = str_replace('admin/' ,'', $uri);
     $uri = str_replace('admin' ,'', $uri);

+ 5 - 0
server/routes/api.php

xqd
@@ -150,6 +150,11 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\Api\V1'], function ($a
         'as' => 'user.show',
         'uses' => 'HomeController@show',
     ]);
+//    见面
+    $api->get('user/meet', [
+        'as' => 'user.meet',
+        'uses' => 'HomeController@meet',
+    ]);
 //    梦想
     $api->get('dream/show', [
         'as' => 'dream.show',