Kaynağa Gözat

页面+接口对接

gorden 11 ay önce
ebeveyn
işleme
3a85a2c76e
41 değiştirilmiş dosya ile 897 ekleme ve 146 silme
  1. 1 0
      .env.bak
  2. 1 5
      app/admin/controller/ServiceTeamController.php
  3. 45 0
      app/admin/controller/client/CollectionController.php
  4. 10 8
      app/admin/controller/client/PointsController.php
  5. 1 4
      app/admin/controller/goods/EntityGoodsController.php
  6. 1 5
      app/admin/controller/goods/PackageGoodsController.php
  7. 1 5
      app/admin/controller/goods/ServiceGoodsController.php
  8. 1 5
      app/admin/controller/goods/SpecialGoodsController.php
  9. 1 5
      app/admin/controller/marketing/TeamController.php
  10. 1 4
      app/admin/controller/medical/TeamController.php
  11. 3 4
      app/admin/controller/member/MemberController.php
  12. 61 0
      app/admin/controller/member/OwnerController.php
  13. 106 3
      app/admin/controller/member/WellnessRecordController.php
  14. 1 4
      app/admin/controller/order/AppointmentController.php
  15. 94 0
      app/admin/controller/order/PendingController.php
  16. 92 0
      app/admin/controller/order/RefundController.php
  17. 41 0
      app/admin/controller/sys_manage/ApiController.php
  18. 1 5
      app/admin/controller/sys_manage/ConfigController.php
  19. 1 4
      app/admin/controller/sys_manage/FieldController.php
  20. 28 7
      app/admin/controller/sys_manage/MenuController.php
  21. 1 5
      app/admin/controller/sys_manage/RoleController.php
  22. 1 5
      app/admin/controller/sys_manage/UserController.php
  23. 6 2
      app/admin/service/ServiceTeamService.php
  24. 17 9
      app/admin/service/goods/GoodsService.php
  25. 6 2
      app/admin/service/marketing/TeamService.php
  26. 5 2
      app/admin/service/medical/TeamService.php
  27. 15 6
      app/admin/service/member/MemberService.php
  28. 105 0
      app/admin/service/member/OwnerService.php
  29. 26 16
      app/admin/service/order/AppointmentService.php
  30. 9 5
      app/admin/service/sys_manage/ConfigService.php
  31. 18 7
      app/admin/service/sys_manage/FieldService.php
  32. 10 5
      app/admin/service/sys_manage/RoleService.php
  33. 9 5
      app/admin/service/sys_manage/UserService.php
  34. 36 0
      app/admin/validate/order/ReturnValidate.php
  35. 40 0
      app/admin/validate/sys_manage/ApiValidate.php
  36. 3 0
      app/controller/Curd.php
  37. 28 0
      app/model/OrderReturn.php
  38. 26 0
      app/model/SysApi.php
  39. 6 0
      app/model/SysDept.php
  40. 1 1
      config/server.php
  41. 38 8
      route/admin.php

+ 1 - 0
.env.bak

@@ -1,4 +1,5 @@
 APP_DEBUG = true
+SERVER_IP_PORT = 9905
 
 DB_HOST = 127.0.0.1
 DB_PORT = 3306

+ 1 - 5
app/admin/controller/ServiceTeamController.php

