Răsfoiți Sursa

feat:用户、技师、店铺、订单模型

醉梦人间三千年 5 luni în urmă
părinte
comite
7371838f35
100 a modificat fișierele cu 3762 adăugiri și 0 ștergeri
  1. 3 0
      .gitignore
  2. 88 0
      app/Admin/Controllers/CoachInfoRecordController.php
  3. 76 0
      app/Admin/Controllers/CoachLocationController.php
  4. 79 0
      app/Admin/Controllers/CoachQualRecordController.php
  5. 73 0
      app/Admin/Controllers/CoachScoreController.php
  6. 82 0
      app/Admin/Controllers/CoachUserController.php
  7. 79 0
      app/Admin/Controllers/MemberAddresseController.php
  8. 79 0
      app/Admin/Controllers/MemberRealAuthRecordController.php
  9. 64 0
      app/Admin/Controllers/MemberSocialAccountController.php
  10. 74 0
      app/Admin/Controllers/MemberUserController.php
  11. 67 0
      app/Admin/Controllers/OrderCommentController.php
  12. 64 0
      app/Admin/Controllers/OrderDistRecordController.php
  13. 67 0
      app/Admin/Controllers/OrderExcRecordController.php
  14. 58 0
      app/Admin/Controllers/OrderGrabRecordController.php
  15. 112 0
      app/Admin/Controllers/OrderInfoController.php
  16. 64 0
      app/Admin/Controllers/OrderRecordController.php
  17. 61 0
      app/Admin/Controllers/ProjectCateController.php
  18. 85 0
      app/Admin/Controllers/ProjectServiceController.php
  19. 127 0
      app/Admin/Controllers/ShopAuthRecordController.php
  20. 58 0
      app/Admin/Controllers/ShopCoachServiceController.php
  21. 58 0
      app/Admin/Controllers/ShopInfoController.php
  22. 73 0
      app/Admin/Controllers/ShopServiceController.php
  23. 73 0
      app/Admin/Controllers/WalletController.php
  24. 85 0
      app/Admin/Controllers/WalletPaymentRecordController.php
  25. 85 0
      app/Admin/Controllers/WalletRefundRecordController.php
  26. 76 0
      app/Admin/Controllers/WalletSplitRecordController.php
  27. 94 0
      app/Admin/Controllers/WalletTransRecordController.php
  28. 94 0
      app/Admin/Controllers/WalletWithdrawRecordController.php
  29. 16 0
      app/Models/CoachInfoRecord.php
  30. 16 0
      app/Models/CoachLocation.php
  31. 16 0
      app/Models/CoachQualRecord.php
  32. 16 0
      app/Models/CoachScore.php
  33. 16 0
      app/Models/CoachUser.php
  34. 19 0
      app/Models/MemberAddresse.php
  35. 19 0
      app/Models/MemberRealAuthRecord.php
  36. 20 0
      app/Models/MemberSocialAccount.php
  37. 18 0
      app/Models/MemberUser.php
  38. 16 0
      app/Models/OrderComment.php
  39. 16 0
      app/Models/OrderDistRecord.php
  40. 16 0
      app/Models/OrderExcRecord.php
  41. 16 0
      app/Models/OrderGrabRecord.php
  42. 16 0
      app/Models/OrderInfo.php
  43. 16 0
      app/Models/OrderRecord.php
  44. 16 0
      app/Models/ProjectCate.php
  45. 16 0
      app/Models/ProjectService.php
  46. 16 0
      app/Models/ShopAuthRecord.php
  47. 16 0
      app/Models/ShopCoachService.php
  48. 16 0
      app/Models/ShopInfo.php
  49. 16 0
      app/Models/ShopService.php
  50. 16 0
      app/Models/Wallet.php
  51. 16 0
      app/Models/WalletPaymentRecord.php
  52. 16 0
      app/Models/WalletRefundRecord.php
  53. 16 0
      app/Models/WalletSplitRecord.php
  54. 16 0
      app/Models/WalletTransRecord.php
  55. 16 0
      app/Models/WalletWithdrawRecord.php
  56. 17 0
      app/Services/CoachInfoRecordService.php
  57. 17 0
      app/Services/CoachLocationService.php
  58. 17 0
      app/Services/CoachQualRecordService.php
  59. 17 0
      app/Services/CoachScoreService.php
  60. 17 0
      app/Services/CoachUserService.php
  61. 17 0
      app/Services/MemberAddresseService.php
  62. 17 0
      app/Services/MemberRealAuthRecordService.php
  63. 17 0
      app/Services/MemberSocialAccountService.php
  64. 17 0
      app/Services/MemberUserService.php
  65. 17 0
      app/Services/OrderCommentService.php
  66. 17 0
      app/Services/OrderDistRecordService.php
  67. 17 0
      app/Services/OrderExcRecordService.php
  68. 17 0
      app/Services/OrderGrabRecordService.php
  69. 17 0
      app/Services/OrderInfoService.php
  70. 17 0
      app/Services/OrderRecordService.php
  71. 17 0
      app/Services/ProjectCateService.php
  72. 17 0
      app/Services/ProjectServiceService.php
  73. 17 0
      app/Services/ShopAuthRecordService.php
  74. 17 0
      app/Services/ShopCoachServiceService.php
  75. 17 0
      app/Services/ShopInfoService.php
  76. 17 0
      app/Services/ShopServiceService.php
  77. 17 0
      app/Services/WalletPaymentRecordService.php
  78. 17 0
      app/Services/WalletRefundRecordService.php
  79. 17 0
      app/Services/WalletService.php
  80. 17 0
      app/Services/WalletSplitRecordService.php
  81. 17 0
      app/Services/WalletTransRecordService.php
  82. 17 0
      app/Services/WalletWithdrawRecordService.php
  83. 40 0
      database/migrations/2024_11_13_104115_create_member_users_table.php
  84. 38 0
      database/migrations/2024_11_14_024122_create_member_social_accounts_table.php
  85. 43 0
      database/migrations/2024_11_14_024847_create_member_addresses_table.php
  86. 43 0
      database/migrations/2024_11_14_030706_create_member_real_auth_records_table.php
  87. 44 0
      database/migrations/2024_11_14_034951_create_coach_users_table.php
  88. 46 0
      database/migrations/2024_11_14_040012_create_coach_info_records_table.php
  89. 43 0
      database/migrations/2024_11_14_052608_create_coach_qual_records_table.php
  90. 41 0
      database/migrations/2024_11_14_055814_create_coach_scores_table.php
  91. 42 0
      database/migrations/2024_11_14_060429_create_coach_locations_table.php
  92. 54 0
      database/migrations/2024_11_14_061044_create_order_infos_table.php
  93. 39 0
      database/migrations/2024_11_14_062258_create_order_exc_records_table.php
  94. 38 0
      database/migrations/2024_11_14_064000_create_order_records_table.php
  95. 38 0
      database/migrations/2024_11_14_064557_create_order_dist_records_table.php
  96. 36 0
      database/migrations/2024_11_14_065116_create_order_grab_records_table.php
  97. 39 0
      database/migrations/2024_11_14_070022_create_order_comments_table.php
  98. 41 0
      database/migrations/2024_11_14_081022_create_wallet_table.php
  99. 48 0
      database/migrations/2024_11_14_085358_create_wallet_trans_records_table.php
  100. 48 0
      database/migrations/2024_11_14_091306_create_wallet_withdraw_records_table.php

+ 3 - 0
.gitignore

@@ -22,3 +22,6 @@ yarn-error.log
 /.zed
 .user.ini
 public/admin-assets
+/doc
+/database.sql
+/字典规则.md

+ 88 - 0
app/Admin/Controllers/CoachInfoRecordController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\CoachInfoRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 技师信息记录
+ *
+ * @property CoachInfoRecordService $service
+ */
+class CoachInfoRecordController extends AdminController
+{
+	protected string $serviceName = CoachInfoRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('nickname', '昵称'),
+				amis()->TableColumn('avatar', '头像'),
+				amis()->TableColumn('gender', '性别'),
+				amis()->TableColumn('mobile', '服务电话'),
+				amis()->TableColumn('birthday', '出生日期'),
+				amis()->TableColumn('work_years', '从业年份')->sortable(),
+				amis()->TableColumn('intention_city', '意向城市'),
+				amis()->TableColumn('introduction', '个人简介'),
+				amis()->TableColumn('auditor', '审核人'),
+				amis()->TableColumn('audit_time', '审核时间'),
+				amis()->TableColumn('audit_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('coach_id', '技师编号'),
+			amis()->TextControl('nickname', '昵称'),
+			amis()->TextControl('avatar', '头像'),
+			amis()->TextControl('gender', '性别'),
+			amis()->TextControl('mobile', '服务电话'),
+			amis()->TextControl('birthday', '出生日期'),
+			amis()->TextControl('work_years', '从业年份'),
+			amis()->TextControl('intention_city', '意向城市'),
+			amis()->TextControl('introduction', '个人简介'),
+			amis()->TextControl('auditor', '审核人'),
+			amis()->TextControl('audit_time', '审核时间'),
+			amis()->TextControl('audit_remark', '审核回执'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('nickname', '昵称')->static(),
+			amis()->TextControl('avatar', '头像')->static(),
+			amis()->TextControl('gender', '性别')->static(),
+			amis()->TextControl('mobile', '服务电话')->static(),
+			amis()->TextControl('birthday', '出生日期')->static(),
+			amis()->TextControl('work_years', '从业年份')->static(),
+			amis()->TextControl('intention_city', '意向城市')->static(),
+			amis()->TextControl('introduction', '个人简介')->static(),
+			amis()->TextControl('auditor', '审核人')->static(),
+			amis()->TextControl('audit_time', '审核时间')->static(),
+			amis()->TextControl('audit_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(),
+		]);
+	}
+}

