diff --git a/app/Admin/Actions/Grid/DealerBonds.php b/app/Admin/Actions/Grid/DealerBonds.php index 675888ab..20d8034e 100644 --- a/app/Admin/Actions/Grid/DealerBonds.php +++ b/app/Admin/Actions/Grid/DealerBonds.php @@ -23,7 +23,7 @@ class DealerBonds extends RowAction */ protected function authorize($user): bool { - return $user->can('dcat.admin.dealer.bonds'); + return $user->can('dcat.admin.dealers.bonds'); } public function render() diff --git a/app/Admin/Actions/Grid/DealerOrderPaid.php b/app/Admin/Actions/Grid/DealerOrderPaid.php index a70b5edf..e3b553ef 100644 --- a/app/Admin/Actions/Grid/DealerOrderPaid.php +++ b/app/Admin/Actions/Grid/DealerOrderPaid.php @@ -26,7 +26,7 @@ class DealerOrderPaid extends RowAction */ protected function authorize($user): bool { - return $user->can('dcat.admin.dealer.paid'); + return $user->can('dcat.admin.dealers.paid'); } /** diff --git a/app/Admin/Actions/Grid/DealerOrderShipping.php b/app/Admin/Actions/Grid/DealerOrderShipping.php index ae2a1f06..80084ed7 100644 --- a/app/Admin/Actions/Grid/DealerOrderShipping.php +++ b/app/Admin/Actions/Grid/DealerOrderShipping.php @@ -26,7 +26,7 @@ class DealerOrderShipping extends RowAction */ protected function authorize($user): bool { - return $user->can('dcat.admin.dealer.shipping'); + return $user->can('dcat.admin.dealers.shipping'); } /** diff --git a/app/Admin/Controllers/AppVersionController.php b/app/Admin/Controllers/AppVersionController.php index e261678a..54a81a53 100644 --- a/app/Admin/Controllers/AppVersionController.php +++ b/app/Admin/Controllers/AppVersionController.php @@ -114,8 +114,8 @@ class AppVersionController extends AdminController ->saveFullUrl() ->removable(false) ->autoSave(false) - ->autoUpload()->rules('required_if:cate,2', ['required_if'=>'安卓平台需要上传应用包'])->customFormat(function ($v) { - if ($this->model()->cate == 2) { + ->autoUpload()->rules('required_if:cate,2,3', ['required_if'=>'安卓平台需要上传应用包'])->customFormat(function ($v) { + if (in_array($this->model()->cate, [2, 3])) { $v = $this->model()->apk_link; } return $v; diff --git a/app/Admin/Controllers/DealerOrderController.php b/app/Admin/Controllers/DealerOrderController.php index 9207588f..87750aa8 100644 --- a/app/Admin/Controllers/DealerOrderController.php +++ b/app/Admin/Controllers/DealerOrderController.php @@ -2,6 +2,7 @@ namespace App\Admin\Controllers; +use App\Admin\Actions\Grid\DealerOrderAllocate; use App\Admin\Actions\Grid\DealerOrderPaid; use App\Admin\Actions\Grid\DealerOrderShipping; use App\Admin\Repositories\DealerOrder; @@ -66,14 +67,17 @@ class DealerOrderController extends AdminController $grid->model()->orderBy('created_at', 'desc'); // $grid->column('updated_at')->sortable(); $grid->actions(function (Grid\Displayers\Actions $actions) { - if (Admin::user()->can('dcat.admin.orders.show')) { + if (Admin::user()->can('dcat.admin.dealer_orders.show')) { $actions->append(' 显示   '); // $actions->disableView(false); } - if ($actions->row->status == DealerOrderStatus::Confirming && Admin::user()->can('dcat.admin.dealers_orders.paid')) { + if (!(empty($actions->row->consignor) || $actions->row->consignor_id == 1) && $actions->row->status == DealerOrderStatus::Pending && Admin::user()->can('dcat.admin.dealer_orders.allocate')) { + $actions->append(new DealerOrderAllocate()); + } + if ($actions->row->status == DealerOrderStatus::Confirming && Admin::user()->can('dcat.admin.dealer_orders.paid')) { $actions->append(new DealerOrderPaid()); } - if ((empty($actions->row->consignor) || $actions->row->consignor_id == 1) && $actions->row->status == DealerOrderStatus::Paid && Admin::user()->can('dcat.admin.dealers_orders.shipping')) { + if ((empty($actions->row->consignor) || $actions->row->consignor_id == 1) && $actions->row->status == DealerOrderStatus::Paid && Admin::user()->can('dcat.admin.dealer_orders.shipping')) { $actions->append(new DealerOrderShipping()); } }); @@ -81,6 +85,7 @@ class DealerOrderController extends AdminController $filter->panel(); $filter->equal('user.phone')->width(3); $filter->equal('consignor.phone')->width(3); + $filter->equal('sn')->width(3); // $filter->equal('id'); }); }); diff --git a/app/Admin/Controllers/SettingController.php b/app/Admin/Controllers/SettingController.php index 2992a683..a8f15773 100644 --- a/app/Admin/Controllers/SettingController.php +++ b/app/Admin/Controllers/SettingController.php @@ -182,6 +182,7 @@ class SettingController extends AdminController case 'unipush': $tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app'])); $tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution'])); + $tab->addLink('经销商配置', admin_route('settings.index', ['type'=>'dealer'])); $tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw'])); $tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios'])); $tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android'])); diff --git a/app/Admin/Forms/DealerBonds.php b/app/Admin/Forms/DealerBonds.php index de3fdb6e..0af4cbfc 100644 --- a/app/Admin/Forms/DealerBonds.php +++ b/app/Admin/Forms/DealerBonds.php @@ -20,7 +20,7 @@ class DealerBonds extends Form implements LazyRenderable */ protected function authorize($user): bool { - return $user->can('dcat.admin.dealer.bonds'); + return $user->can('dcat.admin.dealers.bonds'); } /** diff --git a/app/Admin/Forms/DealerOrderAllocate.php b/app/Admin/Forms/DealerOrderAllocate.php new file mode 100644 index 00000000..ed2a97f6 --- /dev/null +++ b/app/Admin/Forms/DealerOrderAllocate.php @@ -0,0 +1,62 @@ +title) { + return $this->title; + } + return ' 分配订单   '; + } + + /** + * @param Model|Authenticatable|HasPermissions|null $user + * + * @return bool + */ + protected function authorize($user): bool + { + return $user->can('dcat.admin.dealer_orders.allocate'); + } + + /** + * Handle the action request. + * + * @param Request $request + * + * @return Response + */ + public function handle(Request $request) + { + $order = DealerOrder::findOrFail($this->getKey()); + try { + DB::beginTransaction(); + (new OrderService())->updateOrderConsignor($order); + DB::commit(); + } catch (Throwable $th) { + DB::rollBack(); + report($th); + return $this->response()->error('操作失败,'.$th->getMessage())->refresh(); + } + + return $this->response()->success('操作成功')->refresh(); + } + + /** + * @return string|array|void + */ + public function confirm() + { + return ['确认自动分配当前订单接单人?', '确认后将无法逆操作']; + } +} diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/EarningController.php b/app/Endpoint/Api/Http/Controllers/Dealer/EarningController.php index 144b278c..b46fced5 100644 --- a/app/Endpoint/Api/Http/Controllers/Dealer/EarningController.php +++ b/app/Endpoint/Api/Http/Controllers/Dealer/EarningController.php @@ -50,7 +50,10 @@ class EarningController extends Controller */ public function show($id, Request $request) { - $earning = $request->user()->dealerEarnings()->with('earningable')->findOrFail($id); + $user = $request->user(); + $earning = DealerEarning::where(function ($q) use ($user) { + return $q->where('user_id', $user->id)->orWhere('payer_id', $user->id); + })->with('earningable')->findOrFail($id); return DealerEarningResource::make($earning); } diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index f6c9d92a..18554d26 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -305,6 +305,7 @@ class AdminPermissionSeeder extends Seeder 'children' =>[ 'paid'=>['name' =>'确认收款'], 'shipping'=>['name' =>'确认发货'], + 'allocate'=>['name' =>'自动分配'], ], ], 'dealer-earnings'=>[