@@ -18,11 +18,7 @@ class ServiceTeamController
      */
     public function deptList(Request $request)
     {
-        $page = $request->get('page', 1);
-        $limit = $request->get('pageSize', 10);
-        $keywords = format_string($request->get('keywords', ''));
-
-        return ServiceTeamService::deptList($page, $limit, $keywords);
+        return ServiceTeamService::deptList($request);
     }
 
     /**

+ 45 - 0
app/admin/controller/client/CollectionController.php

@@ -23,4 +23,49 @@ class CollectionController extends Curd
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }
+
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with([
+            'member' => function ($query) {
+                $query->select('member_id', 'member_mobile');
+            },
+            'goods' => function ($query) {
+                $query->select('goods_id', 'goods_name');
+            }
+        ]);
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
 }

+ 10 - 8
app/admin/controller/client/PointsController.php

@@ -20,20 +20,22 @@ class PointsController extends Curd
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $order = $request->get('order', 'desc');
         $field = $field ?? 'client_points_addtimes';
+        if (!empty($request->get('member_mobile'))) {
+            $where['member.member_mobile'] = ['like', $request->get('member_mobile')];
+        }
+        if (!empty($request->get('order_id'))) {
+            $where['order.order_id'] = ['like', $request->get('order_id')];
+        }
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }
 
     protected function doSelect(array $where, string $field = null, string $order = 'desc')
     {
-        $model = $this->model->with([
-            'member' => function ($query) {
-                $query->select('member_id', 'member_mobile');
-            },
-            'orders' => function ($query) {
-                $query->select('order_id', 'order_name');
-            }
-        ]);
+        $model = $this->model->leftJoin('member', 'member.member_id', '=', 'client_points.join_client_points_member_id')
+            ->leftJoin('order', 'order.order_id', '=', 'client_points.join_client_points_order_id')
+            ->select('member.member_id', 'member.member_mobile', 'order.order_id', 'order.order_name', 'client_points.*');
+
         foreach ($where as $column => $value) {
             if (is_array($value)) {
                 if ($value[0] === 'like' || $value[0] === 'not like') {

+ 1 - 4
app/admin/controller/goods/EntityGoodsController.php

@@ -19,11 +19,8 @@ class EntityGoodsController
      */
     public function select(Request $request)
     {
-        $page = $request->get('page');
-        $pageSize = $request->get('pageSize');
-        $keywords = $request->get('keywords');
 
-        return GoodsService::select($page, $pageSize, $keywords, 'GOODS');
+        return GoodsService::select($request, 'GOODS');
     }
 
     /**

+ 1 - 5
app/admin/controller/goods/PackageGoodsController.php

@@ -19,11 +19,7 @@ class PackageGoodsController
      */
     public function select(Request $request)
     {
-        $page = $request->get('page');
-        $pageSize = $request->get('pageSize');
-        $keywords = $request->get('keywords');
-
-        return GoodsService::select($page, $pageSize, $keywords, 'PACKAGE');
+        return GoodsService::select($request, 'PACKAGE');
     }
 
     /**

+ 1 - 5
app/admin/controller/goods/ServiceGoodsController.php

@@ -19,11 +19,7 @@ class ServiceGoodsController
      */
     public function select(Request $request)
     {
-        $page = $request->get('page');
-        $pageSize = $request->get('pageSize');
-        $keywords = $request->get('keywords');
-
-        return GoodsService::select($page, $pageSize, $keywords, 'SERVICE');
+        return GoodsService::select($request, 'SERVICE');
     }
 
     /**

+ 1 - 5
app/admin/controller/goods/SpecialGoodsController.php

@@ -19,11 +19,7 @@ class SpecialGoodsController
      */
     public function select(Request $request)
     {
-        $page = $request->get('page');
-        $pageSize = $request->get('pageSize');
-        $keywords = $request->get('keywords');
-
-        return GoodsService::select($page, $pageSize, $keywords, 'SPECIAL');
+        return GoodsService::select($request, 'SPECIAL');
     }
 
     /**

+ 1 - 5
app/admin/controller/marketing/TeamController.php

@@ -18,11 +18,7 @@ class TeamController
      */
     public function deptList(Request $request)
     {
-        $page = $request->get('page', 1);
-        $limit = $request->get('pageSize', 10);
-        $keywords = format_string($request->get('keywords', ''));
-
-        return TeamService::deptList($page, $limit, $keywords);
+        return TeamService::deptList($request);
     }
 
     /**

+ 1 - 4
app/admin/controller/medical/TeamController.php

@@ -18,11 +18,8 @@ class TeamController
      */
     public function deptList(Request $request)
     {
-        $page = $request->get('page', 1);
-        $limit = $request->get('pageSize', 10);
-        $keywords = format_string($request->get('keywords', ''));
 
-        return TeamService::deptList($page, $limit, $keywords);
+        return TeamService::deptList($request);
     }
 
     /**

+ 3 - 4
app/admin/controller/member/MemberController.php

@@ -19,8 +19,10 @@ class MemberController
         $res = Db::table('member')
             ->join('member_cert', 'member.member_id', '=', 'member_cert.join_cert_member_id')
             ->select('member.member_id', 'member.member_mobile', 'member_cert.member_cert_name')
+            ->where('member.member_is_owner','N')
             ->where(function ($query) use ($keywords) {
                 $query->where('member.member_mobile', 'like', '%' . $keywords . '%')
+                    ->orWhere("member.member_id", 'like', '%' . $keywords . '%')
                     ->orWhere("member_cert.member_cert_name", 'like', '%' . $keywords . '%');
             })->get();
         $data = [];
@@ -36,11 +38,8 @@ class MemberController
 
     public function list(Request $request)
     {
-        $page = $request->get('page', 1);
-        $pageSize = $request->get('pageSize', 10);
-        $keywords = $request->get('keywords', '');
 
-        return MemberService::list($page, $pageSize, $keywords);
+        return MemberService::list($request);
     }
 
     /**

+ 61 - 0
app/admin/controller/member/OwnerController.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace app\admin\controller\member;
+
+use app\admin\service\member\MemberService;
+use app\admin\service\member\OwnerService;
+use app\admin\validate\member\MemberValidate;
+use support\Db;
+use support\Request;
+
+class OwnerController
+{
+    public function selectList(Request $request)
+    {
+        $keywords = $request->get('keywords');
+        if (!$keywords) {
+            return json_fail("查询错误");
+        }
+
+        $res = Db::table('member')
+            ->join('member_cert', 'member.member_id', '=', 'member_cert.join_cert_member_id')
+            ->select('member.member_id', 'member.member_mobile', 'member_cert.member_cert_name')
+            ->where('member.member_is_owner','Y')
+            ->where(function ($query) use ($keywords) {
+                $query->where('member.member_mobile', 'like', '%' . $keywords . '%')
+                    ->orWhere("member_cert.member_cert_name", 'like', '%' . $keywords . '%');
+            })->get();
+        $data = [];
+        foreach ($res as $item) {
+            $data[] = [
+                'key'=>$item->member_id,
+                'value'=>!empty($item->member_cert_name) ? $item->member_cert_name : $item->member_mobile,
+            ];
+        }
+
+        return json_success('',$data);
+    }
+
+    public function list(Request $request)
+    {
+        return OwnerService::list($request);
+    }
+
+    /**
+     * @Desc 添加会员
+     * @Author Gorden
+     * @Date 2024/3/25 13:40
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function add(Request $request)
+    {
+        $validate = new MemberValidate();
+        if (!$validate->scene('add')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return OwnerService::add($request->post());
+    }
+}

+ 106 - 3
app/admin/controller/member/WellnessRecordController.php

@@ -6,6 +6,7 @@ use app\admin\validate\life\CinemaIlkValidate;
 use app\admin\validate\member\WellnessRecordValidate;
 use app\controller\Curd;
 use app\model\CinemaIlk as CinemaIlkModel;
+use app\model\SysUpload;
 use app\model\WellnessRecord;
 use support\Request;
 use support\Response;
@@ -20,6 +21,108 @@ class WellnessRecordController extends Curd
         $this->validateClass = new WellnessRecordValidate();
     }
 
+    /**
+     * @Desc 我的档案
+     * @Author Gorden
+     * @Date 2024/4/1 10:54
+     *
+     * @param $memberId
+     * @return mixed
+     */
+    public function my($memberId)
+    {
+        $query = $this->model->where('wellness_record_category', '档案')
+            ->where('join_wellness_record_member_id', $memberId);
+        $paginator = $query->paginate(20);
+        $total = $paginator->total();
+        $items = $paginator->items();
+        $itemsNew = [];
+        foreach ($items as $item) {
+            $itemNew = [
+                'wellness_record_id' => $item->wellness_record_id,
+                'join_wellness_record_member_id' => $item->join_wellness_record_member_id,
+                'wellness_record_status' => $item->wellness_record_status,
+                'wellness_record_name' => $item->wellness_record_name,
+                'wellness_record_datetime' => $item->wellness_record_datetime,
+                'wellness_record_json' => $item->wellness_record_json,
+                'wellness_record_content' => $item->wellness_record_content,
+                'wellness_record_remark' => $item->wellness_record_remark,
+                'wellness_record_extend_json' => $item->wellness_record_extend_json,
+                'wellness_record_addtimes' => $item->wellness_record_addtimes,
+            ];
+            if (!empty($item->wellness_record_file_json)) {
+                $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
+                $upload = SysUpload::whereIn('upload_file_path', $item->wellness_record_file_json)->get();
+                foreach ($upload as $value) {
+                    $itemNew['wellness_record_file_json'][] = [
+                        'url' => getenv('STORAGE_DOMAIN') . $value->upload_file_path,
+                        'name' => $value->upload_name
+                    ];
+                }
+            }
+
+            $itemsNew[] = $itemNew;
+        }
+
+        $data = [
+            'total' => $total,
+            'rows' => $itemsNew
+        ];
+        return json(['code' => 200, 'msg' => 'success', 'data' => $data]);
+    }
+
+    /**
+     * @Desc 我的医嘱
+     * @Author Gorden
+     * @Date 2024/4/2 8:44
+     *
+     * @param $memberId
+     * @return Response
+     */
+    public function advice($memberId)
+    {
+        $query = $this->model->where('wellness_record_category', '医嘱')
+            ->where('join_wellness_record_member_id', $memberId)
+            ->orderBy('wellness_record_addtimes','desc');
+        $paginator = $query->paginate(20);
+        $total = $paginator->total();
+        $items = $paginator
+            ->items();
+        $itemsNew = [];
+        foreach ($items as $item) {
+            $itemNew = [
+                'wellness_record_id' => $item->wellness_record_id,
+                'join_wellness_record_member_id' => $item->join_wellness_record_member_id,
+                'wellness_record_status' => $item->wellness_record_status,
+                'wellness_record_name' => $item->wellness_record_name,
+                'wellness_record_datetime' => $item->wellness_record_datetime,
+                'wellness_record_json' => $item->wellness_record_json,
+                'wellness_record_content' => $item->wellness_record_content,
+                'wellness_record_remark' => $item->wellness_record_remark,
+                'wellness_record_extend_json' => $item->wellness_record_extend_json,
+                'wellness_record_addtimes' => $item->wellness_record_addtimes,
+            ];
+            if (!empty($item->wellness_record_file_json)) {
+                $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
+                $upload = SysUpload::whereIn('upload_file_path', $item->wellness_record_file_json)->get();
+                foreach ($upload as $value) {
+                    $itemNew['wellness_record_file_json'][] = [
+                        'url' => getenv('STORAGE_DOMAIN') . $value->upload_file_path,
+                        'name' => $value->upload_name
+                    ];
+                }
+            }
+
+            $itemsNew[] = $itemNew;
+        }
+
+        $data = [
+            'total' => $total,
+            'rows' => $itemsNew
+        ];
+        return json(['code' => 200, 'msg' => 'success', 'data' => $data]);
+    }
+
     /**
      * @Desc 查询列表
      * @Author Gorden
@@ -90,10 +193,10 @@ class WellnessRecordController extends Curd
             if (!empty($item->wellness_record_file_json)) {
                 $item->wellness_record_file_json = json_decode($item->wellness_record_file_json, true);
                 $files = '';
-                foreach ($item->wellness_record_file_json as $file){
-                    $files.=getenv('STORAGE_DOMAIN').$file.',';
+                foreach ($item->wellness_record_file_json as $file) {
+                    $files .= getenv('STORAGE_DOMAIN') . $file . ',';
                 }
-                $item->wellness_record_file_json = rtrim($files,',');
+                $item->wellness_record_file_json = rtrim($files, ',');
             }
         }
 

+ 1 - 4
app/admin/controller/order/AppointmentController.php

@@ -19,10 +19,7 @@ class AppointmentController
      */
     public function select(Request $request): Response
     {
-        $page = $request->get('page');
-        $pageSize = $request->get('pageSize');
-        $keywords = $request->get('keywords');
 
-        return AppointmentService::select($page, $pageSize, $keywords);
+        return AppointmentService::select($request);
     }
 }