+ 76 - 0
app/Admin/Controllers/CoachLocationController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\CoachLocationService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 技师定位
+ *
+ * @property CoachLocationService $service
+ */
+class CoachLocationController extends AdminController
+{
+	protected string $serviceName = CoachLocationService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('type', '地址类型'),
+				amis()->TableColumn('latitude', '纬度'),
+				amis()->TableColumn('longitude', '经度'),
+				amis()->TableColumn('province', '省'),
+				amis()->TableColumn('city', '市'),
+				amis()->TableColumn('district', '区'),
+				amis()->TableColumn('location', '定位地址'),
+				amis()->TableColumn('area_code', '行政区划代码'),
+				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('coach_id', '技师编号'),
+			amis()->TextControl('type', '地址类型'),
+			amis()->TextControl('latitude', '纬度'),
+			amis()->TextControl('longitude', '经度'),
+			amis()->TextControl('province', '省'),
+			amis()->TextControl('city', '市'),
+			amis()->TextControl('district', '区'),
+			amis()->TextControl('location', '定位地址'),
+			amis()->TextControl('area_code', '行政区划代码'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('type', '地址类型')->static(),
+			amis()->TextControl('latitude', '纬度')->static(),
+			amis()->TextControl('longitude', '经度')->static(),
+			amis()->TextControl('province', '省')->static(),
+			amis()->TextControl('city', '市')->static(),
+			amis()->TextControl('district', '区')->static(),
+			amis()->TextControl('location', '定位地址')->static(),
+			amis()->TextControl('area_code', '行政区划代码')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 79 - 0
app/Admin/Controllers/CoachQualRecordController.php

@@ -0,0 +1,79 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\CoachQualRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 技师资质认证记录
+ *
+ * @property CoachQualRecordService $service
+ */
+class CoachQualRecordController extends AdminController
+{
+	protected string $serviceName = CoachQualRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('qual_type', '资质类型'),
+				amis()->TableColumn('qual_no', '资质证书编号'),
+				amis()->TableColumn('qual_photo', '资质证书照片'),
+				amis()->TableColumn('valid_start', '有效期开始日期'),
+				amis()->TableColumn('valid_end', '有效期结束日期'),
+				amis()->TableColumn('auditor', '审核人'),
+				amis()->TableColumn('audit_time', '审核时间'),
+				amis()->TableColumn('audit_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('coach_id', '技师编号'),
+			amis()->TextControl('qual_type', '资质类型'),
+			amis()->TextControl('qual_no', '资质证书编号'),
+			amis()->TextControl('qual_photo', '资质证书照片'),
+			amis()->TextControl('valid_start', '有效期开始日期'),
+			amis()->TextControl('valid_end', '有效期结束日期'),
+			amis()->TextControl('auditor', '审核人'),
+			amis()->TextControl('audit_time', '审核时间'),
+			amis()->TextControl('audit_remark', '审核回执'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('qual_type', '资质类型')->static(),
+			amis()->TextControl('qual_no', '资质证书编号')->static(),
+			amis()->TextControl('qual_photo', '资质证书照片')->static(),
+			amis()->TextControl('valid_start', '有效期开始日期')->static(),
+			amis()->TextControl('valid_end', '有效期结束日期')->static(),
+			amis()->TextControl('auditor', '审核人')->static(),
+			amis()->TextControl('audit_time', '审核时间')->static(),
+			amis()->TextControl('audit_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(),
+		]);
+	}
+}

+ 73 - 0
app/Admin/Controllers/CoachScoreController.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\CoachScoreService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 技师评分
+ *
+ * @property CoachScoreService $service
+ */
+class CoachScoreController extends AdminController
+{
+	protected string $serviceName = CoachScoreService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('service_duration', '服务时长(分钟)')->sortable(),
+				amis()->TableColumn('order_count', '订单数量')->sortable(),
+				amis()->TableColumn('good_rate', '好评率'),
+				amis()->TableColumn('efficiency', '服务效率'),
+				amis()->TableColumn('punctual_rate', '准时率'),
+				amis()->TableColumn('completion_rate', '完成率'),
+				amis()->TableColumn('rating_score', '评价得分'),
+				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('coach_id', '技师编号'),
+			amis()->TextControl('service_duration', '服务时长(分钟)'),
+			amis()->TextControl('order_count', '订单数量'),
+			amis()->TextControl('good_rate', '好评率'),
+			amis()->TextControl('efficiency', '服务效率'),
+			amis()->TextControl('punctual_rate', '准时率'),
+			amis()->TextControl('completion_rate', '完成率'),
+			amis()->TextControl('rating_score', '评价得分'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('service_duration', '服务时长(分钟)')->static(),
+			amis()->TextControl('order_count', '订单数量')->static(),
+			amis()->TextControl('good_rate', '好评率')->static(),
+			amis()->TextControl('efficiency', '服务效率')->static(),
+			amis()->TextControl('punctual_rate', '准时率')->static(),
+			amis()->TextControl('completion_rate', '完成率')->static(),
+			amis()->TextControl('rating_score', '评价得分')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 82 - 0
app/Admin/Controllers/CoachUserController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\CoachUserService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 技师
+ *
+ * @property CoachUserService $service
+ */
+class CoachUserController extends AdminController
+{
+	protected string $serviceName = CoachUserService::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('info_record_id', '技师信息记录编号'),
+				amis()->TableColumn('real_auth_record_id', '技师实名认证记录编号'),
+				amis()->TableColumn('qualification_record_id', '技师资质认证记录编号'),
+				amis()->TableColumn('shop_id', '店铺编号'),
+				amis()->TableColumn('level', '技师等级'),
+				amis()->TableColumn('virtual_order', '虚拟订单数')->sortable(),
+				amis()->TableColumn('score', '评分'),
+				amis()->TableColumn('work_status', '工作状态'),
+				amis()->TableColumn('virtual_status', '虚拟状态'),
+				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('info_record_id', '技师信息记录编号'),
+			amis()->TextControl('real_auth_record_id', '技师实名认证记录编号'),
+			amis()->TextControl('qualification_record_id', '技师资质认证记录编号'),
+			amis()->TextControl('shop_id', '店铺编号'),
+			amis()->TextControl('level', '技师等级'),
+			amis()->TextControl('virtual_order', '虚拟订单数'),
+			amis()->TextControl('score', '评分'),
+			amis()->TextControl('work_status', '工作状态'),
+			amis()->TextControl('virtual_status', '虚拟状态'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('user_id', '用户编号')->static(),
+			amis()->TextControl('info_record_id', '技师信息记录编号')->static(),
+			amis()->TextControl('real_auth_record_id', '技师实名认证记录编号')->static(),
+			amis()->TextControl('qualification_record_id', '技师资质认证记录编号')->static(),
+			amis()->TextControl('shop_id', '店铺编号')->static(),
+			amis()->TextControl('level', '技师等级')->static(),
+			amis()->TextControl('virtual_order', '虚拟订单数')->static(),
+			amis()->TextControl('score', '评分')->static(),
+			amis()->TextControl('work_status', '工作状态')->static(),
+			amis()->TextControl('virtual_status', '虚拟状态')->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(),
+		]);
+	}
+}

+ 79 - 0
app/Admin/Controllers/MemberAddresseController.php

@@ -0,0 +1,79 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\MemberAddresseService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 用户地址管理
+ *
+ * @property MemberAddresseService $service
+ */
+class MemberAddresseController extends AdminController
+{
+	protected string $serviceName = MemberAddresseService::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('location', '定位地址'),
+				amis()->TableColumn('detail', '详细地址'),
+				amis()->TableColumn('province', '省'),
+				amis()->TableColumn('city', '市'),
+				amis()->TableColumn('district', '区'),
+				amis()->TableColumn('longitude', '经度'),
+				amis()->TableColumn('latitude', '纬度'),
+				amis()->TableColumn('area_code', '行政区划代码'),
+				amis()->TableColumn('is_default', '是否默认地址'),
+				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('location', '定位地址'),
+			amis()->TextControl('detail', '详细地址'),
+			amis()->TextControl('province', '省'),
+			amis()->TextControl('city', '市'),
+			amis()->TextControl('district', '区'),
+			amis()->TextControl('longitude', '经度'),
+			amis()->TextControl('latitude', '纬度'),
+			amis()->TextControl('area_code', '行政区划代码'),
+			amis()->TextControl('is_default', '是否默认地址'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('user_id', '用户编号')->static(),
+			amis()->TextControl('location', '定位地址')->static(),
+			amis()->TextControl('detail', '详细地址')->static(),
+			amis()->TextControl('province', '省')->static(),
+			amis()->TextControl('city', '市')->static(),
+			amis()->TextControl('district', '区')->static(),
+			amis()->TextControl('longitude', '经度')->static(),
+			amis()->TextControl('latitude', '纬度')->static(),
+			amis()->TextControl('area_code', '行政区划代码')->static(),
+			amis()->TextControl('is_default', '是否默认地址')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 79 - 0
app/Admin/Controllers/MemberRealAuthRecordController.php

@@ -0,0 +1,79 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\MemberRealAuthRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 用户实名认证记录
+ *
+ * @property MemberRealAuthRecordService $service
+ */
+class MemberRealAuthRecordController extends AdminController
+{
+	protected string $serviceName = MemberRealAuthRecordService::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('real_name', '真实姓名'),
+				amis()->TableColumn('id_card', '身份证号'),
+				amis()->TableColumn('id_card_front_photo', '身份证正面照片'),
+				amis()->TableColumn('id_card_back_photo', '身份证反面照片'),
+				amis()->TableColumn('id_card_hand_photo', '手持身份证照片'),
+				amis()->TableColumn('auditor', '审核人'),
+				amis()->TableColumn('audit_time', '审核时间'),
+				amis()->TableColumn('audit_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('real_name', '真实姓名'),
+			amis()->TextControl('id_card', '身份证号'),
+			amis()->TextControl('id_card_front_photo', '身份证正面照片'),
+			amis()->TextControl('id_card_back_photo', '身份证反面照片'),
+			amis()->TextControl('id_card_hand_photo', '手持身份证照片'),
+			amis()->TextControl('auditor', '审核人'),
+			amis()->TextControl('audit_time', '审核时间'),
+			amis()->TextControl('audit_remark', '审核回执'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('user_id', '用户编号')->static(),
+			amis()->TextControl('real_name', '真实姓名')->static(),
+			amis()->TextControl('id_card', '身份证号')->static(),
+			amis()->TextControl('id_card_front_photo', '身份证正面照片')->static(),
+			amis()->TextControl('id_card_back_photo', '身份证反面照片')->static(),
+			amis()->TextControl('id_card_hand_photo', '手持身份证照片')->static(),
+			amis()->TextControl('auditor', '审核人')->static(),
+			amis()->TextControl('audit_time', '审核时间')->static(),
+			amis()->TextControl('audit_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(),
+		]);
+	}
+}

+ 64 - 0
app/Admin/Controllers/MemberSocialAccountController.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\MemberSocialAccountService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 社交账号管理
+ *
+ * @property MemberSocialAccountService $service
+ */
+class MemberSocialAccountController extends AdminController
+{
+	protected string $serviceName = MemberSocialAccountService::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('platform', '社交平台'),
+				amis()->TableColumn('social_id', '社交账号'),
+				amis()->TableColumn('nickname', '昵称'),
+				amis()->TableColumn('avatar', '头像'),
+				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('platform', '社交平台'),
+			amis()->TextControl('social_id', '社交账号'),
+			amis()->TextControl('nickname', '昵称'),
+			amis()->TextControl('avatar', '头像'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('user_id', '用户编号')->static(),
+			amis()->TextControl('platform', '社交平台')->static(),
+			amis()->TextControl('social_id', '社交账号')->static(),
+			amis()->TextControl('nickname', '昵称')->static(),
+			amis()->TextControl('avatar', '头像')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 74 - 0
app/Admin/Controllers/MemberUserController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\MemberUser;
+use App\Services\MemberUserService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 用户管理
+ *
+ * @property MemberUserService $service
+ */
+class MemberUserController extends AdminController
+{
+	protected string $serviceName = MemberUserService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('mobile', '手机号'),
+				amis()->TableColumn('password', '密码'),
+				amis()->TableColumn('nickname', '昵称'),
+				amis()->TableColumn('avatar', '头像'),
+				amis()->TableColumn('gender', '性别'),
+				amis()->TableColumn('register_area', '注册地(行政区划代码)'),
+				
+				amis()->TableColumn('state', '状态')->tpl('${' . admin_dict()->getValue('state.open', '未知') . '}'),
+				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('mobile', '手机号'),
+			amis()->TextControl('password', '密码'),
+			amis()->TextControl('nickname', '昵称'),
+			amis()->TextControl('avatar', '头像'),
+			amis()->TextControl('gender', '性别'),
+			amis()->TextControl('register_area', '注册地(行政区划代码)'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('mobile', '手机号')->static(),
+			amis()->TextControl('password', '密码')->static(),
+			amis()->TextControl('nickname', '昵称')->static(),
+			amis()->TextControl('avatar', '头像')->static(),
+			amis()->TextControl('gender', '性别')->static(),
+			amis()->TextControl('register_area', '注册地(行政区划代码)')->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(),
+		]);
+	}
+}

+ 67 - 0
app/Admin/Controllers/OrderCommentController.php

@@ -0,0 +1,67 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderCommentService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 订单评论
+ *
+ * @property OrderCommentService $service
+ */
+class OrderCommentController extends AdminController
+{
+	protected string $serviceName = OrderCommentService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('user_id', '用户编号'),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('content', '评论内容'),
+				amis()->TableColumn('rating', '评论星级'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('user_id', '用户编号'),
+			amis()->TextControl('coach_id', '技师编号'),
+			amis()->TextControl('content', '评论内容'),
+			amis()->TextControl('rating', '评论星级'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('user_id', '用户编号')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('content', '评论内容')->static(),
+			amis()->TextControl('rating', '评论星级')->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(),
+		]);
+	}
+}

+ 64 - 0
app/Admin/Controllers/OrderDistRecordController.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderDistRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 订单分销记录
+ *
+ * @property OrderDistRecordService $service
+ */
+class OrderDistRecordController extends AdminController
+{
+	protected string $serviceName = OrderDistRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('object_id', '对象编号'),
+				amis()->TableColumn('object_type', '对象类型'),
+				amis()->TableColumn('dist_type', '分销类型'),
+				amis()->TableColumn('amount', '分销金额'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('object_id', '对象编号'),
+			amis()->TextControl('object_type', '对象类型'),
+			amis()->TextControl('dist_type', '分销类型'),
+			amis()->TextControl('amount', '分销金额'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('object_id', '对象编号')->static(),
+			amis()->TextControl('object_type', '对象类型')->static(),
+			amis()->TextControl('dist_type', '分销类型')->static(),
+			amis()->TextControl('amount', '分销金额')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 67 - 0
app/Admin/Controllers/OrderExcRecordController.php

@@ -0,0 +1,67 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderExcRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 订单异常记录
+ *
+ * @property OrderExcRecordService $service
+ */
+class OrderExcRecordController extends AdminController
+{
+	protected string $serviceName = OrderExcRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('customer_service_id', '跟单客服编号'),
+				amis()->TableColumn('type', '异常类型'),
+				amis()->TableColumn('reason', '异常原因'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('customer_service_id', '跟单客服编号'),
+			amis()->TextControl('type', '异常类型'),
+			amis()->TextControl('reason', '异常原因'),
+			amis()->TextControl('remark', '备注'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('customer_service_id', '跟单客服编号')->static(),
+			amis()->TextControl('type', '异常类型')->static(),
+			amis()->TextControl('reason', '异常原因')->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(),
+		]);
+	}
+}

+ 58 - 0
app/Admin/Controllers/OrderGrabRecordController.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderGrabRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 订单抢单记录
+ *
+ * @property OrderGrabRecordService $service
+ */
+class OrderGrabRecordController extends AdminController
+{
+	protected string $serviceName = OrderGrabRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('order_id', '订单编号'),
+				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('coach_id', '技师编号'),
+			amis()->TextControl('order_id', '订单编号'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('order_id', '订单编号')->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(),
+		]);
+	}
+}

+ 112 - 0
app/Admin/Controllers/OrderInfoController.php

@@ -0,0 +1,112 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderInfoService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 订单
+ *
+ * @property OrderInfoService $service
+ */
+class OrderInfoController extends AdminController
+{
+	protected string $serviceName = OrderInfoService::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(),
+		]);
+	}
+}

