Browse Source

订单筛选和导出调整

gorden 5 months ago
parent
commit
5fca413807

+ 17 - 10
app/admin/controller/order/DishesController.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\order;
 
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Goods;
@@ -30,10 +31,11 @@ class DishesController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
 
         $where['order_classify'] = 'DISHES';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
@@ -65,8 +67,20 @@ class DishesController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -85,18 +99,10 @@ class DishesController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
             'express' => function ($query) {
                 $query->select('join_express_order_id', 'order_express_type');
             }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id');
-        // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
         foreach ($where as $column => $value) {
             if (is_array($value)) {
                 if ($value[0] === 'like' || $value[0] === 'not like') {
@@ -164,6 +170,7 @@ class DishesController extends Curd
                     }
                 }
             }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 17 - 12
app/admin/controller/order/GoodsController.php

@@ -4,6 +4,7 @@ namespace app\admin\controller\order;
 
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -48,9 +49,10 @@ class GoodsController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'GOODS';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
@@ -85,8 +87,20 @@ class GoodsController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         // 自提订单        
@@ -112,16 +126,6 @@ class GoodsController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
-            // 'express' => function ($query) {
-            //     $query->select('join_express_order_id', 'order_express_type');
-            // }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id')
             ->leftJoin('order_express', 'order_express.join_express_order_id', '=', 'order.order_id');
         // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
@@ -206,6 +210,7 @@ class GoodsController extends Curd
                 ->exists()) {
                 $item['have_success_paydetail'] = 'Y';
             }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 18 - 17
app/admin/controller/order/KangyangCityController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -53,14 +54,16 @@ class KangyangCityController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'VIP';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
 
         $order = $request->get('order', 'desc');
