diff --git a/app/Actions/Dealer/CalculateManageSubsidiesOfCurrentPeriod.php b/app/Actions/Dealer/CalculateManageSubsidiesOfCurrentPeriod.php new file mode 100644 index 00000000..ed7a0902 --- /dev/null +++ b/app/Actions/Dealer/CalculateManageSubsidiesOfCurrentPeriod.php @@ -0,0 +1,30 @@ +day >= 20) { + $startAt = $tz->copy()->setDay(20)->startOfDay(); + } elseif ($tz->day >= 5) { + $startAt = $tz->copy()->setDay(5)->startOfDay(); + } else { + $startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay(); + } + + $total = DealerManageSubsidyLog::where('order_completed_at', '>=', $startAt)->where('user_id', $dealer->user_id)->sum('total_amount'); + + return bcmul($total, '1', 2); + } +} diff --git a/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php b/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php index 61f071db..03c32b68 100644 --- a/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php +++ b/app/Actions/Dealer/CalculatePurchaseAmountOfCurrentPeriod.php @@ -3,8 +3,6 @@ namespace App\Actions\Dealer; use App\Models\Dealer; -use Illuminate\Support\Carbon; -use Illuminate\Support\Facades\Cache; class CalculatePurchaseAmountOfCurrentPeriod { @@ -31,17 +29,6 @@ class CalculatePurchaseAmountOfCurrentPeriod $startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay(); } - return Cache::remember($this->prefix($startAt).':'.$dealer->user_id, 600, function () use ($dealer, $startAt) { - return bcdiv($this->calculatePurchaseAmount->handle($dealer, $startAt), '1', 2); - }); - } - - /** - * @param \Illuminate\Support\Carbon $tz - * @return string - */ - protected function prefix(Carbon $tz): string - { - return $tz->rawFormat('ymd').'_dealer_purchase_amount'; + return bcmul($this->calculatePurchaseAmount->handle($dealer, $startAt), '1', 2); } } diff --git a/app/Actions/Dealer/CalculateUnsettledManageSubsidies.php b/app/Actions/Dealer/CalculateUnsettledManageSubsidies.php new file mode 100644 index 00000000..6294cbc8 --- /dev/null +++ b/app/Actions/Dealer/CalculateUnsettledManageSubsidies.php @@ -0,0 +1,20 @@ +where('user_id', $dealer->user_id)->sum('total_amount'); + + return bcmul($total, '1', 2); + } +} diff --git a/app/Actions/Dealer/CalculateUnsettledPurchaseAmount.php b/app/Actions/Dealer/CalculateUnsettledPurchaseAmount.php new file mode 100644 index 00000000..1436244c --- /dev/null +++ b/app/Actions/Dealer/CalculateUnsettledPurchaseAmount.php @@ -0,0 +1,24 @@ +where('path', 'like', "{$dealer->userInfo->full_path}%") + ->sum('total_amount'); + + return bcmul($total, '1', 2); + } +} diff --git a/app/Admin/Controllers/ActivityController.php b/app/Admin/Controllers/ActivityController.php new file mode 100644 index 00000000..1c903788 --- /dev/null +++ b/app/Admin/Controllers/ActivityController.php @@ -0,0 +1,272 @@ +column('id')->sortable(); + $grid->column('title'); + $grid->column('cover')->image(50); + // $grid->column('content'); + $grid->column('is_use')->filter(Grid\Column\Filter\In::make([ + 0=>'下架', + 1=>'上架', + ])) + ->if(function () { + return Admin::user()->can('dcat.admin.activities.edit'); + }) + ->then(function (Column $column) { + $column->switch(); + }) + ->else(function (Column $column) { + $column->bool(); + }); + $grid->column('started_at'); + $grid->column('ended_at'); + $grid->model()->orderBy('created_at', 'desc'); + $grid->column('created_at')->sortable(); + //新增 + if (Admin::user()->can('dcat.admin.activities.create')) { + $grid->disableCreateButton(false); + // $grid->enableDialogCreate(); + } + //删除以及自定义操作 + $grid->actions(function (Grid\Displayers\Actions $actions) { + $actions->disableView(Admin::user()->cannot('dcat.admin.activities.show')); + $actions->disableDelete(Admin::user()->cannot('dcat.admin.activities.destroy')); + //修改 + $actions->disableEdit(Admin::user()->cannot('dcat.admin.activities.edit')); + }); + $grid->filter(function (Grid\Filter $filter) { + $filter->panel(); + $filter->like('title')->width(3); + }); + }); + } + + /** + * Make a show builder. + * + * @param mixed $id + * + * @return Show + */ + protected function detail($id) + { + return function (Row $row) use ($id) { + $activity = ActivityModel::with(['parts', 'coupons', 'gifts'])->findOrFail($id); + $row->column(6, function ($column) use ($activity) { + $column->row(Show::make($activity, function (Show $show) use ($activity) { + $show->panel() + ->tools(function ($tools) { + $tools->disableEdit(Admin::user()->cannot('dcat.admin.activities.edit')); + $tools->disableList(); + $tools->disableDelete(Admin::user()->cannot('dcat.admin.activities.destroy')); + }); + $show->row(function (Show\Row $show) use ($activity) { + $show->field('id')->width(10, 1); + $show->field('title')->width(10, 1); + $show->field('cover')->width(10, 1)->image(); + $show->field('is_use')->using([0=>'未开启', '已开启'])->dot([ + '0'=>'#b3b9bf', + '1'=>'success', + ])->width(10, 1); + $show->width(6)->field('started_at'); + $show->width(6)->field('ended_at'); + $show->width(12)->field('parts', '分区关联')->width(10, 1)->as(function ($value) { + return array_column($value, 'name'); + })->label(); + + foreach ($activity->coupons as $coupon) { + $show->width(6)->field('coupon.name', '优惠券名称')->as(function () use ($coupon) { + return $coupon->name; + })->label(); + $show->width(6)->field('coupon.qty', '赠送数量')->as(function () use ($coupon) { + return $coupon->pivot->qty; + }); + }; + foreach ($activity->gifts as $gift) { + $show->width(6)->field('gift.name', '赠品名称')->as(function () use ($gift) { + return $gift->name; + })->label(); + $show->width(6)->field('gift.qty', '赠送数量')->as(function () use ($gift) { + return $gift->pivot->qty; + }); + }; + + $show->width(6)->field('created_at'); + $show->width(6)->field('updated_at'); + }); + })); + }); + $row->column(6, function ($column) use ($activity) { + $column->row(Show::make($activity, function (Show $show) use ($activity) { + $show->panel() + ->tools(function ($tools) { + $tools->disableEdit(); + $tools->disableList(); + $tools->disableDelete(); + }); + $show->row(function (Show\Row $show) { + $show->width(12)->field('coupons_rule')->as(function ($value) { + $str = ''; + // dd($value); + foreach ($value as $key => $v) { + switch ($key) { + case 'type': + if ($v) { + $str .= '其他活动来源-'; + } else { + $str .= '按订单赠送-'; + } + break; + case 'value': + $str .= '满'.$v.'赠送-'; + break; + case 'times': + if ($v) { + $str .= '不限次数-'; + } else { + $str .= '仅首单-'; + } + break; + } + } + return rtrim($str, '-'); + })->width(10, 1); + $show->width(12)->field('gifts_rule')->as(function ($value) { + $str = ''; + foreach ($value as $key => $v) { + switch ($key) { + case 'type': + if ($v) { + $str .= '其他活动来源-'; + } else { + $str .= '按订单赠送-'; + } + break; + case 'value': + $str .= '满'.$v.'赠送-'; + break; + case 'times': + if ($v) { + $str .= '不限次数-'; + } else { + $str .= '仅首单-'; + } + break; + } + } + return rtrim($str, '-'); + })->width(10, 1); + $show->field('content')->unescape()->width(10, 1); + }); + })); + }); + }; + } + + /** + * Make a form builder. + * + * @return Form + */ + protected function form() + { + $builder = Activity::with(['parts', 'couponSet', 'giftSet']); + return Form::make($builder, function (Form $form) { + $form->display('id'); + $form->display('created_at'); + $form->display('updated_at'); + $form->block(6, function (Form\BlockForm $form) { + $form->text('title')->required(); + $form->image('cover') + ->move('activities/'.Carbon::now()->toDateString()) + ->saveFullUrl() + ->removable(false) + ->autoUpload()->retainable(); + $form->switch('is_use'); + $form->dateRange('started_at', 'ended_at', '活动时间'); + $form->multipleSelect('parts', '商品分区关联')->options(ProductPart::all()->pluck('name', 'id'))->customFormat(function ($v) { + if (! $v) { + return []; + } + // 从数据库中查出的二维数组中转化成ID + return array_column($v, 'id'); + }); + $form->hasMany('couponSet', '优惠券关联', function ($form) { + $form->select('coupon_id', '优惠券')->options(function ($id) { + $coupon = Coupon::find($id); + if ($coupon) { + return [$coupon->id => $coupon->name]; + } + })->ajax(admin_route('api.coupons')); + $form->number('qty', '数量'); + })->useTable(); + $form->hasMany('giftSet', '赠品关联', function ($form) { + $form->select('sku_id', '赠品')->options(function ($id) { + $sku = ProductSku::find($id); + if ($sku) { + return [$sku->id => $sku->name]; + } + })->ajax(admin_route('api.product_skus')); + $form->number('qty', '数量'); + })->useTable(); + + $form->showFooter(); + }); + $form->block(6, function (Form\BlockForm $form) { + $form->title('活动内容'); + //优惠券规则 + $form->embeds('coupons_rule', function ($form) { + $form->radio('type')->options([ + 0=>'按订单赠送', + 1=>'其他活动来源', + ])->default(0); + $form->number('value', '门槛'); + // $form->number('qty', '总量')->help('前N单能获得'); + $form->radio('times', '可领次数')->options([ + '0'=>'仅首单', + '1'=>'不限', + ])->default(0); + }); + //赠品规则 + $form->embeds('gifts_rule', function ($form) { + $form->radio('type')->options([ + 0=>'按订单赠送', + 1=>'其他活动来源', + ])->default(0); + $form->number('value', '门槛'); + // $form->number('qty', '总量')->help('前N单能获得'); + $form->radio('times', '可领次数')->options([ + '0'=>'仅首单', + '1'=>'不限', + ])->default(0); + }); + $form->editor('content')->height('600'); + }); + }); + } +} diff --git a/app/Admin/Controllers/DealerChannelSubsidyController.php b/app/Admin/Controllers/DealerChannelSubsidyController.php index 75efaafa..fa9b2ecd 100644 --- a/app/Admin/Controllers/DealerChannelSubsidyController.php +++ b/app/Admin/Controllers/DealerChannelSubsidyController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class DealerChannelSubsidyController extends AdminController { @@ -48,10 +49,12 @@ class DealerChannelSubsidyController extends AdminController $grid->column('fee', '手续费')->prepend('¥')->help('手续费=补贴金额*手续费率'); $grid->column('fee_rate', '手续费率')->append('%'); $grid->column('total_earnings', '总收入')->prepend('¥')->help('总收入=补贴金额-手续费'); - $grid->column('remark', '备注')->display('查看')->modal(function ($modal) { - $modal->title('备注'); - return '
'.nl2br($this->remark).'
'; - }); + $grid->column('remark', '备注')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); + + return "
$card
"; + }); $grid->column('settle_at', '结算时间')->display(function () { return $this->settle_at?->toDateTimeString(); })->sortable(); diff --git a/app/Admin/Controllers/DealerEarningController.php b/app/Admin/Controllers/DealerEarningController.php index c7a32e39..4d194f45 100644 --- a/app/Admin/Controllers/DealerEarningController.php +++ b/app/Admin/Controllers/DealerEarningController.php @@ -5,7 +5,9 @@ namespace App\Admin\Controllers; use App\Admin\Actions\Show\DealerEarningPay; use App\Admin\Renderable\Grid\Filter\DealerEarningStatusIn; use App\Admin\Repositories\DealerEarning; +use App\Admin\Widgets\InfoBox; use App\Enums\DealerEarningStatus; +use App\Enums\PayWay; use App\Models\DealerChannelSubsidyLog; use App\Models\DealerEarning as DealerEarningModel; use App\Models\DealerManagerSalesLog; @@ -32,46 +34,58 @@ class DealerEarningController extends AdminController */ protected function grid() { - $earning = DealerEarning::with(['user', 'payer']); + Admin::style( + <<setResource('dealer-earnings'); - $grid->model()->orderBy('id', 'desc');//默认ID倒叙 + $grid->model()->orderBy('id', 'desc'); //默认ID倒叙 + $grid->column('id')->sortable(); $grid->column('user.phone'); - $grid->column('type_name')->display(function () { - return $this->type_name; - })->label()->filter(Grid\Column\Filter\In::make([ - (new DealerManagerSubsidy())->getMorphClass() =>'管理者补贴', - (new DealerManageSubsidy())->getMorphClass() =>'管理补贴', - (new DealerChannelSubsidyLog())->getMorphClass() =>'渠道补贴', - (new DealerPurchaseSubsidy())->getMorphClass() =>'进货补贴', - ])->setColumnName('earningable_type')); - $grid->column('remark')->display('详情') // 设置按钮名称 - ->expand(function () { - // 这里返回 content 字段内容,并用 Card 包裹起来 - $card = new Card(null, $this->remark); - - return "
$card
"; - }); - // $grid->column('earningable_type'); - // $grid->column('earningable_id'); + $grid->column('user.userInfo.nickname', '昵称'); $grid->column('lvl')->display(function () { return $this->lvl->text(); }); - $grid->column('is_manager')->bool(); + $grid->column('earningable_type', '资金类型')->display(function () { + return $this->earningable_type_text; + })->label([ + (new DealerManageSubsidy())->getMorphClass() => 'primary', + (new DealerManagerSubsidy())->getMorphClass() => 'success', + (new DealerPurchaseSubsidy())->getMorphClass() => 'danger', + (new DealerChannelSubsidyLog())->getMorphClass() => 'warning', + ])->filter(Grid\Column\Filter\In::make([ + (new DealerManagerSubsidy())->getMorphClass() =>'管理者补贴', + (new DealerManageSubsidy())->getMorphClass() => '管理补贴', + (new DealerChannelSubsidyLog())->getMorphClass() => '渠道补贴', + (new DealerPurchaseSubsidy())->getMorphClass() => '进货补贴', + ])); $grid->column('total_amount')->prepend('¥'); $grid->column('fee_rate')->append('%'); $grid->column('fee')->prepend('¥'); $grid->column('total_earnings')->prepend('¥'); - $grid->column('status_format')->display(function ($value) { - return $this->status_format; - })->using([ - -1=> '待结算', - 0 => '待打款', - 1 => '待收款', - 5 => '已完成', - ])->dot()->filter(DealerEarningStatusIn::make([ - -1=> '待结算', + $grid->column('remark')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); + + return "
$card
"; + }); + $grid->column('status', '状态')->display(function ($v) { + if (! $this->isSettled()) { + return "  待结算"; + } + + return "  {$v->text()}"; + })->filter(DealerEarningStatusIn::make([ + -1 => '待结算', 0 => '待打款', 1 => '待收款', 5 => '已完成', @@ -80,45 +94,39 @@ class DealerEarningController extends AdminController $grid->column('payer_id')->display(function () { return $this->payer_id ? $this->payer?->phone : '公司'; }); - // $grid->column('pay_info'); - $grid->column('pay_way')->using(DealerEarningModel::$payWayText)->label([ - DealerEarningModel::PAY_WAY_WALLET=>'warning', - DealerEarningModel::PAY_WAY_OFFLINE=>'danger', - 'none'=>'#b3b9bf', - ]); + $grid->column('pay_way', '支付方式')->display(function ($v) { + return $v?->text(); + })->circleDot(PayWay::colors()); $grid->column('pay_at'); - - // $grid->column('pay_image'); $grid->column('created_at')->sortable(); $grid->actions(function (Grid\Displayers\Actions $actions) { - //如果不是渠道补贴添加详情显示 - // if ($actions->row->earningable_type != (new DealerChannelSubsidyLog())->getMorphClass()) { $actions->append(' 显示   '); - // } }); $grid->header(function ($collection) use ($grid) { - $query = DealerEarningModel::query(); + return tap(new Row(), function ($row) use ($grid) { + $query = DealerEarningModel::query(); - // 拿到表格筛选 where 条件数组进行遍历 - $grid->model()->getQueries()->unique()->each(function ($value) use (&$query) { - if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) { - return; - } + // 拿到表格筛选 where 条件数组进行遍历 + $grid->model()->getQueries()->unique()->each(function ($value) use (&$query) { + if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) { + return; + } - $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); + $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); + }); + + // 查出统计数据 + $totalAmount = (clone $query)->sum('total_amount'); + + $row->column(3, new InfoBox('金额', $totalAmount, 'fa fa-cny')); }); - - // 查出统计数据 - $totalAmount = (clone $query)->sum('total_amount'); - // 自定义组件 - return "
金额:".$totalAmount.' 元
'; }); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->equal('user.phone')->width(3); - $filter->between('settle_at')->dateTime()->width(7); + $filter->between('settle_at')->dateTime()->width(6); }); }); } @@ -134,21 +142,17 @@ class DealerEarningController extends AdminController { return function (Row $row) use ($id) { $row->column(5, function ($column) use ($id) { - $builder = DealerEarning::with(['user', 'payer']); + $builder = DealerEarning::with(['user.userInfo', 'payer']); $column->row(Show::make($id, $builder, function (Show $show) { $show->field('id'); - $show->field('type_name')->as(function () { - return $this->type_name; - })->label(); $show->field('user.phone'); - // $show->field('earningable_type'); - // $show->field('earningable_id'); + $show->field('user.user_info.nickname', '昵称'); $show->field('lvl')->as(function () { return $this->lvl->text(); }); - $show->field('is_manager')->as(function ($val) { - return $val ? '是' : '否'; - }); + $show->field('earningable_type', '资金类型')->as(function () { + return $this->earningable_type_text; + })->label(); $show->field('total_amount')->prepend('¥'); $show->field('fee_rate')->append('%'); $show->field('fee')->prepend('¥'); @@ -156,19 +160,28 @@ class DealerEarningController extends AdminController $show->field('payer.phone', '打款人')->as(function () { return $this->payer_id ? $this->payer?->phone : '公司'; }); - $show->field('pay_way', '支付方式')->using(DealerEarningModel::$payWayText)->dot([ - DealerEarningModel::PAY_WAY_WALLET=>'warning', - DealerEarningModel::PAY_WAY_OFFLINE=>'danger', - 'none'=>'#b3b9bf', - ]); + $show->field('pay_way', '打款方式')->as(function () { + return $this->pay_way?->text(); + })->circleDot(PayWay::colors()); + $show->field('pay_at', '打款时间')->as(function () { + return $this->pay_at?->toDateTimeString(); + }); $show->field('pay_image')->image(); - // $show->field('pay_info'); - $show->field('pay_at'); $show->field('settle_at'); - // $show->field('status'); - $show->field('remark'); - //非(待结算)显示收款人信息 - if ($show->model()->settle_at) { + $show->field('remark')->unescape()->as(function () { + return nl2br($this->remark); + }); + $show->field('status', '状态')->unescape()->as(function () { + if (! $this->isSettled()) { + return "  待结算"; + } + + return "  {$this->status->text()}"; + }); + $show->field('created_at'); + + // 非(待结算)显示收款人信息 + if ($show->model()->isSettled()) { $show->divider('收款信息-银行'); $show->field('bank_user_name', '银行-收款人')->as(function () { $payInfo = $this->getPayInfo(); @@ -213,17 +226,16 @@ class DealerEarningController extends AdminController return $payInfo['wechat']['image'] ?? ''; })->image(); } - $show->field('created_at'); - // $show->field('updated_at'); + $show->panel() ->tools(function (Show\Tools $tools) use ($show) { $tools->disableEdit(); $tools->disableDelete(); - if ($show->model()->status == DealerEarningStatus::Pending && Admin::user()->can('dcat.admin.dealer_earnings.pay')) { - if (!$show->model()->payer_id || $show->model()->payer_id == 1) { - $tools->append(new DealerEarningPay()); - } - } + // if ($show->model()->status == DealerEarningStatus::Pending && Admin::user()->can('dcat.admin.dealer_earnings.pay')) { + // if (!$show->model()->payer_id || $show->model()->payer_id == 1) { + // $tools->append(new DealerEarningPay()); + // } + // } }); })); }); @@ -241,7 +253,6 @@ class DealerEarningController extends AdminController $grid->column('order_completed_at', '结算时间'); $grid->disableCreateButton(); $grid->disableActions(); - // $grid->disablePagination(); }); break; case DealerManageSubsidy::class://管理补贴 diff --git a/app/Admin/Controllers/DealerManageSubsidyController.php b/app/Admin/Controllers/DealerManageSubsidyController.php index dc445223..47255cea 100644 --- a/app/Admin/Controllers/DealerManageSubsidyController.php +++ b/app/Admin/Controllers/DealerManageSubsidyController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class DealerManageSubsidyController extends AdminController { @@ -56,11 +57,12 @@ class DealerManageSubsidyController extends AdminController $grid->column('fee', '手续费')->prepend('¥')->help('手续费=津贴总额*手续费率'); $grid->column('real_amount', '总收入')->prepend('¥')->help('总收入=津贴总额-手续费'); $grid->column('fee_rate', '手续费率')->append('%'); - $grid->column('remark', '备注')->display('查看')->modal(function ($modal) { - $modal->title('备注'); + $grid->column('remark', '备注')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); - return "
".nl2br($this->remark).'
'; - }); + return "
$card
"; + }); $grid->column('status', '状态')->display(function ($v) { return $v->text(); })->circleDot(DealerManageSubsidyStatus::colors()); diff --git a/app/Admin/Controllers/DealerManagerSubsidyController.php b/app/Admin/Controllers/DealerManagerSubsidyController.php index 701e7de5..56c71fa5 100644 --- a/app/Admin/Controllers/DealerManagerSubsidyController.php +++ b/app/Admin/Controllers/DealerManagerSubsidyController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class DealerManagerSubsidyController extends AdminController { @@ -57,11 +58,12 @@ class DealerManagerSubsidyController extends AdminController $grid->column('fee', '手续费')->prepend('¥')->help('手续费=津贴总额*手续费率'); $grid->column('real_amount', '总收入')->prepend('¥')->help('总收入=津贴总额-手续费'); $grid->column('fee_rate', '手续费率')->append('%'); - $grid->column('remark', '备注')->display('查看')->modal(function ($modal) { - $modal->title('备注'); + $grid->column('remark', '备注')->display('查看') // 设置按钮名称 + ->expand(function () { + $card = new Card(null, nl2br($this->remark)); - return "
".nl2br($this->remark).'
'; - }); + return "
$card
"; + }); $grid->column('status', '状态')->display(function ($v) { return $v->text(); })->circleDot(DealerManagerSubsidyStatus::colors()); diff --git a/app/Admin/Controllers/OrderController.php b/app/Admin/Controllers/OrderController.php index cb32b8da..477bbcd9 100644 --- a/app/Admin/Controllers/OrderController.php +++ b/app/Admin/Controllers/OrderController.php @@ -16,6 +16,7 @@ use App\Admin\Renderable\PackageProductSimpleTable; use App\Admin\Repositories\Order; use App\Enums\PayWay; use App\Models\Order as OrderModel; +use App\Models\OrderActivity; use App\Models\OrderLog; use App\Models\OrderPackage; use App\Models\OrderProduct; @@ -322,8 +323,8 @@ class OrderController extends AdminController $builder = OrderProduct::withCount('afterSales')->where('order_id', $id); $productGrid = Grid::make($builder, function (Grid $grid) { $grid->column('name')->display(function ($value) { - if ($this->gift_for_sku_id) { - $value .= '-【赠品】'; + if ($this->isGift()) { + $value = '【赠品】'.$value; } return $value; }); @@ -434,6 +435,19 @@ class OrderController extends AdminController $column->row($packagesBox->collapsable()); $logsBox = Box::make('操作记录', $orderLogoGrid); $column->row($logsBox->collapsable()); + $activityBuilder = OrderActivity::with('activity')->where('order_id', $id); + $activityBox = Box::make('参与活动', Grid::make($activityBuilder, function (Grid $grid) { + $grid->column('activity.title', '活动名称'); + $grid->column('show', '活动详情')->display(function () { + return '查看'; + })->link(function () { + return admin_route('activities.show', ['activity' =>$this->activity_id]); + })->setHeaderAttributes(['style' => 'color:#5b69bc']); + $grid->disableActions(); + $grid->disablePagination(); + $grid->disableRefreshButton(); + })); + $column->row($activityBox->collapsable()); }); }; } diff --git a/app/Admin/Controllers/ProductPartController.php b/app/Admin/Controllers/ProductPartController.php index b62ca71d..5e2a50cd 100644 --- a/app/Admin/Controllers/ProductPartController.php +++ b/app/Admin/Controllers/ProductPartController.php @@ -6,6 +6,7 @@ use App\Admin\Actions\Grid\PartCoupon; use App\Admin\Renderable\ProductPartSkuTable; use App\Admin\Renderable\ProductSkuSimpleTable; use App\Admin\Repositories\ProductPart; +use App\Models\ProductPart as ProductPartModel; use App\Models\ProductSku; use Dcat\Admin\Admin; use Dcat\Admin\Form; @@ -13,6 +14,7 @@ use Dcat\Admin\Grid; use Dcat\Admin\Grid\Column; use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Show; +use Illuminate\Http\Request; class ProductPartController extends AdminController { @@ -61,9 +63,9 @@ class ProductPartController extends AdminController //删除以及自定义操作 $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(Admin::user()->cannot('dcat.admin.product_parts.destroy')); - if (Admin::user()->can('dcat.admin.product_parts.coupons')) { - $actions->append(new PartCoupon()); - } + // if (Admin::user()->can('dcat.admin.product_parts.coupons')) { + // $actions->append(new PartCoupon()); + // } }); /** 查询 **/ @@ -141,4 +143,18 @@ class ProductPartController extends AdminController $form->display('updated_at'); }); } + + public function parts(Request $request) + { + $name = $request->input('q'); + + $query = ProductPartModel::select('id', 'name as text'); + + if ($name) { + $query->where('name', 'like', "%$name%"); + return $query->paginate(null); + } + + return response()->json($query->get()); + } } diff --git a/app/Admin/Controllers/ShippingRuleController.php b/app/Admin/Controllers/ShippingRuleController.php index b556a36c..fa3be93e 100644 --- a/app/Admin/Controllers/ShippingRuleController.php +++ b/app/Admin/Controllers/ShippingRuleController.php @@ -130,7 +130,7 @@ class ShippingRuleController extends AdminController public function destroy($id) { $rule = ShippingRuleModel::findOrFail($id); - $rule->zones()->detach(); + // $rule->zones()->detach(); return parent::destroy($id); } diff --git a/app/Admin/Forms/AfterSaleVerify.php b/app/Admin/Forms/AfterSaleVerify.php index 8dfe6276..9e6c1afe 100644 --- a/app/Admin/Forms/AfterSaleVerify.php +++ b/app/Admin/Forms/AfterSaleVerify.php @@ -60,7 +60,19 @@ class AfterSaleVerify extends Form implements LazyRenderable throw new BizException('退款金额不能大于商品实付金额'); } } - $afterSaleService->verify($afterSale, $input['remarks3'], (int) Arr::get($input, 'amount', 0)); + $num = (int) Arr::get($input, 'num', 0) ?: $afterSale->num; + if ($num > $afterSale->orderProduct->quantity) { + throw new BizException('调整数量不能大于下单数量'); + } + //调整换货,补货时amount问题 + $amount = (int) Arr::get($input, 'amount', 0) ?: $afterSale->amount; + if (in_array($afterSale->type, [Aftersale::TYPE_CHANGE, Aftersale::TYPE_FILL])) { + //如果调整数量, 则同时调整价格 + if ($num != $afterSale->num) { + $amount = bcmul(bcdiv($afterSale->amount, $afterSale->num), $num); + } + } + $afterSaleService->verify($afterSale, $input['remarks3'], $amount, $num); } elseif ($input['state'] == 1) {//需要补充资料 $afterSaleService->backApply($afterSale, $input['remarks1']); } @@ -83,6 +95,8 @@ class AfterSaleVerify extends Form implements LazyRenderable { $id = $this->payload['id'] ?? 0; $afterSale = AfterSale::findOrFail($id); + //可调整数量 + $this->number('num')->value($afterSale->num)->min(1)->max($afterSale->orderProduct->quantity); //获取当前商品可发起的最大数量 if (in_array($afterSale->type, [1, 2])) { $this->currency('amount')->customFormat(function () use ($afterSale) { return bcdiv($afterSale->amount, 100, 2); diff --git a/app/Admin/Renderable/ProductSkuTable.php b/app/Admin/Renderable/ProductSkuTable.php index a4e63ef1..d4d5e660 100644 --- a/app/Admin/Renderable/ProductSkuTable.php +++ b/app/Admin/Renderable/ProductSkuTable.php @@ -90,9 +90,9 @@ class ProductSkuTable extends Grid if (Admin::user()->can('dcat.admin.product_skus.sku_sync_spu')) { $actions->append(new SkuSyncSpu()); } - if (Admin::user()->can('dcat.admin.product_skus.sku_gift')) { - $actions->append(new SkuGift()); - } + // if (Admin::user()->can('dcat.admin.product_skus.sku_gift')) { + // $actions->append(new SkuGift()); + // } } if ($actions->row->verify_state == 1) { if (Admin::user()->can('dcat.admin.product_skus.release_cancel')) { @@ -110,7 +110,7 @@ class ProductSkuTable extends Grid $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->expand(); - $filter->equal('name')->width(3); + $filter->like('name')->width(3); }); }); diff --git a/app/Admin/Repositories/Activity.php b/app/Admin/Repositories/Activity.php new file mode 100644 index 00000000..707eddef --- /dev/null +++ b/app/Admin/Repositories/Activity.php @@ -0,0 +1,16 @@ +isWaitShipping() || $order->isShipping())) { throw new BizException('订单状态异常,无法发货'); } - if (!isset($params['packages']) || count($params['packages']) <= 0) { - throw new BizException('请选择发货商品'); - } foreach ($params['packages'] as $item) { + if (isset($item['_remove_']) && $item['_remove_']) {//如果是已被移除选项则直接移除 + continue; + } if ($item['quantity'] < 1) { throw new BizException('发货数量不能小于1'); } @@ -41,6 +41,9 @@ class OrderPackageService ]; } } + if (count($packageProducts) <= 0) { + throw new BizException('请选择发货商品'); + } foreach ($packageProducts as $product) { $_orderProduct = OrderProduct::where('order_id', $order->id) ->where('after_sale_state', '<>', 1) diff --git a/app/Admin/Services/OrderService.php b/app/Admin/Services/OrderService.php index 5a22d39d..966b2a88 100644 --- a/app/Admin/Services/OrderService.php +++ b/app/Admin/Services/OrderService.php @@ -3,6 +3,7 @@ namespace App\Admin\Services; use App\Enums\PayWay; +use App\Events\OrderPaid; use App\Exceptions\BizException; use App\Models\Order; use App\Models\OrderLog; @@ -44,7 +45,8 @@ class OrderService //操作订单状态-需要调整为统一支付方法 $orderService = new EndpointOrderService(); $orderService->pay($order, PayWay::Offline); - + //注册支付成功事件 + OrderPaid::dispatch($order); //记录操作日志 OrderLog::create([ 'order_id'=> $order->id, diff --git a/app/Admin/routes.php b/app/Admin/routes.php index a679fc24..cb521eb3 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -160,6 +160,8 @@ Route::group([ 'index', ])->names('order_refunds'); + $router->resource('activities', 'ActivityController')->names('activities'); + $router->get('import-job-logs', 'ImportJobLogController@index')->name('import_job_logs.index'); $router->resource('sales-value-logs', 'SalesValueLogController')->only( @@ -215,6 +217,7 @@ Route::group([ $router->get('api/product-categories', 'ProductCategoryController@categories')->name('api.product_categories'); $router->get('api/product-group-details', 'ProductGroupController@details')->name('api.product_group_details'); $router->get('api/product-skus', 'ProductSkuController@skus')->name('api.product_skus'); + $router->get('api/product-parts', 'ProductPartController@parts')->name('api.product_parts'); $router->get('api/coupons', 'CouponController@coupons')->name('api.coupons'); $router->get('api/coupone-send-tasks', 'CouponSendTaskController@tasks')->name('api.coupon_send_tasks'); $router->get('api/orders', 'OrderController@orders')->name('api.orders'); diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php b/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php index 3d1dcb0a..a1a18362 100644 --- a/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php +++ b/app/Endpoint/Api/Http/Controllers/Dealer/FansController.php @@ -3,6 +3,7 @@ namespace App\Endpoint\Api\Http\Controllers\Dealer; use App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod; +use App\Actions\Dealer\CalculateUnsettledPurchaseAmount; use App\Endpoint\Api\Http\Controllers\Controller; use App\Endpoint\Api\Http\Resources\Dealer\DealerFansResource; use App\Helpers\Paginator as PaginatorHelper; @@ -15,18 +16,21 @@ class FansController extends Controller * 统计当前信息 * * @param Request $request + * @param CalculateUnsettledPurchaseAmount $calculateUnsettledPurchaseAmount * @param CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod - * */ public function statistics( Request $request, + CalculateUnsettledPurchaseAmount $calculateUnsettledPurchaseAmount, CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod ) { $user = $request->user(); return response()->json([ 'fans_num'=> $user->fans()->count(), - 'total_purchase_amount'=> $calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer), + // 未完成的业绩 + 'unsettled_purchase_amount' => $calculateUnsettledPurchaseAmount->handle($user->dealer), + 'current_period_purchase_amount'=> $calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer), ]); } diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/ManageSubsidyController.php b/app/Endpoint/Api/Http/Controllers/Dealer/ManageSubsidyController.php new file mode 100644 index 00000000..a0099bc9 --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/Dealer/ManageSubsidyController.php @@ -0,0 +1,34 @@ +user(); + + return response()->json([ + // 未结算的管理津贴 + 'unsettled_manage_subsidies' => $calculateUnsettledManageSubsidies->handle($user->dealer), + // 本期已结算的管理津贴 + 'current_period_manage_subsidies'=> $calculateManageSubsidiesOfCurrentPeriod->handle($user->dealer), + ]); + } +} diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/ManageSubsidyLogController.php b/app/Endpoint/Api/Http/Controllers/Dealer/ManageSubsidyLogController.php new file mode 100644 index 00000000..098742fe --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/Dealer/ManageSubsidyLogController.php @@ -0,0 +1,49 @@ +input('is_completed'); + + $perPage = Paginator::resolvePerPage('per_page', 20, 50); + + $manageSubsidyLogs = DealerManageSubsidyLog::with(['product', 'order']) + ->when($isComplted, function ($query) { + $tz = now(); + + if ($tz->day >= 20) { + // 结算当月20号开始的管理津贴 + $startAt = $tz->copy()->setDay(20)->startOfDay(); + } elseif ($tz->day >= 5) { + // 结算当月5号开始的管理津贴 + $startAt = $tz->copy()->setDay(5)->startOfDay(); + } else { + // 结算上月20号开始的管理津贴 + $startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay(); + } + + $query->where('order_completed_at', '>=', $startAt)->latest('order_completed_at'); + }, function ($query) { + $query->whereNull('order_completed_at')->latest('id'); + }) + ->where('user_id', $request->user()->id) + ->simplePaginate($perPage); + + return DealerManageSubsidyLogResource::collection($manageSubsidyLogs); + } +} diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php b/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php index 57543d3d..5f78bab4 100644 --- a/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php +++ b/app/Endpoint/Api/Http/Controllers/Dealer/UserController.php @@ -2,7 +2,10 @@ namespace App\Endpoint\Api\Http\Controllers\Dealer; +use App\Actions\Dealer\CalculateManageSubsidiesOfCurrentPeriod; use App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod; +use App\Actions\Dealer\CalculateUnsettledManageSubsidies; +use App\Actions\Dealer\CalculateUnsettledPurchaseAmount; use App\Endpoint\Api\Http\Controllers\Controller; use App\Endpoint\Api\Http\Resources\Dealer\DealerResource; use App\Endpoint\Api\Http\Resources\Dealer\UserInfoResource; @@ -14,22 +17,39 @@ class UserController extends Controller * 个人信息 * * @param \Illuminate\Http\Request $request + * @param \App\Actions\Dealer\CalculateUnsettledManageSubsidies $calculateNotCompletedManageSubsidies + * @param \App\Actions\Dealer\CalculateManageSubsidiesOfCurrentPeriod $calculateManageSubsidiesOfCurrentPeriod + * @param \App\Actions\Dealer\CalculateUnsettledPurchaseAmount $calculateNotCompletedPurchaseAmount * @param \App\Actions\Dealer\CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod * @return \Illuminate\Http\JsonResponse */ public function show( Request $request, + CalculateUnsettledManageSubsidies $calculateUnsettledManageSubsidies, + CalculateManageSubsidiesOfCurrentPeriod $calculateManageSubsidiesOfCurrentPeriod, + CalculateUnsettledPurchaseAmount $calculateUnsettledPurchaseAmount, CalculatePurchaseAmountOfCurrentPeriod $calculatePurchaseAmountOfCurrentPeriod ) { $user = $request->user(); - $dealer = DealerResource::make($user->dealer)->toArray($request); - $dealer['current_purchase_amount'] = $calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer); + $user->dealer->setRelation('userInfo', $user->userInfo); + + $dealerResource = DealerResource::make($user->dealer)->toArray($request); + $dealerResource['guanli_values'] = bcadd( + $calculateUnsettledManageSubsidies->handle($user->dealer), + $calculateManageSubsidiesOfCurrentPeriod->handle($user->dealer), + 2 + ); + $dealerResource['total_purchase_amount'] = bcadd( + $calculateUnsettledPurchaseAmount->handle($user->dealer), + $calculatePurchaseAmountOfCurrentPeriod->handle($user->dealer), + 2 + ); return response()->json([ 'id' => $user->id, 'phone' => $user->phone, - 'dealer'=> $dealer, + 'dealer'=> $dealerResource, 'dealer_wallet' => $user->dealerWallet?->balance, 'user_info' => UserInfoResource::make($user->userInfo), 'has_password' => (bool) $user->wallet?->password, diff --git a/app/Endpoint/Api/Http/Controllers/UserController.php b/app/Endpoint/Api/Http/Controllers/UserController.php new file mode 100644 index 00000000..0945124f --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/UserController.php @@ -0,0 +1,28 @@ +first(); + + if ($user === null) { + throw new BizException('用户未找到'); + } + + return response()->json([ + 'nickname' => (string) $user->userInfo->nickname, + ]); + } +} diff --git a/app/Endpoint/Api/Http/Resources/Dealer/DealerEarningResource.php b/app/Endpoint/Api/Http/Resources/Dealer/DealerEarningResource.php index fa00dfa2..df0d5b12 100644 --- a/app/Endpoint/Api/Http/Resources/Dealer/DealerEarningResource.php +++ b/app/Endpoint/Api/Http/Resources/Dealer/DealerEarningResource.php @@ -17,7 +17,7 @@ class DealerEarningResource extends JsonResource $purchaseSubsidyLogs = $this->getPurchaseSubsidyLogs(); return [ 'id' => $this->id, - 'type' => $this->type_name, + 'type' => $this->earningable_type_text, 'created_at' => $this->created_at->toDateTimeString(), 'settle_at' => $this->settle_at?->toDateTimeString(), 'total_amount' => $this->total_amount, diff --git a/app/Endpoint/Api/Http/Resources/Dealer/DealerManageSubsidyLogResource.php b/app/Endpoint/Api/Http/Resources/Dealer/DealerManageSubsidyLogResource.php new file mode 100644 index 00000000..3f2e7542 --- /dev/null +++ b/app/Endpoint/Api/Http/Resources/Dealer/DealerManageSubsidyLogResource.php @@ -0,0 +1,24 @@ + OrderSimpleResource::make($this->whenLoaded('order')), + 'product' => ProductSimpleResource::make($this->whenLoaded('product')), + 'sales_volume' => $this->sales_volume, + 'total_amount' => $this->total_amount, + ]; + } +} diff --git a/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php b/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php index b1bce8f2..2297d458 100644 --- a/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php +++ b/app/Endpoint/Api/Http/Resources/Dealer/DealerResource.php @@ -23,7 +23,6 @@ class DealerResource extends JsonResource 'team_sales_value' => $this->team_sales_value, // 团队业绩 'pay_info'=>$this->pay_info ?: null, 'can_withdraw'=> $this->canWithdraw(), - 'total_purchase_amount'=> bcdiv($this->total_purchase_amount, '1', 2), // 总进货业绩 ]; } } diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index 0a994d12..85e53985 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -186,6 +186,8 @@ Route::group([ Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']); Route::get('order/orders/{order}/packages', [OrderController::class, 'orderPackages']); Route::get('order/orders/{package}/shipping-info', [OrderController::class, 'shippingInfo']); + + Route::get('users/{phone}', [\App\Endpoint\Api\Http\Controllers\UserController::class, 'show']); }); Route::group([ @@ -300,6 +302,10 @@ Route::group([ Route::get('purchase-subsidies', [Dealer\PurchaseSubsidyController::class, 'index']); // 进货补贴流水 Route::get('purchase-subsidies/{purchase_subsidy}/logs', [Dealer\PurchaseSubsidyLogController::class, 'index']); + // 管理津贴统计 + Route::get('manage-subsidy-statistics', [Dealer\ManageSubsidyController::class, 'statistics']); + // 管理津贴流水 + Route::get('manage-subsidy-logs', [Dealer\ManageSubsidyLogController::class, 'index']); // 云仓库 Route::get('delivery-bills', [Dealer\DealerDeliveryBillController::class, 'index']); diff --git a/app/Listeners/SendCoupons.php b/app/Listeners/SendCoupons.php index b9ed978f..efcf22bf 100644 --- a/app/Listeners/SendCoupons.php +++ b/app/Listeners/SendCoupons.php @@ -3,7 +3,12 @@ namespace App\Listeners; use App\Events\OrderPaid; +use App\Models\ActivityProductPart; +use App\Models\OrderActivity; +use App\Models\ProductPartSku; +use App\Models\UserCoupon; use App\Services\CouponService; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; use Throwable; @@ -34,23 +39,62 @@ class SendCoupons // 处理购买分区商品送券 try { DB::beginTransaction(); - - $products = $order->products()->with('sku.parts')->get(); - - // 整理订单商品的分区 - $inValidParts = []; - - foreach ($products->pluck('sku.parts') as $parts) { - foreach ($parts as $part) { - if ($part->is_show) { - // 分区去重 - $inValidParts[$part->id] = $part; - } + $products = $order->products()->where('is_gift', false)->get()->toArray(); + $_products = array_column($products, 'total_amount', 'sku_id'); + $partSkus = ProductPartSku::with('part')->whereIn('sku_id', array_keys($_products))->get(); + foreach ($partSkus as $partSku) { + if ($partSku->part?->is_show) { + $inValidParts[$partSku->part_id][$partSku->sku_id] = $_products[$partSku->sku_id] ?? 0; + // if (isset($inValidParts[$partSku->part_id])) { + // $inValidParts[$partSku->part_id] += $_products[$partSku->sku_id] ?? 0; + // } else { + // $inValidParts[$partSku->part_id] = $_products[$partSku->sku_id] ?? 0; + // } } } + // dd($inValidParts); + //根据分区获取活动 + $partActivities = ActivityProductPart::with(['activity', 'activity.coupons'])->whereHas('activity', function (Builder $query) { + return $query->where('is_use', true)->where('started_at', '<', now())->where('ended_at', '>=', now()); + })->whereIn('part_id', array_keys($inValidParts))->get(); + $activityArr = []; + $partActivities->each(function ($item) use (&$activityArr) { + $activityArr[$item->activity_id][] = $item->part_id; + }); + $sendedActivities = []; + foreach ($partActivities as $partActivity) { + //判断该活动是否已处理 + if (in_array($partActivity->activity_id, $sendedActivities)) { + continue; + } + $sendedActivities[] = $partActivity->activity_id; + //获取活动的赠品赠送规则 + $_couponsRule = $partActivity->activity?->coupons_rule; + //判断是否首单:times=0为仅首单赠送, 1为不限 + if ($_couponsRule['times'] == 0 && UserCoupon::where([ + 'activity_id' => $partActivity->activity_id, + 'user_id' => $order->user_id, + ])->exists()) { + continue;//提前结束本次循环 + } + //判断是否满足门槛 + $inValidGoods = []; + foreach ($inValidParts as $key => $part) { + if (in_array($key, $activityArr[$partActivity->activity_id])) { + $inValidGoods = array_merge($inValidGoods, $part); + } + } + if (bcmul($_couponsRule['value'], 100) > array_sum($inValidGoods)) { + continue;//提前结束本次循环 + } + //赠券 + (new CouponService())->receiveActivityCoupons($partActivity->activity, $order->user); - foreach ($inValidParts as $inValidPart) { - $this->couponService->receivePartCoupon($inValidPart, $order->user); + //记录订单参与活动信息 + OrderActivity::firstOrCreate([ + 'order_id'=>$order->id, + 'activity_id'=>$partActivity->activity_id, + ]); } DB::commit(); diff --git a/app/Models/Activity.php b/app/Models/Activity.php new file mode 100644 index 00000000..92df503f --- /dev/null +++ b/app/Models/Activity.php @@ -0,0 +1,49 @@ + 'bool', + 'coupons_rule'=> JsonArray::class, + 'gifts_rule'=> JsonArray::class, + ]; + + protected $fillable = [ + 'title', 'cover', 'content', 'is_use', 'coupons_rule', 'gifts_rule', + ]; + + public function couponSet() + { + return $this->hasMany(ActivityCoupon::class); + } + + public function giftSet() + { + return $this->hasMany(ActivityGift::class); + } + + public function parts() + { + return $this->belongsToMany(ProductPart::class, 'activity_product_parts', 'activity_id', 'part_id'); + } + + public function coupons() + { + return $this->belongsToMany(Coupon::class, 'activity_coupons', 'activity_id', 'coupon_id')->withPivot('qty'); + } + + public function gifts() + { + return $this->belongsToMany(ProductSku::class, 'activity_gifts', 'activity_id', 'sku_id')->withPivot('qty'); + } +} diff --git a/app/Models/ActivityCoupon.php b/app/Models/ActivityCoupon.php new file mode 100644 index 00000000..d6bd6e35 --- /dev/null +++ b/app/Models/ActivityCoupon.php @@ -0,0 +1,17 @@ +belongsTo(Part::class, 'part_id'); + } + + public function activity() + { + return $this->belongsTo(Activity::class, 'activity_id'); + } +} diff --git a/app/Models/Dealer.php b/app/Models/Dealer.php index 5acc6e50..58f2cc0c 100644 --- a/app/Models/Dealer.php +++ b/app/Models/Dealer.php @@ -6,7 +6,6 @@ use App\Casts\JsonArray; use App\Enums\DealerLvl; use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Facades\Cache; class Dealer extends Model { @@ -95,43 +94,6 @@ class Dealer extends Model return $this->lvl->text(); } - /** - * 获取已结算的进货业绩 - * - * @return string - */ - public function getTotalPurchaseAmountAttribute() - { - return Cache::remember('dealer_total_purchase_amount:'.$this->user_id, 3600, function () { - return $this->purchaseSubsidies()->sum('total_purchase_amount'); - }); - } - - /** - * 实时管理津贴 - * - * @return void - */ - public function getCalculateTotalAmountAttribute() - { - $tz = now(); - - if ($tz->day >= 20) { - // 结算当月20号开始的管理津贴 - $startAt = $tz->copy()->setDay(20)->startOfDay(); - } elseif ($tz->day >= 5) { - // 结算当月5号开始的管理津贴 - $startAt = $tz->copy()->setDay(5)->startOfDay(); - } else { - // 结算上月20号开始的管理津贴 - $startAt = $tz->copy()->subMonthNoOverflow()->setDay(20)->startOfDay(); - } - - return DealerManageSubsidyLog::where( - 'user_id', $this->user_id - )->where('order_completed_at', '>=', $startAt)->sum('total_amount'); - } - /** * 确认此经销商是否是金牌经销商 * diff --git a/app/Models/DealerEarning.php b/app/Models/DealerEarning.php index b53befe9..efc2e305 100644 --- a/app/Models/DealerEarning.php +++ b/app/Models/DealerEarning.php @@ -5,9 +5,11 @@ namespace App\Models; use App\Casts\JsonArray; use App\Enums\DealerEarningStatus; use App\Enums\DealerLvl; +use App\Enums\PayWay; use Dcat\Admin\Traits\HasDateTimeFormatter; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\Relation; class DealerEarning extends Model { @@ -24,6 +26,7 @@ class DealerEarning extends Model protected $casts = [ 'lvl' => DealerLvl::class, 'status' => DealerEarningStatus::class, + 'pay_way' => PayWay::class, 'pay_at' => 'datetime', 'settle_at'=> 'datetime', 'pay_info' => JsonArray::class, @@ -180,25 +183,32 @@ class DealerEarning extends Model return $this->settle_at ? $this->status->value : -1; } - public function getTypeNameAttribute() + public function getEarningableTypeTextAttribute() { - $name = '未知'; - switch ($this->attributes['earningable_type']) { - case (new DealerManagerSubsidy())->getMorphClass(): - $name = '管理者津贴'; + $text = '其它'; + + switch (Relation::getMorphedModel($this->attributes['earningable_type'])) { + // 管理津贴 + case DealerManageSubsidy::class: + $text = '管理津贴'; break; - case (new DealerManageSubsidy())->getMorphClass(): - $name = '管理津贴'; + + // 管理者津贴 + case DealerManagerSubsidy::class: + $text = '管理者津贴'; break; - case (new DealerChannelSubsidyLog())->getMorphClass(): - $name = '渠道补贴'; + + // 进货津贴 + case DealerPurchaseSubsidy::class: + $text = '进货补贴'; break; - default: - $name = '进货补贴'; + + case DealerChannelSubsidyLog::class: + $text = '渠道补贴'; break; } - return $name; + return $text; } /** diff --git a/app/Models/OrderActivity.php b/app/Models/OrderActivity.php new file mode 100644 index 00000000..66c0b986 --- /dev/null +++ b/app/Models/OrderActivity.php @@ -0,0 +1,22 @@ +belongsTo(Activity::class); + } +} diff --git a/app/Models/OrderActivityInfo.php b/app/Models/OrderActivityInfo.php new file mode 100644 index 00000000..f5ea351b --- /dev/null +++ b/app/Models/OrderActivityInfo.php @@ -0,0 +1,14 @@ + 'json', + 'is_gift'=>'boolean', ]; /** @@ -38,6 +39,8 @@ class OrderProduct extends Model 'after_sale_state', 'after_expire_at', 'remain_quantity', + 'is_gift', + 'activity_id', ]; public function packageProducts() @@ -97,7 +100,7 @@ class OrderProduct extends Model */ public function isGift() { - return $this->gift_for_sku_id !== null; + return $this->gift_for_sku_id !== null || $this->is_gift == true; } /** diff --git a/app/Models/UserCoupon.php b/app/Models/UserCoupon.php index 3b80e851..ece65ab8 100644 --- a/app/Models/UserCoupon.php +++ b/app/Models/UserCoupon.php @@ -42,6 +42,7 @@ class UserCoupon extends Model 'is_use', 'created_at', 'updated_at', + 'activity_id', ]; /** diff --git a/app/Services/AfterSaleService.php b/app/Services/AfterSaleService.php index ca6319e9..f06b0af4 100644 --- a/app/Services/AfterSaleService.php +++ b/app/Services/AfterSaleService.php @@ -150,15 +150,16 @@ class AfterSaleService * @param string $remarks * @return void */ - public function verify(AfterSale $afterSale, string $remarks, int $amount) + public function verify(AfterSale $afterSale, string $remarks, int $amount, ?int $num = null) { if ($this->isWaitVerify($afterSale)) { switch ($afterSale->type) { case AfterSale::TYPE_REFUND_AND_RETURN: $afterSale->update([ - 'amount' => $amount, - 'state' => $afterSale::STATE_AGREE, - 'remarks' => $remarks, + 'num' => $num, + 'amount' => $amount, + 'state' => $afterSale::STATE_AGREE, + 'remarks' => $remarks, ]); AfterSaleLog::create([ 'after_sale_id' => $afterSale->id, @@ -168,9 +169,10 @@ class AfterSaleService break; case AfterSale::TYPE_REFUND: $afterSale->update([ - 'amount' => $amount, - 'state' => $afterSale::STATE_AGREE, - 'remarks' => $remarks, + 'num' => $num, + 'amount' => $amount, + 'state' => $afterSale::STATE_AGREE, + 'remarks' => $remarks, ]); AfterSaleLog::create([ 'after_sale_id' => $afterSale->id, @@ -180,8 +182,10 @@ class AfterSaleService break; case AfterSale::TYPE_CHANGE: $afterSale->update([ - 'state' => $afterSale::STATE_AGREE, - 'remarks' => $remarks, + 'num' => $num, + 'amount' => $amount, + 'state' => $afterSale::STATE_AGREE, + 'remarks' => $remarks, ]); AfterSaleLog::create([ 'after_sale_id' => $afterSale->id, @@ -191,8 +195,10 @@ class AfterSaleService break; case AfterSale::TYPE_FILL: $afterSale->update([ - 'state' => $afterSale::STATE_AGREE, - 'remarks' => $remarks, + 'num' => $num, + 'amount' => $amount, + 'state' => $afterSale::STATE_AGREE, + 'remarks' => $remarks, ]); AfterSaleLog::create([ 'after_sale_id' => $afterSale->id, @@ -470,6 +476,8 @@ class AfterSaleService OrderProduct::create([ 'user_id' => $changeOrder->user_id, 'order_id' => $changeOrder->id, + 'is_gift' => $afterSaleProduct->is_gift, + 'activity_id' => $afterSaleProduct->activity_id, 'gift_for_sku_id' => $afterSaleProduct->gift_for_sku_id, 'spu_id' => $afterSaleProduct->spu_id, 'sku_id' => $afterSaleProduct->sku_id, diff --git a/app/Services/CouponService.php b/app/Services/CouponService.php index ce428aff..dcae3adb 100644 --- a/app/Services/CouponService.php +++ b/app/Services/CouponService.php @@ -2,11 +2,13 @@ namespace App\Services; +use App\Models\Activity; use App\Models\Coupon; use App\Models\ProductPart; use App\Models\ReceivePartCouponLog; use App\Models\User; use App\Models\UserCoupon; +use Illuminate\Database\QueryException; class CouponService { @@ -84,6 +86,23 @@ class CouponService ReceivePartCouponLog::create(['user_id'=>$user->id, 'part_id'=>$part->id]); } + /** + * 根据活动领取优惠券 + * + * @return void + */ + public function receiveActivityCoupons(Activity $activity, User $user) + { + $someCoupons = []; + foreach ($activity->coupons as $coupon) { + $someCoupons[] = [ + 'coupon'=>$coupon, + 'num'=>$coupon->pivot->qty, + ]; + } + $this->receiveSomeCoupons($user, $someCoupons, $activity->id); + } + /** * 领取一批券 * @@ -91,20 +110,30 @@ class CouponService * @param array $coupons * @return void */ - protected function receiveSomeCoupons(User $user, array $coupons) + protected function receiveSomeCoupons(User $user, array $coupons, ?int $activityId = null) { $userCoupons = []; - foreach ($coupons as $coupon) { - for ($i=0; $i<$coupon['num']; $i++) { - $userCoupons[] = self::createUserCouponData($user->id, $coupon['coupon']); - } + foreach ($coupons as $key=> $coupon) { //更新对应券发送量,余量; - $coupon['coupon']->increment('sent', $coupon['num']); - if ($coupon['coupon']->limit > 0) {//限量才减少余量 - $coupon['coupon']->decrement('stock', $coupon['num']); + try { + $canSent = true; + if ($coupon['coupon']->limit > 0) {//限量才减少余量 + $coupon['coupon']->decrement('stock', $coupon['num']); + } + } catch (QueryException $e) { + if (strpos($e->getMessage(), 'Numeric value out of range') !== false) { + $canSent = false; + } else { + throw new $e(); + } + } + if ($canSent) { + for ($i = 0; $i < $coupon['num']; $i++) { + $userCoupons[] = self::createUserCouponData($user->id, $coupon['coupon'], $activityId ?? null); + } + $coupon['coupon']->increment('sent', $coupon['num']); } } - UserCoupon::insert($userCoupons); } @@ -126,7 +155,7 @@ class CouponService * * @return array */ - public static function createUserCouponData(int $userId, Coupon $coupon) + public static function createUserCouponData(int $userId, Coupon $coupon, ?int $activityId = null) { //如果userId小于等于0,直接退出 if ($userId <= 0) { @@ -150,6 +179,7 @@ class CouponService 'use_end_at' => $useEndAt, 'created_at' => now(), 'updated_at' => now(), + 'activity_id' => $activityId ?? null, ]; } } diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php index 99fa04cf..cda3edac 100644 --- a/app/Services/OrderService.php +++ b/app/Services/OrderService.php @@ -10,16 +10,20 @@ use App\Enums\SocialiteType; use App\Enums\WxpayTradeType; use App\Exceptions\BizException; use App\Exceptions\ShippingNotSupportedException; +use App\Models\ActivityProductPart; use App\Models\DistributionPreIncomeJob; use App\Models\Order; +use App\Models\OrderActivity; use App\Models\OrderProduct; use App\Models\ProductGift; +use App\Models\ProductPartSku; use App\Models\ProductSku; use App\Models\ShippingAddress; use App\Models\SocialiteUser; use App\Models\User; use App\Models\UserCoupon; use App\Services\Payment\WxpayService; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\DB; @@ -240,6 +244,8 @@ class OrderService $orderProducts[] = [ 'gift_for_sku_id' => null, + 'activity_id'=>null, + 'is_gift'=> false, 'user_id' => $order->user_id, 'order_id' => $order->id, 'spu_id' => $sku->spu_id, @@ -261,42 +267,19 @@ class OrderService 'updated_at' => $order->updated_at, ]; - // 将赠品加入订单中 - $gifts = $this->deductProduct($sku, $qty); - - foreach ($gifts as $gift) { - $giftSku = $gift['sku']; - - $orderProducts[] = [ - 'gift_for_sku_id' => $sku->id, - 'user_id' => $order->user_id, - 'order_id' => $order->id, - 'spu_id' => $giftSku->spu_id, - 'sku_id' => $giftSku->id, - 'category_id' => $giftSku->category_id, - 'name' => $giftSku->name, - 'specs' => json_encode($giftSku->specs), - 'cover' => $giftSku->cover, - 'weight' => $giftSku->weight, - 'sell_price' => $giftSku->sell_price, - 'vip_price' => $giftSku->vip_price, - 'sales_value' => 0, // 赠品不算销售值 - 'quantity' => $gift['num'], - 'remain_quantity' => $gift['num'], // 剩余发货数量 - 'coupon_discount_amount' => 0, - 'vip_discount_amount' => 0, - 'total_amount' => 0, - 'created_at' => $order->created_at, - 'updated_at' => $order->updated_at, - ]; - } + // 扣除商品库存 + $this->deductProduct($sku, $qty); } + //根据订单参加的活动添加赠品; + $gifts = $this->activityGifts($order, $orderProducts); + $orderProducts = array_merge($orderProducts, $gifts); OrderProduct::insert($orderProducts); } /** - * 扣商品的库存和赠品数量 + * 扣商品的库存 + * 03-04取消根据商品赠送赠品 * * @param \App\Models\ProductSku $sku * @param int $qty @@ -312,16 +295,16 @@ class OrderService $sku->spu?->increment('sales', $qty); - // 如果是因为赠品库存不足引起的异常,则需重试 - do { - try { - return $this->deductGifts($sku, $qty); - } catch (QueryException $e) { - if (strpos($e->getMessage(), 'Numeric value out of range') === false) { - throw $e; - } - } - } while (true); + // // 如果是因为赠品库存不足引起的异常,则需重试 + // do { + // try { + // return $this->deductGifts($sku, $qty); + // } catch (QueryException $e) { + // if (strpos($e->getMessage(), 'Numeric value out of range') === false) { + // throw $e; + // } + // } + // } while (true); } /** @@ -382,6 +365,114 @@ class OrderService return $gifts; } + /** + * Undocumented function + * + * @param Order $order + * @param [type] $products + * @return array $gifts + */ + protected function activityGifts(Order $order, $products) + { + $_products = array_column($products, 'total_amount', 'sku_id'); + + $inValidParts = []; + // 整理订单商品的分区 + $partSkus = ProductPartSku::with('part')->whereIn('sku_id', array_keys($_products))->get(); + foreach ($partSkus as $partSku) { + if ($partSku->part?->is_show) { + $inValidParts[$partSku->part_id][$partSku->sku_id] = $_products[$partSku->sku_id] ?? 0; + // if (isset($inValidParts[$partSku->part_id])) { + // $inValidParts[$partSku->part_id] += $_products[$partSku->sku_id] ?? 0; + // } else { + // $inValidParts[$partSku->part_id] = $_products[$partSku->sku_id] ?? 0; + // } + } + } + // dd($inValidParts); + //根据分区获取活动 + $partActivities = ActivityProductPart::with(['activity', 'activity.gifts'])->whereHas('activity', function (Builder $query) { + return $query->where('is_use', true)->where('started_at', '<', now())->where('ended_at', '>=', now()); + })->whereIn('part_id', array_keys($inValidParts))->get(); + $activityArr = []; + $partActivities->each(function ($item) use (&$activityArr) { + $activityArr[$item->activity_id][] = $item->part_id; + }); + $giveGifts = []; + $sendedActivities = []; + foreach ($partActivities as $partActivity) { + //判断该活动是否已处理 + if (in_array($partActivity->activity_id, $sendedActivities)) { + continue; + } + $sendedActivities[] = $partActivity->activity_id; + //获取活动的赠品赠送规则 + $_giftsRule = $partActivity->activity?->gifts_rule; + //判断是否首单:times=0为仅首单赠送, 1为不限 + if ($_giftsRule['times'] == 0 && OrderProduct::where([ + 'activity_id' => $partActivity->activity_id, + 'user_id' => $order->user_id, + ])->whereHas('order', function ($query) {//除取消外的订单 + return $query->where('status', '<>', Order::STATUS_CANCELLED); + })->exists()) { + continue;//提前结束本次循环 + } + //判断是否满足门槛 + $inValidGoods = []; + foreach ($inValidParts as $key => $part) { + if (in_array($key, $activityArr[$partActivity->activity_id])) { + $inValidGoods = array_merge($inValidGoods, $part); + } + } + if (bcmul($_giftsRule['value'], 100) > array_sum($inValidGoods)) { + continue;//提前结束本次循环 + } + //返回赠品 + $_gifts = $partActivity->activity->gifts; + $_num = 0; + foreach ($_gifts as $_gift) { + if (($_gift->stock - $_gift->pivot->qty) >= 0) { + $_num += $_gift->pivot->qty; + $giveGifts[] = [ + 'gift_for_sku_id'=> null, + 'user_id' => $order->user_id, + 'order_id' => $order->id, + 'spu_id' => $_gift->spu_id, + 'sku_id' => $_gift->id, + 'category_id' => $_gift->category_id, + 'name' => $_gift->name, + 'specs' => json_encode($_gift->specs), + 'cover' => $_gift->cover, + 'weight' => $_gift->weight, + 'sell_price' => $_gift->sell_price, + 'vip_price' => $_gift->vip_price, + 'sales_value' => 0, // 赠品不算销售值 + 'quantity' => $_gift->pivot->qty, + 'remain_quantity' => $_gift->pivot->qty, // 剩余发货数量 + 'coupon_discount_amount' => 0, + 'vip_discount_amount' => 0, + 'total_amount' => 0, + 'created_at' => $order->created_at, + 'updated_at' => $order->updated_at, + 'is_gift'=> true, + 'activity_id'=>$partActivity->activity_id, + ]; + // 扣除商品库存 + $this->deductProduct($_gift, $_gift->pivot->qty); + } + } + if ($_num > 0) { + //记录订单参与活动信息 + OrderActivity::firstOrCreate([ + 'order_id'=>$order->id, + 'activity_id'=>$partActivity->activity_id, + ]); + } + } + + return $giveGifts; + } + /** * 确认快速下单 * @@ -923,21 +1014,32 @@ class OrderService continue; } - $gift = ProductGift::where('sku_id', $product->gift_for_sku_id) - ->where('gift_sku_id', $product->sku_id) - ->first(); + //原赠品 + if ($product->gift_for_sku_id) { + $gift = ProductGift::where('sku_id', $product->gift_for_sku_id) + ->where('gift_sku_id', $product->sku_id) + ->first(); - if ($gift === null) { + if ($gift === null) { + continue; + } + + if ($gift->isLimit()) { + $gift->update([ + 'remaining' => DB::raw("remaining+{$product->quantity}"), + 'sent' => DB::raw("sent-{$product->quantity}"), + ]); + } else { + $gift->decrement('sent', $product->quantity); + } continue; - } - - if ($gift->isLimit()) { - $gift->update([ - 'remaining' => DB::raw("remaining+{$product->quantity}"), - 'sent' => DB::raw("sent-{$product->quantity}"), + } else {//新赠品, 则直接增加商品库存 + $product->spu?->increment('sales', -$product->quantity); + $product->sku?->update([ + 'stock' => DB::Raw("stock + {$product->quantity}"), + 'sales' => DB::Raw("sales - {$product->quantity}"), ]); - } else { - $gift->decrement('sent', $product->quantity); + continue; } } diff --git a/database/migrations/2022_03_03_103127_create_activities_table.php b/database/migrations/2022_03_03_103127_create_activities_table.php new file mode 100644 index 00000000..d3cc430f --- /dev/null +++ b/database/migrations/2022_03_03_103127_create_activities_table.php @@ -0,0 +1,39 @@ +id(); + $table->string('title')->comment('标题'); + $table->string('cover')->nullable()->comment('封面图'); + $table->text('content')->nullable()->comment('内容'); + $table->unsignedTinyInteger('is_use')->default(0)->comment('是否上架'); + $table->timestamp('started_at')->nullable()->comment('开始时间'); + $table->timestamp('ended_at')->nullable()->comment('结束时间'); + $table->json('coupons_rule')->nullable()->comment('优惠券规则'); + $table->json('gifts_rule')->nullable()->comment('赠品规则'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('activities'); + } +} diff --git a/database/migrations/2022_03_03_110558_create_activity_product_parts_table.php b/database/migrations/2022_03_03_110558_create_activity_product_parts_table.php new file mode 100644 index 00000000..84f8ab8f --- /dev/null +++ b/database/migrations/2022_03_03_110558_create_activity_product_parts_table.php @@ -0,0 +1,34 @@ +id(); + $table->unsignedBigInteger('activity_id')->comment('活动ID'); + $table->unsignedBigInteger('part_id')->comment('商品分区ID'); + + $table->index(['activity_id', 'part_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('activity_product_parts'); + } +} diff --git a/database/migrations/2022_03_03_110634_create_activity_coupons_table.php b/database/migrations/2022_03_03_110634_create_activity_coupons_table.php new file mode 100644 index 00000000..9838f6c6 --- /dev/null +++ b/database/migrations/2022_03_03_110634_create_activity_coupons_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('activity_id')->comment('活动ID'); + $table->unsignedBigInteger('coupon_id')->comment('优惠券ID'); + $table->unsignedInteger('qty')->comment('数量'); + + $table->index(['activity_id', 'coupon_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('activity_coupons'); + } +} diff --git a/database/migrations/2022_03_03_110649_create_activity_gifts_table.php b/database/migrations/2022_03_03_110649_create_activity_gifts_table.php new file mode 100644 index 00000000..f2545c32 --- /dev/null +++ b/database/migrations/2022_03_03_110649_create_activity_gifts_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('activity_id')->comment('活动ID'); + $table->unsignedBigInteger('sku_id')->comment('赠品ID'); + $table->unsignedInteger('qty')->comment('数量'); + + $table->index(['activity_id', 'sku_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('activity_gifts'); + } +} diff --git a/database/migrations/2022_03_17_111153_add_is_gift_to_order_products_table.php b/database/migrations/2022_03_17_111153_add_is_gift_to_order_products_table.php new file mode 100644 index 00000000..4b379634 --- /dev/null +++ b/database/migrations/2022_03_17_111153_add_is_gift_to_order_products_table.php @@ -0,0 +1,35 @@ +unsignedTinyInteger('is_gift')->nullable()->default(0)->comment('是否赠品'); + $table->unsignedBigInteger('activity_id')->nullable()->comment('参与活动ID'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('order_products', function (Blueprint $table) { + // + $table->dropColumn(['is_gift', 'activity_id']); + }); + } +} diff --git a/database/migrations/2022_03_17_145215_add_activity_id_to_user_coupons_table.php b/database/migrations/2022_03_17_145215_add_activity_id_to_user_coupons_table.php new file mode 100644 index 00000000..f1ed1f77 --- /dev/null +++ b/database/migrations/2022_03_17_145215_add_activity_id_to_user_coupons_table.php @@ -0,0 +1,34 @@ +unsignedBigInteger('activity_id')->nullable()->comment('参与活动ID'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('user_coupons', function (Blueprint $table) { + // + $table->dropColumn(['activity_id']); + }); + } +} diff --git a/database/migrations/2022_03_18_094929_create_order_activities_table.php b/database/migrations/2022_03_18_094929_create_order_activities_table.php new file mode 100644 index 00000000..8ee4ee31 --- /dev/null +++ b/database/migrations/2022_03_18_094929_create_order_activities_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('order_id'); + $table->unsignedBigInteger('activity_id'); + $table->timestamps(); + + $table->unique(['order_id', 'activity_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_activities'); + } +} diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index dc141fb4..60dc9814 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -119,6 +119,11 @@ class AdminMenuSeeder extends Seeder 'icon' => 'fa fa-paw', 'uri'=>'', 'children'=>[ + [ + 'title' => '活动管理', + 'icon'=>'', + 'uri' =>'activities', + ], [ 'title' =>'商品分区', 'icon' => '', @@ -294,6 +299,11 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'dealer-users', ], + [ + 'title' =>'经销商资金明细', + 'icon'=>'', + 'uri' => 'dealer-earnings', + ], [ 'title' =>'商品管理', 'icon' => '', @@ -314,26 +324,15 @@ class AdminMenuSeeder extends Seeder 'icon' => '', 'uri' => 'dealer-delivery-bills', ], - // [ - // 'title' =>'用户资金', - // 'icon'=>'', - // 'uri' => 'dealer-earnings', - // ], [ - 'title' =>'渠道补贴', + 'title' =>'签约渠道补贴', 'icon'=>'', - 'uri' => 'dealer-earnings-channel?filter-earningable_type[]=dealer_channel_subsidy_log', + 'uri' => 'dealer-channel-subsidies', ], - // [ - // 'title' =>'签约渠道补贴', - // 'icon'=>'', - // 'uri' => 'dealer-channel-subsidies', - // ], [ 'title' =>'进货补贴', 'icon' => '', - 'uri' => 'dealer-earnings-purchase?filter-earningable_type[]=dealer_purchase_subsidy', - // 'uri' => 'dealer-purchase-subsidies', + 'uri' => 'dealer-purchase-subsidies', ], [ 'title' =>'进货补贴明细', @@ -343,8 +342,7 @@ class AdminMenuSeeder extends Seeder [ 'title'=>'管理津贴', 'icon' => '', - 'uri' => 'dealer-earnings-manage?filter-earningable_type[]=dealer_manage_subsidy', - // 'uri' => 'dealer-manage-subsidies', + 'uri' => 'dealer-manage-subsidies', ], [ 'title' =>'管理津贴明细', @@ -354,8 +352,7 @@ class AdminMenuSeeder extends Seeder [ 'title'=>'管理者津贴', 'icon' => '', - 'uri' => 'dealer-earnings-manage?filter-earningable_type[]=dealer_manager_subsidy', - // 'uri' => 'dealer-manager-subsidies', + 'uri' => 'dealer-manager-subsidies', ], [ 'title'=>'管理者津贴明细', diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index c52c47c2..fc5e274f 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -410,6 +410,10 @@ class AdminPermissionSeeder extends Seeder 'verify'=>['name' =>'提现审核'], ], ], + 'activities'=>[ + 'name' =>'活动管理', + 'curd' => true, + ], ]; // try { // DB::begintransaction(); diff --git a/database/seeders/AdminSeeder.php b/database/seeders/AdminSeeder.php index ca0a4ff1..de34b5bb 100644 --- a/database/seeders/AdminSeeder.php +++ b/database/seeders/AdminSeeder.php @@ -14,7 +14,7 @@ class AdminSeeder extends Seeder public function run() { $this->call([ - AdminMenuSeeder::class, + // AdminMenuSeeder::class, AdminPermissionSeeder::class, ]); } diff --git a/dcat_admin_ide_helper.php b/dcat_admin_ide_helper.php index d1d1dab1..93bb1676 100644 --- a/dcat_admin_ide_helper.php +++ b/dcat_admin_ide_helper.php @@ -7,131 +7,131 @@ * * @author jqh <841324345@qq.com> */ + namespace Dcat\Admin { use Illuminate\Support\Collection; /** - * @property Grid\Column|Collection width - * @property Grid\Column|Collection content - * @property Grid\Column|Collection coupons_rule - * @property Grid\Column|Collection cover - * @property Grid\Column|Collection created_at - * @property Grid\Column|Collection ended_at - * @property Grid\Column|Collection gifts_rule * @property Grid\Column|Collection id + * @property Grid\Column|Collection cover + * @property Grid\Column|Collection content * @property Grid\Column|Collection is_use * @property Grid\Column|Collection started_at + * @property Grid\Column|Collection ended_at + * @property Grid\Column|Collection coupons_rule + * @property Grid\Column|Collection gifts_rule + * @property Grid\Column|Collection created_at * @property Grid\Column|Collection updated_at * @property Grid\Column|Collection activity_id * @property Grid\Column|Collection coupon_id * @property Grid\Column|Collection qty * @property Grid\Column|Collection sku_id * @property Grid\Column|Collection part_id - * @property Grid\Column|Collection dimensions - * @property Grid\Column|Collection is_show * @property Grid\Column|Collection key * @property Grid\Column|Collection name - * @property Grid\Column|Collection detail + * @property Grid\Column|Collection dimensions + * @property Grid\Column|Collection is_show * @property Grid\Column|Collection type * @property Grid\Column|Collection version + * @property Grid\Column|Collection detail * @property Grid\Column|Collection is_enabled - * @property Grid\Column|Collection extension - * @property Grid\Column|Collection icon - * @property Grid\Column|Collection order * @property Grid\Column|Collection parent_id + * @property Grid\Column|Collection order + * @property Grid\Column|Collection icon * @property Grid\Column|Collection uri - * @property Grid\Column|Collection menu_id + * @property Grid\Column|Collection extension * @property Grid\Column|Collection permission_id + * @property Grid\Column|Collection menu_id + * @property Grid\Column|Collection slug * @property Grid\Column|Collection http_method * @property Grid\Column|Collection http_path - * @property Grid\Column|Collection slug * @property Grid\Column|Collection role_id * @property Grid\Column|Collection user_id * @property Grid\Column|Collection value - * @property Grid\Column|Collection avatar - * @property Grid\Column|Collection password - * @property Grid\Column|Collection remember_token * @property Grid\Column|Collection username + * @property Grid\Column|Collection password + * @property Grid\Column|Collection avatar + * @property Grid\Column|Collection remember_token * @property Grid\Column|Collection address_id * @property Grid\Column|Collection image - * @property Grid\Column|Collection jump_link - * @property Grid\Column|Collection jump_type - * @property Grid\Column|Collection remarks * @property Grid\Column|Collection sort + * @property Grid\Column|Collection jump_type + * @property Grid\Column|Collection jump_link + * @property Grid\Column|Collection remarks * @property Grid\Column|Collection after_sale_id * @property Grid\Column|Collection desc * @property Grid\Column|Collection images - * @property Grid\Column|Collection amount - * @property Grid\Column|Collection num * @property Grid\Column|Collection order_id - * @property Grid\Column|Collection order_product_id - * @property Grid\Column|Collection sales_value * @property Grid\Column|Collection sn + * @property Grid\Column|Collection order_product_id + * @property Grid\Column|Collection num + * @property Grid\Column|Collection amount * @property Grid\Column|Collection state * @property Grid\Column|Collection tracking_number + * @property Grid\Column|Collection sales_value * @property Grid\Column|Collection before_agent_level * @property Grid\Column|Collection change_agent_level * @property Grid\Column|Collection remark - * @property Grid\Column|Collection apk_link - * @property Grid\Column|Collection cate - * @property Grid\Column|Collection context - * @property Grid\Column|Collection is_force * @property Grid\Column|Collection v + * @property Grid\Column|Collection cate + * @property Grid\Column|Collection is_force + * @property Grid\Column|Collection context + * @property Grid\Column|Collection apk_link * @property Grid\Column|Collection wgt_link + * @property Grid\Column|Collection is_recommend * @property Grid\Column|Collection _lft * @property Grid\Column|Collection _rgt - * @property Grid\Column|Collection is_recommend * @property Grid\Column|Collection article_id - * @property Grid\Column|Collection author_name * @property Grid\Column|Collection category_id - * @property Grid\Column|Collection likes - * @property Grid\Column|Collection media_content - * @property Grid\Column|Collection media_type - * @property Grid\Column|Collection points + * @property Grid\Column|Collection author_name * @property Grid\Column|Collection subtitle + * @property Grid\Column|Collection points + * @property Grid\Column|Collection likes + * @property Grid\Column|Collection media_type + * @property Grid\Column|Collection media_content + * @property Grid\Column|Collection loggable_type + * @property Grid\Column|Collection loggable_id * @property Grid\Column|Collection action * @property Grid\Column|Collection before_balance * @property Grid\Column|Collection change_balance - * @property Grid\Column|Collection loggable_id - * @property Grid\Column|Collection loggable_type * @property Grid\Column|Collection balance - * @property Grid\Column|Collection is_frozen * @property Grid\Column|Collection total_expenses * @property Grid\Column|Collection total_revenue * @property Grid\Column|Collection transferable + * @property Grid\Column|Collection is_frozen * @property Grid\Column|Collection continue_click_times * @property Grid\Column|Collection last_click_at - * @property Grid\Column|Collection is_enable * @property Grid\Column|Collection ranges + * @property Grid\Column|Collection is_enable * @property Grid\Column|Collection administrator_id * @property Grid\Column|Collection status * @property Grid\Column|Collection task_id + * @property Grid\Column|Collection threshold * @property Grid\Column|Collection limit * @property Grid\Column|Collection sent * @property Grid\Column|Collection stock - * @property Grid\Column|Collection threshold * @property Grid\Column|Collection use_day - * @property Grid\Column|Collection use_end_at * @property Grid\Column|Collection use_start_at + * @property Grid\Column|Collection use_end_at * @property Grid\Column|Collection lvl - * @property Grid\Column|Collection order_completed_at * @property Grid\Column|Collection total_amount - * @property Grid\Column|Collection earningable_id + * @property Grid\Column|Collection order_completed_at * @property Grid\Column|Collection earningable_type + * @property Grid\Column|Collection earningable_id + * @property Grid\Column|Collection total_earnings * @property Grid\Column|Collection fee * @property Grid\Column|Collection fee_rate - * @property Grid\Column|Collection pay_at - * @property Grid\Column|Collection pay_image - * @property Grid\Column|Collection pay_info - * @property Grid\Column|Collection pay_way * @property Grid\Column|Collection payer_id + * @property Grid\Column|Collection pay_info + * @property Grid\Column|Collection pay_at * @property Grid\Column|Collection settle_at - * @property Grid\Column|Collection total_earnings - * @property Grid\Column|Collection end_at + * @property Grid\Column|Collection pay_image + * @property Grid\Column|Collection pay_way * @property Grid\Column|Collection is_manager - * @property Grid\Column|Collection is_settle * @property Grid\Column|Collection real_amount * @property Grid\Column|Collection start_at + * @property Grid\Column|Collection end_at + * @property Grid\Column|Collection is_settle * @property Grid\Column|Collection product_id * @property Grid\Column|Collection sales_volume * @property Grid\Column|Collection last_consignor_id @@ -139,122 +139,122 @@ namespace Dcat\Admin { * @property Grid\Column|Collection price * @property Grid\Column|Collection sale_price * @property Grid\Column|Collection reason - * @property Grid\Column|Collection allocated_at - * @property Grid\Column|Collection consignee_address + * @property Grid\Column|Collection consignor_id + * @property Grid\Column|Collection settle_state * @property Grid\Column|Collection consignee_name * @property Grid\Column|Collection consignee_telephone * @property Grid\Column|Collection consignee_zone - * @property Grid\Column|Collection consignor_id - * @property Grid\Column|Collection out_trade_no - * @property Grid\Column|Collection paied_time - * @property Grid\Column|Collection pay_sn + * @property Grid\Column|Collection consignee_address * @property Grid\Column|Collection pay_time - * @property Grid\Column|Collection settle_state + * @property Grid\Column|Collection paied_time * @property Grid\Column|Collection shipping_time * @property Grid\Column|Collection shippinged_time + * @property Grid\Column|Collection allocated_at + * @property Grid\Column|Collection pay_sn + * @property Grid\Column|Collection out_trade_no * @property Grid\Column|Collection min_order_amount * @property Grid\Column|Collection price_1st * @property Grid\Column|Collection price_2st * @property Grid\Column|Collection price_3st - * @property Grid\Column|Collection is_sale - * @property Grid\Column|Collection manager_subsidy * @property Grid\Column|Collection sales_count + * @property Grid\Column|Collection is_sale * @property Grid\Column|Collection unit + * @property Grid\Column|Collection manager_subsidy * @property Grid\Column|Collection path - * @property Grid\Column|Collection subsidy_rate * @property Grid\Column|Collection total_purchase_amount + * @property Grid\Column|Collection subsidy_rate * @property Grid\Column|Collection total_subsidy - * @property Grid\Column|Collection change_amount - * @property Grid\Column|Collection change_from_purchase_subsidy_id * @property Grid\Column|Collection purchase_subsidy_id + * @property Grid\Column|Collection change_from_purchase_subsidy_id + * @property Grid\Column|Collection change_amount * @property Grid\Column|Collection change_sales_value + * @property Grid\Column|Collection sell_price * @property Grid\Column|Collection dealer_price * @property Grid\Column|Collection quantity - * @property Grid\Column|Collection sell_price * @property Grid\Column|Collection before_lvl * @property Grid\Column|Collection change_lvl * @property Grid\Column|Collection revoke_id - * @property Grid\Column|Collection account_amount * @property Grid\Column|Collection rate * @property Grid\Column|Collection service_amount + * @property Grid\Column|Collection account_amount * @property Grid\Column|Collection withdrawable - * @property Grid\Column|Collection bonds * @property Grid\Column|Collection contracted_lvl_at + * @property Grid\Column|Collection bonds * @property Grid\Column|Collection self_sales_value * @property Grid\Column|Collection team_sales_value - * @property Grid\Column|Collection failed_reason - * @property Grid\Column|Collection jobable_id * @property Grid\Column|Collection jobable_type - * @property Grid\Column|Collection change_revenue + * @property Grid\Column|Collection jobable_id + * @property Grid\Column|Collection failed_reason * @property Grid\Column|Collection pre_income_id * @property Grid\Column|Collection pre_income_job_id + * @property Grid\Column|Collection change_revenue * @property Grid\Column|Collection agent_level - * @property Grid\Column|Collection completed_at - * @property Grid\Column|Collection rule * @property Grid\Column|Collection total_sales_value + * @property Grid\Column|Collection rule + * @property Grid\Column|Collection completed_at + * @property Grid\Column|Collection uuid * @property Grid\Column|Collection connection + * @property Grid\Column|Collection queue + * @property Grid\Column|Collection payload * @property Grid\Column|Collection exception * @property Grid\Column|Collection failed_at - * @property Grid\Column|Collection payload - * @property Grid\Column|Collection queue - * @property Grid\Column|Collection uuid * @property Grid\Column|Collection job_id - * @property Grid\Column|Collection fails * @property Grid\Column|Collection file * @property Grid\Column|Collection success + * @property Grid\Column|Collection fails * @property Grid\Column|Collection code * @property Grid\Column|Collection info * @property Grid\Column|Collection ext * @property Grid\Column|Collection is_push * @property Grid\Column|Collection message_id * @property Grid\Column|Collection order_package_id - * @property Grid\Column|Collection checked_at - * @property Grid\Column|Collection is_failed - * @property Grid\Column|Collection last_news - * @property Grid\Column|Collection shipping_code * @property Grid\Column|Collection shipping_company + * @property Grid\Column|Collection shipping_code * @property Grid\Column|Collection shipping_number - * @property Grid\Column|Collection after_expire_at - * @property Grid\Column|Collection after_sale_state - * @property Grid\Column|Collection coupon_discount_amount - * @property Grid\Column|Collection gift_for_sku_id - * @property Grid\Column|Collection reduced_amount - * @property Grid\Column|Collection remain_quantity - * @property Grid\Column|Collection specs + * @property Grid\Column|Collection is_failed + * @property Grid\Column|Collection checked_at + * @property Grid\Column|Collection last_news * @property Grid\Column|Collection spu_id - * @property Grid\Column|Collection vip_discount_amount - * @property Grid\Column|Collection vip_price + * @property Grid\Column|Collection specs * @property Grid\Column|Collection weight + * @property Grid\Column|Collection vip_price + * @property Grid\Column|Collection coupon_discount_amount + * @property Grid\Column|Collection vip_discount_amount + * @property Grid\Column|Collection reduced_amount + * @property Grid\Column|Collection after_sale_state + * @property Grid\Column|Collection after_expire_at + * @property Grid\Column|Collection remain_quantity + * @property Grid\Column|Collection gift_for_sku_id * @property Grid\Column|Collection max - * @property Grid\Column|Collection auto_complete_at - * @property Grid\Column|Collection is_change - * @property Grid\Column|Collection is_settlable - * @property Grid\Column|Collection note - * @property Grid\Column|Collection products_total_amount * @property Grid\Column|Collection shipping_fee - * @property Grid\Column|Collection shipping_state + * @property Grid\Column|Collection products_total_amount + * @property Grid\Column|Collection note * @property Grid\Column|Collection user_coupon_id - * @property Grid\Column|Collection payable_id + * @property Grid\Column|Collection shipping_state + * @property Grid\Column|Collection is_change + * @property Grid\Column|Collection auto_complete_at + * @property Grid\Column|Collection is_settlable * @property Grid\Column|Collection payable_type + * @property Grid\Column|Collection payable_id + * @property Grid\Column|Collection tokenable_type + * @property Grid\Column|Collection tokenable_id + * @property Grid\Column|Collection token * @property Grid\Column|Collection abilities * @property Grid\Column|Collection last_used_at - * @property Grid\Column|Collection token - * @property Grid\Column|Collection tokenable_id - * @property Grid\Column|Collection tokenable_type * @property Grid\Column|Collection old_points * @property Grid\Column|Collection gift_sku_id * @property Grid\Column|Collection remaining * @property Grid\Column|Collection attrs * @property Grid\Column|Collection applicant_id * @property Grid\Column|Collection reviewer_id - * @property Grid\Column|Collection buynote_id - * @property Grid\Column|Collection cost_price * @property Grid\Column|Collection market_price + * @property Grid\Column|Collection cost_price * @property Grid\Column|Collection media - * @property Grid\Column|Collection release_at * @property Grid\Column|Collection sales - * @property Grid\Column|Collection shipping_template_id + * @property Grid\Column|Collection release_at * @property Grid\Column|Collection verify_state + * @property Grid\Column|Collection buynote_id + * @property Grid\Column|Collection shipping_template_id * @property Grid\Column|Collection feature_id * @property Grid\Column|Collection items * @property Grid\Column|Collection view_date @@ -262,180 +262,179 @@ namespace Dcat\Admin { * @property Grid\Column|Collection message_type * @property Grid\Column|Collection change_quota * @property Grid\Column|Collection order_user_id - * @property Grid\Column|Collection size * @property Grid\Column|Collection x * @property Grid\Column|Collection y - * @property Grid\Column|Collection address + * @property Grid\Column|Collection size + * @property Grid\Column|Collection zone_id * @property Grid\Column|Collection consignee - * @property Grid\Column|Collection is_default * @property Grid\Column|Collection telephone * @property Grid\Column|Collection zone - * @property Grid\Column|Collection zone_id + * @property Grid\Column|Collection address + * @property Grid\Column|Collection is_default * @property Grid\Column|Collection rule_id * @property Grid\Column|Collection template_id * @property Grid\Column|Collection zones - * @property Grid\Column|Collection expires_at * @property Grid\Column|Collection phone - * @property Grid\Column|Collection socialite_id + * @property Grid\Column|Collection expires_at * @property Grid\Column|Collection socialite_type + * @property Grid\Column|Collection socialite_id * @property Grid\Column|Collection tag_id * @property Grid\Column|Collection taggable_id * @property Grid\Column|Collection taggable_type - * @property Grid\Column|Collection bank_description - * @property Grid\Column|Collection bank_name + * @property Grid\Column|Collection real_name * @property Grid\Column|Collection bank_number + * @property Grid\Column|Collection bank_name + * @property Grid\Column|Collection bank_description * @property Grid\Column|Collection is_edited * @property Grid\Column|Collection old_real_name - * @property Grid\Column|Collection real_name - * @property Grid\Column|Collection m_cid * @property Grid\Column|Collection u_cid - * @property Grid\Column|Collection coupon_amount + * @property Grid\Column|Collection m_cid * @property Grid\Column|Collection coupon_name - * @property Grid\Column|Collection coupon_threshold * @property Grid\Column|Collection coupon_type + * @property Grid\Column|Collection coupon_amount + * @property Grid\Column|Collection coupon_threshold + * @property Grid\Column|Collection inviter_id + * @property Grid\Column|Collection nickname + * @property Grid\Column|Collection gender * @property Grid\Column|Collection birthday * @property Grid\Column|Collection bonusable * @property Grid\Column|Collection depth - * @property Grid\Column|Collection gender - * @property Grid\Column|Collection group_sales_value - * @property Grid\Column|Collection growth_value - * @property Grid\Column|Collection inviter_id - * @property Grid\Column|Collection nickname - * @property Grid\Column|Collection pre_growth_value - * @property Grid\Column|Collection quota_v1 * @property Grid\Column|Collection quota_v2 + * @property Grid\Column|Collection quota_v1 + * @property Grid\Column|Collection growth_value + * @property Grid\Column|Collection group_sales_value + * @property Grid\Column|Collection pre_growth_value * @property Grid\Column|Collection real_inviter_id * @property Grid\Column|Collection vip_id + * @property Grid\Column|Collection phone_verified_at * @property Grid\Column|Collection email * @property Grid\Column|Collection email_verified_at - * @property Grid\Column|Collection last_login_at * @property Grid\Column|Collection last_login_ip - * @property Grid\Column|Collection old_password - * @property Grid\Column|Collection phone_verified_at + * @property Grid\Column|Collection last_login_at * @property Grid\Column|Collection register_ip * @property Grid\Column|Collection status_remark + * @property Grid\Column|Collection old_password * - * @method Grid\Column|Collection width(string $label = null) - * @method Grid\Column|Collection content(string $label = null) - * @method Grid\Column|Collection coupons_rule(string $label = null) - * @method Grid\Column|Collection cover(string $label = null) - * @method Grid\Column|Collection created_at(string $label = null) - * @method Grid\Column|Collection ended_at(string $label = null) - * @method Grid\Column|Collection gifts_rule(string $label = null) * @method Grid\Column|Collection id(string $label = null) + * @method Grid\Column|Collection cover(string $label = null) + * @method Grid\Column|Collection content(string $label = null) * @method Grid\Column|Collection is_use(string $label = null) * @method Grid\Column|Collection started_at(string $label = null) + * @method Grid\Column|Collection ended_at(string $label = null) + * @method Grid\Column|Collection coupons_rule(string $label = null) + * @method Grid\Column|Collection gifts_rule(string $label = null) + * @method Grid\Column|Collection created_at(string $label = null) * @method Grid\Column|Collection updated_at(string $label = null) * @method Grid\Column|Collection activity_id(string $label = null) * @method Grid\Column|Collection coupon_id(string $label = null) * @method Grid\Column|Collection qty(string $label = null) * @method Grid\Column|Collection sku_id(string $label = null) * @method Grid\Column|Collection part_id(string $label = null) - * @method Grid\Column|Collection dimensions(string $label = null) - * @method Grid\Column|Collection is_show(string $label = null) * @method Grid\Column|Collection key(string $label = null) * @method Grid\Column|Collection name(string $label = null) - * @method Grid\Column|Collection detail(string $label = null) + * @method Grid\Column|Collection dimensions(string $label = null) + * @method Grid\Column|Collection is_show(string $label = null) * @method Grid\Column|Collection type(string $label = null) * @method Grid\Column|Collection version(string $label = null) + * @method Grid\Column|Collection detail(string $label = null) * @method Grid\Column|Collection is_enabled(string $label = null) - * @method Grid\Column|Collection extension(string $label = null) - * @method Grid\Column|Collection icon(string $label = null) - * @method Grid\Column|Collection order(string $label = null) * @method Grid\Column|Collection parent_id(string $label = null) + * @method Grid\Column|Collection order(string $label = null) + * @method Grid\Column|Collection icon(string $label = null) * @method Grid\Column|Collection uri(string $label = null) - * @method Grid\Column|Collection menu_id(string $label = null) + * @method Grid\Column|Collection extension(string $label = null) * @method Grid\Column|Collection permission_id(string $label = null) + * @method Grid\Column|Collection menu_id(string $label = null) + * @method Grid\Column|Collection slug(string $label = null) * @method Grid\Column|Collection http_method(string $label = null) * @method Grid\Column|Collection http_path(string $label = null) - * @method Grid\Column|Collection slug(string $label = null) * @method Grid\Column|Collection role_id(string $label = null) * @method Grid\Column|Collection user_id(string $label = null) * @method Grid\Column|Collection value(string $label = null) - * @method Grid\Column|Collection avatar(string $label = null) - * @method Grid\Column|Collection password(string $label = null) - * @method Grid\Column|Collection remember_token(string $label = null) * @method Grid\Column|Collection username(string $label = null) + * @method Grid\Column|Collection password(string $label = null) + * @method Grid\Column|Collection avatar(string $label = null) + * @method Grid\Column|Collection remember_token(string $label = null) * @method Grid\Column|Collection address_id(string $label = null) * @method Grid\Column|Collection image(string $label = null) - * @method Grid\Column|Collection jump_link(string $label = null) - * @method Grid\Column|Collection jump_type(string $label = null) - * @method Grid\Column|Collection remarks(string $label = null) * @method Grid\Column|Collection sort(string $label = null) + * @method Grid\Column|Collection jump_type(string $label = null) + * @method Grid\Column|Collection jump_link(string $label = null) + * @method Grid\Column|Collection remarks(string $label = null) * @method Grid\Column|Collection after_sale_id(string $label = null) * @method Grid\Column|Collection desc(string $label = null) * @method Grid\Column|Collection images(string $label = null) - * @method Grid\Column|Collection amount(string $label = null) - * @method Grid\Column|Collection num(string $label = null) * @method Grid\Column|Collection order_id(string $label = null) - * @method Grid\Column|Collection order_product_id(string $label = null) - * @method Grid\Column|Collection sales_value(string $label = null) * @method Grid\Column|Collection sn(string $label = null) + * @method Grid\Column|Collection order_product_id(string $label = null) + * @method Grid\Column|Collection num(string $label = null) + * @method Grid\Column|Collection amount(string $label = null) * @method Grid\Column|Collection state(string $label = null) * @method Grid\Column|Collection tracking_number(string $label = null) + * @method Grid\Column|Collection sales_value(string $label = null) * @method Grid\Column|Collection before_agent_level(string $label = null) * @method Grid\Column|Collection change_agent_level(string $label = null) * @method Grid\Column|Collection remark(string $label = null) - * @method Grid\Column|Collection apk_link(string $label = null) - * @method Grid\Column|Collection cate(string $label = null) - * @method Grid\Column|Collection context(string $label = null) - * @method Grid\Column|Collection is_force(string $label = null) * @method Grid\Column|Collection v(string $label = null) + * @method Grid\Column|Collection cate(string $label = null) + * @method Grid\Column|Collection is_force(string $label = null) + * @method Grid\Column|Collection context(string $label = null) + * @method Grid\Column|Collection apk_link(string $label = null) * @method Grid\Column|Collection wgt_link(string $label = null) + * @method Grid\Column|Collection is_recommend(string $label = null) * @method Grid\Column|Collection _lft(string $label = null) * @method Grid\Column|Collection _rgt(string $label = null) - * @method Grid\Column|Collection is_recommend(string $label = null) * @method Grid\Column|Collection article_id(string $label = null) - * @method Grid\Column|Collection author_name(string $label = null) * @method Grid\Column|Collection category_id(string $label = null) - * @method Grid\Column|Collection likes(string $label = null) - * @method Grid\Column|Collection media_content(string $label = null) - * @method Grid\Column|Collection media_type(string $label = null) - * @method Grid\Column|Collection points(string $label = null) + * @method Grid\Column|Collection author_name(string $label = null) * @method Grid\Column|Collection subtitle(string $label = null) + * @method Grid\Column|Collection points(string $label = null) + * @method Grid\Column|Collection likes(string $label = null) + * @method Grid\Column|Collection media_type(string $label = null) + * @method Grid\Column|Collection media_content(string $label = null) + * @method Grid\Column|Collection loggable_type(string $label = null) + * @method Grid\Column|Collection loggable_id(string $label = null) * @method Grid\Column|Collection action(string $label = null) * @method Grid\Column|Collection before_balance(string $label = null) * @method Grid\Column|Collection change_balance(string $label = null) - * @method Grid\Column|Collection loggable_id(string $label = null) - * @method Grid\Column|Collection loggable_type(string $label = null) * @method Grid\Column|Collection balance(string $label = null) - * @method Grid\Column|Collection is_frozen(string $label = null) * @method Grid\Column|Collection total_expenses(string $label = null) * @method Grid\Column|Collection total_revenue(string $label = null) * @method Grid\Column|Collection transferable(string $label = null) + * @method Grid\Column|Collection is_frozen(string $label = null) * @method Grid\Column|Collection continue_click_times(string $label = null) * @method Grid\Column|Collection last_click_at(string $label = null) - * @method Grid\Column|Collection is_enable(string $label = null) * @method Grid\Column|Collection ranges(string $label = null) + * @method Grid\Column|Collection is_enable(string $label = null) * @method Grid\Column|Collection administrator_id(string $label = null) * @method Grid\Column|Collection status(string $label = null) * @method Grid\Column|Collection task_id(string $label = null) + * @method Grid\Column|Collection threshold(string $label = null) * @method Grid\Column|Collection limit(string $label = null) * @method Grid\Column|Collection sent(string $label = null) * @method Grid\Column|Collection stock(string $label = null) - * @method Grid\Column|Collection threshold(string $label = null) * @method Grid\Column|Collection use_day(string $label = null) - * @method Grid\Column|Collection use_end_at(string $label = null) * @method Grid\Column|Collection use_start_at(string $label = null) + * @method Grid\Column|Collection use_end_at(string $label = null) * @method Grid\Column|Collection lvl(string $label = null) - * @method Grid\Column|Collection order_completed_at(string $label = null) * @method Grid\Column|Collection total_amount(string $label = null) - * @method Grid\Column|Collection earningable_id(string $label = null) + * @method Grid\Column|Collection order_completed_at(string $label = null) * @method Grid\Column|Collection earningable_type(string $label = null) + * @method Grid\Column|Collection earningable_id(string $label = null) + * @method Grid\Column|Collection total_earnings(string $label = null) * @method Grid\Column|Collection fee(string $label = null) * @method Grid\Column|Collection fee_rate(string $label = null) - * @method Grid\Column|Collection pay_at(string $label = null) - * @method Grid\Column|Collection pay_image(string $label = null) - * @method Grid\Column|Collection pay_info(string $label = null) - * @method Grid\Column|Collection pay_way(string $label = null) * @method Grid\Column|Collection payer_id(string $label = null) + * @method Grid\Column|Collection pay_info(string $label = null) + * @method Grid\Column|Collection pay_at(string $label = null) * @method Grid\Column|Collection settle_at(string $label = null) - * @method Grid\Column|Collection total_earnings(string $label = null) - * @method Grid\Column|Collection end_at(string $label = null) + * @method Grid\Column|Collection pay_image(string $label = null) + * @method Grid\Column|Collection pay_way(string $label = null) * @method Grid\Column|Collection is_manager(string $label = null) - * @method Grid\Column|Collection is_settle(string $label = null) * @method Grid\Column|Collection real_amount(string $label = null) * @method Grid\Column|Collection start_at(string $label = null) + * @method Grid\Column|Collection end_at(string $label = null) + * @method Grid\Column|Collection is_settle(string $label = null) * @method Grid\Column|Collection product_id(string $label = null) * @method Grid\Column|Collection sales_volume(string $label = null) * @method Grid\Column|Collection last_consignor_id(string $label = null) @@ -443,122 +442,122 @@ namespace Dcat\Admin { * @method Grid\Column|Collection price(string $label = null) * @method Grid\Column|Collection sale_price(string $label = null) * @method Grid\Column|Collection reason(string $label = null) - * @method Grid\Column|Collection allocated_at(string $label = null) - * @method Grid\Column|Collection consignee_address(string $label = null) + * @method Grid\Column|Collection consignor_id(string $label = null) + * @method Grid\Column|Collection settle_state(string $label = null) * @method Grid\Column|Collection consignee_name(string $label = null) * @method Grid\Column|Collection consignee_telephone(string $label = null) * @method Grid\Column|Collection consignee_zone(string $label = null) - * @method Grid\Column|Collection consignor_id(string $label = null) - * @method Grid\Column|Collection out_trade_no(string $label = null) - * @method Grid\Column|Collection paied_time(string $label = null) - * @method Grid\Column|Collection pay_sn(string $label = null) + * @method Grid\Column|Collection consignee_address(string $label = null) * @method Grid\Column|Collection pay_time(string $label = null) - * @method Grid\Column|Collection settle_state(string $label = null) + * @method Grid\Column|Collection paied_time(string $label = null) * @method Grid\Column|Collection shipping_time(string $label = null) * @method Grid\Column|Collection shippinged_time(string $label = null) + * @method Grid\Column|Collection allocated_at(string $label = null) + * @method Grid\Column|Collection pay_sn(string $label = null) + * @method Grid\Column|Collection out_trade_no(string $label = null) * @method Grid\Column|Collection min_order_amount(string $label = null) * @method Grid\Column|Collection price_1st(string $label = null) * @method Grid\Column|Collection price_2st(string $label = null) * @method Grid\Column|Collection price_3st(string $label = null) - * @method Grid\Column|Collection is_sale(string $label = null) - * @method Grid\Column|Collection manager_subsidy(string $label = null) * @method Grid\Column|Collection sales_count(string $label = null) + * @method Grid\Column|Collection is_sale(string $label = null) * @method Grid\Column|Collection unit(string $label = null) + * @method Grid\Column|Collection manager_subsidy(string $label = null) * @method Grid\Column|Collection path(string $label = null) - * @method Grid\Column|Collection subsidy_rate(string $label = null) * @method Grid\Column|Collection total_purchase_amount(string $label = null) + * @method Grid\Column|Collection subsidy_rate(string $label = null) * @method Grid\Column|Collection total_subsidy(string $label = null) - * @method Grid\Column|Collection change_amount(string $label = null) - * @method Grid\Column|Collection change_from_purchase_subsidy_id(string $label = null) * @method Grid\Column|Collection purchase_subsidy_id(string $label = null) + * @method Grid\Column|Collection change_from_purchase_subsidy_id(string $label = null) + * @method Grid\Column|Collection change_amount(string $label = null) * @method Grid\Column|Collection change_sales_value(string $label = null) + * @method Grid\Column|Collection sell_price(string $label = null) * @method Grid\Column|Collection dealer_price(string $label = null) * @method Grid\Column|Collection quantity(string $label = null) - * @method Grid\Column|Collection sell_price(string $label = null) * @method Grid\Column|Collection before_lvl(string $label = null) * @method Grid\Column|Collection change_lvl(string $label = null) * @method Grid\Column|Collection revoke_id(string $label = null) - * @method Grid\Column|Collection account_amount(string $label = null) * @method Grid\Column|Collection rate(string $label = null) * @method Grid\Column|Collection service_amount(string $label = null) + * @method Grid\Column|Collection account_amount(string $label = null) * @method Grid\Column|Collection withdrawable(string $label = null) - * @method Grid\Column|Collection bonds(string $label = null) * @method Grid\Column|Collection contracted_lvl_at(string $label = null) + * @method Grid\Column|Collection bonds(string $label = null) * @method Grid\Column|Collection self_sales_value(string $label = null) * @method Grid\Column|Collection team_sales_value(string $label = null) - * @method Grid\Column|Collection failed_reason(string $label = null) - * @method Grid\Column|Collection jobable_id(string $label = null) * @method Grid\Column|Collection jobable_type(string $label = null) - * @method Grid\Column|Collection change_revenue(string $label = null) + * @method Grid\Column|Collection jobable_id(string $label = null) + * @method Grid\Column|Collection failed_reason(string $label = null) * @method Grid\Column|Collection pre_income_id(string $label = null) * @method Grid\Column|Collection pre_income_job_id(string $label = null) + * @method Grid\Column|Collection change_revenue(string $label = null) * @method Grid\Column|Collection agent_level(string $label = null) - * @method Grid\Column|Collection completed_at(string $label = null) - * @method Grid\Column|Collection rule(string $label = null) * @method Grid\Column|Collection total_sales_value(string $label = null) + * @method Grid\Column|Collection rule(string $label = null) + * @method Grid\Column|Collection completed_at(string $label = null) + * @method Grid\Column|Collection uuid(string $label = null) * @method Grid\Column|Collection connection(string $label = null) + * @method Grid\Column|Collection queue(string $label = null) + * @method Grid\Column|Collection payload(string $label = null) * @method Grid\Column|Collection exception(string $label = null) * @method Grid\Column|Collection failed_at(string $label = null) - * @method Grid\Column|Collection payload(string $label = null) - * @method Grid\Column|Collection queue(string $label = null) - * @method Grid\Column|Collection uuid(string $label = null) * @method Grid\Column|Collection job_id(string $label = null) - * @method Grid\Column|Collection fails(string $label = null) * @method Grid\Column|Collection file(string $label = null) * @method Grid\Column|Collection success(string $label = null) + * @method Grid\Column|Collection fails(string $label = null) * @method Grid\Column|Collection code(string $label = null) * @method Grid\Column|Collection info(string $label = null) * @method Grid\Column|Collection ext(string $label = null) * @method Grid\Column|Collection is_push(string $label = null) * @method Grid\Column|Collection message_id(string $label = null) * @method Grid\Column|Collection order_package_id(string $label = null) - * @method Grid\Column|Collection checked_at(string $label = null) - * @method Grid\Column|Collection is_failed(string $label = null) - * @method Grid\Column|Collection last_news(string $label = null) - * @method Grid\Column|Collection shipping_code(string $label = null) * @method Grid\Column|Collection shipping_company(string $label = null) + * @method Grid\Column|Collection shipping_code(string $label = null) * @method Grid\Column|Collection shipping_number(string $label = null) - * @method Grid\Column|Collection after_expire_at(string $label = null) - * @method Grid\Column|Collection after_sale_state(string $label = null) - * @method Grid\Column|Collection coupon_discount_amount(string $label = null) - * @method Grid\Column|Collection gift_for_sku_id(string $label = null) - * @method Grid\Column|Collection reduced_amount(string $label = null) - * @method Grid\Column|Collection remain_quantity(string $label = null) - * @method Grid\Column|Collection specs(string $label = null) + * @method Grid\Column|Collection is_failed(string $label = null) + * @method Grid\Column|Collection checked_at(string $label = null) + * @method Grid\Column|Collection last_news(string $label = null) * @method Grid\Column|Collection spu_id(string $label = null) - * @method Grid\Column|Collection vip_discount_amount(string $label = null) - * @method Grid\Column|Collection vip_price(string $label = null) + * @method Grid\Column|Collection specs(string $label = null) * @method Grid\Column|Collection weight(string $label = null) + * @method Grid\Column|Collection vip_price(string $label = null) + * @method Grid\Column|Collection coupon_discount_amount(string $label = null) + * @method Grid\Column|Collection vip_discount_amount(string $label = null) + * @method Grid\Column|Collection reduced_amount(string $label = null) + * @method Grid\Column|Collection after_sale_state(string $label = null) + * @method Grid\Column|Collection after_expire_at(string $label = null) + * @method Grid\Column|Collection remain_quantity(string $label = null) + * @method Grid\Column|Collection gift_for_sku_id(string $label = null) * @method Grid\Column|Collection max(string $label = null) - * @method Grid\Column|Collection auto_complete_at(string $label = null) - * @method Grid\Column|Collection is_change(string $label = null) - * @method Grid\Column|Collection is_settlable(string $label = null) - * @method Grid\Column|Collection note(string $label = null) - * @method Grid\Column|Collection products_total_amount(string $label = null) * @method Grid\Column|Collection shipping_fee(string $label = null) - * @method Grid\Column|Collection shipping_state(string $label = null) + * @method Grid\Column|Collection products_total_amount(string $label = null) + * @method Grid\Column|Collection note(string $label = null) * @method Grid\Column|Collection user_coupon_id(string $label = null) - * @method Grid\Column|Collection payable_id(string $label = null) + * @method Grid\Column|Collection shipping_state(string $label = null) + * @method Grid\Column|Collection is_change(string $label = null) + * @method Grid\Column|Collection auto_complete_at(string $label = null) + * @method Grid\Column|Collection is_settlable(string $label = null) * @method Grid\Column|Collection payable_type(string $label = null) + * @method Grid\Column|Collection payable_id(string $label = null) + * @method Grid\Column|Collection tokenable_type(string $label = null) + * @method Grid\Column|Collection tokenable_id(string $label = null) + * @method Grid\Column|Collection token(string $label = null) * @method Grid\Column|Collection abilities(string $label = null) * @method Grid\Column|Collection last_used_at(string $label = null) - * @method Grid\Column|Collection token(string $label = null) - * @method Grid\Column|Collection tokenable_id(string $label = null) - * @method Grid\Column|Collection tokenable_type(string $label = null) * @method Grid\Column|Collection old_points(string $label = null) * @method Grid\Column|Collection gift_sku_id(string $label = null) * @method Grid\Column|Collection remaining(string $label = null) * @method Grid\Column|Collection attrs(string $label = null) * @method Grid\Column|Collection applicant_id(string $label = null) * @method Grid\Column|Collection reviewer_id(string $label = null) - * @method Grid\Column|Collection buynote_id(string $label = null) - * @method Grid\Column|Collection cost_price(string $label = null) * @method Grid\Column|Collection market_price(string $label = null) + * @method Grid\Column|Collection cost_price(string $label = null) * @method Grid\Column|Collection media(string $label = null) - * @method Grid\Column|Collection release_at(string $label = null) * @method Grid\Column|Collection sales(string $label = null) - * @method Grid\Column|Collection shipping_template_id(string $label = null) + * @method Grid\Column|Collection release_at(string $label = null) * @method Grid\Column|Collection verify_state(string $label = null) + * @method Grid\Column|Collection buynote_id(string $label = null) + * @method Grid\Column|Collection shipping_template_id(string $label = null) * @method Grid\Column|Collection feature_id(string $label = null) * @method Grid\Column|Collection items(string $label = null) * @method Grid\Column|Collection view_date(string $label = null) @@ -566,185 +565,188 @@ namespace Dcat\Admin { * @method Grid\Column|Collection message_type(string $label = null) * @method Grid\Column|Collection change_quota(string $label = null) * @method Grid\Column|Collection order_user_id(string $label = null) - * @method Grid\Column|Collection size(string $label = null) * @method Grid\Column|Collection x(string $label = null) * @method Grid\Column|Collection y(string $label = null) - * @method Grid\Column|Collection address(string $label = null) + * @method Grid\Column|Collection size(string $label = null) + * @method Grid\Column|Collection zone_id(string $label = null) * @method Grid\Column|Collection consignee(string $label = null) - * @method Grid\Column|Collection is_default(string $label = null) * @method Grid\Column|Collection telephone(string $label = null) * @method Grid\Column|Collection zone(string $label = null) - * @method Grid\Column|Collection zone_id(string $label = null) + * @method Grid\Column|Collection address(string $label = null) + * @method Grid\Column|Collection is_default(string $label = null) * @method Grid\Column|Collection rule_id(string $label = null) * @method Grid\Column|Collection template_id(string $label = null) * @method Grid\Column|Collection zones(string $label = null) - * @method Grid\Column|Collection expires_at(string $label = null) * @method Grid\Column|Collection phone(string $label = null) - * @method Grid\Column|Collection socialite_id(string $label = null) + * @method Grid\Column|Collection expires_at(string $label = null) * @method Grid\Column|Collection socialite_type(string $label = null) + * @method Grid\Column|Collection socialite_id(string $label = null) * @method Grid\Column|Collection tag_id(string $label = null) * @method Grid\Column|Collection taggable_id(string $label = null) * @method Grid\Column|Collection taggable_type(string $label = null) - * @method Grid\Column|Collection bank_description(string $label = null) - * @method Grid\Column|Collection bank_name(string $label = null) + * @method Grid\Column|Collection real_name(string $label = null) * @method Grid\Column|Collection bank_number(string $label = null) + * @method Grid\Column|Collection bank_name(string $label = null) + * @method Grid\Column|Collection bank_description(string $label = null) * @method Grid\Column|Collection is_edited(string $label = null) * @method Grid\Column|Collection old_real_name(string $label = null) - * @method Grid\Column|Collection real_name(string $label = null) - * @method Grid\Column|Collection m_cid(string $label = null) * @method Grid\Column|Collection u_cid(string $label = null) - * @method Grid\Column|Collection coupon_amount(string $label = null) + * @method Grid\Column|Collection m_cid(string $label = null) * @method Grid\Column|Collection coupon_name(string $label = null) - * @method Grid\Column|Collection coupon_threshold(string $label = null) * @method Grid\Column|Collection coupon_type(string $label = null) + * @method Grid\Column|Collection coupon_amount(string $label = null) + * @method Grid\Column|Collection coupon_threshold(string $label = null) + * @method Grid\Column|Collection inviter_id(string $label = null) + * @method Grid\Column|Collection nickname(string $label = null) + * @method Grid\Column|Collection gender(string $label = null) * @method Grid\Column|Collection birthday(string $label = null) * @method Grid\Column|Collection bonusable(string $label = null) * @method Grid\Column|Collection depth(string $label = null) - * @method Grid\Column|Collection gender(string $label = null) - * @method Grid\Column|Collection group_sales_value(string $label = null) - * @method Grid\Column|Collection growth_value(string $label = null) - * @method Grid\Column|Collection inviter_id(string $label = null) - * @method Grid\Column|Collection nickname(string $label = null) - * @method Grid\Column|Collection pre_growth_value(string $label = null) - * @method Grid\Column|Collection quota_v1(string $label = null) * @method Grid\Column|Collection quota_v2(string $label = null) + * @method Grid\Column|Collection quota_v1(string $label = null) + * @method Grid\Column|Collection growth_value(string $label = null) + * @method Grid\Column|Collection group_sales_value(string $label = null) + * @method Grid\Column|Collection pre_growth_value(string $label = null) * @method Grid\Column|Collection real_inviter_id(string $label = null) * @method Grid\Column|Collection vip_id(string $label = null) + * @method Grid\Column|Collection phone_verified_at(string $label = null) * @method Grid\Column|Collection email(string $label = null) * @method Grid\Column|Collection email_verified_at(string $label = null) - * @method Grid\Column|Collection last_login_at(string $label = null) * @method Grid\Column|Collection last_login_ip(string $label = null) - * @method Grid\Column|Collection old_password(string $label = null) - * @method Grid\Column|Collection phone_verified_at(string $label = null) + * @method Grid\Column|Collection last_login_at(string $label = null) * @method Grid\Column|Collection register_ip(string $label = null) * @method Grid\Column|Collection status_remark(string $label = null) + * @method Grid\Column|Collection old_password(string $label = null) */ - class Grid {} + class Grid + { + } - class MiniGrid extends Grid {} + class MiniGrid extends Grid + { + } /** - * @property Show\Field|Collection width - * @property Show\Field|Collection content - * @property Show\Field|Collection coupons_rule - * @property Show\Field|Collection cover - * @property Show\Field|Collection created_at - * @property Show\Field|Collection ended_at - * @property Show\Field|Collection gifts_rule * @property Show\Field|Collection id + * @property Show\Field|Collection cover + * @property Show\Field|Collection content * @property Show\Field|Collection is_use * @property Show\Field|Collection started_at + * @property Show\Field|Collection ended_at + * @property Show\Field|Collection coupons_rule + * @property Show\Field|Collection gifts_rule + * @property Show\Field|Collection created_at * @property Show\Field|Collection updated_at * @property Show\Field|Collection activity_id * @property Show\Field|Collection coupon_id * @property Show\Field|Collection qty * @property Show\Field|Collection sku_id * @property Show\Field|Collection part_id - * @property Show\Field|Collection dimensions - * @property Show\Field|Collection is_show * @property Show\Field|Collection key * @property Show\Field|Collection name - * @property Show\Field|Collection detail + * @property Show\Field|Collection dimensions + * @property Show\Field|Collection is_show * @property Show\Field|Collection type * @property Show\Field|Collection version + * @property Show\Field|Collection detail * @property Show\Field|Collection is_enabled - * @property Show\Field|Collection extension - * @property Show\Field|Collection icon - * @property Show\Field|Collection order * @property Show\Field|Collection parent_id + * @property Show\Field|Collection order + * @property Show\Field|Collection icon * @property Show\Field|Collection uri - * @property Show\Field|Collection menu_id + * @property Show\Field|Collection extension * @property Show\Field|Collection permission_id + * @property Show\Field|Collection menu_id + * @property Show\Field|Collection slug * @property Show\Field|Collection http_method * @property Show\Field|Collection http_path - * @property Show\Field|Collection slug * @property Show\Field|Collection role_id * @property Show\Field|Collection user_id * @property Show\Field|Collection value - * @property Show\Field|Collection avatar - * @property Show\Field|Collection password - * @property Show\Field|Collection remember_token * @property Show\Field|Collection username + * @property Show\Field|Collection password + * @property Show\Field|Collection avatar + * @property Show\Field|Collection remember_token * @property Show\Field|Collection address_id * @property Show\Field|Collection image - * @property Show\Field|Collection jump_link - * @property Show\Field|Collection jump_type - * @property Show\Field|Collection remarks * @property Show\Field|Collection sort + * @property Show\Field|Collection jump_type + * @property Show\Field|Collection jump_link + * @property Show\Field|Collection remarks * @property Show\Field|Collection after_sale_id * @property Show\Field|Collection desc * @property Show\Field|Collection images - * @property Show\Field|Collection amount - * @property Show\Field|Collection num * @property Show\Field|Collection order_id - * @property Show\Field|Collection order_product_id - * @property Show\Field|Collection sales_value * @property Show\Field|Collection sn + * @property Show\Field|Collection order_product_id + * @property Show\Field|Collection num + * @property Show\Field|Collection amount * @property Show\Field|Collection state * @property Show\Field|Collection tracking_number + * @property Show\Field|Collection sales_value * @property Show\Field|Collection before_agent_level * @property Show\Field|Collection change_agent_level * @property Show\Field|Collection remark - * @property Show\Field|Collection apk_link - * @property Show\Field|Collection cate - * @property Show\Field|Collection context - * @property Show\Field|Collection is_force * @property Show\Field|Collection v + * @property Show\Field|Collection cate + * @property Show\Field|Collection is_force + * @property Show\Field|Collection context + * @property Show\Field|Collection apk_link * @property Show\Field|Collection wgt_link + * @property Show\Field|Collection is_recommend * @property Show\Field|Collection _lft * @property Show\Field|Collection _rgt - * @property Show\Field|Collection is_recommend * @property Show\Field|Collection article_id - * @property Show\Field|Collection author_name * @property Show\Field|Collection category_id - * @property Show\Field|Collection likes - * @property Show\Field|Collection media_content - * @property Show\Field|Collection media_type - * @property Show\Field|Collection points + * @property Show\Field|Collection author_name * @property Show\Field|Collection subtitle + * @property Show\Field|Collection points + * @property Show\Field|Collection likes + * @property Show\Field|Collection media_type + * @property Show\Field|Collection media_content + * @property Show\Field|Collection loggable_type + * @property Show\Field|Collection loggable_id * @property Show\Field|Collection action * @property Show\Field|Collection before_balance * @property Show\Field|Collection change_balance - * @property Show\Field|Collection loggable_id - * @property Show\Field|Collection loggable_type * @property Show\Field|Collection balance - * @property Show\Field|Collection is_frozen * @property Show\Field|Collection total_expenses * @property Show\Field|Collection total_revenue * @property Show\Field|Collection transferable + * @property Show\Field|Collection is_frozen * @property Show\Field|Collection continue_click_times * @property Show\Field|Collection last_click_at - * @property Show\Field|Collection is_enable * @property Show\Field|Collection ranges + * @property Show\Field|Collection is_enable * @property Show\Field|Collection administrator_id * @property Show\Field|Collection status * @property Show\Field|Collection task_id + * @property Show\Field|Collection threshold * @property Show\Field|Collection limit * @property Show\Field|Collection sent * @property Show\Field|Collection stock - * @property Show\Field|Collection threshold * @property Show\Field|Collection use_day - * @property Show\Field|Collection use_end_at * @property Show\Field|Collection use_start_at + * @property Show\Field|Collection use_end_at * @property Show\Field|Collection lvl - * @property Show\Field|Collection order_completed_at * @property Show\Field|Collection total_amount - * @property Show\Field|Collection earningable_id + * @property Show\Field|Collection order_completed_at * @property Show\Field|Collection earningable_type + * @property Show\Field|Collection earningable_id + * @property Show\Field|Collection total_earnings * @property Show\Field|Collection fee * @property Show\Field|Collection fee_rate - * @property Show\Field|Collection pay_at - * @property Show\Field|Collection pay_image - * @property Show\Field|Collection pay_info - * @property Show\Field|Collection pay_way * @property Show\Field|Collection payer_id + * @property Show\Field|Collection pay_info + * @property Show\Field|Collection pay_at * @property Show\Field|Collection settle_at - * @property Show\Field|Collection total_earnings - * @property Show\Field|Collection end_at + * @property Show\Field|Collection pay_image + * @property Show\Field|Collection pay_way * @property Show\Field|Collection is_manager - * @property Show\Field|Collection is_settle * @property Show\Field|Collection real_amount * @property Show\Field|Collection start_at + * @property Show\Field|Collection end_at + * @property Show\Field|Collection is_settle * @property Show\Field|Collection product_id * @property Show\Field|Collection sales_volume * @property Show\Field|Collection last_consignor_id @@ -752,122 +754,122 @@ namespace Dcat\Admin { * @property Show\Field|Collection price * @property Show\Field|Collection sale_price * @property Show\Field|Collection reason - * @property Show\Field|Collection allocated_at - * @property Show\Field|Collection consignee_address + * @property Show\Field|Collection consignor_id + * @property Show\Field|Collection settle_state * @property Show\Field|Collection consignee_name * @property Show\Field|Collection consignee_telephone * @property Show\Field|Collection consignee_zone - * @property Show\Field|Collection consignor_id - * @property Show\Field|Collection out_trade_no - * @property Show\Field|Collection paied_time - * @property Show\Field|Collection pay_sn + * @property Show\Field|Collection consignee_address * @property Show\Field|Collection pay_time - * @property Show\Field|Collection settle_state + * @property Show\Field|Collection paied_time * @property Show\Field|Collection shipping_time * @property Show\Field|Collection shippinged_time + * @property Show\Field|Collection allocated_at + * @property Show\Field|Collection pay_sn + * @property Show\Field|Collection out_trade_no * @property Show\Field|Collection min_order_amount * @property Show\Field|Collection price_1st * @property Show\Field|Collection price_2st * @property Show\Field|Collection price_3st - * @property Show\Field|Collection is_sale - * @property Show\Field|Collection manager_subsidy * @property Show\Field|Collection sales_count + * @property Show\Field|Collection is_sale * @property Show\Field|Collection unit + * @property Show\Field|Collection manager_subsidy * @property Show\Field|Collection path - * @property Show\Field|Collection subsidy_rate * @property Show\Field|Collection total_purchase_amount + * @property Show\Field|Collection subsidy_rate * @property Show\Field|Collection total_subsidy - * @property Show\Field|Collection change_amount - * @property Show\Field|Collection change_from_purchase_subsidy_id * @property Show\Field|Collection purchase_subsidy_id + * @property Show\Field|Collection change_from_purchase_subsidy_id + * @property Show\Field|Collection change_amount * @property Show\Field|Collection change_sales_value + * @property Show\Field|Collection sell_price * @property Show\Field|Collection dealer_price * @property Show\Field|Collection quantity - * @property Show\Field|Collection sell_price * @property Show\Field|Collection before_lvl * @property Show\Field|Collection change_lvl * @property Show\Field|Collection revoke_id - * @property Show\Field|Collection account_amount * @property Show\Field|Collection rate * @property Show\Field|Collection service_amount + * @property Show\Field|Collection account_amount * @property Show\Field|Collection withdrawable - * @property Show\Field|Collection bonds * @property Show\Field|Collection contracted_lvl_at + * @property Show\Field|Collection bonds * @property Show\Field|Collection self_sales_value * @property Show\Field|Collection team_sales_value - * @property Show\Field|Collection failed_reason - * @property Show\Field|Collection jobable_id * @property Show\Field|Collection jobable_type - * @property Show\Field|Collection change_revenue + * @property Show\Field|Collection jobable_id + * @property Show\Field|Collection failed_reason * @property Show\Field|Collection pre_income_id * @property Show\Field|Collection pre_income_job_id + * @property Show\Field|Collection change_revenue * @property Show\Field|Collection agent_level - * @property Show\Field|Collection completed_at - * @property Show\Field|Collection rule * @property Show\Field|Collection total_sales_value + * @property Show\Field|Collection rule + * @property Show\Field|Collection completed_at + * @property Show\Field|Collection uuid * @property Show\Field|Collection connection + * @property Show\Field|Collection queue + * @property Show\Field|Collection payload * @property Show\Field|Collection exception * @property Show\Field|Collection failed_at - * @property Show\Field|Collection payload - * @property Show\Field|Collection queue - * @property Show\Field|Collection uuid * @property Show\Field|Collection job_id - * @property Show\Field|Collection fails * @property Show\Field|Collection file * @property Show\Field|Collection success + * @property Show\Field|Collection fails * @property Show\Field|Collection code * @property Show\Field|Collection info * @property Show\Field|Collection ext * @property Show\Field|Collection is_push * @property Show\Field|Collection message_id * @property Show\Field|Collection order_package_id - * @property Show\Field|Collection checked_at - * @property Show\Field|Collection is_failed - * @property Show\Field|Collection last_news - * @property Show\Field|Collection shipping_code * @property Show\Field|Collection shipping_company + * @property Show\Field|Collection shipping_code * @property Show\Field|Collection shipping_number - * @property Show\Field|Collection after_expire_at - * @property Show\Field|Collection after_sale_state - * @property Show\Field|Collection coupon_discount_amount - * @property Show\Field|Collection gift_for_sku_id - * @property Show\Field|Collection reduced_amount - * @property Show\Field|Collection remain_quantity - * @property Show\Field|Collection specs + * @property Show\Field|Collection is_failed + * @property Show\Field|Collection checked_at + * @property Show\Field|Collection last_news * @property Show\Field|Collection spu_id - * @property Show\Field|Collection vip_discount_amount - * @property Show\Field|Collection vip_price + * @property Show\Field|Collection specs * @property Show\Field|Collection weight + * @property Show\Field|Collection vip_price + * @property Show\Field|Collection coupon_discount_amount + * @property Show\Field|Collection vip_discount_amount + * @property Show\Field|Collection reduced_amount + * @property Show\Field|Collection after_sale_state + * @property Show\Field|Collection after_expire_at + * @property Show\Field|Collection remain_quantity + * @property Show\Field|Collection gift_for_sku_id * @property Show\Field|Collection max - * @property Show\Field|Collection auto_complete_at - * @property Show\Field|Collection is_change - * @property Show\Field|Collection is_settlable - * @property Show\Field|Collection note - * @property Show\Field|Collection products_total_amount * @property Show\Field|Collection shipping_fee - * @property Show\Field|Collection shipping_state + * @property Show\Field|Collection products_total_amount + * @property Show\Field|Collection note * @property Show\Field|Collection user_coupon_id - * @property Show\Field|Collection payable_id + * @property Show\Field|Collection shipping_state + * @property Show\Field|Collection is_change + * @property Show\Field|Collection auto_complete_at + * @property Show\Field|Collection is_settlable * @property Show\Field|Collection payable_type + * @property Show\Field|Collection payable_id + * @property Show\Field|Collection tokenable_type + * @property Show\Field|Collection tokenable_id + * @property Show\Field|Collection token * @property Show\Field|Collection abilities * @property Show\Field|Collection last_used_at - * @property Show\Field|Collection token - * @property Show\Field|Collection tokenable_id - * @property Show\Field|Collection tokenable_type * @property Show\Field|Collection old_points * @property Show\Field|Collection gift_sku_id * @property Show\Field|Collection remaining * @property Show\Field|Collection attrs * @property Show\Field|Collection applicant_id * @property Show\Field|Collection reviewer_id - * @property Show\Field|Collection buynote_id - * @property Show\Field|Collection cost_price * @property Show\Field|Collection market_price + * @property Show\Field|Collection cost_price * @property Show\Field|Collection media - * @property Show\Field|Collection release_at * @property Show\Field|Collection sales - * @property Show\Field|Collection shipping_template_id + * @property Show\Field|Collection release_at * @property Show\Field|Collection verify_state + * @property Show\Field|Collection buynote_id + * @property Show\Field|Collection shipping_template_id * @property Show\Field|Collection feature_id * @property Show\Field|Collection items * @property Show\Field|Collection view_date @@ -875,180 +877,179 @@ namespace Dcat\Admin { * @property Show\Field|Collection message_type * @property Show\Field|Collection change_quota * @property Show\Field|Collection order_user_id - * @property Show\Field|Collection size * @property Show\Field|Collection x * @property Show\Field|Collection y - * @property Show\Field|Collection address + * @property Show\Field|Collection size + * @property Show\Field|Collection zone_id * @property Show\Field|Collection consignee - * @property Show\Field|Collection is_default * @property Show\Field|Collection telephone * @property Show\Field|Collection zone - * @property Show\Field|Collection zone_id + * @property Show\Field|Collection address + * @property Show\Field|Collection is_default * @property Show\Field|Collection rule_id * @property Show\Field|Collection template_id * @property Show\Field|Collection zones - * @property Show\Field|Collection expires_at * @property Show\Field|Collection phone - * @property Show\Field|Collection socialite_id + * @property Show\Field|Collection expires_at * @property Show\Field|Collection socialite_type + * @property Show\Field|Collection socialite_id * @property Show\Field|Collection tag_id * @property Show\Field|Collection taggable_id * @property Show\Field|Collection taggable_type - * @property Show\Field|Collection bank_description - * @property Show\Field|Collection bank_name + * @property Show\Field|Collection real_name * @property Show\Field|Collection bank_number + * @property Show\Field|Collection bank_name + * @property Show\Field|Collection bank_description * @property Show\Field|Collection is_edited * @property Show\Field|Collection old_real_name - * @property Show\Field|Collection real_name - * @property Show\Field|Collection m_cid * @property Show\Field|Collection u_cid - * @property Show\Field|Collection coupon_amount + * @property Show\Field|Collection m_cid * @property Show\Field|Collection coupon_name - * @property Show\Field|Collection coupon_threshold * @property Show\Field|Collection coupon_type + * @property Show\Field|Collection coupon_amount + * @property Show\Field|Collection coupon_threshold + * @property Show\Field|Collection inviter_id + * @property Show\Field|Collection nickname + * @property Show\Field|Collection gender * @property Show\Field|Collection birthday * @property Show\Field|Collection bonusable * @property Show\Field|Collection depth - * @property Show\Field|Collection gender - * @property Show\Field|Collection group_sales_value - * @property Show\Field|Collection growth_value - * @property Show\Field|Collection inviter_id - * @property Show\Field|Collection nickname - * @property Show\Field|Collection pre_growth_value - * @property Show\Field|Collection quota_v1 * @property Show\Field|Collection quota_v2 + * @property Show\Field|Collection quota_v1 + * @property Show\Field|Collection growth_value + * @property Show\Field|Collection group_sales_value + * @property Show\Field|Collection pre_growth_value * @property Show\Field|Collection real_inviter_id * @property Show\Field|Collection vip_id + * @property Show\Field|Collection phone_verified_at * @property Show\Field|Collection email * @property Show\Field|Collection email_verified_at - * @property Show\Field|Collection last_login_at * @property Show\Field|Collection last_login_ip - * @property Show\Field|Collection old_password - * @property Show\Field|Collection phone_verified_at + * @property Show\Field|Collection last_login_at * @property Show\Field|Collection register_ip * @property Show\Field|Collection status_remark + * @property Show\Field|Collection old_password * - * @method Show\Field|Collection width(string $label = null) - * @method Show\Field|Collection content(string $label = null) - * @method Show\Field|Collection coupons_rule(string $label = null) - * @method Show\Field|Collection cover(string $label = null) - * @method Show\Field|Collection created_at(string $label = null) - * @method Show\Field|Collection ended_at(string $label = null) - * @method Show\Field|Collection gifts_rule(string $label = null) * @method Show\Field|Collection id(string $label = null) + * @method Show\Field|Collection cover(string $label = null) + * @method Show\Field|Collection content(string $label = null) * @method Show\Field|Collection is_use(string $label = null) * @method Show\Field|Collection started_at(string $label = null) + * @method Show\Field|Collection ended_at(string $label = null) + * @method Show\Field|Collection coupons_rule(string $label = null) + * @method Show\Field|Collection gifts_rule(string $label = null) + * @method Show\Field|Collection created_at(string $label = null) * @method Show\Field|Collection updated_at(string $label = null) * @method Show\Field|Collection activity_id(string $label = null) * @method Show\Field|Collection coupon_id(string $label = null) * @method Show\Field|Collection qty(string $label = null) * @method Show\Field|Collection sku_id(string $label = null) * @method Show\Field|Collection part_id(string $label = null) - * @method Show\Field|Collection dimensions(string $label = null) - * @method Show\Field|Collection is_show(string $label = null) * @method Show\Field|Collection key(string $label = null) * @method Show\Field|Collection name(string $label = null) - * @method Show\Field|Collection detail(string $label = null) + * @method Show\Field|Collection dimensions(string $label = null) + * @method Show\Field|Collection is_show(string $label = null) * @method Show\Field|Collection type(string $label = null) * @method Show\Field|Collection version(string $label = null) + * @method Show\Field|Collection detail(string $label = null) * @method Show\Field|Collection is_enabled(string $label = null) - * @method Show\Field|Collection extension(string $label = null) - * @method Show\Field|Collection icon(string $label = null) - * @method Show\Field|Collection order(string $label = null) * @method Show\Field|Collection parent_id(string $label = null) + * @method Show\Field|Collection order(string $label = null) + * @method Show\Field|Collection icon(string $label = null) * @method Show\Field|Collection uri(string $label = null) - * @method Show\Field|Collection menu_id(string $label = null) + * @method Show\Field|Collection extension(string $label = null) * @method Show\Field|Collection permission_id(string $label = null) + * @method Show\Field|Collection menu_id(string $label = null) + * @method Show\Field|Collection slug(string $label = null) * @method Show\Field|Collection http_method(string $label = null) * @method Show\Field|Collection http_path(string $label = null) - * @method Show\Field|Collection slug(string $label = null) * @method Show\Field|Collection role_id(string $label = null) * @method Show\Field|Collection user_id(string $label = null) * @method Show\Field|Collection value(string $label = null) - * @method Show\Field|Collection avatar(string $label = null) - * @method Show\Field|Collection password(string $label = null) - * @method Show\Field|Collection remember_token(string $label = null) * @method Show\Field|Collection username(string $label = null) + * @method Show\Field|Collection password(string $label = null) + * @method Show\Field|Collection avatar(string $label = null) + * @method Show\Field|Collection remember_token(string $label = null) * @method Show\Field|Collection address_id(string $label = null) * @method Show\Field|Collection image(string $label = null) - * @method Show\Field|Collection jump_link(string $label = null) - * @method Show\Field|Collection jump_type(string $label = null) - * @method Show\Field|Collection remarks(string $label = null) * @method Show\Field|Collection sort(string $label = null) + * @method Show\Field|Collection jump_type(string $label = null) + * @method Show\Field|Collection jump_link(string $label = null) + * @method Show\Field|Collection remarks(string $label = null) * @method Show\Field|Collection after_sale_id(string $label = null) * @method Show\Field|Collection desc(string $label = null) * @method Show\Field|Collection images(string $label = null) - * @method Show\Field|Collection amount(string $label = null) - * @method Show\Field|Collection num(string $label = null) * @method Show\Field|Collection order_id(string $label = null) - * @method Show\Field|Collection order_product_id(string $label = null) - * @method Show\Field|Collection sales_value(string $label = null) * @method Show\Field|Collection sn(string $label = null) + * @method Show\Field|Collection order_product_id(string $label = null) + * @method Show\Field|Collection num(string $label = null) + * @method Show\Field|Collection amount(string $label = null) * @method Show\Field|Collection state(string $label = null) * @method Show\Field|Collection tracking_number(string $label = null) + * @method Show\Field|Collection sales_value(string $label = null) * @method Show\Field|Collection before_agent_level(string $label = null) * @method Show\Field|Collection change_agent_level(string $label = null) * @method Show\Field|Collection remark(string $label = null) - * @method Show\Field|Collection apk_link(string $label = null) - * @method Show\Field|Collection cate(string $label = null) - * @method Show\Field|Collection context(string $label = null) - * @method Show\Field|Collection is_force(string $label = null) * @method Show\Field|Collection v(string $label = null) + * @method Show\Field|Collection cate(string $label = null) + * @method Show\Field|Collection is_force(string $label = null) + * @method Show\Field|Collection context(string $label = null) + * @method Show\Field|Collection apk_link(string $label = null) * @method Show\Field|Collection wgt_link(string $label = null) + * @method Show\Field|Collection is_recommend(string $label = null) * @method Show\Field|Collection _lft(string $label = null) * @method Show\Field|Collection _rgt(string $label = null) - * @method Show\Field|Collection is_recommend(string $label = null) * @method Show\Field|Collection article_id(string $label = null) - * @method Show\Field|Collection author_name(string $label = null) * @method Show\Field|Collection category_id(string $label = null) - * @method Show\Field|Collection likes(string $label = null) - * @method Show\Field|Collection media_content(string $label = null) - * @method Show\Field|Collection media_type(string $label = null) - * @method Show\Field|Collection points(string $label = null) + * @method Show\Field|Collection author_name(string $label = null) * @method Show\Field|Collection subtitle(string $label = null) + * @method Show\Field|Collection points(string $label = null) + * @method Show\Field|Collection likes(string $label = null) + * @method Show\Field|Collection media_type(string $label = null) + * @method Show\Field|Collection media_content(string $label = null) + * @method Show\Field|Collection loggable_type(string $label = null) + * @method Show\Field|Collection loggable_id(string $label = null) * @method Show\Field|Collection action(string $label = null) * @method Show\Field|Collection before_balance(string $label = null) * @method Show\Field|Collection change_balance(string $label = null) - * @method Show\Field|Collection loggable_id(string $label = null) - * @method Show\Field|Collection loggable_type(string $label = null) * @method Show\Field|Collection balance(string $label = null) - * @method Show\Field|Collection is_frozen(string $label = null) * @method Show\Field|Collection total_expenses(string $label = null) * @method Show\Field|Collection total_revenue(string $label = null) * @method Show\Field|Collection transferable(string $label = null) + * @method Show\Field|Collection is_frozen(string $label = null) * @method Show\Field|Collection continue_click_times(string $label = null) * @method Show\Field|Collection last_click_at(string $label = null) - * @method Show\Field|Collection is_enable(string $label = null) * @method Show\Field|Collection ranges(string $label = null) + * @method Show\Field|Collection is_enable(string $label = null) * @method Show\Field|Collection administrator_id(string $label = null) * @method Show\Field|Collection status(string $label = null) * @method Show\Field|Collection task_id(string $label = null) + * @method Show\Field|Collection threshold(string $label = null) * @method Show\Field|Collection limit(string $label = null) * @method Show\Field|Collection sent(string $label = null) * @method Show\Field|Collection stock(string $label = null) - * @method Show\Field|Collection threshold(string $label = null) * @method Show\Field|Collection use_day(string $label = null) - * @method Show\Field|Collection use_end_at(string $label = null) * @method Show\Field|Collection use_start_at(string $label = null) + * @method Show\Field|Collection use_end_at(string $label = null) * @method Show\Field|Collection lvl(string $label = null) - * @method Show\Field|Collection order_completed_at(string $label = null) * @method Show\Field|Collection total_amount(string $label = null) - * @method Show\Field|Collection earningable_id(string $label = null) + * @method Show\Field|Collection order_completed_at(string $label = null) * @method Show\Field|Collection earningable_type(string $label = null) + * @method Show\Field|Collection earningable_id(string $label = null) + * @method Show\Field|Collection total_earnings(string $label = null) * @method Show\Field|Collection fee(string $label = null) * @method Show\Field|Collection fee_rate(string $label = null) - * @method Show\Field|Collection pay_at(string $label = null) - * @method Show\Field|Collection pay_image(string $label = null) - * @method Show\Field|Collection pay_info(string $label = null) - * @method Show\Field|Collection pay_way(string $label = null) * @method Show\Field|Collection payer_id(string $label = null) + * @method Show\Field|Collection pay_info(string $label = null) + * @method Show\Field|Collection pay_at(string $label = null) * @method Show\Field|Collection settle_at(string $label = null) - * @method Show\Field|Collection total_earnings(string $label = null) - * @method Show\Field|Collection end_at(string $label = null) + * @method Show\Field|Collection pay_image(string $label = null) + * @method Show\Field|Collection pay_way(string $label = null) * @method Show\Field|Collection is_manager(string $label = null) - * @method Show\Field|Collection is_settle(string $label = null) * @method Show\Field|Collection real_amount(string $label = null) * @method Show\Field|Collection start_at(string $label = null) + * @method Show\Field|Collection end_at(string $label = null) + * @method Show\Field|Collection is_settle(string $label = null) * @method Show\Field|Collection product_id(string $label = null) * @method Show\Field|Collection sales_volume(string $label = null) * @method Show\Field|Collection last_consignor_id(string $label = null) @@ -1056,122 +1057,122 @@ namespace Dcat\Admin { * @method Show\Field|Collection price(string $label = null) * @method Show\Field|Collection sale_price(string $label = null) * @method Show\Field|Collection reason(string $label = null) - * @method Show\Field|Collection allocated_at(string $label = null) - * @method Show\Field|Collection consignee_address(string $label = null) + * @method Show\Field|Collection consignor_id(string $label = null) + * @method Show\Field|Collection settle_state(string $label = null) * @method Show\Field|Collection consignee_name(string $label = null) * @method Show\Field|Collection consignee_telephone(string $label = null) * @method Show\Field|Collection consignee_zone(string $label = null) - * @method Show\Field|Collection consignor_id(string $label = null) - * @method Show\Field|Collection out_trade_no(string $label = null) - * @method Show\Field|Collection paied_time(string $label = null) - * @method Show\Field|Collection pay_sn(string $label = null) + * @method Show\Field|Collection consignee_address(string $label = null) * @method Show\Field|Collection pay_time(string $label = null) - * @method Show\Field|Collection settle_state(string $label = null) + * @method Show\Field|Collection paied_time(string $label = null) * @method Show\Field|Collection shipping_time(string $label = null) * @method Show\Field|Collection shippinged_time(string $label = null) + * @method Show\Field|Collection allocated_at(string $label = null) + * @method Show\Field|Collection pay_sn(string $label = null) + * @method Show\Field|Collection out_trade_no(string $label = null) * @method Show\Field|Collection min_order_amount(string $label = null) * @method Show\Field|Collection price_1st(string $label = null) * @method Show\Field|Collection price_2st(string $label = null) * @method Show\Field|Collection price_3st(string $label = null) - * @method Show\Field|Collection is_sale(string $label = null) - * @method Show\Field|Collection manager_subsidy(string $label = null) * @method Show\Field|Collection sales_count(string $label = null) + * @method Show\Field|Collection is_sale(string $label = null) * @method Show\Field|Collection unit(string $label = null) + * @method Show\Field|Collection manager_subsidy(string $label = null) * @method Show\Field|Collection path(string $label = null) - * @method Show\Field|Collection subsidy_rate(string $label = null) * @method Show\Field|Collection total_purchase_amount(string $label = null) + * @method Show\Field|Collection subsidy_rate(string $label = null) * @method Show\Field|Collection total_subsidy(string $label = null) - * @method Show\Field|Collection change_amount(string $label = null) - * @method Show\Field|Collection change_from_purchase_subsidy_id(string $label = null) * @method Show\Field|Collection purchase_subsidy_id(string $label = null) + * @method Show\Field|Collection change_from_purchase_subsidy_id(string $label = null) + * @method Show\Field|Collection change_amount(string $label = null) * @method Show\Field|Collection change_sales_value(string $label = null) + * @method Show\Field|Collection sell_price(string $label = null) * @method Show\Field|Collection dealer_price(string $label = null) * @method Show\Field|Collection quantity(string $label = null) - * @method Show\Field|Collection sell_price(string $label = null) * @method Show\Field|Collection before_lvl(string $label = null) * @method Show\Field|Collection change_lvl(string $label = null) * @method Show\Field|Collection revoke_id(string $label = null) - * @method Show\Field|Collection account_amount(string $label = null) * @method Show\Field|Collection rate(string $label = null) * @method Show\Field|Collection service_amount(string $label = null) + * @method Show\Field|Collection account_amount(string $label = null) * @method Show\Field|Collection withdrawable(string $label = null) - * @method Show\Field|Collection bonds(string $label = null) * @method Show\Field|Collection contracted_lvl_at(string $label = null) + * @method Show\Field|Collection bonds(string $label = null) * @method Show\Field|Collection self_sales_value(string $label = null) * @method Show\Field|Collection team_sales_value(string $label = null) - * @method Show\Field|Collection failed_reason(string $label = null) - * @method Show\Field|Collection jobable_id(string $label = null) * @method Show\Field|Collection jobable_type(string $label = null) - * @method Show\Field|Collection change_revenue(string $label = null) + * @method Show\Field|Collection jobable_id(string $label = null) + * @method Show\Field|Collection failed_reason(string $label = null) * @method Show\Field|Collection pre_income_id(string $label = null) * @method Show\Field|Collection pre_income_job_id(string $label = null) + * @method Show\Field|Collection change_revenue(string $label = null) * @method Show\Field|Collection agent_level(string $label = null) - * @method Show\Field|Collection completed_at(string $label = null) - * @method Show\Field|Collection rule(string $label = null) * @method Show\Field|Collection total_sales_value(string $label = null) + * @method Show\Field|Collection rule(string $label = null) + * @method Show\Field|Collection completed_at(string $label = null) + * @method Show\Field|Collection uuid(string $label = null) * @method Show\Field|Collection connection(string $label = null) + * @method Show\Field|Collection queue(string $label = null) + * @method Show\Field|Collection payload(string $label = null) * @method Show\Field|Collection exception(string $label = null) * @method Show\Field|Collection failed_at(string $label = null) - * @method Show\Field|Collection payload(string $label = null) - * @method Show\Field|Collection queue(string $label = null) - * @method Show\Field|Collection uuid(string $label = null) * @method Show\Field|Collection job_id(string $label = null) - * @method Show\Field|Collection fails(string $label = null) * @method Show\Field|Collection file(string $label = null) * @method Show\Field|Collection success(string $label = null) + * @method Show\Field|Collection fails(string $label = null) * @method Show\Field|Collection code(string $label = null) * @method Show\Field|Collection info(string $label = null) * @method Show\Field|Collection ext(string $label = null) * @method Show\Field|Collection is_push(string $label = null) * @method Show\Field|Collection message_id(string $label = null) * @method Show\Field|Collection order_package_id(string $label = null) - * @method Show\Field|Collection checked_at(string $label = null) - * @method Show\Field|Collection is_failed(string $label = null) - * @method Show\Field|Collection last_news(string $label = null) - * @method Show\Field|Collection shipping_code(string $label = null) * @method Show\Field|Collection shipping_company(string $label = null) + * @method Show\Field|Collection shipping_code(string $label = null) * @method Show\Field|Collection shipping_number(string $label = null) - * @method Show\Field|Collection after_expire_at(string $label = null) - * @method Show\Field|Collection after_sale_state(string $label = null) - * @method Show\Field|Collection coupon_discount_amount(string $label = null) - * @method Show\Field|Collection gift_for_sku_id(string $label = null) - * @method Show\Field|Collection reduced_amount(string $label = null) - * @method Show\Field|Collection remain_quantity(string $label = null) - * @method Show\Field|Collection specs(string $label = null) + * @method Show\Field|Collection is_failed(string $label = null) + * @method Show\Field|Collection checked_at(string $label = null) + * @method Show\Field|Collection last_news(string $label = null) * @method Show\Field|Collection spu_id(string $label = null) - * @method Show\Field|Collection vip_discount_amount(string $label = null) - * @method Show\Field|Collection vip_price(string $label = null) + * @method Show\Field|Collection specs(string $label = null) * @method Show\Field|Collection weight(string $label = null) + * @method Show\Field|Collection vip_price(string $label = null) + * @method Show\Field|Collection coupon_discount_amount(string $label = null) + * @method Show\Field|Collection vip_discount_amount(string $label = null) + * @method Show\Field|Collection reduced_amount(string $label = null) + * @method Show\Field|Collection after_sale_state(string $label = null) + * @method Show\Field|Collection after_expire_at(string $label = null) + * @method Show\Field|Collection remain_quantity(string $label = null) + * @method Show\Field|Collection gift_for_sku_id(string $label = null) * @method Show\Field|Collection max(string $label = null) - * @method Show\Field|Collection auto_complete_at(string $label = null) - * @method Show\Field|Collection is_change(string $label = null) - * @method Show\Field|Collection is_settlable(string $label = null) - * @method Show\Field|Collection note(string $label = null) - * @method Show\Field|Collection products_total_amount(string $label = null) * @method Show\Field|Collection shipping_fee(string $label = null) - * @method Show\Field|Collection shipping_state(string $label = null) + * @method Show\Field|Collection products_total_amount(string $label = null) + * @method Show\Field|Collection note(string $label = null) * @method Show\Field|Collection user_coupon_id(string $label = null) - * @method Show\Field|Collection payable_id(string $label = null) + * @method Show\Field|Collection shipping_state(string $label = null) + * @method Show\Field|Collection is_change(string $label = null) + * @method Show\Field|Collection auto_complete_at(string $label = null) + * @method Show\Field|Collection is_settlable(string $label = null) * @method Show\Field|Collection payable_type(string $label = null) + * @method Show\Field|Collection payable_id(string $label = null) + * @method Show\Field|Collection tokenable_type(string $label = null) + * @method Show\Field|Collection tokenable_id(string $label = null) + * @method Show\Field|Collection token(string $label = null) * @method Show\Field|Collection abilities(string $label = null) * @method Show\Field|Collection last_used_at(string $label = null) - * @method Show\Field|Collection token(string $label = null) - * @method Show\Field|Collection tokenable_id(string $label = null) - * @method Show\Field|Collection tokenable_type(string $label = null) * @method Show\Field|Collection old_points(string $label = null) * @method Show\Field|Collection gift_sku_id(string $label = null) * @method Show\Field|Collection remaining(string $label = null) * @method Show\Field|Collection attrs(string $label = null) * @method Show\Field|Collection applicant_id(string $label = null) * @method Show\Field|Collection reviewer_id(string $label = null) - * @method Show\Field|Collection buynote_id(string $label = null) - * @method Show\Field|Collection cost_price(string $label = null) * @method Show\Field|Collection market_price(string $label = null) + * @method Show\Field|Collection cost_price(string $label = null) * @method Show\Field|Collection media(string $label = null) - * @method Show\Field|Collection release_at(string $label = null) * @method Show\Field|Collection sales(string $label = null) - * @method Show\Field|Collection shipping_template_id(string $label = null) + * @method Show\Field|Collection release_at(string $label = null) * @method Show\Field|Collection verify_state(string $label = null) + * @method Show\Field|Collection buynote_id(string $label = null) + * @method Show\Field|Collection shipping_template_id(string $label = null) * @method Show\Field|Collection feature_id(string $label = null) * @method Show\Field|Collection items(string $label = null) * @method Show\Field|Collection view_date(string $label = null) @@ -1179,84 +1180,94 @@ namespace Dcat\Admin { * @method Show\Field|Collection message_type(string $label = null) * @method Show\Field|Collection change_quota(string $label = null) * @method Show\Field|Collection order_user_id(string $label = null) - * @method Show\Field|Collection size(string $label = null) * @method Show\Field|Collection x(string $label = null) * @method Show\Field|Collection y(string $label = null) - * @method Show\Field|Collection address(string $label = null) + * @method Show\Field|Collection size(string $label = null) + * @method Show\Field|Collection zone_id(string $label = null) * @method Show\Field|Collection consignee(string $label = null) - * @method Show\Field|Collection is_default(string $label = null) * @method Show\Field|Collection telephone(string $label = null) * @method Show\Field|Collection zone(string $label = null) - * @method Show\Field|Collection zone_id(string $label = null) + * @method Show\Field|Collection address(string $label = null) + * @method Show\Field|Collection is_default(string $label = null) * @method Show\Field|Collection rule_id(string $label = null) * @method Show\Field|Collection template_id(string $label = null) * @method Show\Field|Collection zones(string $label = null) - * @method Show\Field|Collection expires_at(string $label = null) * @method Show\Field|Collection phone(string $label = null) - * @method Show\Field|Collection socialite_id(string $label = null) + * @method Show\Field|Collection expires_at(string $label = null) * @method Show\Field|Collection socialite_type(string $label = null) + * @method Show\Field|Collection socialite_id(string $label = null) * @method Show\Field|Collection tag_id(string $label = null) * @method Show\Field|Collection taggable_id(string $label = null) * @method Show\Field|Collection taggable_type(string $label = null) - * @method Show\Field|Collection bank_description(string $label = null) - * @method Show\Field|Collection bank_name(string $label = null) + * @method Show\Field|Collection real_name(string $label = null) * @method Show\Field|Collection bank_number(string $label = null) + * @method Show\Field|Collection bank_name(string $label = null) + * @method Show\Field|Collection bank_description(string $label = null) * @method Show\Field|Collection is_edited(string $label = null) * @method Show\Field|Collection old_real_name(string $label = null) - * @method Show\Field|Collection real_name(string $label = null) - * @method Show\Field|Collection m_cid(string $label = null) * @method Show\Field|Collection u_cid(string $label = null) - * @method Show\Field|Collection coupon_amount(string $label = null) + * @method Show\Field|Collection m_cid(string $label = null) * @method Show\Field|Collection coupon_name(string $label = null) - * @method Show\Field|Collection coupon_threshold(string $label = null) * @method Show\Field|Collection coupon_type(string $label = null) + * @method Show\Field|Collection coupon_amount(string $label = null) + * @method Show\Field|Collection coupon_threshold(string $label = null) + * @method Show\Field|Collection inviter_id(string $label = null) + * @method Show\Field|Collection nickname(string $label = null) + * @method Show\Field|Collection gender(string $label = null) * @method Show\Field|Collection birthday(string $label = null) * @method Show\Field|Collection bonusable(string $label = null) * @method Show\Field|Collection depth(string $label = null) - * @method Show\Field|Collection gender(string $label = null) - * @method Show\Field|Collection group_sales_value(string $label = null) - * @method Show\Field|Collection growth_value(string $label = null) - * @method Show\Field|Collection inviter_id(string $label = null) - * @method Show\Field|Collection nickname(string $label = null) - * @method Show\Field|Collection pre_growth_value(string $label = null) - * @method Show\Field|Collection quota_v1(string $label = null) * @method Show\Field|Collection quota_v2(string $label = null) + * @method Show\Field|Collection quota_v1(string $label = null) + * @method Show\Field|Collection growth_value(string $label = null) + * @method Show\Field|Collection group_sales_value(string $label = null) + * @method Show\Field|Collection pre_growth_value(string $label = null) * @method Show\Field|Collection real_inviter_id(string $label = null) * @method Show\Field|Collection vip_id(string $label = null) + * @method Show\Field|Collection phone_verified_at(string $label = null) * @method Show\Field|Collection email(string $label = null) * @method Show\Field|Collection email_verified_at(string $label = null) - * @method Show\Field|Collection last_login_at(string $label = null) * @method Show\Field|Collection last_login_ip(string $label = null) - * @method Show\Field|Collection old_password(string $label = null) - * @method Show\Field|Collection phone_verified_at(string $label = null) + * @method Show\Field|Collection last_login_at(string $label = null) * @method Show\Field|Collection register_ip(string $label = null) * @method Show\Field|Collection status_remark(string $label = null) + * @method Show\Field|Collection old_password(string $label = null) */ - class Show {} + class Show + { + } /** * @method \App\Admin\Extensions\Form\Product\SelectAttr selectAttr(...$params) * @method \App\Admin\Extensions\Form\Product\SelectSpec selectSpec(...$params) */ - class Form {} + class Form + { + } } namespace Dcat\Admin\Grid { /** - + */ - class Column {} + class Column + { + } /** - + */ - class Filter {} + class Filter + { + } } namespace Dcat\Admin\Show { /** * @method $this showLabel(...$params) */ - class Field {} + class Field + { + } } diff --git a/deploy/config/deploy/staging.rb b/deploy/config/deploy/staging.rb index 59323fec..fcb531bf 100644 --- a/deploy/config/deploy/staging.rb +++ b/deploy/config/deploy/staging.rb @@ -32,7 +32,7 @@ server "47.108.227.246", user: "deployer", roles: %w{admin supervisor} # http://capistranorb.com/documentation/getting-started/configuration/ # Feel free to add new variables to customise your setup. -set :branch, "1.x" +set :branch, "develop" set :deploy_to, "/www/wwwroot/test.zichunsheng.cn" diff --git a/resources/lang/zh_CN/activity.php b/resources/lang/zh_CN/activity.php new file mode 100644 index 00000000..789651c1 --- /dev/null +++ b/resources/lang/zh_CN/activity.php @@ -0,0 +1,20 @@ + [ + 'Activity' => '活动管理', + 'activity' => '活动管理', + ], + 'fields' => [ + 'title' => '标题', + 'cover' => '封面图', + 'content' => '内容', + 'is_use' => '状态', + 'started_at' => '开始时间', + 'ended_at' => '结束时间', + 'coupons_rule' => '优惠券规则', + 'gifts_rule' => '赠品规则', + ], + 'options' => [ + ], +];