alias('order') ->join('user', 'user.user_id=order.user_id') ->with(['product' => ['image', 'refund'], 'user', 'supplier', 'advance','address','extractStore']) ->where('order.is_delete', '=', 0) ->where($this->transferDataType($params['dataType'])) ->where('salesactivity_id','=',$params['activity_id']) ->when(isset($params['shop_supplier_id']) && $params['shop_supplier_id']!=='',function($query) use($params){ $query->where('order.shop_supplier_id','=',$params['shop_supplier_id']); }) ->when(isset($params['search']) && $params['search'],function($query) use($params){ $query->where('user.user_id|user.nickName|user.mobile', 'like', '%' . $params['search'] . '%'); }) ->when(isset($params['style_id']) && $params['style_id']!=='',function($query) use($params){ $query->where('order.delivery_type', '=', $params['style_id']); }) ->when(isset($params['order_no']) && $params['order_no'],function($query) use($params){ $query->where('order_no', 'like', '%' . trim($params['order_no']) . '%'); }) ->when(isset($params['start_time']) && empty($params['end_time']), function($query) use ($params) { $query->where('order.create_time', '>=', $params['start_time']); }) ->when(isset($params['end_time']) && empty($params['start_time']), function($query) use ($params) { $query->where('order.create_time', '<=', $params['end_time']); }) ->when(isset($params['end_time']) && !empty($params['start_time']), function($query) use ($params) { $query->whereBetween('order.create_time',[$params['start_time'],$params['end_time']]); })->field('order.*')->order('create_time desc')->paginate($params); if(!empty($list)){ foreach ($list as &$v){ $product = $v['product']; $product = $product->toArray(); $v['product_price_total'] = array_sum(array_column($product, 'total_price')); if(!empty($v["user"]["referee_id"])){ $v["referee_user"] = UserModel::detail($v["user"]["referee_id"]); } $v["pay_time_text"] = empty($v["pay_time"]) ? '' : date("Y-m-d H:i:s",$v["pay_time"]); $v["receipt_time_text"] = empty($v["receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["receipt_time"]); $v["auto_receipt_time_text"] = empty($v["auto_receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["auto_receipt_time"]); } } return $list; } /** * 订单列表(全部) */ public function getListAll($dataType, $params = []) { //搜索时间段 if (isset($params['create_time']) && $params['create_time'] != '') { $params['start_time'] = array_shift($params['create_time']); $params['end_time'] = array_pop($params['create_time']); } $order_model = new OrderModel(); $list = $order_model->alias('order') ->join('user', 'user.user_id=order.user_id') ->with(['product' => ['image', 'refund'], 'user', 'supplier', 'advance','address','extractStore']) ->where('order.is_delete', '=', 0) ->where('salesactivity_id','=',$params['activity_id']) ->when(isset($params['shop_supplier_id']) && $params['shop_supplier_id']!=='',function($query) use($params){ $query->where('order.shop_supplier_id','=',$params['shop_supplier_id']); }) ->when(isset($params['search']) && $params['search'],function($query) use($params){ $query->where('user.user_id|user.nickName|user.mobile', 'like', '%' . $params['search'] . '%'); }) ->when(isset($params['style_id']) && $params['style_id']!=='',function($query) use($params){ $query->where('order.delivery_type', '=', $params['style_id']); }) ->when(isset($params['order_no']) && $params['order_no'],function($query) use($params){ $query->where('order_no', 'like', '%' . trim($params['order_no']) . '%'); }) ->when(!empty($params['start_time']) && empty($params['end_time']), function($query) use ($params) { $query->where('order.create_time', '>=', $params['start_time']); }) ->when(!empty($params['end_time']) && empty($params['start_time']), function($query) use ($params) { $query->where('order.create_time', '<=', $params['end_time']); }) ->when(!empty($params['end_time']) && !empty($params['start_time']), function($query) use ($params) { $query->whereBetween('order.create_time',[$params['start_time'],$params['end_time']]); })->field('order.*')->select(); if(!empty($list)){ foreach ($list as &$v){ if(!empty($v["user"]["referee_id"])){ $v["referee_user"] = UserModel::detail($v["user"]["referee_id"]); } $v["pay_time_text"] = empty($v["pay_time"]) ? '' : date("Y-m-d H:i:s",$v["pay_time"]); $v["receipt_time_text"] = empty($v["receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["receipt_time"]); $v["auto_receipt_time_text"] = empty($v["auto_receipt_time"]) ? '' : date("Y-m-d H:i:s",$v["auto_receipt_time"]); } } return $list; } /** * 订单导出 */ public function exportList($dataType, $query) { // 获取订单列表 $list = $this->getListAll($dataType, $query); // 导出excel文件 return (new Exportservice)->orderList($list); } /** * 转义数据类型条件 */ private function transferDataType($dataType) { $filter = []; // 订单数据类型 switch ($dataType) { case 'all': break; case 'payment'; $filter['pay_status'] = OrderPayStatusEnum::PENDING; $filter['order_status'] = 10; break; case 'delivery'; $filter['pay_status'] = OrderPayStatusEnum::SUCCESS; $filter['delivery_status'] = 10; $filter['order_status'] = 10; break; case 'received'; $filter['pay_status'] = OrderPayStatusEnum::SUCCESS; $filter['delivery_status'] = 20; $filter['receipt_status'] = 10; $filter['order_status'] = 10; break; case 'comment'; $filter['is_comment'] = 0; $filter['order_status'] = 30; break; case 'complete'; // $filter['is_comment'] = 1; $filter['order_status'] = 30; break; case 'cancel'; $filter['order_status'] = 21; break; case 'close'; $filter['order_status'] = 20; break; } return $filter; } }