+        $orderId = $request->get('orderId');
         $field = $field ?? 'order_addtimes';
         $orderIds = [];
         if (!empty($orderId)) {
@@ -82,8 +85,20 @@ class KangyangCityController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -102,19 +117,8 @@ class KangyangCityController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
-            // 'express' => function ($query) {
-            //     $query->select('join_express_order_id', 'order_express_type');
-            // }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id')
             ->leftJoin('order_express', 'order_express.join_express_order_id', '=', 'order.order_id');
-        // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
         foreach ($where as $column => $value) {
             if (is_array($value)) {
                 if ($value[0] === 'like' || $value[0] === 'not like') {
@@ -182,10 +186,7 @@ class KangyangCityController extends Curd
                 ];
                 unset($item['join_express_order_id'], $item['order_express_type']);
             }
-            // if (!empty($item['order_extend_json'])){
-            //     $orderExtendJson = json_decode($item['order_extend_json'],true);
-            //     $item['referee'] = $orderExtendJson['referee'] ?? '';
-            // }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 19 - 17
app/admin/controller/order/NewCustomerController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -54,14 +55,16 @@ class NewCustomerController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'COMBINE';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
 
         $order = $request->get('order', 'desc');
+        $orderId = $request->get('orderId');
         $field = $field ?? 'order_addtimes';
         $orderIds = [];
         if (!empty($orderId)) {
@@ -83,8 +86,20 @@ class NewCustomerController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -103,19 +118,8 @@ class NewCustomerController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
-            // 'express' => function ($query) {
-            //     $query->select('join_express_order_id', 'order_express_type');
-            // }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id')
             ->leftJoin('order_express', 'order_express.join_express_order_id', '=', 'order.order_id');
-        // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
         foreach ($where as $column => $value) {
             if (is_array($value)) {
                 if ($value[0] === 'like' || $value[0] === 'not like') {
@@ -183,10 +187,8 @@ class NewCustomerController extends Curd
                 ];
                 unset($item['join_express_order_id'], $item['order_express_type']);
             }
-            // if (!empty($item['order_extend_json'])){
-            //     $orderExtendJson = json_decode($item['order_extend_json'],true);
-            //     $item['referee'] = $orderExtendJson['referee'] ?? '';
-            // }
+
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 17 - 2
app/admin/controller/order/PackagesController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -54,9 +55,10 @@ class PackagesController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'PACKAGE';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
@@ -88,8 +90,20 @@ class PackagesController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
         if (!empty($where['order_status_system']) && in_array($where['order_status_system'], ['PENDING', 'WAITING', 'SENDING', 'RECVING', 'SIGNED', 'CONFIRM'])) {
             if ($where['order_status_system'] == 'SENDING') {
@@ -218,6 +232,7 @@ class PackagesController extends Curd
                 ->exists()) {
                 $item['have_success_paydetail'] = 'Y';
             }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 18 - 17
app/admin/controller/order/PartnerController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -54,14 +55,16 @@ class PartnerController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'PARTNER';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
 
         $order = $request->get('order', 'desc');
+        $orderId = $request->get('orderId');
         $field = $field ?? 'order_addtimes';
         $orderIds = [];
         if (!empty($orderId)) {
@@ -83,8 +86,20 @@ class PartnerController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -103,19 +118,8 @@ class PartnerController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
-            // 'express' => function ($query) {
-            //     $query->select('join_express_order_id', 'order_express_type');
-            // }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id')
             ->leftJoin('order_express', 'order_express.join_express_order_id', '=', 'order.order_id');
-        // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
         foreach ($where as $column => $value) {
             if (is_array($value)) {
                 if ($value[0] === 'like' || $value[0] === 'not like') {
@@ -191,10 +195,7 @@ class PartnerController extends Curd
                 $inviteCertName = !empty($inviteMember['cert']) && !empty($inviteMember['cert']['member_cert_name']) ? $inviteMember['cert']['member_cert_name'] : '';
                 $item['invite_name'] = MemberService::getMemberCertName($inviteMobile, $inviteCertName, '');
             }
-            // if (!empty($item['order_extend_json'])){
-            //     $orderExtendJson = json_decode($item['order_extend_json'],true);
-            //     $item['referee'] = $orderExtendJson['referee'] ?? '';
-            // }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 20 - 6
app/admin/controller/order/RechargeController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -55,14 +56,16 @@ class RechargeController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'RECHARGE';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
 
         $order = $request->get('order', 'desc');
+        $orderId = $request->get('orderId');
         $field = $field ?? 'order_addtimes';
         $orderIds = [];
         if (!empty($orderId)) {
@@ -84,8 +87,21 @@ class RechargeController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -179,10 +195,8 @@ class RechargeController extends Curd
                 ];
                 unset($item['join_express_order_id'], $item['order_express_type']);
             }
-            // if (!empty($item['order_extend_json'])){
-            //     $orderExtendJson = json_decode($item['order_extend_json'],true);
-            //     $item['referee'] = $orderExtendJson['referee'] ?? '';
-            // }
+
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 18 - 16
app/admin/controller/order/ReferrerController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -54,14 +55,16 @@ class ReferrerController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $where['order_classify'] = 'REFERRER';
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
 
         $order = $request->get('order', 'desc');
+        $orderId = $request->get('orderId');
         $field = $field ?? 'order_addtimes';
         $orderIds = [];
         if (!empty($orderId)) {
@@ -83,8 +86,20 @@ class ReferrerController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -103,16 +118,6 @@ class ReferrerController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
-            // 'express' => function ($query) {
-            //     $query->select('join_express_order_id', 'order_express_type');
-            // }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id')
             ->leftJoin('order_express', 'order_express.join_express_order_id', '=', 'order.order_id');
         // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
@@ -183,10 +188,7 @@ class ReferrerController extends Curd
                 ];
                 unset($item['join_express_order_id'], $item['order_express_type']);
             }
-            // if (!empty($item['order_extend_json'])){
-            //     $orderExtendJson = json_decode($item['order_extend_json'],true);
-            //     $item['referee'] = $orderExtendJson['referee'] ?? '';
-            // }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 17 - 2
app/admin/controller/order/ServicesController.php

@@ -4,6 +4,7 @@ namespace app\admin\controller\order;
 
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\order\OrderValidate;
 use app\controller\Curd;
 use app\model\Appointment;
@@ -47,8 +48,9 @@ class ServicesController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
@@ -82,8 +84,20 @@ class ServicesController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
 
         $query = $this->doSelect($where, $field, $order);
@@ -188,6 +202,7 @@ class ServicesController extends Curd
                 ->exists()) {
                 $item['have_success_paydetail'] = 'Y';
             }
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;

+ 43 - 62
app/admin/controller/order/WholeController.php

@@ -5,6 +5,7 @@ namespace app\admin\controller\order;
 use app\admin\service\coupon\CouponService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
+use app\admin\service\order\PayDetailService;
 use app\admin\validate\coupon\CouponValidate;
 use app\admin\validate\device\DeviceValidate;
 use app\admin\validate\order\OrderExpressValidate;
@@ -67,8 +68,9 @@ class WholeController extends Curd
      */
     public function select(Request $request): Response
     {
+        $timeType = $request->get('time_type', 'add');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
@@ -87,7 +89,7 @@ class WholeController extends Curd
             $todayTimeUnix = strtotime(date('Y-m-d') . ' 00:00:00');
             $groupIds = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) > ? ', [$todayTimeUnix])
                 ->where('join_pay_order_id', '<>', '')
-                ->whereIn('pay_category',['GOODS','SERVICE','CHNMED','CHNNCD','PACKAGE','MEALS'])
+                ->whereIn('pay_category', ['GOODS', 'SERVICE', 'CHNMED', 'CHNNCD', 'PACKAGE', 'MEALS'])
                 ->where('pay_status', 'SUCCESS')
                 ->pluck('join_pay_order_id')
                 ->toArray();
@@ -96,15 +98,15 @@ class WholeController extends Curd
             $todayTimeUnix = strtotime(date('Y-m-d') . ' 00:00:00');
             $groupIds = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) > ? ', [$todayTimeUnix])
                 ->where('join_pay_order_id', '<>', '')
-                ->whereIn('pay_prepayid',['WXPAY','ALIPAY','OFFLINE_WXPAY','OFFLINE_ALIPAY','MONEY'])
+                ->whereIn('pay_prepayid', ['WXPAY', 'ALIPAY', 'OFFLINE_WXPAY', 'OFFLINE_ALIPAY', 'MONEY'])
                 ->where('pay_status', 'SUCCESS')
                 ->pluck('join_pay_order_id')
                 ->toArray();
             $where['order_groupby'] = ['in', $groupIds];
-        }else if ($type == 'todayRechargeOrder'){
-            $where['order_classify'] = ['in',['RECHARGE','COMBINE','PARTNER','REFERRER','VIP']];
+        } else if ($type == 'todayRechargeOrder') {
+            $where['order_classify'] = ['in', ['RECHARGE', 'COMBINE', 'PARTNER', 'REFERRER', 'VIP']];
             $todayTimeUnix = strtotime(date('Y-m-d') . ' 00:00:00');
-            $where['order_addtimes'] = ['>',$todayTimeUnix];
+            $where['order_addtimes'] = ['>', $todayTimeUnix];
         }
         $orderIds = [];
         if (!empty($where['order_id'])) {
@@ -155,12 +157,26 @@ class WholeController extends Curd
             $orderGoodsIds = OrderSheet::whereIn('join_sheet_goods_id', $goodsIds)->pluck('join_sheet_order_id')->toArray();
             if (!empty($where['order_id'])) {
                 $orderIds = array_intersect($orderIds, $orderGoodsIds);
-                $where['order_id'] = ['in', implode(',', $orderIds)];
+//                $where['order_id'] = ['in', implode(',', $orderIds)];
             } else {
-                $where['order_id'] = ['in', implode(',', $orderGoodsIds)];
+                $orderIds = $orderGoodsIds;
+//                $where['order_id'] = ['in', implode(',', $orderGoodsIds)];
             }
+        }
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
+            $where['order_id'] = ['in', implode(',', $orderIds)];
         } elseif (!empty($orderIds)) {
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
         // 自提订单        
         if (!empty($where['order_status_system']) && $where['order_status_system'] == 'PICKUP') {
@@ -273,55 +289,8 @@ class WholeController extends Curd
                 ];
                 unset($item['join_express_order_id'], $item['order_express_type']);
             }
-            $payDetails = PayDetail::where('join_pay_order_id', $item['order_groupby'])
-                ->whereJsonContains('join_pay_object_json->order_id', $item['order_id'])
-                ->where('pay_category', '<>', 'REFUND')
-                ->where('pay_status', 'SUCCESS')
-                ->select('pay_id', 'pay_category', 'pay_prepayid', 'pay_paytimes', 'pay_status', 'pay_amount', 'pay_extend_json')
-                ->get()
-                ->toArray();
-            if (count($payDetails) > 1) {
-                $item['payWay'] = "CONSTITUTE";
-            } elseif (count($payDetails) == 1) {
-                $payDetail0 = $payDetails[0];
-                $item['payWay'] = $payDetail0['pay_prepayid'];
-            } else {
-                $item['payWay'] = null;
-            }
-            if (count($payDetails) > 0) {
-                $payDetail0 = $payDetails[0];
-                $item['pay_times'] = $payDetail0['pay_paytimes'];
-            }
-            if (!empty($item['payWay']) && $item['order_status_payment'] == 'SUCCESS') {
-                $payWay = explode('-', $item['payWay']);
-                if (!empty($payWay[1]) && $payWay[1] == 'CASH') {
-                    $item['payWay'] = '账户余额';
-                } else if (!empty($payWay[1]) && $payWay[1] == 'WELFARE') {
-                    $item['payWay'] = '福利账户';
-                } else if (!empty($payWay[1]) && $payWay[1] == 'VIP') {
-                    $item['payWay'] = 'VIP账户';
-                } else if (!empty($payWay[1]) && $payWay[1] == 'QRCODE') {
-                    $item['payWay'] = '付款码';
-                } else if (!empty($payWay[1]) && $payWay[1] == 'NONE') {
-                    $item['payWay'] = '付零';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'OFFLINE') {
-                    $item['payWay'] = '线下支付';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'OFFLINE_ALIPAY') {
-                    $item['payWay'] = '线下支付-支付宝';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'OFFLINE_WXPAY') {
-                    $item['payWay'] = '线下支付-微信';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'WXPAY') {
-                    $item['payWay'] = '微信支付';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'ALIPAY') {
-                    $item['payWay'] = '支付宝';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'CONSTITUTE') {
-                    $item['payWay'] = '组合支付';
-                } else if (!empty($payWay[0]) && $payWay[0] == 'MONEY') {
-                    $item['payWay'] = '现金';
-                }
-            } else {
-                $item['payWay'] = null;
-            }
+
+            $item['payDetail'] = PayDetailService::getPayWay($item['order_groupby'],$item['order_id']);
         }
 
         return $items;
@@ -4388,6 +4357,7 @@ class WholeController extends Curd
 
     public function exportOrder(Request $request)
     {
+        $timeType = $request->get('time_type', 'add');
         $type = $request->get('type', '');
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
 
@@ -4397,11 +4367,10 @@ class WholeController extends Curd
             $where['order_classify'] = $request->get('goods_classify');
         }
 
-//        $where['order_category'] = ['<>', 'RECHARGE'];
         if (!empty($request->get('order_ids'))) {
             $where['order_id'] = ['in', $request->get('order_ids')];
         }
-        if (!empty($where['order_addtimes'])) {
+        if (!empty($where['order_addtimes']) && $timeType == 'add') {
             $where['order_addtimes'][0] = strtotime($where['order_addtimes'][0]);
             $where['order_addtimes'][1] = strtotime($where['order_addtimes'][1]);
         }
@@ -4419,11 +4388,10 @@ class WholeController extends Curd
                 ->toArray();
             $where['order_groupby'] = ['in', $groupIds];
         }
-        $orderId = trim($request->get('order_id', ''));
+        $orderId = trim($request->get('order_id'));
         $orderIds = [];
         if (!empty($orderId)) {
             $orderIds = Order::where('order_id', 'like', '%' . $orderId . '%')
-//                ->whereIn('order_classify', ['SERVICE', 'CHNMED', 'CHNNCD'])
                 ->pluck('order_id')
                 ->toArray();
         }
@@ -4439,9 +4407,22 @@ class WholeController extends Curd
                 $orderIds = $goodsOrderIds;
             }
         }
