Browse Source

Merge branch 'master' of ssh://gogs.yinbin.ink:30004/didong/owl-admin

Yin Bin 4 months ago
parent
commit
029a66e0ac

+ 113 - 0
app/Admin/Controllers/OrderController.php

@@ -0,0 +1,113 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * @group 后台
+ * 订单管理
+ *
+ * @property OrderService $service
+ */
+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(),
+        ]);
+    }
+}

+ 6 - 2
app/Http/Controllers/Client/WalletController.php

@@ -38,7 +38,9 @@ class WalletController extends Controller
      */
     public function records()
     {
-        return $this->service->getWalletRecords(Auth::user()->id, request('per_page', 10));
+        return $this->success(
+            $this->service->getWalletRecords(Auth::user()->id, request('per_page', 10))
+        );
     }
 
     /**
@@ -59,7 +61,9 @@ class WalletController extends Controller
      */
     public function wallet()
     {
-        return $this->service->getUserWallet(Auth::user()->id);
+        return $this->success(
+            $this->service->getUserWallet(Auth::user()->id)
+        );
     }
 
     /**

+ 1 - 2
app/Http/Requests/Client/User/ApplyCoachRequest.php

@@ -39,7 +39,6 @@ class WalletService
                 ->paginate($perPage);
 
             return $records;
-
         } catch (\Exception $e) {
             // 记录错误日志
             \Log::error('获取钱包明细失败', [
@@ -104,7 +103,7 @@ class WalletService
                 abort_if($amount > $wallet->available_balance, 422, '可提现余额不足');
 
                 // 生成交易流水号
-                $transNo = 'CW'.date('YmdHis').mt_rand(1000, 9999);
+                $transNo = 'CW' . date('YmdHis') . mt_rand(1000, 9999);
 
                 // 创建提现记录
                 $withdraw = WalletWithdrawRecord::create([

+ 17 - 0
app/Services/OrderService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\Order;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 订单
+ *
+ * @method Order getModel()
+ * @method Order|\Illuminate\Database\Query\Builder query()
+ */
+class OrderService extends AdminService
+{
+	protected string $modelName = Order::class;
+}

+ 1 - 1
config/cors.php

@@ -1,7 +1,7 @@
 <?php
 
 return [
-    'paths' => ['api/*', 'sanctum/csrf-cookie'],
+    'paths' => ['api/*', 'sanctum/csrf-cookie', '*'],
     'allowed_methods' => ['*'],
     'allowed_origins' => ['*'],
     'allowed_origins_patterns' => [],

+ 1 - 0
doc/系统设计/数据库设计/物理模型/分析后台设计增加/02技师列表.sql

@@ -49,6 +49,7 @@ WITH
             owner_type = 'App\\Models\\CoachUser'
     )
 SELECT
+    cu.id,
     /* 性别 */
     mu.gender,
     /* 技师名称 */

+ 0 - 11
doc/系统设计/数据库设计/物理模型/分析后台设计增加/04平台项目管理.sql

@@ -7,22 +7,11 @@ CREATE TABLE report_project_list AS
 DROP VIEW IF EXISTS manage_project_list;
 
 CREATE OR REPLACE VIEW manage_project_list AS
-WITH
-    order_stats AS (
-        /* 统计每个项目的订单数量 */
-        SELECT project_id /* 项目编号 */
-        FROM `order` /* 订单表 */
-        WHERE
-            deleted_at IS NULL
-        GROUP BY
-            project_id
-    )
 SELECT p.id /* 项目编号 */, p.title /* 项目名称 */, pc.name /* 项目分类名称 */, p.price /* 项目价格 */, p.duration /* 服务时长(分钟) */, p.state /* 状态 */, p.cover /* 项目封面图片 */
 FROM
     project p /* 项目表 */
     LEFT JOIN project_cate pc /* 项目分类表 */ ON p.cate_id = pc.id
     AND pc.deleted_at IS NULL
-    LEFT JOIN order_stats os /* 订单统计 */ ON p.id = os.project_id
 WHERE
     p.deleted_at IS NULL
 ORDER BY p.id DESC;

+ 8 - 4
routes/admin.php

@@ -8,13 +8,13 @@
 
 // =====================================================================
 
+use Slowlyo\OwlAdmin\Admin;
 use Illuminate\Routing\Router;
 use Illuminate\Support\Facades\Route;
-use Slowlyo\OwlAdmin\Admin;
 
 Route::group([
-    'domain' => Admin::config('admin.route.domain'),
-    'prefix' => Admin::config('admin.route.prefix'),
+    'domain'     => Admin::config('admin.route.domain'),
+    'prefix'     => Admin::config('admin.route.prefix'),
     'middleware' => Admin::config('admin.route.middleware'),
 ], function (Router $router) {
     // 用户
@@ -35,6 +35,8 @@ Route::group([
     $router->resource('coach_scores', \App\Admin\Controllers\CoachScoreController::class);
     // 技师定位
     $router->resource('coach_locations', \App\Admin\Controllers\CoachLocationController::class);
+    // 订单
+    $router->resource('order', \App\Admin\Controllers\OrderController::class);
     // 订单异常记录
     $router->resource('order_exc_records', \App\Admin\Controllers\OrderExcRecordController::class);
     // 订单记录
@@ -99,5 +101,7 @@ Route::group([
     $router->resource('coach_schedules', \App\Admin\Controllers\CoachScheduleController::class);
     // 技师投流订单
     $router->resource('coach_flow_orders', \App\Admin\Controllers\CoachFlowOrderController::class);
+    // ProjectCate
+    $router->get('_project/cate', [\Slowlyo\OwlAdmin\Controllers\AdminApiController::class, 'index']);
 
-});
+});