+ 94 - 0
app/admin/controller/order/PendingController.php

@@ -0,0 +1,94 @@
+<?php
+
+namespace app\admin\controller\order;
+
+use app\admin\validate\coupon\CouponValidate;
+use app\admin\validate\device\DeviceValidate;
+use app\admin\validate\order\OrderValidate;
+use app\controller\Curd;
+use app\model\Coupon;
+use app\model\Device;
+use app\model\Order;
+use app\model\OrderSheet;
+use app\model\SysSerial;
+use support\exception\BusinessException;
+use support\Request;
+use support\Response;
+
+class PendingController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new Order();
+        $this->validate = true;
+        $this->validateClass = new OrderValidate();
+    }
+
+    /**
+     * @Desc 列表
+     * @Author Gorden
+     * @Date 2024/3/28 15:01
+     *
+     * @param Request $request
+     * @return Response
+     * @throws \support\exception\BusinessException
+     */
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'order_addtimes';
+        $where['order_status_system'] = 'WAITING';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    /**
+     * @Desc 订单商品详情
+     * @Author Gorden
+     * @Date 2024/3/29 8:50
+     *
+     * @param Request $request
+     * @return Response
+     */
+    public function sheet(Request $request)
+    {
+        $orderId = $request->get('order_id');
+        $orderSheet = OrderSheet::with([
+            'member' => function ($query) {
+                $query->select('member_id', 'member_mobile');
+            },
+            'goods' => function ($query) {
+                $query->select('goods_id', 'goods_name', 'goods_cover', 'goods_market_price', 'goods_sales_price');
+            },
+        ])->where('join_sheet_order_id', $orderId)
+            ->get()
+            ->toArray();
+        foreach ($orderSheet as &$item) {
+            $item['goods']['goods_cover'] = getenv('STORAGE_DOMAIN') . $item['goods']['goods_cover'];
+        }
+
+        $order = Order::where('order_id', $orderId)->first();
+        $data = [
+            'order' => $order,
+            'sheet' => $orderSheet
+        ];
+
+        return json_success('', $data);
+    }
+
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+        $data = $this->inputFilter($request->post());
+        $data['coupon_begindate'] = strtotime($data['coupon_begindate']);
+        $data['coupon_enddate'] = strtotime($data['coupon_enddate']);
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+}

