<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; use App\Http\Requests; use App\Http\Controllers\Controller; use DB; use Cookie; use App\Http\Page; use App\Http\Controllers\PermController; function CheckActive($menus, &$arr, $url) { for ($i = 0; $i < count($menus); $i++) { $menu = $menus[$i]; array_push($arr, $i); if (isset($menu->href) && ($menu->href == $url || ($menu->href == '/' && $url == '//'))) return true; if (isset($menu->childs) && count($menu->childs) > 0) { $ret = CheckActive($menu->childs, $arr, $url); if ($ret) return $ret; } array_pop($arr); } return false; } function createMenuReal($menus, $active, $level) { $subclass = ($level == 0) ? 'nav-second-level' : 'nav-third-level'; $ret = ''; for ($ii = 0; $ii < ($level == 0 ? 1 : 2); $ii++) { for ($i = 0; $i < count($menus); $i++) { $menu = $menus[$i]; $act = (count($active) > $level && $active[$level] == $i) ? true : false; $actclass = $act ? ' class="active"' : ''; $actmenu = $act ? ' in': ''; if (isset($menu->childs) && count($menu->childs) > 0) { if ($ii != 0 && $level > 0) continue; $ret .= '<li class="active"><a><i class="' . $menu->class . '"></i><span class="nav-label">' . $menu->title . '</span><span class="fa arrow"></span></a>' . '<ul class="nav ' . $subclass . ' collapse' . $actmenu . '">' . createMenuReal($menu->childs, $act ? $active : [], $level + 1) . '</ul></li>'; } else { if ($ii != 1 && $level > 0) continue; $ret .= '<li' . $actclass . '><a href="'. $menu->href . '"><i class="' . $menu->class . '"></i><span class="nav-label">' . $menu->title . '</span></a></li>'; } } } return $ret; } function createMenu($menus, $url) { $actives = []; $ret = CheckActive($menus, $actives, $url); if (!$ret) $actives = []; return createMenuReal($menus, $actives, 0); } // 获取订单优惠券金额 function getCoupon($order_id) { $price = DB::connection('order') ->table('lie_order_price') ->where(['order_id' => $order_id, 'price_type' => -4]) ->first(); if ($price) { return $price->price; } return null; } function getPayName($order_id) { $payLog = DB::connection('order') ->table('lie_pay_log') ->where(['order_id' => $order_id]) ->select('pay_name') ->get(); if (!empty($payLog)) { foreach ($payLog as $v) { $payName[] = $v->pay_name; } return implode(',', $payName); } return false; } function getShipping($order_id) { $shipping = DB::connection('order') ->table('lie_order_shipping') ->where(['order_id' => $order_id, 'shipping_type' => 1]) ->select('status') ->first(); if (!empty($shipping)) { return $shipping->status; } return false; } function getInvoiceStatus($order_id) { $invoice = DB::connection('order') ->table('lie_order_invoice') ->where(['order_id' => $order_id]) ->select('invoice_status') ->first(); if (!empty($invoice)) { return $invoice->invoice_status; } return false; } function getCompanyName($user_id) { $company = DB::connection('order') ->table('lie_user_company') ->where(['user_id' => $user_id]) ->select('com_name') ->first(); if (!empty($company)) { return $company->com_name; } return false; } Class OrderController extends Controller { // 首页 public function index(Request $request) { $uri = '/' . $request->path(); $username = $request->user->email; $useremail= $request->user->email; // 菜单 $menuconfig = DB::table('config')->where('config_title', '订单系统')->first(); $menus = []; if ($menuconfig && !($menus = json_decode($menuconfig->config_data))) $menus = []; $perm = new PermController; // 获取权限菜单 if ($request->user->email != 'admin@ichunt.com' && $request->user->userId != 1000) $menus = $perm->getPermMenu($request, $menus); $data = [ 'header' => $request->user->header, 'uri' => $uri, 'username' => $username, 'useremail' => $useremail, 'menus' => $menus, ]; return view('index', $data); } // 页面用户、菜单信息 public function getPageInfo(Request $request) { $uri = '/' . $request->path(); $username = $request->user->email; $useremail= $request->user->email; // 菜单 $menuconfig = DB::table('config')->where('config_title', '订单系统')->first(); $menus = []; if ($menuconfig && !($menus = json_decode($menuconfig->config_data))) $menus = []; $perm = new PermController; // 获取权限菜单 if ($request->user->email != 'admin@ichunt.com' && $request->user->userId != 1000) $menus = $perm->getPermMenu($request, $menus); // 用户权限 $userPerms = $perm->handlePerms($request, $request->user->userId); // 用户角色 $role = $perm->getUserRole($request); $data = [ 'header' => $request->user->header, 'uri' => $uri, 'username' => $username, 'useremail' => $useremail, 'menus' => $menus, 'userPerms' => $userPerms, 'role' => $role, ]; return $data; } // 订单列表 public function orderList(Request $request) { $info = $this->getPageInfo($request); $map = array(); // 页面参数 if ($request->isMethod('get')) { $map['order_type'] = $request->input('order_type', ''); $map['order_contain'] = $request->input('order_contain', ''); $map['time_start'] = $request->input('time_start', ''); $map['time_end'] = $request->input('time_end', ''); $map['order_status'] = $request->input('order_status', ''); $map['shipping_name'] = $request->input('shipping_name', ''); $map['order_send'] = $request->input('order_send', ''); $map['test_order'] = $request->input('test_order', ''); $map['order_pay_type'] = $request->input('order_pay_type', ''); $map['order_type_a'] = $request->input('order_type_a', ''); // $map['order_pay_status'] = $request->input('order_pay_status', ''); $map['order_source_pf'] = $request->input('order_source_pf', ''); $map['order_source_adtag'] = $request->input('order_source_adtag', ''); } // 若没有'查看线下订单'权限,则仅查看线上订单 if (!in_array('check_offline_order', $info['userPerms'])) { $map['online_order'] = 1; } /* 临时添加 所有人只能查看线上订单 */ $map['online_order'] = 1; // 订单查看权限---交易员 if ($info['role'] == 3) { // 筛选自己的订单 $data['sale_id'] = $request->user->userId; } // 竞调账号 if ($info['username'] != 'vpadmin@ichunt.com') { $map['is_fake'] = 0; } // 获取所有的业务员 (包括经理和交易员) // $sale_list = $this->getSales('销售'); $perm = new PermController; $manager = $perm->getRoleUsers($request, '经理'); $sale_list = $perm->getRoleUsers($request, '交易员'); $sale_list = array_merge($manager, $sale_list); //获取订单列表 $url = Config('website.api_domain').'order/getAllOrder'; $data['k1'] = time(); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $data['p'] = $request->input('p', 1); // 当前页码 $data['map'] = $map; $response = json_decode(curlApi($url, $data), true); // 分页 $page = new Page($response['data']['count'], 10); $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%'); $show = $page->show(); $info['condition'] = $map; $info['sale_list'] = $sale_list; $info['list'] = $response['data']['data']; $info['pay_count'] = $response['data']['pay_count']; $info['count'] = $response['data']['count']; $info['page'] = $show; return view('orderlist', $info); } // erp订单 public function erpOrder(Request $request) { $info = $this->getPageInfo($request); $map = array(); // 页面参数 if ($request->isMethod('get')) { $map['order_type'] = $request->input('order_type', ''); $map['order_contain'] = $request->input('order_contain', ''); $map['time_start'] = $request->input('time_start', ''); $map['time_end'] = $request->input('time_end', ''); $map['order_status'] = $request->input('order_status', ''); $map['order_send'] = $request->input('order_send', ''); $map['order_source'] = $request->input('order_source', ''); } /* 查看ERP订单 */ $map['offline_order'] = [2, 3]; // 2-ERP, 3-JD // 非竞调账号,则查看真实数据 if ($info['username'] != 'vpadmin@ichunt.com') { $map['is_fake'] = 0; } // 获取所有的业务员 (包括经理和交易员) $perm = new PermController; $manager = $perm->getRoleUsers($request, '经理'); $sale_list = $perm->getRoleUsers($request, '交易员'); $sale_list = array_merge($manager, $sale_list); //获取订单列表 $url = Config('website.api_domain').'order/getAllOrder'; $data['k1'] = time(); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $data['p'] = $request->input('p', 1); // 当前页码 $data['map'] = $map; $response = json_decode(curlApi($url, $data), true); // 分页 $page = new Page($response['data']['count'], 10); $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%'); $show = $page->show(); $info['condition'] = $map; $info['sale_list'] = $sale_list; $info['list'] = $response['data']['data']; $info['pay_count'] = $response['data']['pay_count']; $info['count'] = $response['data']['count']; $info['page'] = $show; return view('erpOrder', $info); } // 获取对应部门人员 public function getSales($title='') { // 查找部门 $department = DB::select("SELECT * FROM department WHERE parent = (SELECT departmentId FROM department WHERE title = '$title')"); $departmentId = array(); // 获取部门ID集合 foreach ($department as $k => $v) { $departmentId[$k] = $v->departmentId; } // 获取部门人员 $employee = DB::table('user_info as u')->leftJoin('organization as o', 'u.userId', '=', 'o.userId')->whereIn('departmentId', $departmentId)->get(); return $employee; } // 订单导出 public function export(Request $request) { $info = $this->getPageInfo($request); $map = array(); // 页面参数 if ($request->isMethod('get')) { $map['order_type'] = $request->input('order_type', ''); $map['order_contain'] = $request->input('order_contain', ''); $map['time_start'] = $request->input('time_start', ''); $map['time_end'] = $request->input('time_end', ''); $map['order_status'] = $request->input('order_status', ''); $map['shipping_name'] = $request->input('shipping_name', ''); $map['order_send'] = $request->input('order_send', ''); $map['test_order'] = $request->input('test_order', ''); $map['order_pay_type'] = $request->input('order_pay_type', ''); $map['order_type_a'] = $request->input('order_type_a', ''); $map['order_source_pf'] = $request->input('order_source_pf', ''); $map['order_source_adtag'] = $request->input('order_source_adtag', ''); } // 若没有'查看线下订单'权限,则仅查看线上订单 if (!in_array('check_offline_order', $info['userPerms'])) { $map['online_order'] = 1; } /* 临时添加 所有人只能查看线上订单 */ $map['online_order'] = 1; // 订单查看权限---交易员 if ($info['role'] == 3) { // 筛选自己的订单 $map['sale_id'] = $request->user->userId; } // 格式 $xlsCell = array( array('order_id', '订单ID'), array('order_sn', '订单编号'), array('user_account', '会员账号'), array('consignee', '收货人'), array('create_time', '下单时间'), array('com_name', '公司名称'), array('goods_name', '商品型号'), array('goods_number', '数量'), array('goods_price', '单价'), array('order_amount', '应付金额'), array('currency', '币种'), array('order_type', '订单类型'), array('order_status', '订单状态'), array('shipping_status','发货状态'), array('invoice_status', '发票状态'), array('company_name', '供应商'), array('sale_name', '推送业务员'), ); // 非竞调账号,则查看真实数据 // if ($info['username'] != 'vpadmin@ichunt.com') { // $map['is_fake'] = 0; // } $orderIds = array(); // 型号名称 if ($map['order_type'] == 2) { $goods = DB::connection('order')->table('lie_order_items')->where('goods_name', '=', $map['order_contain'])->select('order_id')->get(); if ($goods) { foreach ($goods as $v) { $orderIds[] = $v->order_id; } } } $list = DB::connection('order') ->table('lie_order as o') ->leftJoin('lie_user_main as u', 'o.user_id', '=', 'u.user_id') ->where(function ($query) use ($map, $orderIds) { // 查询类型 if (!empty($map['order_contain'])) { if ($map['order_type'] == 1) { // 订单编号 $query->where('o.order_sn', '=', $map['order_contain']); } else if ($map['order_type'] == 2) { // 型号名称 $query->whereIn('o.order_id', $orderIds); } else { // 会员账号 if (preg_match('/@/', $map['order_contain'])) { $query->where('u.email', '=', $map['order_contain']); } else { $query->where('u.mobile', '=', $map['order_contain']); } } } }) ->where(function ($query) use ($map) { // 创建时间 if (!empty($map['time_start']) && !empty($map['time_end'])) { $query->whereBetween('o.create_time', [$map['time_start'], $map['time_end']]); } else if (!empty($map['time_start'])) { $query->where('o.create_time', '>', $map['time_start']); } else if (!empty($map['time_end'])) { $query->where('o.create_time', '<', $map['time_end']); } }) ->where(function ($query) use ($map) { // 订单状态 if (!empty($map['order_status'])) { $query->where('o.status', '=', $map['order_status']); } }) ->where(function ($query) use ($map) { // 配送方式 if (!empty($map['shipping_name'])) { $query->where('o.order_shipping_type', '=', $map['shipping_name']); } }) ->where(function ($query) use ($map) { // 订单推送业务员 if (!empty($map['order_send'])) { $query->where('o.sale_id', '=', $map['order_send']); } }) ->where(function ($query) use ($map) { // 订单类型 if (!empty($map['order_pay_type'])) { $query->where('o.order_pay_type', '=', $map['order_pay_type']); } }) ->where(function ($query) use ($map) { // 测试订单 if (empty($map['test_order'])) { $query->whereNotIn('o.user_id', $this->testMobile()); } }) ->where(function ($query) use ($map) { // 订单来源 if (!empty($map['order_source_pf'])) { if ($map['order_source_pf'] == 1) { $query->whereRaw("FIND_IN_SET('pf=1', o.order_source)"); } else { $query->whereRaw("FIND_IN_SET('pf=2', o.order_source)"); } } }) ->where(function ($query) use ($map) { // adtags来源 if (!empty($map['order_source_adtag'])) { $query->whereRaw('FIND_IN_SET("adtag='.$map['order_source_adtag'].'", o.order_source)'); } }) ->where(function ($query) use ($map) { // 线上订单 if (isset($map['online_order'])) { $query->where('o.order_type', '=', $map['online_order']); } }) ->where(function ($query) use ($map) { // 竞调数据 if (isset($map['is_fake'])) { $query->where('o.is_type', '=', $map['is_fake']); } }) ->select('o.order_id', 'o.order_sn', 'o.order_pay_type', 'o.create_time', 'o.status', 'o.currency', 'o.sale_id', 'u.user_id', 'u.mobile', 'u.email') ->orderBy('o.create_time', 'DESC') ->get(); // 订单数据处理 $export = $this->exportList($list); if($export){ $xlsName = '订单数据导出'; $xlslist = exportExcel($xlsName, $xlsCell, $export); $this->$xlslist; } else { return redirect('/prompt')->with(['message'=>"数据为空无法导出!",'url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } } // 测试帐号 public function testMobile() { $testId = array(); $user = DB::connection('order')->table('lie_user_main')->select('user_id')->where(['is_test' => 1])->get(); foreach ($user as $k => $v) { $testId[$k] = $v->user_id; } return $testId; } /** * 导出到Excel * @param [type] $order [查询出的订单数据] * @return [type] [description] */ public function exportList($order) { // 订单类型 $order_type = array( '1' => '全款', '2' => '预付款', '3' => '账期支付', ); // 订单状态 $order_status = array( '-1' => '已取消', '1' => '待审核', '2' => '待付款', '3' => '待付尾款', '4' => '待发货', '7' => '部分发货', '8' => '待收货', '10' => '交易成功', ); // 订单发货状态 $shipping_status = array( '-1' => '未配送', '1' => '配送中', '2' => '已签', ); // 发票状态 $invoice_status = array( '-1' => '待确认', '1' => '已开票', '2' => '已发货', '3' => '已签收', ); $i = 0; foreach ($order as $val) { // 收货人 $address = DB::connection('order') ->table('lie_order_address') ->where(['order_id' => $val->order_id, 'address_type' => 1]) ->first(); // 商品信息 $goods = DB::connection('order') ->table('lie_order_items') ->where('order_id', '=', $val->order_id) ->where('status', '<>', -1) ->get(); // // 推送人 $sales = DB::table('user_info')->where(['userId' => $val->sale_id])->select('name')->first(); // 公司信息 $company = DB::connection('order') ->table('lie_user_company') ->where(['user_id' => $val->user_id]) ->select('com_name') ->first(); // 订单物流信息 $shipping = DB::connection('order') ->table('lie_order_shipping') ->where(['order_id' => $val->order_id, 'shipping_type' => 1]) ->select('status') ->first(); // 订单发票信息 $invoice = DB::connection('order') ->table('lie_order_invoice') ->where(['order_id' => $val->order_id]) ->select('invoice_status') ->first(); if ($goods) { foreach ($goods as $item) { $tmp[$i]['order_id'] = $val->order_id; $tmp[$i]['order_sn'] = $val->order_sn; $tmp[$i]['user_account'] = $val->mobile ? $val->mobile : $val->email; $tmp[$i]['consignee'] = isset($address) ? $address->consignee : ''; $tmp[$i]['create_time'] = date('Y-m-d H:i:s', $val->create_time); $tmp[$i]['com_name'] = isset($company) ? $company->com_name : ''; $tmp[$i]['goods_name'] = $item->goods_name; $tmp[$i]['goods_number'] = $item->goods_number; $tmp[$i]['goods_price'] = $item->goods_price; $tmp[$i]['order_amount'] = $item->goods_number * $item->goods_price; $tmp[$i]['currency'] = $val->currency == 1 ? 'RMB' : 'USD'; $tmp[$i]['order_type'] = $order_type[$val->order_pay_type]; $tmp[$i]['order_status'] = $order_status[$val->status]; // 发货状态 $tmp[$i]['shipping_status'] = !empty($shipping) ? $shipping_status[$shipping->status] : '无发货信息'; $tmp[$i]['invoice_status'] = !empty($invoice) ? $invoice_status[$invoice->invoice_status] : '无发票信息'; // 发票状态 $tmp[$i]['company_name'] = $item->supplier_name; $tmp[$i]['sale_name'] = isset($sales) ? $sales->name : ''; // 推送业务员 $i++; } } } if (!empty($tmp)) { return $tmp; } else { return false; } } // 详情页 public function details(Request $request, $id) { $data = $this->orderDetail($request, $id); return view('detail', $data); } // 调价 public function changeOrder(Request $request, $id) { $info = $this->orderDetail($request, $id); //待审核才可以 if(!in_array($info['order_info']['status'], [-1, 1, 2])){ return redirect('/prompt')->with(['message'=>"该订单不符合人工审单条件~【status:{$info['order_info']['status']}】",'url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } // 获取所有的业务员 $sale_list = $this->getSales('销售'); $perm = new PermController; $manager = $perm->getRoleUsers($request, '经理'); $sale_list = $perm->getRoleUsers($request, '交易员'); $info['sale_list'] = $sale_list; $info['manager'] = $manager; return view('detail', $info); } //删除单个商品操作 public function ajaxdeletegoods(Request $request) { $collert = $request->input(); if(!$request->isMethod('post') OR !$collert['rec_id']){ return array('errcode'=>1,'errmsg'=>'错误操作'); } if(!$collert['reason']){ return array('errcode'=>101,'errmsg'=>'请填写删除原因'); } $url = Config('website.api_domain').'order/deleteGoods'; $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $resData = array( "reason"=>$collert['reason'], "rec_id"=>$collert['rec_id'], "pf"=>1, "k1"=>$check['k1'], "k2"=>$check['k2'] ); $temp = json_decode(curlApi($url, $resData, "POST"), true); return array('errcode'=>$temp['err_code'],'errmsg'=>$temp['err_msg']); } // 保存调价信息 public function ajaxSaveChange(Request $request) { if($request->isMethod('post')){ $order_id = $request->input('order_id', ''); if (!$order_id) { return array('errcode'=>1, 'errmsg'=>'订单参数有误!'); } // $order_info = DB::connection('order')->table('lie_order')->where('order_id', $order_id)->first(); // $info = $this->getPageInfo($request); // if ($order_info->status == 1 && $order_info->adjust_count <= 2 && !in_array($info['role'], array(1, 2))) { // return array('errcode'=>-10010,'errmsg'=>'没有权限进行二次调价'); // } $url = Config('website.api_domain').'order/changeOrder'; $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $resData = [ "cancel_reason" => $request->input('cancel_reason', ''), "sale_id" => $request->input('sale_id', ''), "order_pay_type" => $request->input('order_pay_type', ''), "status" => $request->input('order_status', ''), "deposit_amount" => $request->input('deposit_amount', ''), "goods_amount" => $request->input('goods_amount', ''), "order_amount" => $request->input('order_amount', ''), "extra_fee" => $request->input('extra_fee', ''), "change_info" => $request->input('change_info', ''), "order_id" => $order_id, "pf" => 1, "k1" => $check['k1'], "k2" => $check['k2'] ]; $temp = json_decode(curlApi($url, $resData, "POST"), true); return array('errcode'=>$temp['err_code'],'errmsg'=>$temp['err_msg']); } } // 申请再次调价 public function applyAdjust(Request $request, $id) { $info = $this->orderDetail($request, $id); if($info['order_info']['status'] == 3 || $info['order_info']['status'] == 4){ return redirect('/prompt')->with(['message'=>"客户已经支付了,无法进行调价了.",'url' =>'/check/'.$id, 'jumpTime'=>3,'status'=>false]); } if($info['order_info']['status'] != -1){ //总共允许2次调价(以点击审核按钮次数来统计) if ($info['order_info']['status'] != 2 || $info['order_info']['adjust_count'] >= 2) { return redirect('/prompt')->with(['message'=>"该订单无法再进行该操作",'url' =>'/check/'.$id, 'jumpTime'=>3,'status'=>false]); } elseif ($info['order_info']['status'] == 2 && $info['order_info']['adjust_count'] <= 2 && !in_array($info['role'], array(1, 2))) { return redirect('/prompt')->with(['message'=>"没有权限进行二次调价",'url' =>'/check/'.$id, 'jumpTime'=>3,'status'=>false]); } } if ($request->isMethod('post')) { $remark = $request->input('adjust_remark', '', 'trim'); $order_id = $info['order_info']['order_id']; if (empty($remark)) { return array('errcode' => -1, 'errmsg' => '调价原因不能为空'); } $url = Config('website.api_domain').'order/applyAdjust'; $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $resData = array("order_id"=>$order_id, "pf"=>1, "k1"=>$check['k1'], "k2"=>$check['k2']); $temp = json_decode(curlApi($url, $resData, "POST"), true); if ($temp['err_code'] == 0) { return array('errcode'=>0,'errmsg'=>'申请成功'); } else { return array('errcode'=>0,'errmsg'=>'申请失败'); } } return view('detail.adjust', $info); } // 审核 public function check(Request $request, $id) { $data = $this->orderDetail($request, $id); // 获取所有的业务员 $sale_list = $this->getSales('销售'); $perm = new PermController; $manager = $perm->getRoleUsers($request, '经理'); $sale_list = $perm->getRoleUsers($request, '交易员'); // $manager = array(); // 过滤业务员,并新建经理数组 // if (!empty($managerId)) { // foreach ($sale_list as $k=>$v) { // foreach ($managerId as $id) // if ($v->userId == $id) { // $manager[$v->userId] = $v->name; // array_splice($sale_list, $k, 1); // } // } // } $data['sale_list'] = $sale_list; $data['manager'] = $manager; return view('detail', $data); } // 审核ajax public function ajaxCheck(Request $request) { if($request->isMethod('post')){ $order_id = $request->input('order_id', ''); //订单号 $sale_id = $request->input('sale_id', null); //对应销售 $order_status = $request->input('order_status', ''); //审核通过 2 审核不通过(即取消订单) -1 $cancel_reason = $request->input('cancel_reason', ''); $order_sn = $request->input('order_sn', ''); if ($order_status == -1 && !$cancel_reason) { return array('errcode'=>1, 'errmsg'=>'审核不通过的原因不可为空!'); } if (!isset($sale_id)) { return array('errcode'=>1, 'errmsg'=>'请选择订单业务员!'); } if (!$order_id) { return array('errcode'=>1, 'errmsg'=>'订单参数有误!'); } //用于后台订单审核 $url = Config('website.api_domain').'order/adminCheck'; $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $resData = array("cancel_reason"=>$cancel_reason, "order_id"=>$order_id, 'sale_id'=>$sale_id, 'status'=>$order_status, "pf"=>1, "k1"=>$check['k1'], "k2"=>$check['k2']); $temp = json_decode(curlApi($url, $resData, "POST"), true); if ($temp['err_code'] == 0) { // 成功 // 3.短信发送 // $user_mobile = $request->input('user_mobile', ''); // $content = '尊敬的客户,您好!您在猎芯网提交的订单('.$order_sn.')已经通过审核,请您及时登陆查看,留意最新的订单动态,祝您交易愉快,有任何疑问请联系官方客服:0755-88914841'; // $this->webpower_send_sms($user_mobile, $content); } return array('errcode'=>$temp['err_code'],'errmsg'=>$temp['err_msg']); } } /** * webPower 短信商 * @param $mobile 手机号码 * @param $content 短信内容 * @return bool */ public function webpower_send_sms($mobile, $content, $campaignID = 1424) { //webservice // $url = "http://lx.webpowerchina.cn/sms/rest/v1/sms"; //输出的链接地址 $url='https://sms.dmavip.com/rest/v2/single_sms'; $post_data = array( 'mobile' => $mobile, 'content' => $content, 'campaignID' => $campaignID, ); //填写参数,mobile手机号码,content短信内容,campaignID活动id(短信平台上面发送一般是在活动下面,跟邮件一样会有一个活动Id) $data = webpower_curl($url, $post_data); if(isset($data)){ //保存验证码 DB::connection('order')->table('lie_msg_send')->insert([ 'mobile' => $mobile, 'code' => ' ', 'send_time' => time(), 'url' => $url.'?'.http_build_query($post_data), 'response' => $data ]); $result = json_decode($data, true); $status = strtoupper($result['status']); if($status == 'OK'){ return true; }else{ return false; } }else{ return false; } } //取消订单(仅限审核通过,未付款前) public function cancelPay(Request $request, $id) { if($request->isMethod('post')){ $order_id = $request->input('order_id'); $cancel_reason = $request->input('cancel_reason'); if (!$order_id) { return array('errcode'=>-1,'errmsg'=>'订单不存在~'); } if (!$cancel_reason) { return array('errcode'=>-1,'errmsg'=>'取消订单的原因不可为空~'); } $url = Config('website.api_domain').'order/cancelPay'; $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $resData = array("pf"=>1, "k1"=>$check['k1'], "k2"=>$check['k2'], "order_id"=>$order_id, "cancel_reason"=>$cancel_reason); $temp = json_decode(curlApi($url,$resData,"POST"), true); return array('errcode'=>$temp['err_code'],'errmsg'=>$temp['err_msg']); } $info = $this->orderDetail($request, $id); return view('detail', $info); } // 对账 public function checkPay(Request $request, $id) { $info = $this->orderDetail($request, $id); if ($request->isMethod('post')) { $order_id = $request->input('order_id', ''); $cid = $request->input('cid', ''); $serial_number = $request->input('serial_number', ''); // last_check 尾款确认 if (!$request->input('last_check', '')) { $url = Config('website.api_domain').'order/checkpay'; $data['order_id'] = $order_id; $data['cid'] = $cid; $data['serial_number'] = $serial_number; $data['k1'] = time(); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $temp = json_decode(curlApi($url, $data, "POST"), true); // 连接API if ($temp['err_code'] == 0) { return array('errcode'=>0,'errmsg'=>'操作成功'); } else { return array('errcode'=>-1,'errmsg'=>'操作失败'); } } else { $payLog['is_paid'] = 2; if (DB::connection('order')->table('lie_pay_log')->where(['order_id'=>$order_id, 'pay_type'=>2])->update($payLog)) { return array('errcode'=>0,'errmsg'=>'操作成功'); } } return array('errcode'=>-1,'errmsg'=>'操作失败'); } // 订单待付款状态可操作对账 if ($info['order_info']['order_pay_type'] == 1) { // 全款 if (!in_array($info['order_info']['status'], array(2, 4))) { return redirect('/prompt')->with(['message'=>'订单无法操作','url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } } else if ($info['order_info']['order_pay_type'] == 2) { // 预付款 if (!in_array($info['order_info']['status'], array(2, 3, 4))) { return redirect('/prompt')->with(['message'=>'订单无法操作','url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } } return view('detail', $info); } //订单物流信息 public function changeShipping(Request $request, $id='') { if($request->isMethod('post')){ $data['map'] = $request->input(); $data['k1'] = time(); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $data['order_id'] = $request->input('order_id',''); $update_url = Config('website.api_domain').'order/updateOrderAddress'; $update = json_decode(curlApi($update_url, $data, 'POST'), true); if ($update['err_code'] == 0) { return array('errcode'=>0,'errmsg'=>'操作成功'); } else { return array('errcode'=>-1,'errmsg'=>'操作失败'); } } $info = $this->orderDetail($request, $id); if (!$info['order_address_info']) { return redirect('/prompt')->with(['message'=>'订单地址不存在!', 'url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3, 'status'=>false]); } $info['detail'] = $info['order_address_info']; $info['detail']['order_id'] = $id; return view('changeShipping', $info); } // 订单发票信息 public function changeInvoice(Request $request, $id='') { if($request->isMethod('post')){ $data['map'] = $request->input(); $data['k1'] = time(); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $data['id'] = $request->input('order_id',''); $update_url = Config('website.api_domain').'order/updateOrderInvoice'; $update = json_decode(curlApi($update_url, $data, 'POST'), true); if ($update['err_code'] == 0) { return array('errcode'=>0,'errmsg'=>'操作成功'); } else { return array('errcode'=>-1,'errmsg'=>'操作失败'); } } $info = $this->orderDetail($request, $id); if (!$info['order_invoice_info']) { return redirect('/prompt')->with(['message'=>'发票不存在!','url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } $info['detail'] = $info['order_invoice_info']; $info['detail']['order_id'] = $id; return view('changeInvoice', $info); } /** *发货 */ public function send(Request $request, $id) { if($request->isMethod('post')){ $data = $request->input(); $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $url = Config('website.api_domain').'order/send'; $resData = array("shipping_no"=>$data['shipping_no'], "order_id"=>$data['order_id'], 'shipping_id'=>$data['shipping_id'], "pf"=>1, "k1"=>$check['k1'], "k2"=>$check['k2']); $temp = json_decode(curlApi($url,$resData,"POST"), true); return array('errcode'=>$temp['err_code'],'errmsg'=>$temp['err_msg']); } $info = $this->orderDetail($request, $id); $shippings = DB::connection('order')->table('lie_shipping')->where(['enabled'=>1,'is_order'=>1])->get();//获取配送方式 $ship_type = []; foreach ($shippings as $key => $value) { $ship_type[$value->shipping_id] = $value->shipping_name; } $info['ship_type'] = $ship_type; $info['shippings'] = $shippings; return view('detail', $info); } //发票物流信息 public function invShipping(Request $request, $id) { if($request->isMethod('post')){ $data = $request->input(); if (!$data['inv_shipping_no']) { return redirect('/prompt')->with(['message'=>'发票物流单号不可为空~','url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } $check['k1'] = time(); $check['k2'] = md5(md5($check['k1']).'fh6y5t4rr351d2c3bryi'); $url = Config('website.api_domain').'order/invShipping'; $resData = array("pf"=>1, "k1"=>$check['k1'], "k2"=>$check['k2'], "order_id"=>$data['order_id'], "inv_shipping_no"=>$data['inv_shipping_no'], "inv_shipping_id"=>$data['inv_shipping_id']); $temp = json_decode(curlApi($url, $resData, "POST"), true); if ($temp['err_code'] == 0) { return redirect('/prompt')->with(['message'=>$temp['err_msg'],'url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>true]); } return redirect('/prompt')->with(['message'=>$temp['err_msg'],'url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } $info = $this->orderDetail($request, $id); if($info['order_invoice_info']['inv_type'] == 1){ return redirect('/prompt')->with(['message'=>'当前订单不需要发票~','url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } if($info['order_info']['status'] != 10){ return redirect('/prompt')->with(['message'=>'订单未交易成功,无法寄送发票~','url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]); } //物流信息 $shippings = DB::connection('order')->table('lie_shipping')->where(['enabled'=>1,'is_invoice'=>1])->get(); $shippingArr = []; foreach ($shippings as $key => $value) { $shippingArr[$value->shipping_id] = $value->shipping_name; } $info['shippingArr'] = $shippingArr; $info['shippings'] = $shippings; return view('detail', $info); } //3.0后台订单临时版 api public function orderDetail(Request $request, $id, $type = '0') { $info = $this->getPageInfo($request); if (!$type) { $type = '0'; } //调用订单接口,获取订单详细信息 $url = Config('website.api_domain').'order/getOrderDetails'; $data['k1'] = time(); $data['k2'] = md5(md5($data['k1']).'fh6y5t4rr351d2c3bryi'); $userData = array("order_id"=>$id, "type"=>$type, "pf"=>1, "k1"=>$data['k1'], "k2"=>$data['k2']); $temp = json_decode(curlApi($url, $userData, "POST"), true); // 消息通知 $mobile = isset($temp['data']['order_info']['user_info']['msg_mobile']) ? $temp['data']['order_info']['user_info']['msg_mobile'] : ''; if (!$mobile) { $mobile = isset($temp['data']['order_info']['user_info']['mobile']) ? $temp['data']['order_info']['user_info']['mobile'] : ''; } $response = [ 'user_mobile' => $mobile, 'order_info' => $temp['data']['order_info'], 'user_info' => $temp['data']['order_info']['user_info'], 'order_invoice_info' => $temp['data']['order_invoice_info'], 'order_items_info' => $temp['data']['order_items_info'], 'order_address_info' => $temp['data']['order_address_info'], 'order_shipping_info' => $temp['data']['order_shipping_info'], 'order_invoice_shipping_info' => $temp['data']['order_invoice_shipping_info'], 'order_pay_log' => $temp['data']['order_pay_log'], 'order_price_info' => $temp['data']['order_price_info'], ]; $response = array_merge($response, $info); return $response; } }