param(); $where = []; //订单搜素 if (!empty($param['search_key']) && !empty($param['keyword'])) { $keyword = $param['keyword']; switch ($param['search_key']) { case 'order_sn': $where[] = ['o.order_sn', 'like', '%' . $keyword . '%']; break; case 'user_sn': $where[] = ['u.sn', 'like', '%' . $keyword . '%']; break; case 'nickname': $where[] = ['u.nickname', 'like', '%' . $keyword . '%']; break; case 'user_mobile': $where[] = ['u.mobile', 'like', '%' . $keyword . '%']; break; } } //商品名称 if (isset($param['goods_name']) && $param['goods_name'] != '') { $where[] = ['g.goods_name', 'like', '%' . $param['goods_name'] . '%']; } //订单类型 if (isset($param['order_type']) && $param['order_type'] != '') { $where[] = ['o.order_status', '=', $param['order_type']]; } //下单时间 if (isset($param['start_time']) && $param['start_time'] != '') { $where[] = ['o.create_time', '>=', strtotime($param['start_time'])]; } if (isset($param['end_time']) && $param['end_time'] != '') { $where[] = ['o.create_time', '<=', strtotime($param['end_time'])]; } $model = $model ->alias('o') ->field('o.*,u.mobile,u.nickname,u.sn,u.avatar') ->join('user u', 'u.id = o.user_id') ->join('consignment_order_goods g', 'g.order_id = o.id') ->with(['consignment_order_goods']) ->append(['delivery_address']) ->where($where) ->order('o.id desc') ->group('o.id') ->scope('where', $param); $data = $model->paginate($this->admin['per_page'], false, ['query'=>$request->get()]); //关键词,排序等赋值 $this->assign($request->get()); $this->assign([ 'data' => $data, 'page' => $data->render(), 'total' => $data->total(), ]); return $this->fetch(); } /** * Desc: 订单详情 */ public function detail($id, Request $request, ConsignmentOrder $model, MallImage $mimodel) { $order = new ConsignmentOrder(); $data = $order ->with(['user', 'consignment_order_goods','logs']) ->where('id', $id) ->find(); foreach ($data['consignment_order_goods'] as &$consignment_order_goods){ $mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select(); $consignment_order_goods['img_list']=$mi_list; } $this->assign([ 'detail' => $data, ]); return $this->fetch(); } /** * Desc: 订单审核 */ public function examine($id, Request $request, ConsignmentOrder $model, MallImage $mimodel) { $order = new ConsignmentOrder(); $data = $order ->with(['user', 'consignment_order_goods','logs']) ->where('id', $id) ->find(); foreach ($data['consignment_order_goods'] as &$consignment_order_goods){ $mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select(); $consignment_order_goods['img_list']=$mi_list; } $this->assign([ 'detail' => $data, ]); return $this->fetch(); } /** * Desc: 同意 */ public function agree(Request $request) { if ($this->request->isAjax()) { $param = $request->param(); // 启动事务 ConsignmentOrderGoods::startTrans(); try{ $order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]); $order_goods->refund_status = 1; $order_goods->evaluation_price =$param['evaluation_price']; $order_goods->save(); $goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>0))->count(); $quanbu=0; if($goods_count==0){ $order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]); $order->order_status = 3; $order->total_amount =$order['total_amount']+$param['evaluation_price']; $order->update_time = time(); $order->save(); //记录日志 ConsignmentOrderLog::record( $order['id'], '平台已估价' ); $data_info=[ 'user_id' => $order['user_id'], 'jm_order_id' => $order['id'], 'scene' =>102, 'time' => date('Y-m-d H:i:s') ]; Notice::noticeByScene($order['user_id'],$data_info); $quanbu=1; } // 提交事务 ConsignmentOrderGoods::commit(); }catch(\Exception $e){ // 回滚事务 ConsignmentOrderGoods::rollback(); return error($e->getMessage()); } return success('操作成功','',$quanbu); } } /** * Desc: 拒绝 */ public function refuse(Request $request, ConsignmentOrder $model) { if ($this->request->isAjax()) { $param = $request->param(); // 启动事务 ConsignmentOrderGoods::startTrans(); try{ $order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]); $order_goods->refund_status = 2; $order_goods->refund_remarks =$param['remark']; $order_goods->save(); $goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>0))->count(); $quanbu=0; if($goods_count==0){ $order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]); $order->order_status = 1; $order->update_time = time(); $order->save(); //记录日志 ConsignmentOrderLog::record( $order['id'], '平台已估价' ); $data_info=[ 'user_id' => $order['user_id'], 'jm_order_id' => $order['id'], 'scene' =>102, 'time' => date('Y-m-d H:i:s') ]; Notice::noticeByScene($order['user_id'],$data_info); $quanbu=1; } // 提交事务 ConsignmentOrderGoods::commit(); }catch(\Exception $e){ // 回滚事务 ConsignmentOrderGoods::rollback(); return error($e->getMessage()); } return success('操作成功','',$quanbu); } } /** * Desc: 订单取货 */ public function pickup($id, Request $request, ConsignmentOrder $model, MallImage $mimodel) { $order = new ConsignmentOrder(); $data = $order ->with(['user', 'consignment_order_goods','logs']) ->where('id', $id) ->find(); foreach ($data['consignment_order_goods'] as &$consignment_order_goods){ $mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select(); $consignment_order_goods['img_list']=$mi_list; } $this->assign([ 'detail' => $data, ]); return $this->fetch(); } /** * Desc: 取货操作 */ public function pickuphandle(Request $request, ConsignmentOrder $model, OrderValidate $validate) { if ($request->isAjax()) { $param = $request->param(); $validate_result = $validate->scene('hansle')->check($param); if (!$validate_result) { return error($validate->getError()); } $order_id = $param['order_id']; $order = ConsignmentOrder::get(['id' => $order_id]); if ($order['order_status']!='4'){ return error('该订单状态下,无法进行取货操作'); } // 启动事务 ConsignmentOrder::startTrans(); try{ //更新订单下商品的发货状态 $order->update_time = time(); $order->order_status = 5; $order->save(); //记录日志 ConsignmentOrderLog::record( $order['id'], '平台安排取货', '物流公司:'.$param['invoice_name'].',物流单号:'.$param['invoice_no'] ); $data_info=[ 'user_id' => $order['user_id'], 'jm_order_id' => $order['id'], 'scene' =>103, 'shipping_name' => $param['invoice_name'], 'invoice_no' => $param['invoice_no'], 'time' => date('Y-m-d H:i:s') ]; Notice::noticeByScene($order['user_id'],$data_info); // 提交事务 ConsignmentOrder::commit(); }catch(\Exception $e){ // 回滚事务 ConsignmentOrder::rollback(); return error($e->getMessage()); } return success('操作成功'); } } /** * Desc: 订单商品退回 */ public function return($id, Request $request, ConsignmentOrder $model, MallImage $mimodel) { $order = new ConsignmentOrder(); $data = $order ->with(['user', 'consignment_order_goods','logs']) ->where('id', $id) ->find(); foreach ($data['consignment_order_goods'] as &$consignment_order_goods){ $mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select(); $consignment_order_goods['img_list']=$mi_list; } $this->assign([ 'detail' => $data, ]); return $this->fetch(); } /** * Desc: 退回操作 */ public function returnhandle(Request $request) { if ($this->request->isAjax()) { $param = $request->param(); // 启动事务 ConsignmentOrderGoods::startTrans(); try{ $order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]); $order_goods->refund_status = 3; $order_goods->refund_remarks ='物流公司:'.$param['invoice_name'].',物流单号:'.$param['invoice_no']; $order_goods->save(); $goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>1))->count(); $order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]); $order->order_status = 6; $quanbu=0; if($goods_count==0){ $quanbu=1; $order->order_status = 7; } $order->total_amount =$order['total_amount']-$order_goods['evaluation_price']; $order->update_time = time(); $order->save(); //记录日志 ConsignmentOrderLog::record( $order['id'], '平台退回商品', '商品名称:'.$order_goods['goods_name'].',物流公司:'.$param['invoice_name'].',物流单号:'.$param['invoice_no'] ); $data_info=[ 'user_id' => $order['user_id'], 'jm_order_id' => $order['id'], 'scene' =>104, 'shipping_name' => $param['invoice_name'], 'invoice_no' => $param['invoice_no'], 'time' => date('Y-m-d H:i:s') ]; Notice::noticeByScene($order['user_id'],$data_info); // 提交事务 ConsignmentOrderGoods::commit(); }catch(\Exception $e){ // 回滚事务 ConsignmentOrderGoods::rollback(); return error($e->getMessage()); } return success('操作成功','',$quanbu); } } /** * Desc: 订单商品上架 */ public function shelves($id, Request $request, ConsignmentOrder $model, MallImage $mimodel) { $order = new ConsignmentOrder(); $data = $order ->with(['user', 'consignment_order_goods','logs']) ->where('id', $id) ->find(); foreach ($data['consignment_order_goods'] as &$consignment_order_goods){ $mi_list=$mimodel->where(array('union_id'=>$consignment_order_goods['id'],'type'=>2))->select(); $consignment_order_goods['img_list']=$mi_list; } $this->assign([ 'detail' => $data, ]); return $this->fetch(); } /** * Desc: 上架操作 */ public function shelveshandle(Request $request) { if ($this->request->isAjax()) { $param = $request->param(); $order_goods = ConsignmentOrderGoods::get(['id' => $param['id']]); $goods = Goods::get(['code' =>$param['goods_sn']]); if(!$goods){ return error('该商品未上架,无法找到给商品信息'); } $goods_l_count=ConsignmentOrderGoods::where(array('goods_id'=>$goods['id']))->count(); if($goods_l_count>0){ return error('该商品已上架,无需重复上架该商品'); } // 启动事务 ConsignmentOrderGoods::startTrans(); try{ $order_goods->refund_status = 4; $order_goods->goods_id =$goods['id']; $order_goods->save(); $goods_count=ConsignmentOrderGoods::where(array('order_id'=>$order_goods['order_id'],'refund_status'=>1))->count(); $order = ConsignmentOrder::get(['id' =>$order_goods['order_id']]); $quanbu=0; if($goods_count==0){ $quanbu=1; $order->order_status = 2; $order->update_time = time(); $order->save(); } //记录日志 ConsignmentOrderLog::record( $order['id'], '平台上架商品', '商品名称:'.$order_goods['goods_name'] ); $data_info=[ 'user_id' => $order['user_id'], 'jm_order_id' => $order['id'], 'scene' =>105, 'time' => date('Y-m-d H:i:s') ]; Notice::noticeByScene($order['user_id'],$data_info); // 提交事务 ConsignmentOrderGoods::commit(); }catch(\Exception $e){ // 回滚事务 ConsignmentOrderGoods::rollback(); return error($e->getMessage()); } return success('操作成功','',$quanbu); } } }