核销回调+修改活动规则
This commit is contained in:
@@ -3,9 +3,12 @@
|
||||
namespace App\Admin\Controllers\Activity;
|
||||
|
||||
use App\Models\ActivityRule;
|
||||
use App\Models\User;
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Illuminate\Support\MessageBag;
|
||||
use RuLong\Identity\Models\Identity;
|
||||
|
||||
class RuleController extends AdminController
|
||||
{
|
||||
@@ -46,10 +49,31 @@ class RuleController extends AdminController
|
||||
$form->text('title', '规则名称')->required();
|
||||
$form->text('code', '规则编号')->required()->help('列:YSD-full100-15');
|
||||
|
||||
$form->decimal('full', '满足金额')->required()->default(0);
|
||||
$form->decimal('take', '抵扣金额')->required()->default(0);
|
||||
$form->hidden('full', '满足金额')->required()->default(0);
|
||||
$form->hidden('take', '抵扣金额')->required()->default(0);
|
||||
|
||||
$form->switch('status', '状态')->default(1);
|
||||
$form->saving(function (Form $form) {
|
||||
$code = $form->code;
|
||||
|
||||
$ticket = explode('-', $code);
|
||||
if (!is_array($ticket) || count($ticket) != 3) {
|
||||
$error = new MessageBag([
|
||||
'title' => '错误',
|
||||
'message' => '规则编号格式错误',
|
||||
]);
|
||||
|
||||
return back()->withInput()->with(compact('error'));
|
||||
}
|
||||
|
||||
$full = $ticket[1]; //full100
|
||||
$price = $ticket[2];
|
||||
preg_match('/\d+/', $full, $match);
|
||||
|
||||
$form->full = $match[0];
|
||||
$form->take = $price;
|
||||
|
||||
});
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
20
app/Events/ConponCallback.php
Normal file
20
app/Events/ConponCallback.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Events;
|
||||
|
||||
use App\Models\ActivityCoupon;
|
||||
|
||||
/**
|
||||
* 核券之后的回调
|
||||
*/
|
||||
class ConponCallback
|
||||
{
|
||||
|
||||
public $acticity_coupon;
|
||||
|
||||
public function __construct(ActivityCoupon $acticity_coupon)
|
||||
{
|
||||
$this->acticity_coupon = $acticity_coupon;
|
||||
}
|
||||
|
||||
}
|
||||
59
app/Listeners/ConponCallbackListener.php
Normal file
59
app/Listeners/ConponCallbackListener.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use App\Events\ConponCallback;
|
||||
use App\Models\ActivityCouponLog;
|
||||
use GuzzleHttp\Client;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class ConponCallbackListener implements ShouldQueue
|
||||
{
|
||||
|
||||
public $queue = 'LISTENER';
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
* @param RoomLoginDone $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle(ConponCallback $event)
|
||||
{
|
||||
$acticity_coupon = $event->acticity_coupon;
|
||||
$user = $acticity_coupon->outlet->parent;
|
||||
|
||||
if ($user->callback) {
|
||||
$client = new Client();
|
||||
|
||||
$response = $client->request('post', $user->callback, [
|
||||
'timeout' => 30,
|
||||
'query' => [
|
||||
'code' => $acticity_coupon->code,
|
||||
],
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'code' => $acticity_coupon->code,
|
||||
'url' => $user->callback,
|
||||
];
|
||||
|
||||
if ($response->getStatusCode() == 200) {
|
||||
$body = $response->getBody();
|
||||
$result = json_decode($body->getContents(), true);
|
||||
|
||||
$data['status'] = $result['code'] ?? '';
|
||||
$data['source'] = $result;
|
||||
$data['remark'] = $result['message'] ?? '';
|
||||
|
||||
} else {
|
||||
$data['status'] = 0;
|
||||
$data['source'] = '';
|
||||
$data['remark'] = '接口错误';
|
||||
}
|
||||
|
||||
ActivityCouponLog::create($data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,9 +2,13 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\Traits\BelongsToOutlet;
|
||||
|
||||
class ActivityCoupon extends Model
|
||||
{
|
||||
|
||||
use BelongsToOutlet;
|
||||
|
||||
protected $dates = [
|
||||
'start_at',
|
||||
'end_at',
|
||||
|
||||
12
app/Models/ActivityCouponLog.php
Normal file
12
app/Models/ActivityCouponLog.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
class ActivityCouponLog extends Model
|
||||
{
|
||||
|
||||
protected $casts = [
|
||||
'source' => 'array',
|
||||
];
|
||||
|
||||
}
|
||||
@@ -2,12 +2,13 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\Traits\BelongsToOutlet;
|
||||
use App\Models\Traits\BelongsToUser;
|
||||
|
||||
class Coupon extends Model
|
||||
{
|
||||
|
||||
use BelongsToUser;
|
||||
use BelongsToUser, BelongsToOutlet;
|
||||
|
||||
protected $dates = [
|
||||
'paid_at',
|
||||
@@ -20,11 +21,6 @@ class Coupon extends Model
|
||||
self::TYPE_YSD => '自有券',
|
||||
];
|
||||
|
||||
public function outlet()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'outletId', 'outlet_id');
|
||||
}
|
||||
|
||||
public function getStatusTextAttribute()
|
||||
{
|
||||
switch ($this->status) {
|
||||
|
||||
16
app/Models/Traits/BelongsToOutlet.php
Normal file
16
app/Models/Traits/BelongsToOutlet.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Traits;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
trait BelongsToOutlet
|
||||
{
|
||||
|
||||
public function outlet()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'outletId', 'outlet_id');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,27 +2,25 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
||||
use App\Events\ConponCallback;
|
||||
use App\Listeners\ConponCallbackListener;
|
||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
|
||||
class EventServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
||||
/**
|
||||
* The event listener mappings for the application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $listen = [
|
||||
Registered::class => [
|
||||
SendEmailVerificationNotification::class,
|
||||
ConponCallback::class => [
|
||||
ConponCallbackListener::class,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Register any events for your application.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
@@ -31,4 +29,5 @@ class EventServiceProvider extends ServiceProvider
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace XuanChen\Coupon\Action\ysd;
|
||||
|
||||
use App\Events\ConponCallback;
|
||||
use App\Models\ActivityCoupon;
|
||||
use App\Models\Coupon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -30,6 +31,7 @@ class YsdVerification extends Init
|
||||
$this->query_coupon = (new YsdQuery)->setOutletId($this->outletId)
|
||||
->setCode($this->redemptionCode)
|
||||
->start();
|
||||
|
||||
if (is_string($this->query_coupon)) {
|
||||
return $this->query_coupon;
|
||||
}
|
||||
@@ -74,6 +76,8 @@ class YsdVerification extends Init
|
||||
$this->coupon->profit();
|
||||
DB::commit();
|
||||
|
||||
event(new ConponCallback($this->query_coupon));
|
||||
|
||||
return $resdata;
|
||||
} catch (Exception $e) {
|
||||
DB::rollback();
|
||||
@@ -115,10 +119,7 @@ class YsdVerification extends Init
|
||||
}
|
||||
|
||||
$rule_code = $this->query_coupon->activity->rule->code;
|
||||
info($rule_code);
|
||||
$code = $this->user->code->where('code', $rule_code)->first();
|
||||
info($this->user->code);
|
||||
info($code);
|
||||
|
||||
if (!$code) {
|
||||
return "核销失败,您没有权限使用此卡券优惠活动。";
|
||||
|
||||
Reference in New Issue
Block a user