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

View File

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

View File

@ -15,12 +15,13 @@ class ShippingRule extends Model
public const TYPE_FREE = 1;//包邮 public const TYPE_FREE = 1;//包邮
public const TYPE_WEIGHT = 2;//计算重量 public const TYPE_WEIGHT = 2;//计算重量
// protected $casts = [ protected $casts = [
// 'info' => JsonArray::class, // 'info' => JsonArray::class,
// ]; 'zones' => JsonArray::class,
];
public function zones() // public function zones()
{ // {
return $this->belongsToMany(Zone::class, 'shipping_rule_zones', 'rule_id', 'zone_id')->withTimestamps(); // 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 = []) protected function createPushPayloadData($title, $body, $params = [])
{ {
$payload = json_encode($params); $payload = json_encode(array_merge($params, [
'title' => $title,
'body' => $body,
]));
return [ return [
'settings'=>[ 'settings'=>[
'ttl'=> 3600000, 'ttl'=> 3600000,
@ -205,7 +208,7 @@ class UniPushService
'transmission'=> json_encode([ 'transmission'=> json_encode([
// 'title' => $title, // 'title' => $title,
// 'content'=> $body, // 'content'=> $body,
'payload'=> $title, 'payload'=> $payload,
]), ]),
// 'notification'=>[ // 'notification'=>[
// 'title' => $title, // 'title' => $title,
@ -220,7 +223,7 @@ class UniPushService
'transmission'=> json_encode([ 'transmission'=> json_encode([
// 'title' => $title, // 'title' => $title,
// 'content'=> $body, // 'content'=> $body,
'payload'=> $title, 'payload'=> $payload,
]), ]),
// 'notification'=>[ // 'notification'=>[
// 'title' => $title, // 'title' => $title,

View File

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