+ 64 - 0
app/Admin/Controllers/OrderRecordController.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\OrderRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 订单记录
+ *
+ * @property OrderRecordService $service
+ */
+class OrderRecordController extends AdminController
+{
+	protected string $serviceName = OrderRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('object_id', '对象编号'),
+				amis()->TableColumn('object_type', '对象类型'),
+				amis()->TableColumn('state', '记录状态'),
+				amis()->TableColumn('remark', '备注'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('object_id', '对象编号'),
+			amis()->TextControl('object_type', '对象类型'),
+			amis()->TextControl('state', '记录状态'),
+			amis()->TextControl('remark', '备注'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('object_id', '对象编号')->static(),
+			amis()->TextControl('object_type', '对象类型')->static(),
+			amis()->TextControl('state', '记录状态')->static(),
+			amis()->TextControl('remark', '备注')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 61 - 0
app/Admin/Controllers/ProjectCateController.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\ProjectCateService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 项目分类
+ *
+ * @property ProjectCateService $service
+ */
+class ProjectCateController extends AdminController
+{
+	protected string $serviceName = ProjectCateService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('name', '项目分类名称'),
+				amis()->TableColumn('cover', '分类封面'),
+				amis()->TableColumn('sort', '排序')->sortable(),
+				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('name', '项目分类名称'),
+			amis()->TextControl('cover', '分类封面'),
+			amis()->TextControl('sort', '排序'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('name', '项目分类名称')->static(),
+			amis()->TextControl('cover', '分类封面')->static(),
+			amis()->TextControl('sort', '排序')->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(),
+		]);
+	}
+}

+ 85 - 0
app/Admin/Controllers/ProjectServiceController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\ProjectServiceService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 项目服务
+ *
+ * @property ProjectServiceService $service
+ */
+class ProjectServiceController extends AdminController
+{
+	protected string $serviceName = ProjectServiceService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('cate_id', '项目分类编号'),
+				amis()->TableColumn('cover', '项目封面'),
+				amis()->TableColumn('title', '项目标题'),
+				amis()->TableColumn('subtitle', '项目副标题'),
+				amis()->TableColumn('price', '项目金额'),
+				amis()->TableColumn('original_price', '项目原价'),
+				amis()->TableColumn('sales', '虚拟销量')->sortable(),
+				amis()->TableColumn('duration', '服务时长')->sortable(),
+				amis()->TableColumn('project_desc', '项目介绍'),
+				amis()->TableColumn('service_desc', '服务说明'),
+				amis()->TableColumn('type', '服务类型'),
+				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('cate_id', '项目分类编号'),
+			amis()->TextControl('cover', '项目封面'),
+			amis()->TextControl('title', '项目标题'),
+			amis()->TextControl('subtitle', '项目副标题'),
+			amis()->TextControl('price', '项目金额'),
+			amis()->TextControl('original_price', '项目原价'),
+			amis()->TextControl('sales', '虚拟销量'),
+			amis()->TextControl('duration', '服务时长'),
+			amis()->TextControl('project_desc', '项目介绍'),
+			amis()->TextControl('service_desc', '服务说明'),
+			amis()->TextControl('type', '服务类型'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('cate_id', '项目分类编号')->static(),
+			amis()->TextControl('cover', '项目封面')->static(),
+			amis()->TextControl('title', '项目标题')->static(),
+			amis()->TextControl('subtitle', '项目副标题')->static(),
+			amis()->TextControl('price', '项目金额')->static(),
+			amis()->TextControl('original_price', '项目原价')->static(),
+			amis()->TextControl('sales', '虚拟销量')->static(),
+			amis()->TextControl('duration', '服务时长')->static(),
+			amis()->TextControl('project_desc', '项目介绍')->static(),
+			amis()->TextControl('service_desc', '服务说明')->static(),
+			amis()->TextControl('type', '服务类型')->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(),
+		]);
+	}
+}

