Gorden 7 месяцев назад
Родитель
Сommit
f8ef80c5b6

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

@@ -58,6 +58,7 @@ class IndexController extends Curd
         if (empty($user->join_user_role_id)) {
             return json_fail("请先关联角色");
         }
+        $type = $request->get('type','');
         $role = SysRole::find($user->join_user_role_id);
         $selfAndChildIds = SysRole::where('role_path', 'like', $role->role_path . "%")
             ->where('role_id', '<>', $role->role_id)
@@ -69,6 +70,12 @@ class IndexController extends Curd
         $order = $request->get('order', 'desc');
         $field = $field ?? 'created_at';
         $where['creator'] = ['in', $userIds];
+        if(!empty($type)){
+            $where['created_at'] = [
+                strtotime(date('Y-m-d').' 00:00:00'),
+                strtotime(date('Y-m-d').' 23:59:59')
+            ];
+        }
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }

+ 3 - 0
app/admin/controller/dashboard/DashboardController.php

@@ -3,6 +3,7 @@
 namespace app\admin\controller\dashboard;
 
 use app\admin\service\statistics\AppointmentService;
+use app\admin\service\statistics\ChatMessageService;
 use app\admin\service\statistics\CustomerService;
 use app\admin\service\statistics\DeviceService;
 use app\admin\service\statistics\GoodsService;
@@ -24,6 +25,8 @@ class DashboardController
         $data['order'] = OrderService::getOrder();
         // 商品
         $data['goods'] = GoodsService::getGoods();
+        // 咨询
+        $data['chat'] = ChatMessageService::getChatMessage();
 
         return json_success('', $data);
     }

+ 4 - 0
app/admin/controller/device/DeviceController.php

@@ -23,7 +23,11 @@ class DeviceController extends Curd
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $order = $request->get('order', 'desc');
+        $type = $request->get('type','');
         $field = $field ?? 'device_addtimes';
+        if ($type == 'bind'){
+            $where['device_status'] = 'ACTIVED';
+        }
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }

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

@@ -26,8 +26,15 @@ class RefundController extends Curd
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $order = $request->get('order', 'desc');
+        $type = $request->get('type','');
         $field = $field ?? 'order_return_addtimes';
         $where['order_return_category'] = '退款';
+        if ($type == 'today'){
+            $where['order_return_addtimes'] = [
+                strtotime(date('Y-m-d').' 00:00:00'),
+                strtotime(date('Y-m-d').' 23:59:59')
+            ];
+        }
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }

+ 5 - 0
app/admin/controller/order/WholeController.php

@@ -71,6 +71,11 @@ class WholeController extends Curd
         }
 
         $order = $request->get('order', 'desc');