+ 92 - 0
app/admin/controller/order/RefundController.php

@@ -0,0 +1,92 @@
+<?php
+
+namespace app\admin\controller\order;
+
+use app\admin\validate\order\ReturnValidate;
+use app\controller\Curd;
+use app\model\OrderReturn;
+use support\exception\BusinessException;
+use support\Request;
+use support\Response;
+
+class RefundController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new OrderReturn();
+        $this->validate = true;
+        $this->validateClass=new ReturnValidate();
+    }
+
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'order_return_addtimes';
+        $where['order_return_category'] = '退款';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with([
+            'member' => function ($query) {
+                $query->select('member_id', 'member_mobile');
+            },
+            'order' => function ($query) {
+                $query->select('order_id', 'order_name');
+            }
+        ]);
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
+
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+        $data = $this->inputFilter($request->post());
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        if (empty($model->order_return_accept_datetimes) && $model->order_return_status == 'PENDING' && $data['order_return_status'] == 'DOING'){
+            $data['order_return_accept_datetimes'] = date('Y-m-d H:i:s');
+        }
+
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+}

+ 41 - 0
app/admin/controller/sys_manage/ApiController.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\admin\validate\sys_manage\ApiValidate;
+use app\controller\Curd;
+use app\model\SysApi;
+use app\model\SysSerial;
+use support\Request;
+use support\Response;
+
+class ApiController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new SysApi();
+        $this->validate = true;
+        $this->validateClass = new ApiValidate();
+    }
+
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'api_addtimes';
+        $query = $this->doSelect($where, $field, $order);
+
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $data['api_id'] = "AP" . str_pad(SysSerial::getSerial(), 16, '0') . random_string(8);
+        $data['api_extend_json'] = $data['api_extend_json'] ?? '{}';
+        $data['api_request_json'] = $data['api_request_json'] ?? '{}';
+        $data['api_response_json'] = $data['api_response_json'] ?? '{}';
+
+        return $data;
+    }
+}

+ 1 - 5
app/admin/controller/sys_manage/ConfigController.php

