Ver Fonte

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

Yin Bin há 4 meses atrás
pai
commit
ee3fd84b00

+ 139 - 0
app/Enums/TransactionRole.php

@@ -0,0 +1,139 @@
+<?php
+
+namespace App\Enums;
+
+/**
+ * 钱包交易角色枚举类
+ */
+enum TransactionRole: int
+{
+    /**
+     * 交易角色:平台
+     */
+    case PLATFORM = 1;
+
+    /**
+     * 交易角色:技师
+     */
+    case TECHNICIAN = 2;
+
+    /**
+     * 交易角色:店铺
+     */
+    case SHOP = 3;
+
+    /**
+     * 交易角色:用户
+     */
+    case USER = 4;
+
+    /**
+     * 交易角色:代理商
+     */
+    case AGENT = 5;
+
+    /**
+     * 交易角色:运营人员
+     */
+    case OPERATOR = 6;
+
+    /**
+     * 交易角色:管理员
+     */
+    case ADMIN = 7;
+
+    /**
+     * 交易角色:其他
+     */
+    case OTHER = 8;
+
+    /**
+     * 获取角色的显示文本
+     *
+     * @return string 角色的中文描述
+     */
+    public function label(): string
+    {
+        return match ($this) {
+            self::PLATFORM => '平台',
+            self::TECHNICIAN => '技师',
+            self::SHOP => '店铺',
+            self::USER => '用户',
+            self::AGENT => '代理商',
+            self::OPERATOR => '运营人员',
+            self::ADMIN => '管理员',
+            self::OTHER => '其他',
+        };
+    }
+
+    /**
+     * 获取角色的整数值
+     *
+     * @return int 角色值
+     */
+    public function value(): int
+    {
+        return $this->value;
+    }
+
+    /**
+     * 检查当前角色是否与指定角色相同
+     *
+     * @param self $role 要比较的角色
+     * @return bool 如果角色相同返回 true,否则返回 false
+     */
+    public function is(self $role): bool
+    {
+        return $this === $role;
+    }
+
+    /**
+     * 根据整数值创建对应的角色枚举实例
+     *
+     * @param int $value 角色值
+     * @return self|null 返回对应的角色枚举实例,如果值无效则返回 null
+     */
+    public static function fromValue(int $value): ?self
+    {
+        return match ($value) {
+            self::PLATFORM->value => self::PLATFORM,
+            self::TECHNICIAN->value => self::TECHNICIAN,
+            self::SHOP->value => self::SHOP,
+            self::USER->value => self::USER,
+            self::AGENT->value => self::AGENT,
+            self::OPERATOR->value => self::OPERATOR,
+            self::ADMIN->value => self::ADMIN,
+            self::OTHER->value => self::OTHER,
+            default => null
+        };
+    }
+
+    /**
+     * 获取所有角色的值数组
+     *
+     * @return array 包含所有角色值的数组
+     */
+    public static function values(): array
+    {
+        return array_column(self::cases(), 'value');
+    }
+
+    /**
+     * 获取所有角色的键值对数组
+     *
+     * @return array 角色值作为键,显示文本作为值的关联数组
+     */
+    public static function all(): array
+    {
+        return [
+            self::PLATFORM->value => self::PLATFORM->label(),
+            self::TECHNICIAN->value => self::TECHNICIAN->label(),
+            self::SHOP->value => self::SHOP->label(),
+            self::USER->value => self::USER->label(),
+            self::AGENT->value => self::AGENT->label(),
+            self::OPERATOR->value => self::OPERATOR->label(),
+            self::ADMIN->value => self::ADMIN->label(),
+            self::OTHER->value => self::OTHER->label(),
+        ];
+    }
+}

+ 107 - 0
app/Enums/TransactionStatus.php

