6
0
Fork 0

调整运费规则城市处理

release
vine_liutk 2022-01-06 11:05:04 +08:00
parent fd2c42346f
commit b2cd493af4
6 changed files with 73 additions and 30 deletions

View File

@ -52,7 +52,8 @@ class ShippingRuleController extends AdminController
*/
protected function form()
{
$builder = ShippingRule::with('zones');
// $builder = ShippingRule::with('zones');
$builder = new ShippingRule();
return Form::make($builder, function (Form $form) {
$templateId = Request::get('template_id', 0);
$form->display('id');
@ -66,12 +67,12 @@ class ShippingRuleController extends AdminController
$form->tree('zones')
->nodes(Zone::get()->toArray()) // 设置所有节点
->setTitleColumn('name')
->customFormat(function ($v) {
if (!$v) {
return [];
}
return array_column($v, 'id');
})
// ->customFormat(function ($v) {
// if (!$v) {
// return [];
// }
// return array_column($v, 'id');
// })
->expand(false)->required();
$form->radio('type')
->when(1, function (Form $form) {

View File

@ -11,9 +11,10 @@ class ShippingRuleTable extends Grid
{
public static function grid(int $templateId = null)
{
$builder = ShippingRule::with('zones');
$grid = parent::make($builder, function (Grid $grid) {
// $builder = ShippingRule::with('zones');
$builder = new ShippingRule();
$zones = Zone::get()->toArray();
$grid = parent::make($builder, function (Grid $grid) use ($zones) {
$grid->setResource('shipping-rules');
$grid->column('id')->sortable();
$grid->column('type')->using([
@ -29,13 +30,15 @@ class ShippingRuleTable extends Grid
return '首重:'.$value['first_weight'].'KG内'.$value['first_w_amount'].'元,续重:每'.$value['continue_weight'].'KG'.$value['continue_w_amount'].'元';
}
})->label();
$grid->column('zones', __('shipping-rule.fields.zones'))->display(function ($value) {
return $value->pluck('id')->toArray();
})->showTreeInDialog(function (Grid\Displayers\DialogTree $tree) {
$tree->title('城市');
$tree->nodes(Zone::get()->toArray());
$tree->setTitleColumn('name');
});
$grid->column('zones', __('shipping-rule.fields.zones'))
// ->display(function ($value) {
// return $value->pluck('id')->toArray();
// })
->showTreeInDialog(function (Grid\Displayers\DialogTree $tree) use ($zones) {
$tree->title('城市');
$tree->nodes($zones);
$tree->setTitleColumn('name');
});
$grid->column('created_at');
$grid->column('updated_at')->sortable();

View File

@ -15,12 +15,13 @@ class ShippingRule extends Model
public const TYPE_FREE = 1;//包邮
public const TYPE_WEIGHT = 2;//计算重量
// protected $casts = [
// 'info' => JsonArray::class,
// ];
protected $casts = [
// 'info' => JsonArray::class,
'zones' => JsonArray::class,
];
public function zones()
{
return $this->belongsToMany(Zone::class, 'shipping_rule_zones', 'rule_id', 'zone_id')->withTimestamps();
}
// public function zones()
// {
// return $this->belongsToMany(Zone::class, 'shipping_rule_zones', 'rule_id', 'zone_id')->withTimestamps();
// }
}

View File

@ -192,7 +192,10 @@ class UniPushService
protected function createPushPayloadData($title, $body, $params = [])
{
$payload = json_encode($params);
$payload = json_encode(array_merge($params, [
'title' => $title,
'body' => $body,
]));
return [
'settings'=>[
'ttl'=> 3600000,
@ -205,7 +208,7 @@ class UniPushService
'transmission'=> json_encode([
// 'title' => $title,
// 'content'=> $body,
'payload'=> $title,
'payload'=> $payload,
]),
// 'notification'=>[
// 'title' => $title,
@ -220,7 +223,7 @@ class UniPushService
'transmission'=> json_encode([
// 'title' => $title,
// 'content'=> $body,
'payload'=> $title,
'payload'=> $payload,
]),
// 'notification'=>[
// 'title' => $title,

View File

@ -27,9 +27,10 @@ class ShippingService
if (ShippingRule::where('template_id', $templateId)->count() > 0) {
$canShipping = false;
//只拿有这个地区配置的模板规则减少sql查询市区数量
$rules = ShippingRule::with('zones')->where('template_id', $templateId)->whereHas('zones', function ($q) use ($zoneId) {
return $q->where('zones.id', $zoneId);
})->get();
// $rules = ShippingRule::with('zones')->where('template_id', $templateId)->whereHas('zones', function ($q) use ($zoneId) {
// return $q->where('zones.id', $zoneId);
// })->get();
$rules = ShippingRule::where('template_id', $templateId)->where('zones', 'like', '%"'.$zoneId.'"%')->get();
//按包邮/计重
$rules = $rules->sortBy('type');//优先计算包邮
foreach ($rules as $rule) {

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddZonesToShippingRulesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('shipping_rules', function (Blueprint $table) {
//
$table->text('zones')->nullable()->comment('地区IDs');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('shipping_rules', function (Blueprint $table) {
//
$table->dropColumn(['zones']);
});
}
}