李帅

1.会员模板页面完成。

2.订单还在构思。
......@@ -3,6 +3,7 @@
namespace App\Http\Controllers\V1;
use App\Http\Controllers\Controller;
use App\Jobs\CancelUnpaidOrder;
use App\Models\MembershipGood;
use App\Models\Order;
use App\Models\OrderGood;
......@@ -10,6 +11,7 @@ use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Jiannei\Response\Laravel\Support\Facades\Response;
......@@ -17,7 +19,12 @@ class OrderController extends Controller
{
public function index(Request $request)
{
// $user_id = Auth::user()->getAuthIdentifier(); todo
$user_id = 1;
$orders = Order::query()->where('user_id',$user_id)->simplePaginate(10);
return Response::success($orders);
}
public function store(Request $request)
......@@ -30,16 +37,26 @@ class OrderController extends Controller
if ($validator->fails()) return Response::fail('缺少参数',500,$validator->errors());
$user_id = Auth::user()->getAuthIdentifier();
// $user_id = Auth::user()->getAuthIdentifier(); todo
$user_id = 1;
$order = $this->build($user_id, $data['goods_id'], $this->getClientTerminal());
return Response::success($order);
if (!$order) return Response::fail('', 500,$order);
return Response::success(['order_sn' => $order]);
}
public function show($id)
{
// $user_id = Auth::user()->getAuthIdentifier(); todo
$user_id = 1;
$order = Order::query()->where('order_sn',$id)->where('user_id',$user_id)->first();
if (!$order) return Response::fail('order_sn fail',500);
return Response::success($order);
}
/**
......@@ -71,6 +88,8 @@ class OrderController extends Controller
$order->goods_amount = $membership_good->price;
$order->status = Order::UNPAID;
$order->source = $source;
$order->thumbnail = $membership->getSingleImage();
$order->cancel_time = Carbon::now()->addSeconds(Order::TIMEOUT);
$order->save();
......@@ -87,16 +106,16 @@ class OrderController extends Controller
$order->goods = $order_good;
CancelUnpaidOrder::dispatch($order)->delay(Order::TIMEOUT);
// todo 超时处理,建议给Job处理
// if ($pay_amount == 0) { //0元购就不执行回调了
// $this->freePay($order);
// }
return $order;
if ($pay_amount == 0) { //0元购就不执行回调了
$this->freePay($order);
}
return $order_sn;
});
}catch (\Exception $exception){
return Response::fail('', 500, $exception->getMessage());
Log::error($exception->getMessage());
return $exception->getMessage();
}
}
......
<?php
namespace App\Http\Controllers\V1;
use App\Http\Controllers\Controller;
use App\Models\VideoTemp;
use Illuminate\Http\Request;
use Jiannei\Response\Laravel\Support\Facades\Response;
class TemplateController extends Controller
{
//
public function index()
{
$temps = VideoTemp::query()->where('state', 1)->get();
return Response::success($temps);
}
}
<?php
namespace App\Jobs;
use App\Models\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class CancelUnpaidOrder implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $order;
/**
* Create a new job instance.
* @param $order
* @return void
*/
public function __construct(Order $order)
{
$this->order = $order;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
if ($this->order->status >= Order::USER_CANCEL){
return;
}
$this->order->timeoutCanceled();
}
}
......@@ -21,7 +21,7 @@ class Order extends Model
const TIMEOUT_CANCEL = 102;
/** 商户取消*/
const MERCHANT_CANCEL = 102;
const MERCHANT_CANCEL = 103;
/** 已支付*/ // 回调
const PAID = 201;
......@@ -29,10 +29,13 @@ class Order extends Model
/** 已完成*/ // 回调并且业务逻辑(加天数、加销量)执行完毕
const DONE = 204;
/** 订单超时时间 30分钟 */
const TIMEOUT = 1800;
public function order_goods()
{
return $this->hasOne('App\Models\OrderGood','order_sn');
return $this->hasOne('App\Models\OrderGood','order_sn','order_sn');
}
/**
......@@ -45,4 +48,9 @@ class Order extends Model
$Sn = $prefix . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
return $Sn;
}
public function timeoutCanceled()
{
}
}
\ No newline at end of file
......
......@@ -18,6 +18,7 @@ class CreateOrderTable extends Migration
$table->string('order_sn')->index()->default('')->comment('订单号');
$table->unsignedBigInteger('user_id')->index()->comment('用户id');
$table->string('description')->default('')->comment('订单描述');
$table->string('thumbnail')->default('')->comment('缩略图');
$table->decimal('pay_amount')->comment('实付金额');
$table->decimal('goods_amount')->comment('商品金额');
$table->unsignedSmallInteger('status')->comment('订单状态:100待付款 101用户取消 102超时取消 103商户取消 201已付款 204已完成');
......
......@@ -33,6 +33,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route
/** 临境 */
$api->apiResource('/immersive', 'ImmerseController');
/** 模板 */
$api->apiResource('/template', 'TemplateController');
/** 创建订单 */
$api->apiResource('/order', 'OrderController');
......