@@ -0,0 +1,107 @@
+<?php
+
+namespace App\Enums;
+
+/**
+ * 钱包交易状态枚举类
+ */
+enum TransactionStatus: int
+{
+    /**
+     * 交易状态:进行中
+     */
+    case PROCESSING = 1;
+
+    /**
+     * 交易状态:成功
+     */
+    case SUCCESS = 2;
+
+    /**
+     * 交易状态:失败
+     */
+    case FAILED = 3;
+
+    /**
+     * 交易状态:取消
+     */
+    case CANCELLED = 4;
+
+    /**
+     * 获取状态的显示文本
+     *
+     * @return string 状态的中文描述
+     */
+    public function label(): string
+    {
+        return match ($this) {
+            self::PROCESSING => '进行中',
+            self::SUCCESS => '成功',
+            self::FAILED => '失败',
+            self::CANCELLED => '取消',
+        };
+    }
+
+    /**
+     * 获取状态的整数值
+     *
+     * @return int 状态值
+     */
+    public function value(): int
+    {
+        return $this->value;
+    }
+
+    /**
+     * 检查当前状态是否与指定状态相同
+     *
+     * @param self $status 要比较的状态
+     * @return bool 如果状态相同返回 true,否则返回 false
+     */
+    public function is(self $status): bool
+    {
+        return $this === $status;
+    }
+
+    /**
+     * 根据整数值创建对应的状态枚举实例
+     *
+     * @param int $value 状态值
+     * @return self|null 返回对应的状态枚举实例,如果值无效则返回 null
+     */
+    public static function fromValue(int $value): ?self
+    {
+        return match ($value) {
+            self::PROCESSING->value => self::PROCESSING,
+            self::SUCCESS->value => self::SUCCESS,
+            self::FAILED->value => self::FAILED,
+            self::CANCELLED->value => self::CANCELLED,
+            default => null
+        };
+    }
+
+    /**
+     * 获取所有状态的值数组
+     *
+     * @return array 包含所有状态值的数组
+     */
+    public static function values(): array
+    {
+        return array_column(self::cases(), 'value');
+    }
+
+    /**
+     * 获取所有状态的键值对数组
+     *
+     * @return array 状态值作为键,显示文本作为值的关联数组
+     */
+    public static function all(): array
+    {
+        return [
+            self::PROCESSING->value => self::PROCESSING->label(),
+            self::SUCCESS->value => self::SUCCESS->label(),
+            self::FAILED->value => self::FAILED->label(),
+            self::CANCELLED->value => self::CANCELLED->label(),
+        ];
+    }
+}

+ 10 - 12
app/Services/Coach/OrderService.php

@@ -598,16 +598,16 @@ class OrderService
                 abort_if($order->coach_id !== $user->coach->id, 403, '无权操作此订单');
 
                 // 检查订单状态是否为已分配技师
-                abort_if($order->status !== OrderRecordStatus::ASSIGNED->value, 400, '订单状态不正确');
+                abort_if($order->status !== OrderStatus::ASSIGNED->value, 400, '订单状态不正确');
 
                 // 更新订单状态为技师出发