+ 127 - 0
app/Admin/Controllers/ShopAuthRecordController.php

@@ -0,0 +1,127 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\ShopAuthRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 店铺认证记录
+ *
+ * @property ShopAuthRecordService $service
+ */
+class ShopAuthRecordController extends AdminController
+{
+	protected string $serviceName = ShopAuthRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('shop_id', '店铺编号'),
+				amis()->TableColumn('shop_name', '店铺名称'),
+				amis()->TableColumn('shop_desc', '店铺描述'),
+				amis()->TableColumn('shop_address', '店铺地址'),
+				amis()->TableColumn('contact_phone', '店铺联系电话'),
+				amis()->TableColumn('contact_name', '店铺联系人'),
+				amis()->TableColumn('contact_id_card', '店铺联系人身份证'),
+				amis()->TableColumn('id_card_front_photo', '店铺联系人身份证正面'),
+				amis()->TableColumn('id_card_back_photo', '店铺联系人身份证反面'),
+				amis()->TableColumn('business_license', '店铺营业执照'),
+				amis()->TableColumn('license_front_photo', '店铺营业执照正面'),
+				amis()->TableColumn('license_back_photo', '店铺营业执照反面'),
+				amis()->TableColumn('storefront_photo', '店铺门头照'),
+				amis()->TableColumn('storefront_front_photo', '店铺门头照正面'),
+				amis()->TableColumn('storefront_back_photo', '店铺门头照反面'),
+				amis()->TableColumn('longitude', '店铺经营地址经度'),
+				amis()->TableColumn('latitude', '店铺经营地址纬度'),
+				amis()->TableColumn('operating_area', '店铺经营面积'),
+				amis()->TableColumn('operating_years', '店铺经营年限')->sortable(),
+				amis()->TableColumn('technician_count', '店铺技师人数')->sortable(),
+				amis()->TableColumn('business_hours', '店铺营业时间'),
+				amis()->TableColumn('rating', '评分'),
+				amis()->TableColumn('auditor', '审核人'),
+				amis()->TableColumn('audit_time', '审核时间'),
+				amis()->TableColumn('audit_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('shop_id', '店铺编号'),
+			amis()->TextControl('shop_name', '店铺名称'),
+			amis()->TextControl('shop_desc', '店铺描述'),
+			amis()->TextControl('shop_address', '店铺地址'),
+			amis()->TextControl('contact_phone', '店铺联系电话'),
+			amis()->TextControl('contact_name', '店铺联系人'),
+			amis()->TextControl('contact_id_card', '店铺联系人身份证'),
+			amis()->TextControl('id_card_front_photo', '店铺联系人身份证正面'),
+			amis()->TextControl('id_card_back_photo', '店铺联系人身份证反面'),
+			amis()->TextControl('business_license', '店铺营业执照'),
+			amis()->TextControl('license_front_photo', '店铺营业执照正面'),
+			amis()->TextControl('license_back_photo', '店铺营业执照反面'),
+			amis()->TextControl('storefront_photo', '店铺门头照'),
+			amis()->TextControl('storefront_front_photo', '店铺门头照正面'),
+			amis()->TextControl('storefront_back_photo', '店铺门头照反面'),
+			amis()->TextControl('longitude', '店铺经营地址经度'),
+			amis()->TextControl('latitude', '店铺经营地址纬度'),
+			amis()->TextControl('operating_area', '店铺经营面积'),
+			amis()->TextControl('operating_years', '店铺经营年限'),
+			amis()->TextControl('technician_count', '店铺技师人数'),
+			amis()->TextControl('business_hours', '店铺营业时间'),
+			amis()->TextControl('rating', '评分'),
+			amis()->TextControl('auditor', '审核人'),
+			amis()->TextControl('audit_time', '审核时间'),
+			amis()->TextControl('audit_remark', '审核回馈'),
+			amis()->TextControl('state', '审核状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('shop_id', '店铺编号')->static(),
+			amis()->TextControl('shop_name', '店铺名称')->static(),
+			amis()->TextControl('shop_desc', '店铺描述')->static(),
+			amis()->TextControl('shop_address', '店铺地址')->static(),
+			amis()->TextControl('contact_phone', '店铺联系电话')->static(),
+			amis()->TextControl('contact_name', '店铺联系人')->static(),
+			amis()->TextControl('contact_id_card', '店铺联系人身份证')->static(),
+			amis()->TextControl('id_card_front_photo', '店铺联系人身份证正面')->static(),
+			amis()->TextControl('id_card_back_photo', '店铺联系人身份证反面')->static(),
+			amis()->TextControl('business_license', '店铺营业执照')->static(),
+			amis()->TextControl('license_front_photo', '店铺营业执照正面')->static(),
+			amis()->TextControl('license_back_photo', '店铺营业执照反面')->static(),
+			amis()->TextControl('storefront_photo', '店铺门头照')->static(),
+			amis()->TextControl('storefront_front_photo', '店铺门头照正面')->static(),
+			amis()->TextControl('storefront_back_photo', '店铺门头照反面')->static(),
+			amis()->TextControl('longitude', '店铺经营地址经度')->static(),
+			amis()->TextControl('latitude', '店铺经营地址纬度')->static(),
+			amis()->TextControl('operating_area', '店铺经营面积')->static(),
+			amis()->TextControl('operating_years', '店铺经营年限')->static(),
+			amis()->TextControl('technician_count', '店铺技师人数')->static(),
+			amis()->TextControl('business_hours', '店铺营业时间')->static(),
+			amis()->TextControl('rating', '评分')->static(),
+			amis()->TextControl('auditor', '审核人')->static(),
+			amis()->TextControl('audit_time', '审核时间')->static(),
+			amis()->TextControl('audit_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(),
+		]);
+	}
+}

+ 58 - 0
app/Admin/Controllers/ShopCoachServiceController.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\ShopCoachServiceService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 店铺技师服务项目
+ *
+ * @property ShopCoachServiceService $service
+ */
+class ShopCoachServiceController extends AdminController
+{
+	protected string $serviceName = ShopCoachServiceService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('coach_id', '技师编号'),
+				amis()->TableColumn('shop_service_id', '店铺服务项目编号'),
+				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('coach_id', '技师编号'),
+			amis()->TextControl('shop_service_id', '店铺服务项目编号'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('coach_id', '技师编号')->static(),
+			amis()->TextControl('shop_service_id', '店铺服务项目编号')->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(),
+		]);
+	}
+}

+ 58 - 0
app/Admin/Controllers/ShopInfoController.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\ShopInfoService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 店铺
+ *
+ * @property ShopInfoService $service
+ */
+class ShopInfoController extends AdminController
+{
+	protected string $serviceName = ShopInfoService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('auth_record_id', '店铺认证记录编号'),
+				amis()->TableColumn('salesperson_id', '业务员编号'),
+				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('auth_record_id', '店铺认证记录编号'),
+			amis()->TextControl('salesperson_id', '业务员编号'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('auth_record_id', '店铺认证记录编号')->static(),
+			amis()->TextControl('salesperson_id', '业务员编号')->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(),
+		]);
+	}
+}

+ 73 - 0
app/Admin/Controllers/ShopServiceController.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\ShopServiceService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 店铺服务
+ *
+ * @property ShopServiceService $service
+ */
+class ShopServiceController extends AdminController
+{
+	protected string $serviceName = ShopServiceService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('shop_id', '店铺编号'),
+				amis()->TableColumn('service_id', '服务项目编号'),
+				amis()->TableColumn('name', '服务项目名称'),
+				amis()->TableColumn('cover', '服务项目封面'),
+				amis()->TableColumn('price', '服务项目价格'),
+				amis()->TableColumn('duration', '服务时长(分钟)')->sortable(),
+				amis()->TableColumn('type', '服务类型'),
+				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('shop_id', '店铺编号'),
+			amis()->TextControl('service_id', '服务项目编号'),
+			amis()->TextControl('name', '服务项目名称'),
+			amis()->TextControl('cover', '服务项目封面'),
+			amis()->TextControl('price', '服务项目价格'),
+			amis()->TextControl('duration', '服务时长(分钟)'),
+			amis()->TextControl('type', '服务类型'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('shop_id', '店铺编号')->static(),
+			amis()->TextControl('service_id', '服务项目编号')->static(),
+			amis()->TextControl('name', '服务项目名称')->static(),
+			amis()->TextControl('cover', '服务项目封面')->static(),
+			amis()->TextControl('price', '服务项目价格')->static(),
+			amis()->TextControl('duration', '服务时长(分钟)')->static(),
+			amis()->TextControl('type', '服务类型')->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(),
+		]);
+	}
+}