@@ -18,11 +18,7 @@ class ConfigController
      */
     public function configList(Request $request)
     {
-        $page = $request->get('page', 1);
-        $limit = $request->get('pageSize', 10);
-        $keywords = $request->get('keywords', '');
-
-        return ConfigService::configList($page, $limit, $keywords);
+        return ConfigService::configList($request);
     }
 
     /**

+ 1 - 4
app/admin/controller/sys_manage/FieldController.php

@@ -20,11 +20,8 @@ class FieldController
      */
     public function fieldList(Request $request)
     {
-        $page = $request->get('page', 1);
-        $limit = $request->get('limit', 10);
-        $keywords = $request->get('keywords', '');
 
-        return FieldService::fieldList($page, $limit, $keywords);
+        return FieldService::fieldList($request);
     }
 
     /**

+ 28 - 7
app/admin/controller/sys_manage/MenuController.php

@@ -133,6 +133,27 @@ class MenuController extends Curd
         }
     }
 
+    /**
+     * 执行更新
+     * @param $id
+     * @param $data
+     * @return void
+     */
+    protected function doUpdate($id, $data)
+    {
+        $model = $this->model->find($id);
+        foreach ($data as $key => $val) {
+            $model->{$key} = $val;
+        }
+        if ($model->menu_pid != $data['menu_pid']){
+            $parentMenu = SysMenu::getParent($data['menu_pid']);
+            $prePath = $parentMenu->menu_path;
+            $model->menu_path = $prePath . $model->menu_id . '/';
+        }
+
+        $model->save();
+    }
+
     protected function doFormat($query, $format, $limit): Response
     {
         $methods = [
@@ -183,10 +204,10 @@ class MenuController extends Curd
         $tree = new Tree($format_items);
 
         $menu = $tree->getTree();
-        foreach ($menu as &$item) {
-            unset($item['component']);
-            unset($item['redirect']);
-        }
+//        foreach ($menu as &$item) {
+//            unset($item['component']);
+//            unset($item['redirect']);
+//        }
 
         $data = [
             'dashboardGrid' => ["welcome", "member", "sysManage", "about"],
@@ -220,9 +241,9 @@ class MenuController extends Curd
         $tree = new Tree($format_items);
 
         $menu = $tree->getTree();
-        foreach ($menu as &$item) {
-            unset($item['component']);
-        }
+//        foreach ($menu as &$item) {
+//            unset($item['component']);
+//        }
 
         return json_success('success', $menu);
     }

+ 1 - 5
app/admin/controller/sys_manage/RoleController.php

@@ -18,11 +18,7 @@ class RoleController
      */
     public function roleList(Request $request)
     {
-        $page = intval($request->get('page', 1));
-        $limit = intval($request->get('limit', 10));
-        $keywords = format_string($request->get('keywords', ''));
-
-        return RoleService::roleList($page, $limit, $keywords);
+        return RoleService::roleList($request);
     }
 
     /**

+ 1 - 5
app/admin/controller/sys_manage/UserController.php

@@ -20,11 +20,7 @@ class UserController
      */
     public function userList(Request $request)
     {
-        $page = $request->get('page', 1);
-        $limit = $request->get('limit', 10);
-        $keywords = $request->get('keywords', '');
-
-        return UserService::userList($page, $limit, $keywords);
+        return UserService::userList($request);
     }
 
     /**

+ 6 - 2
app/admin/service/ServiceTeamService.php

@@ -21,9 +21,13 @@ class ServiceTeamService
      * @param $keywords
      * @return \support\Response
      */
-    public static function deptList($page, $pageSize, $keywords)
+    public static function deptList(Request $request)
     {
-        $rows = SysDept::select('dept_id', 'dept_name')
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $keywords = format_string($request->get('keywords', ''));
+
+        $rows = SysDept::select('dept_id', 'dept_name','dept_addtimes')
             ->where('dept_category', self::MEDICAL_DEPT_CATEGORY)
             ->when($keywords != '', function ($query) use ($keywords) {
                 $query->where('dept_name', 'like', '%' . $keywords . '%');

+ 17 - 9
app/admin/service/goods/GoodsService.php

@@ -15,8 +15,12 @@ use support\Response;
 
 class GoodsService
 {
-    public static function select($page, $pageSize, $keywords, $classify = "GOODS")
+    public static function select(Request $request, $classify = "GOODS")
     {
+        $page = $request->get('page');
+        $pageSize = $request->get('pageSize');
+        $goodsName = $request->get('goods_name', '');
+
         $rows = Goods::with([
             'category' => function ($query) {
                 $query->select('category_id', 'category_name');
@@ -24,19 +28,23 @@ class GoodsService
             'running' => function ($query) {
                 $query->select('join_running_goods_id', 'goods_running_storage');
             }
-        ])->select('goods_id', 'join_goods_category_id', 'join_goods_device_id', 'goods_status', 'goods_sales_price', 'goods_category', 'goods_name', 'goods_cover', 'goods_sort', 'goods_addtimes')
-            ->where('goods_classify', $classify)
-            ->when($keywords != '', function ($query) use ($keywords) {
-                $query->where('goods_name', 'like', '%' . $keywords . '%')
-                    ->orWhere('goods_title', 'like', '%', $keywords, '%');
+        ])->select('goods_id', 'join_goods_category_id', 'join_goods_device_id', 'goods_status', 'goods_sales_price', 'goods_category', 'goods_name', 'goods_title', 'goods_cover', 'goods_sort', 'goods_addtimes')
+            ->when($goodsName != '', function ($query) use ($goodsName) {
+                $query->where(function ($q) use ($goodsName) {
+                    $q->where('goods_name', 'like', '%' . $goodsName . '%')
+                        ->OrWhere('goods_title', 'like', '%' . $goodsName . '%');
+                });
             })
+            ->where('goods_classify', $classify)
             ->orderBy('goods_sort', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = Goods::when($keywords != '', function ($query) use ($keywords) {
-            $query->where('goods_name', 'like', '%' . $keywords . '%')
-                ->orWhere('goods_title', 'like', '%', $keywords, '%');
+        $total = Goods::when($goodsName != '', function ($query) use ($goodsName) {
+            $query->where(function ($q) use ($goodsName) {
+                $q->where('goods_name', 'like', '%' . $goodsName . '%')
+                    ->OrWhere('goods_title', 'like', '%' . $goodsName . '%');
+            });
         })->where('goods_classify', $classify)->count();
 
         foreach ($rows as &$row) {

+ 6 - 2
app/admin/service/marketing/TeamService.php

@@ -21,13 +21,17 @@ class TeamService
      * @param $keywords
      * @return \support\Response
      */
-    public static function deptList($page, $pageSize, $keywords)
+    public static function deptList(Request $request)
     {
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $keywords = format_string($request->get('keywords', ''));
+
         $rows = SysDept::with([
             'premises' => function ($query) {
                 $query->select('dept_id', 'dept_name');
             }
-        ])->select('dept_id', 'dept_name', 'dept_super_id')
+        ])->select('dept_id', 'dept_name', 'dept_super_id','dept_addtimes')
             ->where('dept_category', self::DEPT_CATEGORY)
             ->when($keywords != '', function ($query) use ($keywords) {
                 $query->where('dept_name', 'like', '%' . $keywords . '%');

+ 5 - 2
app/admin/service/medical/TeamService.php

@@ -21,9 +21,12 @@ class TeamService
      * @param $keywords
      * @return \support\Response
      */
-    public static function deptList($page, $pageSize, $keywords)
+    public static function deptList(Request $request)
     {
-        $rows = SysDept::select('dept_id', 'dept_name')
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $keywords = format_string($request->get('keywords', ''));
+        $rows = SysDept::select('dept_id', 'dept_name', 'dept_addtimes')
             ->where('dept_category', self::MEDICAL_DEPT_CATEGORY)
             ->when($keywords != '', function ($query) use ($keywords) {
                 $query->where('dept_name', 'like', '%' . $keywords . '%');

+ 15 - 6
app/admin/service/member/MemberService.php

@@ -7,14 +7,23 @@ use app\model\MemberCert;
 use app\model\MemberInfo;
 use app\model\SysSerial;
 use support\Db;
+use support\Request;
 
 class MemberService
 {
-    public static function list($page, $pageSize, $keywords)
+    public static function list(Request $request)
     {
-        $rows = Member::when($keywords != '', function ($query) use ($keywords) {
-            $query->where('member_mobile', 'like', '%' . $keywords . '%');
-        });
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $id = $request->get('id', '');
+        $mobile = $request->get('mobile', '');
+
+        $rows = Member::where('member_is_owner', 'N')
+            ->when($id != '', function ($query) use ($id) {
+                $query->where('member_id', 'like', '%' . $id . '%');
+            })->when($mobile != '', function ($query) use ($mobile) {
+                $query->where('member_mobile', 'like', '%' . $mobile . '%');
+            });
         // 总条数
         $total = $rows->count('member_id');
         $rows = $rows->with([
@@ -27,8 +36,8 @@ class MemberService
             ->get()
             ->toArray();
 
-        foreach ($rows as &$row){
-            $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN').$row['info']['member_info_headimg'];
+        foreach ($rows as &$row) {
+            $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN') . $row['info']['member_info_headimg'];
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 105 - 0
app/admin/service/member/OwnerService.php

@@ -0,0 +1,105 @@
+<?php
+
+namespace app\admin\service\member;
+
+use app\model\Member;
+use app\model\MemberCert;
+use app\model\MemberInfo;
+use app\model\SysSerial;
+use support\Db;
+use support\Request;
+
+class OwnerService
+{
+    public static function list(Request $request)
+    {
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $id = $request->get('id', '');
+        $mobile = $request->get('mobile', '');
+        $rows = Member::where('member_is_owner', 'Y')
+            ->when($id != '', function ($query) use ($id) {
+                $query->where('member_id', 'like', '%' . $id . '%');
+            })->when($mobile != '', function ($query) use ($mobile) {
+                $query->where('member_mobile', 'like', '%' . $mobile . '%');
+            });
+        // 总条数
+        $total = $rows->count('member_id');
+        $rows = $rows->with([
+            'info' => function ($query) {
+                $query->select('join_info_member_id', 'member_info_nickname', 'member_info_headimg');
+            }
+        ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from')
+            ->orderBy('member_addtimes', 'DESC')
+            ->forPage($page, $pageSize)
+            ->get()
+            ->toArray();
+
+        foreach ($rows as &$row){
+            $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN').$row['info']['member_info_headimg'];
+        }
+
+        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
+    }
+
+    /**
+     * @Desc 添加会员
+     * @Author Gorden
+     * @Date 2024/3/25 13:40
+     *
+     * @param $params
+     * @return \support\Response
+     */
+    public static function add($params)
+    {
+        Db::beginTransaction();
+        try {
+            $memberId = self::generateMemberId();
+            // 先写主表,要ID
+            $memberData = [
+                'member_id' => $memberId,
+                'member_is_owner' => $params['is_owner'],
+                'member_classify' => $params['classify'],
+                'member_status' => $params['status'],
+                'member_mobile' => $params['mobile'],
+                'member_from' => $params['source'],
+                'member_addtimes' => time(),
+            ];
+            Member::insert($memberData);
+            // member cert
+            $certData = [
+                'join_cert_member_id' => $memberId,
+                'member_cert_name' => $params['cert_name'],
+                'member_cert_nbr' => $params['cert_nbr'],
+                'member_cert_birth' => $params['birth'],
+                'member_cert_gender' => $params['gender'],
+                'member_cert_addr' => $params['addr'],
+                'member_cert_face' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_face']),
+                'member_cert_photo' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_photo']),
+            ];
+            MemberCert::insert($certData);
+            // member info
+            $infoData = [
+                'join_info_member_id' => $memberId,
+                'member_info_nickname' => $params['account_name'],
+                'member_info_headimg' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['avatar'])
+            ];
+            MemberInfo::insert($infoData);
+
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollBack();
+            dump($e->getMessage() . ';line:' . $e->getLine());
+            return json_fail("数据添加失败");
+        }
+
+        return json_success('数据添加成功');
+    }
+
+    private static function generateMemberId()
+    {
+        $id = SysSerial::getSerial();
+
+        return "ME" . str_pad($id, 16, "0", STR_PAD_LEFT) . random_string(8);
+    }
+}

+ 26 - 16
app/admin/service/order/AppointmentService.php

@@ -3,28 +3,38 @@
 namespace app\admin\service\order;
 
 use app\model\Appointment;
+use support\Db;
+use support\Request;
 
 class AppointmentService
 {
-    public static function select($page, $pageSize, $keywords)
+    public static function select(Request $request)
     {
-        $rows = Appointment::with([
-            'member' => function ($query) {
-                $query->select('member_id', 'member_mobile');
-            },
-            'goods' => function ($query) {
-                $query->select('goods_id', 'goods_name', 'goods_cover', 'goods_market_price', 'goods_sales_price');
-            },
-            'order',
-            'benefit'
-        ])->orderBy('appointment_addtimes', 'DESC')
-            ->forPage($page, $pageSize)
-            ->get()
-            ->toArray();
-        $total = Appointment::count();
+        $page = $request->get('page');
+        $pageSize = $request->get('pageSize');
+        $id = $request->get('id','');
+        $mobile = $request->get('mobile','');
+
+
+        $rows = Db::table('appointment')
+            ->leftJoin('member','member.member_id','=','appointment.join_appointment_member_id')
+            ->leftJoin('goods','goods.goods_id','=','appointment.join_appointment_goods_id')
+            ->leftJoin('order','order.order_id','=','appointment.join_appointment_order_id')
+            ->leftJoin('member_benefit','member_benefit.member_benefit_id','=','appointment.join_appointment_member_benefit_id')
+            ->when($id != '', function ($query) use ($id){
+                $query->where('appointment.appointment_id','like','%'.$id.'%');
+            })->when($mobile != '', function ($query) use ($mobile){
+                $query->where('member.member_mobile','like','%'.$mobile.'%');
+            });
+
+        $total = $rows->count('member.member_id');
+        $rows = $rows->select('member.member_mobile','appointment.*','goods.*','order.*','member_benefit.*')
+            ->orderBy('appointment.appointment_addtimes','desc')
+            ->forPage($page,$pageSize)
+            ->get();
 
         foreach ($rows as &$row) {
-            $row['goods']['goods_cover'] = getenv('STORAGE_DOMAIN') . $row['goods']['goods_cover'];
+            $row->goods_cover = getenv('STORAGE_DOMAIN') . $row->goods_cover;
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 9 - 5
app/admin/service/sys_manage/ConfigService.php

@@ -7,18 +7,22 @@ use support\Request;
 
 class ConfigService
 {
-    public static function configList($page, $pageSize, $keywords)
+    public static function configList(Request $request)
     {
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 20);
+        $keyword = $request->get('keyword', '');
+
         $rows = SysConfig::select('*')
-            ->when($keywords != '', function ($query) use ($keywords) {
-                $query->where('config_name', 'like', '%' . $keywords . '%');
+            ->when($keyword != '', function ($query) use ($keyword) {
+                $query->where('config_name', 'like', '%' . $keyword . '%');
             })
             ->orderBy('config_sort', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = SysConfig::when($keywords != '', function ($query) use ($keywords) {
-            $query->where('config_name', 'like', '%' . $keywords . '%');
+        $total = SysConfig::when($keyword != '', function ($query) use ($keyword) {
+            $query->where('config_name', 'like', '%' . $keyword . '%');
         })->count();
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 18 - 7
app/admin/service/sys_manage/FieldService.php

@@ -7,6 +7,7 @@ use app\model\SysField;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 use support\Db;
+use support\Request;
 
 class FieldService
 {
@@ -20,18 +21,28 @@ class FieldService
      * @param $keywords
      * @return \support\Response
      */
-    public static function fieldList($page, $pageSize, $keywords)
+    public static function fieldList(Request $request)
     {
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $fieldName = $request->get('field_name', '');
+        $tableName = $request->get('table_name', '');
+
         $rows = SysField::select('*')
-            ->when($keywords != '', function ($query) use ($keywords) {
-                $query->where('field_name', 'like', '%' . $keywords . '%');
+            ->when($fieldName != '', function ($query) use ($fieldName) {
+                $query->where('field_name', 'like', '%' . $fieldName . '%');
+            })
+            ->when($tableName != '', function ($query) use ($tableName) {
+                $query->where('field_table', 'like', '%' . $tableName . '%');
             })
             ->orderBy('field_addtimes', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = SysField::when($keywords != '', function ($query) use ($keywords) {
-            $query->where('field_name', 'like', '%' . $keywords . '%');
+        $total = SysField::when($fieldName != '', function ($query) use ($fieldName) {
+            $query->where('field_name', 'like', '%' . $fieldName . '%');
+        })->when($tableName != '', function ($query) use ($tableName) {
+            $query->where('field_table', 'like', '%' . $tableName . '%');
         })->count();
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
@@ -213,10 +224,10 @@ class FieldService
     {
         Db::beginTransaction();
         try {
-            if (!is_array($ids)){
+            if (!is_array($ids)) {
                 $ids = [$ids];
             }
-            foreach ($ids as $id){
+            foreach ($ids as $id) {
                 $field = SysField::where('field_id', $id)->first();
                 // 删除表记录
                 $field->delete();

+ 10 - 5
app/admin/service/sys_manage/RoleService.php

@@ -3,6 +3,7 @@
 namespace app\admin\service\sys_manage;
 
 use app\model\SysRole;
+use support\Request;
 
 class RoleService
 {
@@ -16,18 +17,22 @@ class RoleService
      * @param $keyword
      * @return \support\Response
      */
-    public static function roleList($page, $pageSize, $keywords)
+    public static function roleList(Request $request)
     {
+        $page = intval($request->get('page', 1));
+        $pageSize = intval($request->get('pageSize', 10));
+        $keyword = format_string($request->get('keyword', ''));
+
         $rows = SysRole::select('*')
-            ->when($keywords != '', function ($query) use ($keywords) {
-                $query->where('role_name', 'like', '%' . $keywords . '%');
+            ->when($keyword != '', function ($query) use ($keyword) {
+                $query->where('role_name', 'like', '%' . $keyword . '%');
             })
             ->orderBy('role_addtimes', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = SysRole::when($keywords != '', function ($query) use ($keywords) {
-            $query->where('role_name', 'like', '%' . $keywords . '%');
+        $total = SysRole::when($keyword != '', function ($query) use ($keyword) {
+            $query->where('role_name', 'like', '%' . $keyword . '%');
         })->count();
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 9 - 5
app/admin/service/sys_manage/UserService.php

@@ -17,18 +17,22 @@ class UserService
      * @param $keywords
      * @return \support\Response
      */
-    public static function userList($page, $pageSize, $keywords)
+    public static function userList(Request $request)
     {
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 10);
+        $username = $request->get('username', '');
+
         $rows = SysUser::select('join_user_role_id', 'join_user_dept_id', 'user_id', 'user_status', 'user_category', 'user_name', 'user_login_name', 'user_mobile', 'user_remark', 'user_extend_json', 'user_addtimes')
-            ->when($keywords != '', function ($query) use ($keywords) {
-                $query->where('user_name', 'like', '%' . $keywords . '%');
+            ->when($username != '', function ($query) use ($username) {
+                $query->where('user_name', 'like', '%' . $username . '%');
             })
             ->orderBy('user_addtimes', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        $total = SysUser::when($keywords != '', function ($query) use ($keywords) {
-            $query->where('user_name', 'like', '%' . $keywords . '%');
+        $total = SysUser::when($username != '', function ($query) use ($username) {
+            $query->where('user_name', 'like', '%' . $username . '%');
         })->count();
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 36 - 0
app/admin/validate/order/ReturnValidate.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace app\admin\validate\order;
+
+use think\Validate;
+
+class ReturnValidate extends Validate
+{
+    protected $rule = [
+        'orders_return_id' => 'require|integer',
+        'join_order_return_user_id' => 'require|alphaDash',
+        'join_return_order_id' => 'require|alphaDash',
+        'order_return_status' => 'require|in:PENDING,DOING,DONE',
+        'order_return_apply_datetimes' => 'date',
+        'order_return_apply_json' => 'isJson',
+        'order_return_accept_datetimes' => 'date',
+        'order_return_recharge_json' => 'isJson',
+        'order_return_regoods_json' => 'isJson',
+        'order_return_change_json' => 'isJson',
+        'order_return_task_json' => 'isJson',
+    ];
+
+    protected $scene = [
+        'update' => ['orders_return_id', 'order_return_status', 'order_return_apply_json', 'order_return_recharge_json', 'order_return_regoods_json',
+            'order_return_change_json', 'order_return_task_json']
+    ];
+
+    public function isJson($value)
+    {
+        if (is_json($value)) {
+            return true;
+        }
+
+        return '数据格式错误';
+    }
+}

+ 40 - 0
app/admin/validate/sys_manage/ApiValidate.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace app\admin\validate\sys_manage;
+
+use think\Validate;
+
+class ApiValidate extends Validate
+{
+    protected $rule = [
+        'api_id' => 'require|alphaDash',
+        'api_status' => 'require|in:ACTIVED,DISABLED',
+        'api_category' => 'max:32',
+        'api_token' => 'max:32',
+        'api_name' => 'max:64',
+        'api_request_json' => 'isJson',
+        'api_response_json' => 'isJson'
+    ];
+
+    protected $scene = [
+        'add' => ['api_status', 'api_category', 'api_token', 'api_name', 'api_request_json', 'api_response_json'],
+        'update' => ['api_id', 'api_status', 'api_category', 'api_token', 'api_name', 'api_request_json', 'api_response_json'],
+    ];
+
+    /**
+     * @Desc 验证Json
+     * @Author Gorden
+     * @Date 2024/4/1 13:51
+     *
+     * @param $value
+     * @return string|true
+     */
+    public function isJson($value)
+    {
+        if (is_json($value)) {
+            return true;
+        }
+
+        return "数据格式错误";
+    }
+}

+ 3 - 0
app/controller/Curd.php

@@ -197,6 +197,9 @@ class Curd
             ) {
                 unset($where[$column]);
             }
+            if (substr($value, 0,5) == 'like,') {
+                $where[$column] = explode(',',$value);
+            }
         }
         // 按照数据限制字段返回数据
         if ($this->dataLimit === 'personal') {

+ 28 - 0
app/model/OrderReturn.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class OrderReturn extends Model
+{
+    protected $table = 'order_return';
+
+    protected $primaryKey = 'orders_return_id';
+
+    protected $dateFormat = 'U';
+
+    const CREATED_AT = 'order_return_addtimes';
+
+    const UPDATED_AT = null;
+
+    public function member()
+    {
+        return $this->hasOne(Member::class, 'member_id', 'join_order_return_user_id');
+    }
+
+    public function order()
+    {
+        return $this->hasOne(Order::class, 'order_id', 'join_return_order_id');
+    }
+}

+ 26 - 0
app/model/SysApi.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace app\model;
+
+use DateTimeInterface;
+use support\Model;
+
+class SysApi extends Model
+{
+    protected $table = "sys_api";
+
+    protected $primaryKey = 'api_id';
+
+    protected $dateFormat = 'U';
+
+    protected $keyType = 'string';
+
+    const CREATED_AT = 'api_addtimes';
+
+    const UPDATED_AT = null;
+
+    protected function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+}

+ 6 - 0
app/model/SysDept.php

@@ -2,6 +2,7 @@
 
 namespace app\model;
 
+use DateTimeInterface;
 use support\Model;
 
 class SysDept extends Model
@@ -17,6 +18,11 @@ class SysDept extends Model
 
     const UPDATED_AT = null;
 
+    public function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+
     /**
      * @Desc 获取子部门
      * @Author Gorden

+ 1 - 1
config/server.php

@@ -13,7 +13,7 @@
  */
 
 return [
-    'listen' => 'http://0.0.0.0:8787',
+    'listen' => 'http://0.0.0.0:'.getenv("SERVER_IP_PORT"),
     'transport' => 'tcp',
     'context' => [],
     'name' => 'webman',

+ 38 - 8
route/admin.php

@@ -63,6 +63,15 @@ Route::group('/admin', function () {
     });
     /* 系统管理中心 */
     Route::group('/sys', function () {
+        /* API管理 */
+        Route::group('/api', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\ApiController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\sys_manage\ApiController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\sys_manage\ApiController::class, 'update']);
+            Route::delete('/delete', [\app\admin\controller\sys_manage\ApiController::class, 'delete']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
         /* 角色管理 */
         Route::group('/role', function () {
             Route::get('/list', [\app\admin\controller\sys_manage\RoleController::class, 'roleList']);
@@ -440,8 +449,16 @@ Route::group('/admin', function () {
             Route::get('/list', [\app\admin\controller\member\MemberController::class, 'list']);
             Route::post('/add', [\app\admin\controller\member\MemberController::class, 'add']);
         });
+        // 业主管理
+        Route::group('/owner', function () {
+            Route::get('/selectList', [\app\admin\controller\member\OwnerController::class, 'selectList']);
+            Route::get('/list', [\app\admin\controller\member\OwnerController::class, 'list']);
+            Route::post('/add', [\app\admin\controller\member\OwnerController::class, 'add']);
+        });
         /* 档案管理 */
         Route::group('/wellnessRecord', function () {
+            Route::get('/my/{id:[0-9a-zA-Z]+}', [\app\admin\controller\member\WellnessRecordController::class, 'my']);
+            Route::get('/advice/{id:[0-9a-zA-Z]+}', [\app\admin\controller\member\WellnessRecordController::class, 'advice']);
             Route::get('/list', [\app\admin\controller\member\WellnessRecordController::class, 'select']);
             Route::post('/add', [\app\admin\controller\member\WellnessRecordController::class, 'insert']);
             Route::post('/update', [\app\admin\controller\member\WellnessRecordController::class, 'update']);
@@ -541,6 +558,13 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        // 全部订单
+        Route::group('/pending', function () {
+            Route::get('/list', [\app\admin\controller\order\PendingController::class, 'select']);
+            Route::get('/sheet', [\app\admin\controller\order\PendingController::class, 'sheet']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
         // 售后订单
         Route::group('/return', function () {
             Route::get('/list', [\app\admin\controller\order\ReturnController::class, 'select']);
@@ -561,24 +585,30 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        // 退款管理
+        Route::group('/refund', function () {
+            Route::get('/list', [\app\admin\controller\order\RefundController::class, 'select']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
     });
     /* 客户端相关数据 */
     Route::group('/client', function () {
-        Route::group('',function (){
+        Route::group('', function () {
             // 我的关注
-            Route::get('/favorite/list',[\app\admin\controller\client\FavoriteController::class,'select']);
+            Route::get('/favorite/list', [\app\admin\controller\client\FavoriteController::class, 'select']);
             // 我的收藏
-            Route::get('/collection/list',[\app\admin\controller\client\FavoriteController::class,'select']);
+            Route::get('/collection/list', [\app\admin\controller\client\CollectionController::class, 'select']);
             // 我的积分
-            Route::get('/points/list',[\app\admin\controller\client\PointsController::class,'select']);
+            Route::get('/points/list', [\app\admin\controller\client\PointsController::class, 'select']);
             // 我的评价
-            Route::get('/evaluate/list',[\app\admin\controller\client\EvaluateController::class,'select']);
+            Route::get('/evaluate/list', [\app\admin\controller\client\EvaluateController::class, 'select']);
             // 我的购物车
-            Route::get('/cart/list',[\app\admin\controller\client\CartController::class,'select']);
+            Route::get('/cart/list', [\app\admin\controller\client\CartController::class, 'select']);
             // 我的优惠券
-            Route::get('/coupon/list',[\app\admin\controller\client\CouponController::class,'select']);
+            Route::get('/coupon/list', [\app\admin\controller\client\CouponController::class, 'select']);
             // 我的浏览数据
-            Route::get('/browse/list',[\app\admin\controller\client\BrowseController::class,'select']);
+            Route::get('/browse/list', [\app\admin\controller\client\BrowseController::class, 'select']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);