-        if (!empty($orderId) || !empty($goodsName)) {
+        // 付款时间
+        if ($timeType == 'pay' && !empty($where['order_addtimes'])) {
+            $payTimeStart = strtotime($where['order_addtimes'][0]);
+            $payTimeEnd = strtotime($where['order_addtimes'][1]);
+            unset($where['order_addtimes']);
+            $payOrderIds = PayDetailService::getPayOrderId($payTimeStart, $payTimeEnd);
+        }
+        if (!empty($orderIds) && !empty($payOrderIds)) {
+            $orderIds = array_intersect($orderIds, $payOrderIds);
             $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($orderIds)) {
+            $where['order_id'] = ['in', implode(',', $orderIds)];
+        } elseif (!empty($payOrderIds)) {
+            $where['order_id'] = ['in', implode(',', $payOrderIds)];
         }
+
         $order = $request->get('order', 'desc');
         $field = $field ?? 'order_addtimes';
 

+ 2 - 2
app/admin/service/order/OrderService.php

@@ -977,8 +977,8 @@ class OrderService
         'WELFARE' => '福利账户',
         'MONEY' => '现金',
         'OFFLINE' => '线下支付',
-        'OFFLINE_WXPAY' => '线下支付-微信',
-        'OFFLINE_ALIPAY' => '线下支付-支付宝',
+        'OFFLINE_WXPAY' => '微信支付(线下)',
+        'OFFLINE_ALIPAY' => '支付宝(线下)',
         'QRCODE' => '付款码',
         'NONE' => '付零',
         'VIP' => 'VIP账户'

+ 80 - 0
app/admin/service/order/PayDetailService.php

@@ -27,4 +27,84 @@ class PayDetailService
             Db::rollBack();
         }
     }