-                $order->status = OrderStatus::DEPARTED->value;
+                $order->state = OrderStatus::DEPARTED->value;
                 $order->save();
 
                 // 记录订单状态变更日志
                 OrderRecord::create([
                     'order_id' => $orderId,
-                    'status' => OrderRecordStatus::DEPARTED->value,
+                    'state' => OrderRecordStatus::DEPARTED->value,
                     'operator_id' => $user->coach->id,
                     'operator_type' => CoachUser::class,
                     'remark' => '技师已出发',
@@ -658,26 +658,24 @@ class OrderService
 
                 // 检查是否是该技师的订单
                 abort_if($order->coach_id !== $coach->id, 403, '无权操作此订单');
-                dd(in_array($order->status, [
-                    OrderStatus::DEPARTED->value,
-                ]));
+
                 // 检查订单状态
-                abort_if(! in_array($order->status, [
+                abort_if(! in_array($order->state, [
                     OrderStatus::DEPARTED->value,
                 ]), 400, '订单状态不正确');
 
                 $now = now();
 
                 // 更新订单状态为技师到达
-                $order->status = OrderRecordStatus::ARRIVED->value;
+                $order->state = OrderStatus::ARRIVED->value;
                 $order->save();
 
                 // 记录订单状态变更日志
                 OrderRecord::create([
                     'order_id' => $orderId,
-                    'status' => OrderRecordStatus::ARRIVED->value,
-                    'operator_id' => $coach->id,
-                    'operator_type' => CoachUser::class,
+                    'state' => OrderRecordStatus::ARRIVED->value,
+                    'object_id' => $coach->id,
+                    'object_type' => CoachUser::class,
                     'remark' => '技师已到达',
                 ]);
 
@@ -711,7 +709,7 @@ class OrderService
                     'message' => '操作成功',
                     'data' => [
                         'order_id' => $orderId,
-                        'status' => $order->status,
+                        'status' => $order->state,
                         'arrived_at' => $now,
                     ],
                 ];

+ 10 - 0
doc/系统设计/数据库设计/概念模型/新概念.md

@@ -608,6 +608,16 @@ export_on_save:
     - 属性:
         - 钱包编号(外键)
         - 业务类型编号(外键)
+        - 交易角色
+            - 枚举类型
+                - 平台
+                - 技师
+                - 店铺
+                - 用户
+                - 代理商
+                - 运营人员
+                - 管理员
+                - 其他
         - 交易类型
             - 枚举类型
                 - 收入

+ 21 - 10
doc/系统设计/数据库设计/物理模型/分析后台设计增加/13平台收支.sql

@@ -1,7 +1,6 @@
 -- Active: xiaoding_test@@192.168.110.85@3306@xiaoding_test
 
 /*
-
 交易时间是wallet_trans_records表判断wallet_id字段值为1然后获取trans_time字段做为交易时间,
 收入渠道是wallet_trans_records表判断wallet_id字段值为1然后获取owner_type字段做为收入渠道,
 省份、城市、地区以及平台收入字段都是wallet_trans_records表判断wallet_id字段值为1然后分别获取province、city、district、amount字段即可
@@ -9,18 +8,30 @@
 
 /* 查询平台收入明细 */
 DROP TABLE IF EXISTS report_platform_income;
+
 CREATE TABLE report_platform_income AS
-SELECT 
+
+DROP VIEW IF EXISTS manage_platform_income;
+
+CREATE OR REPLACE VIEW manage_platform_income AS
+SELECT
+    wtr.role as role /* 交易角色 */,
+    wtr.trans_type as trans_type /* 交易类型 */,
     trans_time as trans_time /* 交易时间 */,
-    owner_type as owner_type /* 收入渠道 */,
+    owner_type as owner_type /* 业务类型 */,
+    wtr.storage_type as storage_type /* 存储类型 */,
+    wtr.before_recharge_balance as before_recharge_balance /* 交易前余额 */,
+    amount as amount /* 平台收入 */,
+    wtr.after_recharge_balance as after_recharge_balance /* 交易后余额 */,
+    wtr.state as state /* 交易状态 */,
     province as province /* 省份 */,
     city as city /* 城市 */,
     district as district /* 地区 */,
-    amount as amount /* 平台收入 */
-FROM 
-    wallet_trans_records wtr /* 钱包交易记录表 */
-WHERE 
-    wtr.wallet_id = 1 /* 平台钱包ID */
+    wtr.remark as remark /* 备注 */
+FROM wallet_trans_records wtr /* 钱包交易记录表 */
+WHERE
+    wtr.wallet_id = 9 /* 平台钱包ID */
     AND wtr.deleted_at IS NULL /* 未删除的记录 */
-ORDER BY 
-    wtr.trans_time DESC /* 按交易时间倒序排序 */;
+ORDER BY wtr.trans_time DESC /* 按交易时间倒序排序 */;
+
+select * from manage_platform_income;