+ 73 - 0
app/Admin/Controllers/WalletController.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\WalletService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 钱包
+ *
+ * @property WalletService $service
+ */
+class WalletController extends AdminController
+{
+	protected string $serviceName = WalletService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('owner_id', '所属主体编号'),
+				amis()->TableColumn('owner_type', '钱包类型'),
+				amis()->TableColumn('total_balance', '总余额'),
+				amis()->TableColumn('available_balance', '可用余额'),
+				amis()->TableColumn('frozen_amount', '冻结金额'),
+				amis()->TableColumn('total_income', '累计收入'),
+				amis()->TableColumn('total_expense', '累计支出'),
+				amis()->TableColumn('state', '状态:ENABLE-启用,DISABLE-禁用'),
+				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('owner_id', '所属主体编号'),
+			amis()->TextControl('owner_type', '钱包类型'),
+			amis()->TextControl('total_balance', '总余额'),
+			amis()->TextControl('available_balance', '可用余额'),
+			amis()->TextControl('frozen_amount', '冻结金额'),
+			amis()->TextControl('total_income', '累计收入'),
+			amis()->TextControl('total_expense', '累计支出'),
+			amis()->TextControl('state', '状态:ENABLE-启用,DISABLE-禁用'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('owner_id', '所属主体编号')->static(),
+			amis()->TextControl('owner_type', '钱包类型')->static(),
+			amis()->TextControl('total_balance', '总余额')->static(),
+			amis()->TextControl('available_balance', '可用余额')->static(),
+			amis()->TextControl('frozen_amount', '冻结金额')->static(),
+			amis()->TextControl('total_income', '累计收入')->static(),
+			amis()->TextControl('total_expense', '累计支出')->static(),
+			amis()->TextControl('state', '状态:ENABLE-启用,DISABLE-禁用')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 85 - 0
app/Admin/Controllers/WalletPaymentRecordController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\WalletPaymentRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 钱包支付记录
+ *
+ * @property WalletPaymentRecordService $service
+ */
+class WalletPaymentRecordController extends AdminController
+{
+	protected string $serviceName = WalletPaymentRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('wallet_id', '钱包编号'),
+				amis()->TableColumn('trans_record_id', '交易记录编号'),
+				amis()->TableColumn('payment_no', '交易单号'),
+				amis()->TableColumn('payment_method', '支付方式'),
+				amis()->TableColumn('total_amount', '合计支付金额'),
+				amis()->TableColumn('actual_amount', '实际支付金额'),
+				amis()->TableColumn('used_wallet_balance', '使用钱包余额'),
+				amis()->TableColumn('used_recharge_balance', '使用充值余额'),
+				amis()->TableColumn('payment_time', '支付时间'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('wallet_id', '钱包编号'),
+			amis()->TextControl('trans_record_id', '交易记录编号'),
+			amis()->TextControl('payment_no', '交易单号'),
+			amis()->TextControl('payment_method', '支付方式'),
+			amis()->TextControl('total_amount', '合计支付金额'),
+			amis()->TextControl('actual_amount', '实际支付金额'),
+			amis()->TextControl('used_wallet_balance', '使用钱包余额'),
+			amis()->TextControl('used_recharge_balance', '使用充值余额'),
+			amis()->TextControl('payment_time', '支付时间'),
+			amis()->TextControl('remark', '备注'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('wallet_id', '钱包编号')->static(),
+			amis()->TextControl('trans_record_id', '交易记录编号')->static(),
+			amis()->TextControl('payment_no', '交易单号')->static(),
+			amis()->TextControl('payment_method', '支付方式')->static(),
+			amis()->TextControl('total_amount', '合计支付金额')->static(),
+			amis()->TextControl('actual_amount', '实际支付金额')->static(),
+			amis()->TextControl('used_wallet_balance', '使用钱包余额')->static(),
+			amis()->TextControl('used_recharge_balance', '使用充值余额')->static(),
+			amis()->TextControl('payment_time', '支付时间')->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(),
+		]);
+	}
+}

+ 85 - 0
app/Admin/Controllers/WalletRefundRecordController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\WalletRefundRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 钱包退款记录
+ *
+ * @property WalletRefundRecordService $service
+ */
+class WalletRefundRecordController extends AdminController
+{
+	protected string $serviceName = WalletRefundRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('wallet_id', '钱包编号'),
+				amis()->TableColumn('trans_record_id', '交易记录编号'),
+				amis()->TableColumn('external_no', '外部交易单号'),
+				amis()->TableColumn('refund_method', '退款方式'),
+				amis()->TableColumn('total_refund_amount', '合计退款金额'),
+				amis()->TableColumn('actual_refund_amount', '实际退款金额'),
+				amis()->TableColumn('wallet_balance_refund_amount', '钱包余额退款金额'),
+				amis()->TableColumn('recharge_balance_refund_amount', '充值余额退款金额'),
+				amis()->TableColumn('refund_time', '退款时间'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('wallet_id', '钱包编号'),
+			amis()->TextControl('trans_record_id', '交易记录编号'),
+			amis()->TextControl('external_no', '外部交易单号'),
+			amis()->TextControl('refund_method', '退款方式'),
+			amis()->TextControl('total_refund_amount', '合计退款金额'),
+			amis()->TextControl('actual_refund_amount', '实际退款金额'),
+			amis()->TextControl('wallet_balance_refund_amount', '钱包余额退款金额'),
+			amis()->TextControl('recharge_balance_refund_amount', '充值余额退款金额'),
+			amis()->TextControl('refund_time', '退款时间'),
+			amis()->TextControl('remark', '备注'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('wallet_id', '钱包编号')->static(),
+			amis()->TextControl('trans_record_id', '交易记录编号')->static(),
+			amis()->TextControl('external_no', '外部交易单号')->static(),
+			amis()->TextControl('refund_method', '退款方式')->static(),
+			amis()->TextControl('total_refund_amount', '合计退款金额')->static(),
+			amis()->TextControl('actual_refund_amount', '实际退款金额')->static(),
+			amis()->TextControl('wallet_balance_refund_amount', '钱包余额退款金额')->static(),
+			amis()->TextControl('recharge_balance_refund_amount', '充值余额退款金额')->static(),
+			amis()->TextControl('refund_time', '退款时间')->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(),
+		]);
+	}
+}

+ 76 - 0
app/Admin/Controllers/WalletSplitRecordController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\WalletSplitRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 钱包分账记录
+ *
+ * @property WalletSplitRecordService $service
+ */
+class WalletSplitRecordController extends AdminController
+{
+	protected string $serviceName = WalletSplitRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('order_id', '订单编号'),
+				amis()->TableColumn('rule_id', '分账规则配置编号'),
+				amis()->TableColumn('split_type', '分账类型(服务佣金、平台分成、邀请奖励、团队邀请奖励、推荐奖励)'),
+				amis()->TableColumn('amount', '参与分账金额'),
+				amis()->TableColumn('split_ratio', '分账比例'),
+				amis()->TableColumn('split_amount', '分账金额'),
+				amis()->TableColumn('entry_time', '入账时间'),
+				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('order_id', '订单编号'),
+			amis()->TextControl('rule_id', '分账规则配置编号'),
+			amis()->TextControl('split_type', '分账类型(服务佣金、平台分成、邀请奖励、团队邀请奖励、推荐奖励)'),
+			amis()->TextControl('amount', '参与分账金额'),
+			amis()->TextControl('split_ratio', '分账比例'),
+			amis()->TextControl('split_amount', '分账金额'),
+			amis()->TextControl('entry_time', '入账时间'),
+			amis()->TextControl('remark', '入账备注'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('order_id', '订单编号')->static(),
+			amis()->TextControl('rule_id', '分账规则配置编号')->static(),
+			amis()->TextControl('split_type', '分账类型(服务佣金、平台分成、邀请奖励、团队邀请奖励、推荐奖励)')->static(),
+			amis()->TextControl('amount', '参与分账金额')->static(),
+			amis()->TextControl('split_ratio', '分账比例')->static(),
+			amis()->TextControl('split_amount', '分账金额')->static(),
+			amis()->TextControl('entry_time', '入账时间')->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(),
+		]);
+	}
+}

+ 94 - 0
app/Admin/Controllers/WalletTransRecordController.php

@@ -0,0 +1,94 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\WalletTransRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 钱包交易记录
+ *
+ * @property WalletTransRecordService $service
+ */
+class WalletTransRecordController extends AdminController
+{
+	protected string $serviceName = WalletTransRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('wallet_id', '钱包编号'),
+				amis()->TableColumn('owner_id', '业务类型编号'),
+				amis()->TableColumn('owner_type', '业务类型(profit:分账 recharge:充值 withdraw:提现 refund:退款 payment:支付 gift:赠送 breach:违约 compensation:补偿)'),
+				amis()->TableColumn('trans_type', '交易类型(income:收入 expense:支出)'),
+				amis()->TableColumn('storage_type', '存储类型(balance:余额 recharge:充值)'),
+				amis()->TableColumn('amount', '交易金额'),
+				amis()->TableColumn('before_balance', '交易前余额'),
+				amis()->TableColumn('after_balance', '交易后余额'),
+				amis()->TableColumn('before_recharge_balance', '交易前充值余额'),
+				amis()->TableColumn('after_recharge_balance', '交易后充值余额'),
+				amis()->TableColumn('trans_time', '交易时间'),
+				amis()->TableColumn('remark', '备注'),
+				amis()->TableColumn('state', '交易状态(processing:进行中 success:成功 fail:失败 cancel:取消)'),
+				amis()->TableColumn('create_time', '创建时间'),
+				amis()->TableColumn('update_time', '更新时间'),
+				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('wallet_id', '钱包编号'),
+			amis()->TextControl('owner_id', '业务类型编号'),
+			amis()->TextControl('owner_type', '业务类型(profit:分账 recharge:充值 withdraw:提现 refund:退款 payment:支付 gift:赠送 breach:违约 compensation:补偿)'),
+			amis()->TextControl('trans_type', '交易类型(income:收入 expense:支出)'),
+			amis()->TextControl('storage_type', '存储类型(balance:余额 recharge:充值)'),
+			amis()->TextControl('amount', '交易金额'),
+			amis()->TextControl('before_balance', '交易前余额'),
+			amis()->TextControl('after_balance', '交易后余额'),
+			amis()->TextControl('before_recharge_balance', '交易前充值余额'),
+			amis()->TextControl('after_recharge_balance', '交易后充值余额'),
+			amis()->TextControl('trans_time', '交易时间'),
+			amis()->TextControl('remark', '备注'),
+			amis()->TextControl('state', '交易状态(processing:进行中 success:成功 fail:失败 cancel:取消)'),
+			amis()->TextControl('create_time', '创建时间'),
+			amis()->TextControl('update_time', '更新时间'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('wallet_id', '钱包编号')->static(),
+			amis()->TextControl('owner_id', '业务类型编号')->static(),
+			amis()->TextControl('owner_type', '业务类型(profit:分账 recharge:充值 withdraw:提现 refund:退款 payment:支付 gift:赠送 breach:违约 compensation:补偿)')->static(),
+			amis()->TextControl('trans_type', '交易类型(income:收入 expense:支出)')->static(),
+			amis()->TextControl('storage_type', '存储类型(balance:余额 recharge:充值)')->static(),
+			amis()->TextControl('amount', '交易金额')->static(),
+			amis()->TextControl('before_balance', '交易前余额')->static(),
+			amis()->TextControl('after_balance', '交易后余额')->static(),
+			amis()->TextControl('before_recharge_balance', '交易前充值余额')->static(),
+			amis()->TextControl('after_recharge_balance', '交易后充值余额')->static(),
+			amis()->TextControl('trans_time', '交易时间')->static(),
+			amis()->TextControl('remark', '备注')->static(),
+			amis()->TextControl('state', '交易状态(processing:进行中 success:成功 fail:失败 cancel:取消)')->static(),
+			amis()->TextControl('create_time', '创建时间')->static(),
+			amis()->TextControl('update_time', '更新时间')->static(),
+			amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
+			amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
+		]);
+	}
+}

