Gorden преди 9 месеца
родител
ревизия
70f6567684

+ 23 - 0
app/admin/controller/customer/IndexController.php

@@ -26,6 +26,29 @@ class IndexController extends Curd
         $this->validateClass = new IndexValidate();
     }
 
+    public function selectList(Request $request)
+    {
+        $keywords = $request->get('keywords');
+        if (!$keywords) {
+            return json_fail("查询错误");
+        }
+
+        $res = Db::table('customer')
+            ->select('id','name','mobile')
+            ->where(function ($query) use ($keywords) {
+                $query->where('name', 'like', '%' . $keywords . '%')
+                    ->orWhere("mobile", 'like', '%' . $keywords . '%');
+            })->get();
+        $data = [];
+        foreach ($res as $item) {
+            $data[] = [
+                'key' => $item->id,
+                'value' => $item->name,
+            ];
+        }
+
+        return json_success('', $data);
+    }
 
     public function select(Request $request): Response
     {

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

@@ -14,14 +14,15 @@ class MemberController
     public function selectList(Request $request)
     {
         $keywords = $request->get('keywords');
+        $isOwner = $request->get('member_is_owner', 'N');
         if (!$keywords) {
             return json_fail("查询错误");
         }
 
         $res = Db::table('member')
-            ->join('member_cert', 'member.member_id', '=', 'member_cert.join_cert_member_id')
+            ->leftjoin('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('member.member_is_owner', $isOwner)
             ->where(function ($query) use ($keywords) {
                 $query->where('member.member_mobile', 'like', '%' . $keywords . '%')
                     ->orWhere("member.member_id", 'like', '%' . $keywords . '%')

+ 63 - 3
app/admin/controller/member/VisitingController.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\Customer;
 use app\model\WellnessRecord;
 use support\exception\BusinessException;
 use support\Request;
@@ -35,10 +36,20 @@ class VisitingController extends Curd
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $field = $field ?? 'wellness_record_addtimes';
         $order = $request->get('order', 'desc');
-        $where['wellness_record_category'] = '来访';
+        $where['wellness_record_category'] = 'Visiting';
+
+        $m = $request->get('m', 'MEMBER');
+        if ($m == 'MEMBER') {
+            $isOwner = 'N';
+            $query = $this->doSelect($where, $field, $order, $isOwner);
+        } elseif ($m == 'OWNER') {
+            $isOwner = 'Y';
+            $query = $this->doSelect($where, $field, $order, $isOwner);
+        } elseif ($m == 'CUSTOMER') {
+            $field = 'created_at';
+            $query = $this->doSelectCustomer($where, $field, $order);
+        }
 
-        $isOwner = $request->post('is_owner', 'N');
-        $query = $this->doSelect($where, $field, $order, $isOwner);
         return $this->doFormat($query, $format, $limit);
     }
 
@@ -91,6 +102,55 @@ class VisitingController extends Curd
         return $model;
     }
 
+
+    protected function doSelectCustomer(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->leftJoin('customer', 'customer.id', '=', 'wellness_record.join_wellness_record_member_id')
+            ->select('customer.name', 'customer.mobile', 'wellness_record.*')
+            ->where('customer.name','<>', "");
+//            ->with([
+//                'member' => function ($query) {
+//                    $query->where('member_is_owner', 'N')->select('member_id', 'member_mobile');
+//                },
+//                'cert' => function ($query) {
+//                    $query->select('join_cert_member_id', 'member_cert_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 afterQuery($items)
     {
         foreach ($items as &$item) {

+ 5 - 2
app/admin/service/goods/GoodsService.php

@@ -71,7 +71,7 @@ class GoodsService
             })
             ->when($classify != '', function ($query) use ($classify) {
                 if ($classify == 'GOODS') {
-                    $query->whereIn('join_goods_category_id', ['6', '7', '8', '9', '10', '11', '12', '30']);
+                    $query->whereIn('join_goods_category_id', ['6', '7', '8', '10', '11', '12']);
                 } else {
                     $query->where('goods_classify', $classify);
                 }
@@ -848,6 +848,9 @@ class GoodsService
         if (!$category) {
             throw new BusinessException("产品分类不存在~");
         }
+        if (empty($params['goods_category'])){
+            $params['goods_category'] = $category->category_classify;
+        }
 
         try {
             $model = new Goods();
@@ -856,7 +859,7 @@ class GoodsService
             $model->join_goods_supplier_id = $params['join_goods_supplier_id'] ?? 0;
             $model->goods_classify = $params['goods_classify'] ?? '';
             $model->goods_status = $params['goods_status'] ?? '';
-            $model->goods_category = $category->category_classify ?? '';
+            $model->goods_category = $params['goods_category'] ?? '';
             $model->goods_prefix = $params['goods_prefix'] ?? ($category->category_name ? '【' . $category->category_name . '】' : '');
             $model->goods_name = $params['goods_name'];
             $model->goods_market_price = $params['goods_market_price'] ?? 0;

+ 48 - 7
app/admin/service/statistics/MemberService.php

@@ -7,7 +7,8 @@ use support\Db;
 
 class MemberService
 {
-    public static function getMember(){
+    public static function getMember()
+    {
         $data = [];
 
         // 会员数量
@@ -23,13 +24,53 @@ class MemberService
         $monthTime = strtotime(date('Y-m-01 00:00:00'));
         $data['monthCount'] = Member::where('member_addtimes', '>', $monthTime)->where('member_is_owner', 'N')->count();
 
-        // 折线图
-        $newAddition = Db::select("SELECT DATE_FORMAT(FROM_UNIXTIME(member_addtimes), '%Y/%m') AS `month`,count(*) as `num` FROM app_member group by month order by month asc ");
-        $newAdditionData = [];
+        // 折线图-会员
+        $newAddition = Db::select("SELECT DATE_FORMAT(FROM_UNIXTIME(member_addtimes), '%Y/%m') AS `month`,count(*) as `num` FROM app_member where member_is_owner='N' group by month order by month asc ");
+
+        $category = [];
         foreach ($newAddition as $item) {
-            $newAdditionData['category'][] = $item->month;
-            $newAdditionData['data'][] = $item->num;
+            $category[] = $item->month;
+//            $newAdditionData['member']['category'][] = $item->month;
+//            $newAdditionData['member']['data'][] = $item->num;
+        }
+        // 折线图-业主
+        $newAdditionOwner = Db::select("SELECT DATE_FORMAT(FROM_UNIXTIME(member_addtimes), '%Y/%m') AS `month`,count(*) as `num` FROM app_member where member_is_owner='Y' group by month order by month asc ");
+        foreach ($newAdditionOwner as $item) {
+            if (!in_array($item->month, $category)) {
+                $category[] = $item->month;
+            }
+//            $newAdditionData['owner']['category'][] = $item->month;
+//            $newAdditionData['owner']['data'][] = $item->num;
         }
+        sort($category);
+        $newAdditionData = [];
+        foreach ($category as $item) {
+            $isHaveMember = false;
+            $isHaveOwner = false;
+            foreach ($newAddition as $item2) {
+                if ($item == $item2->month) {
+                    $isHaveMember = true;
+                    $newAdditionData['member']['category'][] = $item;
+                    $newAdditionData['member']['data'][] = $item2->num;
+                }
+            }
+            foreach ($newAdditionOwner as $item3) {
+                if ($item == $item3->month) {
+                    $isHaveOwner = true;
+                    $newAdditionData['owner']['category'][] = $item;
+                    $newAdditionData['owner']['data'][] = $item3->num;
+                }
+            }
+            if (!$isHaveOwner) {
+                $newAdditionData['owner']['category'][] = $item;
+                $newAdditionData['owner']['data'][] = 0;
+            }
+            if (!$isHaveMember) {
+                $newAdditionData['member']['category'][] = $item;
+                $newAdditionData['member']['data'][] = 0;
+            }
+        }
+
         $data['addition'] = $newAdditionData;
 
         // 饼图
@@ -55,7 +96,7 @@ class MemberService
         foreach ($newAdditionBing as $item) {
             if ($item->age_group == '0') {
                 $item->age_group = '未知';
-            }elseif ($item->age_group == '39'){
+            } elseif ($item->age_group == '39') {
                 $item->age_group = '40以下';
             }
             $newAdditionBingData[] = [

+ 1 - 1
app/admin/validate/member/WellnessRecordValidate.php

@@ -10,7 +10,7 @@ class WellnessRecordValidate extends Validate
         'wellness_record_id' => 'require|integer',
         'join_wellness_record_member_id' => 'require',
         'wellness_record_status|状态' => 'max:32',
-        'wellness_record_category|分类' => 'in:Archives,Examine,病例,Advice,来访,其他',
+        'wellness_record_category|分类' => 'in:Archives,Examine,病例,Advice,Visiting,来访,其他',
         'wellness_record_name|名称' => 'require',
 //        'wellness_record_datetime' => 'max:20',
         'wellness_record_file_json|文件' => 'isJson',

+ 1 - 0
route/admin.php

@@ -507,6 +507,7 @@ Route::group('/admin', function () {
         ]);
     });
     Route::group('/customer', function () {
+        Route::get('/selectList', [\app\admin\controller\customer\IndexController::class, 'selectList']);
         Route::get('/list', [\app\admin\controller\customer\IndexController::class, 'select']);
         Route::post('/add', [\app\admin\controller\customer\IndexController::class, 'insert']);
         Route::post('/update', [\app\admin\controller\customer\IndexController::class, 'update']);