+        $type = $request->get('type', '');
+        if ($type == 'todayOrder'){
+            $where['order_addtimes'][0] = strtotime(date('Y-m-d').' 00:00:00');
+            $where['order_addtimes'][1] = strtotime(date('Y-m-d').' 23:59:59');
+        }
         $field = $field ?? 'order_addtimes';
         if (!empty($where['order_status_system']) && in_array($where['order_status_system'], ['PENDING', 'WAITING', 'SENDING', 'RECVING', 'SIGNED', 'CONFIRM'])) {
             if ($where['order_status_system'] == 'SENDING'){

+ 14 - 3
app/admin/service/goods/GoodsService.php

@@ -153,6 +153,7 @@ class GoodsService
         $goodsName = $request->get('goods_name', '');
         $categoryId = $request->get('join_goods_category_id', null);
         $goodsCategory = $request->get('goods_category', null);
+        $type = $request->get('type','');
         if ($categoryId != null) {
             $categoryPath = SysCategory::where('category_id', $categoryId)->value('category_super_path');
             $categoryPath .= '#' . $categoryId . '#';
@@ -178,7 +179,8 @@ class GoodsService
             'user' => function ($query) {
                 $query->select('user_id', 'user_name');
             }
-        ])->select('goods_id', 'join_goods_category_id', 'join_goods_supplier_id', 'creator_user_id', 'goods_status', 'goods_sales_price', 'goods_category', 'goods_name', 'goods_title', 'goods_cover', 'goods_sort', 'goods_attribute_json', 'goods_addtimes', 'goods_updatetimes')
+        ])->leftJoin('goods_running','goods_running.join_running_goods_id','=','goods.goods_id')
+            ->select('goods_id', 'join_goods_category_id', 'join_goods_supplier_id', 'creator_user_id', 'goods_status', 'goods_sales_price', 'goods_category', 'goods_name', 'goods_title', 'goods_cover', 'goods_sort', 'goods_attribute_json', 'goods_addtimes', 'goods_updatetimes')
             ->when($goodsName != '', function ($query) use ($goodsName) {
                 $query->where(function ($q) use ($goodsName) {
                     $q->where('goods_name', 'like', '%' . $goodsName . '%')
@@ -195,6 +197,10 @@ class GoodsService
                 } else if ($classify != 'GOODS' && empty($categoryId)) {
                     $query->where('goods_classify', $classify);
                 }
+            })->when( !empty($type),function ($query) use ($type){
+                if ($type == 'storageWarning'){
+                    $query->where('goods_running.goods_running_storage','<=',2);
+                }
             })
             ->orderBy('goods_sort', 'DESC')
             ->orderBy('goods_addtimes', 'DESC')
@@ -202,7 +208,8 @@ class GoodsService
             ->get()
             ->toArray();
 
-        $total = Goods::when($goodsName != '', function ($query) use ($goodsName) {
+        $total = Goods::leftJoin('goods_running','goods_running.join_running_goods_id','=','goods.goods_id')
+        ->when($goodsName != '', function ($query) use ($goodsName) {
             $query->where(function ($q) use ($goodsName) {
                 $q->where('goods_name', 'like', '%' . $goodsName . '%')
                     ->OrWhere('goods_title', 'like', '%' . $goodsName . '%');
@@ -217,7 +224,11 @@ class GoodsService
             } else if ($classify != 'GOODS' && empty($categoryId)) {
                 $query->where('goods_classify', $classify);
             }
-        })
+        })->when( !empty($type),function ($query) use ($type){
+                if ($type == 'storageWarning'){
+                    $query->where('goods_running.goods_running_storage','<=',2);
+                }
+            })
             ->count();
 
         foreach ($rows as &$row) {

+ 10 - 0
app/admin/service/member/MemberService.php

@@ -34,6 +34,7 @@ class MemberService
         $level = $request->get('level','');
         $isAuth = $request->get('is_auth','');
         $addtime = $request->get('member_addtimes',[]);
+        $type = $request->get('type','');
 
         $rows = Member::with([
                 'account' => function($query){
@@ -66,6 +67,15 @@ class MemberService
                 $addtime[0] = strtotime($addtime[0]);
                 $addtime[1] = strtotime($addtime[1]);
                 $query->whereBetween('member.member_addtimes', $addtime);
+            })->when(!empty($type),function ($query) use ($type) {
+                if ($type == 'todayAdd'){
+                    $addtime[0] = strtotime(date('Y-m-d').' 00:00:00');
+                    $addtime[1] = strtotime(date('Y-m-d').' 23:59:59');
+                }else if ($type == 'monthAdd'){
+                    $addtime[0] = strtotime(date('Y-m-01').' 00:00:00');
+                    $addtime[1] = strtotime(date('Y-m-t').' 23:59:59');
+                }
+                $query->whereBetween('member.member_addtimes', $addtime);
             })
             ->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes', 'member_extend_json',
                 'member_info.member_info_nickname', 'member_info.member_info_headimg',

+ 8 - 0
app/admin/service/order/AppointmentService.php

@@ -34,6 +34,7 @@ class AppointmentService
         $status = $request->get('status', '');
         $premisesName = $request->get('premises', '');
         $appointmentMode = $request->get('appointment_mode', '');
+        $type = $request->get('type','');
 
         $rows = Db::table('appointment')
             ->leftJoin('member', 'member.member_id', '=', 'appointment.join_appointment_member_id')
@@ -62,6 +63,13 @@ class AppointmentService
                 }else{
                     $query->where('appointment_mode',$appointmentMode);
                 }
+            })->when(!empty($type), function ($query) use ($type){
+                if ($type == 'todayDONE'){
+                    $query->where('appointment_status','DONE');
+                    $query->whereBetween('appointment_addtimes',[strtotime(date('Y-m-d').' 00:00:00'),strtotime(date('Y-m-d').' 23:59:59')]);
+                }elseif ($type == 'todayAppointment'){
+                    $query->where('appointment_datetime',date('Y-m-d'));
+                }
             });
 
         $total = $rows->count('member.member_id');

+ 1 - 1
app/admin/service/statistics/AppointmentService.php

@@ -16,7 +16,7 @@ class AppointmentService
         // 今日预约
         $data['todayAppointment'] = Appointment::where('appointment_datetime', date('Y-m-d'))->count('appointment_id');
         // 今日服务
-        $today = Db::select("select service_time,count(*) as total from (select left(appointment_doing_datetime,10) as service_time from app_appointment where appointment_doing_datetime != '') as appointment where service_time =".date('Y-m-d'));
+        $today = Db::select("select service_time,count(*) as total from (select left(appointment_doing_datetime,10) as service_time from app_appointment where appointment_status = 'DONE') as appointment where service_time ='".date('Y-m-d')."'");
         $data['todayService'] = $today[0]->total;
 
         return $data;

+ 27 - 0
app/admin/service/statistics/ChatMessageService.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\service\statistics;
+
+use app\model\Appointment;
+use app\model\ChatMessage;
+use support\Db;
+
+class ChatMessageService
+{
+    public static function getChatMessage()
+    {
+        // 今日咨询
+        $todayStartUnix = strtotime(date('Y-m-d'));
+        $chats= ChatMessage::whereBetween('chat_message_addtimes',[$todayStartUnix,time()])->get()->toArray();
+        $memberIds = [];
+        foreach ($chats as $chat){
+            if (substr($chat['join_message_send_id'],0,2) == 'MR'){
+                $memberIds[$chat['join_message_send_id']] = $chat['join_message_send_id'];
+            }
+        }
+
+        $data['todayChat'] = count($memberIds);
+
+        return $data;
+    }
+}

+ 14 - 1
app/admin/service/statistics/GoodsService.php

@@ -4,12 +4,25 @@ namespace app\admin\service\statistics;
 
 use app\model\Goods;
 use app\model\GoodsRunning;
+use app\model\SysCategory;
 
 class GoodsService
 {
     public static function getGoods()
     {
-        $data['storageWarning'] = GoodsRunning::where("goods_running_storage",'<=',10)->count();
+        $categoryPath = SysCategory::where('category_id', 5)->value('category_super_path');
+        $categoryPath .= '#5#';
+        $categoryIds = SysCategory::where('category_super_path', 'like', $categoryPath . '%')->pluck('category_id')->toArray();
+        $categoryIds[] = 5;
+        if (!empty($categoryIds)) {
+            $categoryId = $categoryIds;
+        } else {
+            $categoryId = [5];
+        }
+        $data['storageWarning'] = GoodsRunning::leftJoin('goods','goods.goods_id','=','goods_running.join_running_goods_id')
+            ->where("goods_running_storage",'<=',2)
+            ->whereIn('goods.join_goods_category_id',$categoryId)
+            ->count();
 
         return $data;
     }

+ 11 - 4
app/admin/service/statistics/OrderService.php

@@ -13,15 +13,22 @@ class OrderService
         // 今日订单
         $todayTimeUnix = strtotime(date('Y-m-d'));
         // 今日订单
-        $data['todayOrder'] = Order::where('order_addtimes', '>', $todayTimeUnix)->count();
+        $data['todayOrder'] = Order::where('order_addtimes', '>', $todayTimeUnix)->where('order_category', '<>', 'RECHARGE')->count();
         // 今日收入
         $data['todayRevenue'] = Order::where('order_status_payment', 'SUCCESS')
             ->where('order_addtimes', '>', $todayTimeUnix)
-            ->where('order_addtimes', '<>', 'RETURN')
-            ->where('order_addtimes', '<>', 'RECHARGE')
+            ->where('order_category', '<>', 'RETURN')
+            ->where('order_category', '<>', 'RECHARGE')
+            ->sum('order_amount_pay');
+        // 今日充值额
+        $data['todayRecharge'] = Order::where('order_status_payment', 'SUCCESS')
+            ->where('order_addtimes', '>', $todayTimeUnix)
+            ->where('order_category', 'RECHARGE')
+            ->where('order_status_payment','SUCCESS')
             ->sum('order_amount_pay');
         // 今日退单
-        $data['todayRefund'] = OrderReturn::where('order_return_addtimes', '>', $todayTimeUnix)->count();
+        $data['todayRefund'] = OrderReturn::where('order_return_addtimes', '>', $todayTimeUnix)
+            ->count();
 
 
         // 柱状图

+ 23 - 0
app/model/ChatMessage.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class ChatMessage extends Model
+{
+    protected $table = 'chat_message';
+
+    protected $primaryKey = 'chat_message_id';
+
+    protected $dateFormat = 'U';
+
+    const CREATED_AT = 'chat_message_addtimes';
+
+    const UPDATED_AT = null;
+
+    public function serializeDate(\DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+}