+
+    /**
+     * @Desc 搜索指定时间的付款订单ID
+     * @Author Gorden
+     * @Date 2024/10/24 15:12
+     *
+     * @param $timeStart
+     * @param $timeEnd
+     * @return array
+     */
+    public static function getPayOrderId($timeStart, $timeEnd)
+    {
+        $payDetails = PayDetail::whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) > ? ', [$timeStart])
+            ->whereRaw('CAST(UNIX_TIMESTAMP(pay_paytimes) as SIGNED) < ? ', [$timeEnd])
+            ->where('pay_status', 'SUCCESS')
+            ->select('join_pay_object_json')
+            ->get()
+            ->toArray();
+
+        $orderIds = [];
+        foreach ($payDetails as $detail) {
+            if (!empty($detail['join_pay_object_json']) && is_json($detail['join_pay_object_json'])) {
+                $payObjectJson = json_decode($detail['join_pay_object_json'], true);
+                if (!empty($payObjectJson['order_id']) && !in_array($payObjectJson['order_id'], $orderIds)) {
+                    $orderIds[] = $payObjectJson['order_id'];
+                }
+            }
+        }
+
+        return $orderIds;
+    }
+
+    /**
+     * @Desc 获取支付方式
+     * @Author Gorden
+     * @Date 2024/10/24 16:12
+     *
+     * @param $groupId
+     * @param $orderId
+     * @return array
+     */
+    public static function getPayWay($groupId, $orderId)
+    {
+        $payDetails = PayDetail::where('join_pay_order_id', $groupId)
+            ->whereJsonContains('join_pay_object_json->order_id', $orderId)
+            ->where('pay_category', '<>', 'REFUND')
+            ->where('pay_status', 'SUCCESS')
+            ->select('pay_id', 'pay_category', 'pay_prepayid', 'pay_paytimes', 'pay_status', 'pay_amount', 'pay_extend_json')
+            ->get()
+            ->toArray();
+
+        $data = [];
+        if (count($payDetails) > 1) {
+            $data['payWay'] = "组合支付";
+        }
+
+        foreach ($payDetails as $detail) {
+            $data['pay_paytimes'] = $detail['pay_paytimes'];
+            $data['pay_status'] = $detail['pay_status'];
+            $data['pay_amount'] = $detail['pay_amount'];
+            $data['pay_category'] = $detail['pay_category'];
+            $payWay = '';
+            if (in_array($detail['pay_prepayid'], ['WXPAY', 'ALIPAY', 'OFFLINE_WXPAY', 'OFFLINE_ALIPAY', 'MONEY', 'OFFLINE'])) {
+                $payWay = $detail['pay_prepayid'];
+            } else {
+                $prepayid = explode('-', $detail['pay_prepayid']);
+                if (in_array($prepayid[1], ['CASH', 'WELFARE', 'QRCODE', 'NONE'])) {
+                    $payWay = $prepayid[1];
+                }
+            }
+            $payWay = OrderService::$payWay[$payWay];
+            if (!empty($data['payWay']) && $data['payWay'] == '组合支付') {
+                $data['payWayDesc'] = $payWay . '(¥' . $detail['pay_amount'] . '),';
+            } else {
+                $data['payWay'] = $payWay;
+            }
+        }
+
+        return $data;
+    }
 }