123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- <?php
- namespace App\Admin\Controllers;
- use App\Services\OrderService;
- use Illuminate\Http\Request;
- use Slowlyo\OwlAdmin\Controllers\AdminController;
- class OrderController extends AdminController
- {
- protected string $serviceName = OrderService::class;
- public function list()
- {
- $crud = $this->baseCRUD()
- ->filterTogglable(false)
- ->headerToolbar([
- $this->createButton('dialog'),
- ...$this->baseHeaderToolBar(),
- ])
- ->columns([
- amis()->TableColumn('id', 'ID')->sortable(),
- amis()->TableColumn('user_id', '用户编号'),
- amis()->TableColumn('coach_id', '技师编号'),
- amis()->TableColumn('service_id', '项目编号'),
- amis()->TableColumn('channel_id', '渠道编号'),
- amis()->TableColumn('shop_id', '店铺编号'),
- amis()->TableColumn('customer_service_id', '跟单客服编号'),
- amis()->TableColumn('order_type', '订单类型'),
- amis()->TableColumn('order_source', '订单来源'),
- amis()->TableColumn('total_amount', '订单金额'),
- amis()->TableColumn('service_amount', '项目金额'),
- amis()->TableColumn('traffic_amount', '路程金额'),
- amis()->TableColumn('service_snapshot', '项目快照'),
- amis()->TableColumn('service_time', '服务时间'),
- amis()->TableColumn('distance', '目的地距离(米)')->sortable(),
- amis()->TableColumn('latitude', '目的地纬度'),
- amis()->TableColumn('longitude', '目的地经度'),
- amis()->TableColumn('location', '目的地定位地址'),
- amis()->TableColumn('address', '目的地详细地址'),
- amis()->TableColumn('area_code', '目的地行政区划代码'),
- amis()->TableColumn('remark', '订单备注'),
- amis()->TableColumn('state', '订单状态'),
- amis()->TableColumn('created_at', admin_trans('admin.created_at'))->type('datetime')->sortable(),
- amis()->TableColumn('updated_at', admin_trans('admin.updated_at'))->type('datetime')->sortable(),
- $this->rowActions('dialog'),
- ]);
- return $this->baseList($crud);
- }
- public function form($isEdit = false)
- {
- return $this->baseForm()->body([
- amis()->TextControl('user_id', '用户编号'),
- amis()->TextControl('coach_id', '技师编号'),
- amis()->TextControl('service_id', '项目编号'),
- amis()->TextControl('channel_id', '渠道编号'),
- amis()->TextControl('shop_id', '店铺编号'),
- amis()->TextControl('customer_service_id', '跟单客服编号'),
- amis()->TextControl('order_type', '订单类型'),
- amis()->TextControl('order_source', '订单来源'),
- amis()->TextControl('total_amount', '订单金额'),
- amis()->TextControl('service_amount', '项目金额'),
- amis()->TextControl('traffic_amount', '路程金额'),
- amis()->TextControl('service_snapshot', '项目快照'),
- amis()->TextControl('service_time', '服务时间'),
- amis()->TextControl('distance', '目的地距离(米)'),
- amis()->TextControl('latitude', '目的地纬度'),
- amis()->TextControl('longitude', '目的地经度'),
- amis()->TextControl('location', '目的地定位地址'),
- amis()->TextControl('address', '目的地详细地址'),
- amis()->TextControl('area_code', '目的地行政区划代码'),
- amis()->TextControl('remark', '订单备注'),
- amis()->TextControl('state', '订单状态'),
- ]);
- }
- public function detail()
- {
- return $this->baseDetail()->body([
- amis()->TextControl('id', 'ID')->static(),
- amis()->TextControl('user_id', '用户编号')->static(),
- amis()->TextControl('coach_id', '技师编号')->static(),
- amis()->TextControl('service_id', '项目编号')->static(),
- amis()->TextControl('channel_id', '渠道编号')->static(),
- amis()->TextControl('shop_id', '店铺编号')->static(),
- amis()->TextControl('customer_service_id', '跟单客服编号')->static(),
- amis()->TextControl('order_type', '订单类型')->static(),
- amis()->TextControl('order_source', '订单来源')->static(),
- amis()->TextControl('total_amount', '订单金额')->static(),
- amis()->TextControl('service_amount', '项目金额')->static(),
- amis()->TextControl('traffic_amount', '路程金额')->static(),
- amis()->TextControl('service_snapshot', '项目快照')->static(),
- amis()->TextControl('service_time', '服务时间')->static(),
- amis()->TextControl('distance', '目的地距离(米)')->static(),
- amis()->TextControl('latitude', '目的地纬度')->static(),
- amis()->TextControl('longitude', '目的地经度')->static(),
- amis()->TextControl('location', '目的地定位地址')->static(),
- amis()->TextControl('address', '目的地详细地址')->static(),
- amis()->TextControl('area_code', '目的地行政区划代码')->static(),
- amis()->TextControl('remark', '订单备注')->static(),
- amis()->TextControl('state', '订单状态')->static(),
- amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
- amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
- ]);
- }
-
- public function changeCoach(Request $request)
- {
- $validated = $request->validate([
- 'order_id' => 'required|integer|exists:order,id',
- 'new_coach_id' => 'required|integer|exists:coach_users,id',
- 'reason' => 'nullable|string|max:255',
- ]);
- return $this->service->changeOrderCoach($validated);
- }
-
- public function assignCoach(Request $request)
- {
- $validated = $request->validate([
- 'order_id' => 'required|integer|exists:order,id',
- 'coach_id' => 'required|integer|exists:coach_users,id',
- 'remark' => 'nullable|string|max:255',
- ]);
- return $this->service->assignOrderCoach($validated);
- }
-
- public function getOrderGrabList(Request $request, $orderId)
- {
- return $this->service->getOrderGrabList($orderId);
- }
-
- public function getNearbyCoaches(Request $request, $orderId)
- {
- $validated = $request->validate([
- 'distance' => 'nullable|integer|min:1000|max:50000',
- ]);
- return $this->service->getNearbyCoaches($orderId, $validated['distance'] ?? 5000);
- }
-
- public function resetCoach(Request $request)
- {
- $validated = $request->validate([
- 'order_id' => 'required|integer|exists:order,id',
- 'reason' => 'nullable|string|max:255',
- ]);
- return $this->service->resetOrderCoach($validated);
- }
-
- public function temporaryAccept(Request $request)
- {
- $validated = $request->validate([
- 'order_id' => 'required|integer|exists:order,id',
- 'reason' => 'nullable|string|max:255',
- ]);
- return $this->service->temporaryAcceptOrder($validated);
- }
-
- public function startService(Request $request)
- {
- $validated = $request->validate([
- 'order_id' => 'required|integer|exists:order,id',
- 'reason' => 'nullable|string|max:255',
- ]);
- return $this->service->startOrderService($validated);
- }
-
- public function endService(Request $request)
- {
- $validated = $request->validate([
- 'order_id' => 'required|integer|exists:order,id',
- 'reason' => 'nullable|string|max:255',
- ]);
- return $this->service->endOrderService($validated);
- }
-
- public function handleAlarm(Request $request)
- {
- $validated = $request->validate([
- 'exc_record_id' => 'required|integer|exists:order_exc_records,id',
- 'handle_result' => 'required|string|max:255',
- ]);
- return $this->service->handleOrderAlarm($validated);
- }
- }
|