+ 94 - 0
app/Admin/Controllers/WalletWithdrawRecordController.php

@@ -0,0 +1,94 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Services\WalletWithdrawRecordService;
+use Slowlyo\OwlAdmin\Controllers\AdminController;
+
+/**
+ * 钱包提现记录
+ *
+ * @property WalletWithdrawRecordService $service
+ */
+class WalletWithdrawRecordController extends AdminController
+{
+	protected string $serviceName = WalletWithdrawRecordService::class;
+
+	public function list()
+	{
+		$crud = $this->baseCRUD()
+			->filterTogglable(false)
+			->headerToolbar([
+				$this->createButton('dialog'),
+				...$this->baseHeaderToolBar()
+			])
+			->columns([
+				amis()->TableColumn('id', 'ID')->sortable(),
+				amis()->TableColumn('wallet_id', '钱包编号'),
+				amis()->TableColumn('external_no', '外部交易单号'),
+				amis()->TableColumn('withdraw_type', '提现方式'),
+				amis()->TableColumn('withdraw_account', '提现账户'),
+				amis()->TableColumn('withdraw_account_name', '提现账户名'),
+				amis()->TableColumn('amount', '提现金额'),
+				amis()->TableColumn('fee', '提现手续费'),
+				amis()->TableColumn('withdraw_time', '提现时间'),
+				amis()->TableColumn('area_code', '行政区划代码'),
+				amis()->TableColumn('remark', '备注'),
+				amis()->TableColumn('auditor', '审核人'),
+				amis()->TableColumn('audit_time', '审核时间'),
+				amis()->TableColumn('audit_remark', '审核回执'),
+				amis()->TableColumn('audit_state', '审核状态'),
+				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('wallet_id', '钱包编号'),
+			amis()->TextControl('external_no', '外部交易单号'),
+			amis()->TextControl('withdraw_type', '提现方式'),
+			amis()->TextControl('withdraw_account', '提现账户'),
+			amis()->TextControl('withdraw_account_name', '提现账户名'),
+			amis()->TextControl('amount', '提现金额'),
+			amis()->TextControl('fee', '提现手续费'),
+			amis()->TextControl('withdraw_time', '提现时间'),
+			amis()->TextControl('area_code', '行政区划代码'),
+			amis()->TextControl('remark', '备注'),
+			amis()->TextControl('auditor', '审核人'),
+			amis()->TextControl('audit_time', '审核时间'),
+			amis()->TextControl('audit_remark', '审核回执'),
+			amis()->TextControl('audit_state', '审核状态'),
+			amis()->TextControl('state', '状态'),
+		]);
+	}
+
+	public function detail()
+	{
+		return $this->baseDetail()->body([
+			amis()->TextControl('id', 'ID')->static(),
+			amis()->TextControl('wallet_id', '钱包编号')->static(),
+			amis()->TextControl('external_no', '外部交易单号')->static(),
+			amis()->TextControl('withdraw_type', '提现方式')->static(),
+			amis()->TextControl('withdraw_account', '提现账户')->static(),
+			amis()->TextControl('withdraw_account_name', '提现账户名')->static(),
+			amis()->TextControl('amount', '提现金额')->static(),
+			amis()->TextControl('fee', '提现手续费')->static(),
+			amis()->TextControl('withdraw_time', '提现时间')->static(),
+			amis()->TextControl('area_code', '行政区划代码')->static(),
+			amis()->TextControl('remark', '备注')->static(),
+			amis()->TextControl('auditor', '审核人')->static(),
+			amis()->TextControl('audit_time', '审核时间')->static(),
+			amis()->TextControl('audit_remark', '审核回执')->static(),
+			amis()->TextControl('audit_state', '审核状态')->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(),
+		]);
+	}
+}

+ 16 - 0
app/Models/CoachInfoRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 技师信息记录
+ */
+class CoachInfoRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'coach_info_records';
+}

+ 16 - 0
app/Models/CoachLocation.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 技师定位
+ */
+class CoachLocation extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'coach_locations';
+}

+ 16 - 0
app/Models/CoachQualRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 技师资质认证记录
+ */
+class CoachQualRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'coach_qual_records';
+}

+ 16 - 0
app/Models/CoachScore.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 技师评分
+ */
+class CoachScore extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'coach_scores';
+}

+ 16 - 0
app/Models/CoachUser.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 技师
+ */
+class CoachUser extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'coach_users';
+}

+ 19 - 0
app/Models/MemberAddresse.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 用户地址管理
+ */
+class MemberAddresse extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'member_addresses';
+
+
+	
+}

+ 19 - 0
app/Models/MemberRealAuthRecord.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 用户实名认证记录
+ */
+class MemberRealAuthRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'member_real_auth_records';
+
+
+	
+}

+ 20 - 0
app/Models/MemberSocialAccount.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 用户社交账号
+ */
+class MemberSocialAccount extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'member_social_accounts';
+
+
+
+	
+}

+ 18 - 0
app/Models/MemberUser.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 用户
+ */
+class MemberUser extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'member_users';
+
+	
+}

+ 16 - 0
app/Models/OrderComment.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 订单评论
+ */
+class OrderComment extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'order_comments';
+}

+ 16 - 0
app/Models/OrderDistRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 订单分销记录
+ */
+class OrderDistRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'order_dist_records';
+}

+ 16 - 0
app/Models/OrderExcRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 订单异常记录
+ */
+class OrderExcRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'order_exc_records';
+}

+ 16 - 0
app/Models/OrderGrabRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 订单抢单记录
+ */
+class OrderGrabRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'order_grab_records';
+}

+ 16 - 0
app/Models/OrderInfo.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 订单
+ */
+class OrderInfo extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'order_infos';
+}

+ 16 - 0
app/Models/OrderRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 订单记录
+ */
+class OrderRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'order_records';
+}

+ 16 - 0
app/Models/ProjectCate.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 项目分类
+ */
+class ProjectCate extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'project_cate';
+}

+ 16 - 0
app/Models/ProjectService.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 项目服务
+ */
+class ProjectService extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'project_service';
+}

+ 16 - 0
app/Models/ShopAuthRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 店铺认证记录
+ */
+class ShopAuthRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'shop_auth_records';
+}

+ 16 - 0
app/Models/ShopCoachService.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 店铺技师服务项目
+ */
+class ShopCoachService extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'shop_coach_services';
+}

+ 16 - 0
app/Models/ShopInfo.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 店铺
+ */
+class ShopInfo extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'shop_infos';
+}

+ 16 - 0
app/Models/ShopService.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 店铺服务
+ */
+class ShopService extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'shop_services';
+}

+ 16 - 0
app/Models/Wallet.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 钱包
+ */
+class Wallet extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'wallet';
+}

+ 16 - 0
app/Models/WalletPaymentRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 钱包支付记录
+ */
+class WalletPaymentRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'wallet_payment_records';
+}

+ 16 - 0
app/Models/WalletRefundRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 钱包退款记录
+ */
+class WalletRefundRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'wallet_refund_records';
+}

+ 16 - 0
app/Models/WalletSplitRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 钱包分账记录
+ */
+class WalletSplitRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'wallet_split_records';
+}

+ 16 - 0
app/Models/WalletTransRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 钱包交易记录
+ */
+class WalletTransRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'wallet_trans_records';
+}

+ 16 - 0
app/Models/WalletWithdrawRecord.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Slowlyo\OwlAdmin\Models\BaseModel as Model;
+
+/**
+ * 钱包提现记录
+ */
+class WalletWithdrawRecord extends Model
+{
+	use SoftDeletes;
+
+	protected $table = 'wallet_withdraw_records';
+}

+ 17 - 0
app/Services/CoachInfoRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\CoachInfoRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 技师信息记录
+ *
+ * @method CoachInfoRecord getModel()
+ * @method CoachInfoRecord|\Illuminate\Database\Query\Builder query()
+ */
+class CoachInfoRecordService extends AdminService
+{
+	protected string $modelName = CoachInfoRecord::class;
+}

+ 17 - 0
app/Services/CoachLocationService.php

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

+ 17 - 0
app/Services/CoachQualRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\CoachQualRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 技师资质认证记录
+ *
+ * @method CoachQualRecord getModel()
+ * @method CoachQualRecord|\Illuminate\Database\Query\Builder query()
+ */
+class CoachQualRecordService extends AdminService
+{
+	protected string $modelName = CoachQualRecord::class;
+}

+ 17 - 0
app/Services/CoachScoreService.php

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

+ 17 - 0
app/Services/CoachUserService.php

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

+ 17 - 0
app/Services/MemberAddresseService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\MemberAddresse;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 用户地址管理
+ *
+ * @method MemberAddresse getModel()
+ * @method MemberAddresse|\Illuminate\Database\Query\Builder query()
+ */
+class MemberAddresseService extends AdminService
+{
+	protected string $modelName = MemberAddresse::class;
+}

+ 17 - 0
app/Services/MemberRealAuthRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\MemberRealAuthRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 用户实名认证记录
+ *
+ * @method MemberRealAuthRecord getModel()
+ * @method MemberRealAuthRecord|\Illuminate\Database\Query\Builder query()
+ */
+class MemberRealAuthRecordService extends AdminService
+{
+	protected string $modelName = MemberRealAuthRecord::class;
+}

+ 17 - 0
app/Services/MemberSocialAccountService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\MemberSocialAccount;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 社交账号管理
+ *
+ * @method MemberSocialAccount getModel()
+ * @method MemberSocialAccount|\Illuminate\Database\Query\Builder query()
+ */
+class MemberSocialAccountService extends AdminService
+{
+	protected string $modelName = MemberSocialAccount::class;
+}

+ 17 - 0
app/Services/MemberUserService.php

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

+ 17 - 0
app/Services/OrderCommentService.php

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

+ 17 - 0
app/Services/OrderDistRecordService.php

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

+ 17 - 0
app/Services/OrderExcRecordService.php

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

+ 17 - 0
app/Services/OrderGrabRecordService.php

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

+ 17 - 0
app/Services/OrderInfoService.php

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

+ 17 - 0
app/Services/OrderRecordService.php

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

+ 17 - 0
app/Services/ProjectCateService.php

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

+ 17 - 0
app/Services/ProjectServiceService.php

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

+ 17 - 0
app/Services/ShopAuthRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\ShopAuthRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 店铺认证记录
+ *
+ * @method ShopAuthRecord getModel()
+ * @method ShopAuthRecord|\Illuminate\Database\Query\Builder query()
+ */
+class ShopAuthRecordService extends AdminService
+{
+	protected string $modelName = ShopAuthRecord::class;
+}

+ 17 - 0
app/Services/ShopCoachServiceService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\ShopCoachService;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 店铺技师服务项目
+ *
+ * @method ShopCoachService getModel()
+ * @method ShopCoachService|\Illuminate\Database\Query\Builder query()
+ */
+class ShopCoachServiceService extends AdminService
+{
+	protected string $modelName = ShopCoachService::class;
+}

+ 17 - 0
app/Services/ShopInfoService.php

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

+ 17 - 0
app/Services/ShopServiceService.php

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

+ 17 - 0
app/Services/WalletPaymentRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\WalletPaymentRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 钱包支付记录
+ *
+ * @method WalletPaymentRecord getModel()
+ * @method WalletPaymentRecord|\Illuminate\Database\Query\Builder query()
+ */
+class WalletPaymentRecordService extends AdminService
+{
+	protected string $modelName = WalletPaymentRecord::class;
+}

+ 17 - 0
app/Services/WalletRefundRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\WalletRefundRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 钱包退款记录
+ *
+ * @method WalletRefundRecord getModel()
+ * @method WalletRefundRecord|\Illuminate\Database\Query\Builder query()
+ */
+class WalletRefundRecordService extends AdminService
+{
+	protected string $modelName = WalletRefundRecord::class;
+}

+ 17 - 0
app/Services/WalletService.php

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

+ 17 - 0
app/Services/WalletSplitRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\WalletSplitRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 钱包分账记录
+ *
+ * @method WalletSplitRecord getModel()
+ * @method WalletSplitRecord|\Illuminate\Database\Query\Builder query()
+ */
+class WalletSplitRecordService extends AdminService
+{
+	protected string $modelName = WalletSplitRecord::class;
+}

+ 17 - 0
app/Services/WalletTransRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\WalletTransRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 钱包交易记录
+ *
+ * @method WalletTransRecord getModel()
+ * @method WalletTransRecord|\Illuminate\Database\Query\Builder query()
+ */
+class WalletTransRecordService extends AdminService
+{
+	protected string $modelName = WalletTransRecord::class;
+}

+ 17 - 0
app/Services/WalletWithdrawRecordService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\WalletWithdrawRecord;
+use Slowlyo\OwlAdmin\Services\AdminService;
+
+/**
+ * 钱包提现记录
+ *
+ * @method WalletWithdrawRecord getModel()
+ * @method WalletWithdrawRecord|\Illuminate\Database\Query\Builder query()
+ */
+class WalletWithdrawRecordService extends AdminService
+{
+	protected string $modelName = WalletWithdrawRecord::class;
+}

+ 40 - 0
database/migrations/2024_11_13_104115_create_member_users_table.php

@@ -0,0 +1,40 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('member_users', function (Blueprint $table) {
+            $table->comment('用户管理');
+            $table->increments('id');
+            $table->string('mobile')->default('')->comment('手机号');
+            $table->string('password')->default('')->comment('密码');
+            $table->string('nickname')->nullable()->comment('昵称');
+            $table->string('avatar')->nullable()->comment('头像');
+            $table->string('gender')->default('UNKNOWN')->comment('性别');
+            $table->string('register_area')->nullable()->comment('注册地(行政区划代码)');
+            $table->string('state')->default('ENABLE')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('member_users');
+    }
+};

+ 38 - 0
database/migrations/2024_11_14_024122_create_member_social_accounts_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('member_social_accounts', function (Blueprint $table) {
+            $table->comment('社交账号管理');
+            $table->increments('id');
+            $table->unsignedBigInteger('user_id')->comment('用户编号');
+            $table->string('platform')->default('')->comment('社交平台');
+            $table->string('social_id')->default('')->comment('社交账号');
+            $table->string('nickname')->nullable()->comment('昵称');
+            $table->string('avatar')->nullable()->comment('头像');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('member_social_accounts');
+    }
+};

+ 43 - 0
database/migrations/2024_11_14_024847_create_member_addresses_table.php

@@ -0,0 +1,43 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('member_addresses', function (Blueprint $table) {
+            $table->comment('用户地址管理');
+            $table->increments('id');
+            $table->unsignedBigInteger('user_id')->comment('用户编号');
+            $table->string('location')->default('')->comment('定位地址');
+            $table->string('detail')->nullable()->comment('详细地址');
+            $table->string('province')->default('')->comment('省');
+            $table->string('city')->default('')->comment('市');
+            $table->string('district')->default('')->comment('区');
+            $table->decimal('longitude')->comment('经度');
+            $table->decimal('latitude')->comment('纬度');
+            $table->string('area_code')->default('')->comment('行政区划代码');
+            $table->string('is_default')->default('NO')->comment('是否默认地址');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('member_addresses');
+    }
+};

+ 43 - 0
database/migrations/2024_11_14_030706_create_member_real_auth_records_table.php

@@ -0,0 +1,43 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('member_real_auth_records', function (Blueprint $table) {
+            $table->comment('用户实名认证记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('user_id')->comment('用户编号');
+            $table->string('real_name')->default('')->comment('真实姓名');
+            $table->string('id_card')->default('')->comment('身份证号');
+            $table->string('id_card_front_photo')->default('')->comment('身份证正面照片');
+            $table->string('id_card_back_photo')->default('')->comment('身份证反面照片');
+            $table->string('id_card_hand_photo')->default('')->comment('手持身份证照片');
+            $table->string('auditor')->nullable()->comment('审核人');
+            $table->timestamp('audit_time')->nullable()->comment('审核时间');
+            $table->string('audit_remark')->nullable()->comment('审核回执');
+            $table->string('state')->default('PENDING')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('member_real_auth_records');
+    }
+};

+ 44 - 0
database/migrations/2024_11_14_034951_create_coach_users_table.php

@@ -0,0 +1,44 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('coach_users', function (Blueprint $table) {
+            $table->comment('技师');
+            $table->increments('id');
+            $table->unsignedBigInteger('user_id')->comment('用户编号');
+            $table->unsignedBigInteger('info_record_id')->nullable()->comment('技师信息记录编号');
+            $table->unsignedBigInteger('real_auth_record_id')->nullable()->comment('技师实名认证记录编号');
+            $table->unsignedBigInteger('qualification_record_id')->nullable()->comment('技师资质认证记录编号');
+            $table->unsignedBigInteger('shop_id')->nullable()->comment('店铺编号');
+            $table->string('level')->nullable()->comment('技师等级');
+            $table->integer('virtual_order')->default(new \Illuminate\Database\Query\Expression('0'))->nullable()->comment('虚拟订单数');
+            $table->decimal('score')->default(new \Illuminate\Database\Query\Expression('5.0'))->nullable()->comment('评分');
+            $table->string('work_status')->default('REST')->comment('工作状态');
+            $table->string('virtual_status')->default('DISABLE')->comment('虚拟状态');
+            $table->string('state')->default('ENABLE')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('coach_users');
+    }
+};

+ 46 - 0
database/migrations/2024_11_14_040012_create_coach_info_records_table.php

@@ -0,0 +1,46 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('coach_info_records', function (Blueprint $table) {
+            $table->comment('技师信息记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->string('nickname')->nullable()->comment('昵称');
+            $table->string('avatar')->nullable()->comment('头像');
+            $table->string('gender')->default('UNKNOWN')->comment('性别');
+            $table->string('mobile')->default('')->comment('服务电话');
+            $table->date('birthday')->nullable()->comment('出生日期');
+            $table->integer('work_years')->nullable()->comment('从业年份');
+            $table->string('intention_city')->nullable()->comment('意向城市');
+            $table->text('introduction')->nullable()->comment('个人简介');
+            $table->string('auditor')->nullable()->comment('审核人');
+            $table->timestamp('audit_time')->nullable()->comment('审核时间');
+            $table->string('audit_remark')->nullable()->comment('审核回执');
+            $table->string('state')->default('PENDING')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('coach_info_records');
+    }
+};

+ 43 - 0
database/migrations/2024_11_14_052608_create_coach_qual_records_table.php

@@ -0,0 +1,43 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('coach_qual_records', function (Blueprint $table) {
+            $table->comment('技师资质认证记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->string('qual_type')->default('')->comment('资质类型');
+            $table->string('qual_no')->nullable()->comment('资质证书编号');
+            $table->string('qual_photo')->default('')->comment('资质证书照片');
+            $table->date('valid_start')->nullable()->comment('有效期开始日期');
+            $table->date('valid_end')->nullable()->comment('有效期结束日期');
+            $table->string('auditor')->nullable()->comment('审核人');
+            $table->timestamp('audit_time')->nullable()->comment('审核时间');
+            $table->string('audit_remark')->nullable()->comment('审核回执');
+            $table->string('state')->default('PENDING')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('coach_qual_records');
+    }
+};

+ 41 - 0
database/migrations/2024_11_14_055814_create_coach_scores_table.php

@@ -0,0 +1,41 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('coach_scores', function (Blueprint $table) {
+            $table->comment('技师评分');
+            $table->increments('id');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->integer('service_duration')->default(new \Illuminate\Database\Query\Expression('0'))->nullable()->comment('服务时长(分钟)');
+            $table->integer('order_count')->default(new \Illuminate\Database\Query\Expression('0'))->nullable()->comment('订单数量');
+            $table->decimal('good_rate')->default(new \Illuminate\Database\Query\Expression('0.00'))->nullable()->comment('好评率');
+            $table->decimal('efficiency')->default(new \Illuminate\Database\Query\Expression('0.00'))->nullable()->comment('服务效率');
+            $table->decimal('punctual_rate')->default(new \Illuminate\Database\Query\Expression('0.00'))->nullable()->comment('准时率');
+            $table->decimal('completion_rate')->default(new \Illuminate\Database\Query\Expression('0.00'))->nullable()->comment('完成率');
+            $table->decimal('rating_score')->default(new \Illuminate\Database\Query\Expression('5.0'))->nullable()->comment('评价得分');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('coach_scores');
+    }
+};

+ 42 - 0
database/migrations/2024_11_14_060429_create_coach_locations_table.php

@@ -0,0 +1,42 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('coach_locations', function (Blueprint $table) {
+            $table->comment('技师定位');
+            $table->increments('id');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->string('type')->default('CURRENT')->comment('地址类型');
+            $table->decimal('latitude')->comment('纬度');
+            $table->decimal('longitude')->comment('经度');
+            $table->string('province')->default('')->comment('省');
+            $table->string('city')->default('')->comment('市');
+            $table->string('district')->default('')->comment('区');
+            $table->string('location')->default('')->comment('定位地址');
+            $table->string('area_code')->default('')->comment('行政区划代码');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('coach_locations');
+    }
+};

+ 54 - 0
database/migrations/2024_11_14_061044_create_order_infos_table.php

@@ -0,0 +1,54 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('order_infos', function (Blueprint $table) {
+            $table->comment('订单');
+            $table->increments('id');
+            $table->unsignedBigInteger('user_id')->comment('用户编号');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->unsignedBigInteger('service_id')->comment('项目编号');
+            $table->unsignedBigInteger('channel_id')->nullable()->comment('渠道编号');
+            $table->unsignedBigInteger('shop_id')->nullable()->comment('店铺编号');
+            $table->unsignedBigInteger('customer_service_id')->nullable()->comment('跟单客服编号');
+            $table->string('order_type')->default('')->comment('订单类型');
+            $table->string('order_source')->default('PLATFORM')->comment('订单来源');
+            $table->decimal('total_amount')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('订单金额');
+            $table->decimal('service_amount')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('项目金额');
+            $table->decimal('traffic_amount')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('路程金额');
+            $table->json('service_snapshot')->nullable()->comment('项目快照');
+            $table->timestamp('service_time')->comment('服务时间');
+            $table->integer('distance')->default(new \Illuminate\Database\Query\Expression('0'))->nullable()->comment('目的地距离(米)');
+            $table->decimal('latitude')->comment('目的地纬度');
+            $table->decimal('longitude')->comment('目的地经度');
+            $table->string('location')->default('')->comment('目的地定位地址');
+            $table->string('address')->nullable()->comment('目的地详细地址');
+            $table->string('area_code')->default('')->comment('目的地行政区划代码');
+            $table->string('remark')->nullable()->comment('订单备注');
+            $table->string('state')->default('CREATED')->comment('订单状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('order_infos');
+    }
+};

+ 39 - 0
database/migrations/2024_11_14_062258_create_order_exc_records_table.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('order_exc_records', function (Blueprint $table) {
+            $table->comment('订单异常记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('order_id')->comment('订单编号');
+            $table->unsignedBigInteger('customer_service_id')->nullable()->comment('跟单客服编号');
+            $table->string('type')->default('')->comment('异常类型');
+            $table->string('reason')->default('')->comment('异常原因');
+            $table->string('remark')->nullable()->comment('备注');
+            $table->string('state')->default('ENABLE')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('order_exc_records');
+    }
+};

+ 38 - 0
database/migrations/2024_11_14_064000_create_order_records_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('order_records', function (Blueprint $table) {
+            $table->comment('订单记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('order_id')->comment('订单编号');
+            $table->unsignedBigInteger('object_id')->comment('对象编号');
+            $table->string('object_type')->default('')->comment('对象类型');
+            $table->string('state')->default('')->comment('记录状态');
+            $table->string('remark')->nullable()->comment('备注');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('order_records');
+    }
+};

+ 38 - 0
database/migrations/2024_11_14_064557_create_order_dist_records_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('order_dist_records', function (Blueprint $table) {
+            $table->comment('订单分销记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('order_id')->comment('订单编号');
+            $table->unsignedBigInteger('object_id')->comment('对象编号');
+            $table->string('object_type')->default('')->comment('对象类型');
+            $table->string('dist_type')->default('')->comment('分销类型');
+            $table->decimal('amount')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('分销金额');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('order_dist_records');
+    }
+};

+ 36 - 0
database/migrations/2024_11_14_065116_create_order_grab_records_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('order_grab_records', function (Blueprint $table) {
+            $table->comment('订单抢单记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->unsignedBigInteger('order_id')->comment('订单编号');
+            $table->string('state')->default('JOINED')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('order_grab_records');
+    }
+};

+ 39 - 0
database/migrations/2024_11_14_070022_create_order_comments_table.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('order_comments', function (Blueprint $table) {
+            $table->comment('订单评论');
+            $table->increments('id');
+            $table->unsignedBigInteger('order_id')->comment('订单编号');
+            $table->unsignedBigInteger('user_id')->comment('用户编号');
+            $table->unsignedBigInteger('coach_id')->comment('技师编号');
+            $table->text('content')->nullable()->comment('评论内容');
+            $table->unsignedTinyInteger('rating')->default(new \Illuminate\Database\Query\Expression('5'))->comment('评论星级');
+            $table->string('state')->default('ENABLE')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('order_comments');
+    }
+};

+ 41 - 0
database/migrations/2024_11_14_081022_create_wallet_table.php

@@ -0,0 +1,41 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('wallet', function (Blueprint $table) {
+            $table->comment('钱包');
+            $table->increments('id');
+            $table->unsignedBigInteger('owner_id')->comment('所属主体编号');
+            $table->string('owner_type')->default('')->comment('钱包类型');
+            $table->decimal('total_balance')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('总余额');
+            $table->decimal('available_balance')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('可用余额');
+            $table->decimal('frozen_amount')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('冻结金额');
+            $table->decimal('total_income')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('累计收入');
+            $table->decimal('total_expense')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('累计支出');
+            $table->string('state')->default('ENABLE')->comment('状态:ENABLE-启用,DISABLE-禁用');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('wallet');
+    }
+};

+ 48 - 0
database/migrations/2024_11_14_085358_create_wallet_trans_records_table.php

@@ -0,0 +1,48 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('wallet_trans_records', function (Blueprint $table) {
+            $table->comment('钱包交易记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('wallet_id')->comment('钱包编号');
+            $table->unsignedBigInteger('owner_id')->comment('业务类型编号');
+            $table->string('owner_type')->default('')->comment('业务类型(profit:分账 recharge:充值 withdraw:提现 refund:退款 payment:支付 gift:赠送 breach:违约 compensation:补偿)');
+            $table->string('trans_type')->default('')->comment('交易类型(income:收入 expense:支出)');
+            $table->string('storage_type')->default('')->comment('存储类型(balance:余额 recharge:充值)');
+            $table->decimal('amount')->comment('交易金额');
+            $table->decimal('before_balance')->comment('交易前余额');
+            $table->decimal('after_balance')->comment('交易后余额');
+            $table->decimal('before_recharge_balance')->comment('交易前充值余额');
+            $table->decimal('after_recharge_balance')->comment('交易后充值余额');
+            $table->dateTime('trans_time')->comment('交易时间');
+            $table->string('remark')->nullable()->comment('备注');
+            $table->string('state')->default('')->comment('交易状态(processing:进行中 success:成功 fail:失败 cancel:取消)');
+            $table->dateTime('create_time')->default('CURRENT_TIMESTAMP')->comment('创建时间');
+            $table->dateTime('update_time')->default('CURRENT_TIMESTAMP')->comment('更新时间');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('wallet_trans_records');
+    }
+};

+ 48 - 0
database/migrations/2024_11_14_091306_create_wallet_withdraw_records_table.php

@@ -0,0 +1,48 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('wallet_withdraw_records', function (Blueprint $table) {
+            $table->comment('钱包提现记录');
+            $table->increments('id');
+            $table->unsignedBigInteger('wallet_id')->comment('钱包编号');
+            $table->string('external_no')->nullable()->comment('外部交易单号');
+            $table->string('withdraw_type')->default('')->comment('提现方式');
+            $table->string('withdraw_account')->default('')->comment('提现账户');
+            $table->string('withdraw_account_name')->default('')->comment('提现账户名');
+            $table->decimal('amount')->comment('提现金额');
+            $table->decimal('fee')->default(new \Illuminate\Database\Query\Expression('0.00'))->comment('提现手续费');
+            $table->timestamp('withdraw_time')->comment('提现时间');
+            $table->string('area_code')->default('')->comment('行政区划代码');
+            $table->string('remark')->nullable()->comment('备注');
+            $table->string('auditor')->nullable()->comment('审核人');
+            $table->timestamp('audit_time')->nullable()->comment('审核时间');
+            $table->string('audit_remark')->nullable()->comment('审核回执');
+            $table->string('audit_state')->default('PENDING')->comment('审核状态');
+            $table->string('state')->default('PROCESSING')->comment('状态');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('wallet_withdraw_records');
+    }
+};

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff