<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Model\OrderModel; use App\Model\UserMainModel; use App\Model\OrderActionLogModel; use DB; use Excel; use Log; class SpecialController extends Controller { // 订单特殊处理,用于测试调整运费 public function changeOrderPrice(Request $request) { $mobile = $request->input('mobile', ''); $order_id = $request->input('order_id', ''); if (!$mobile || !$order_id) { echo '参数缺失';die; } // 检查是否为测试账号 $test_mobile = Config('params.test_mobile'); if (!in_array($mobile, $test_mobile)) { echo '非测试账号';die; } DB::connection('order')->beginTransaction(); $order = DB::connection('order')->table('lie_order_price')->where('order_id', $order_id)->where('price_type', 3)->first(); if (!$order) { echo '运费不存在';die; } $data['price'] = 0; $update = DB::connection('order')->table('lie_order_price')->where('order_id', $order_id)->where('price_type', 3)->update($data); if (!$update) { DB::connection('order')->rollback(); echo '运费更新失败';die; } $OrderModel = new OrderModel(); $order_info = $OrderModel->find($order_id); $intracode = DB::table('lie_intracode')->where('user_id', $order_info['user_id'])->select('admin_id')->first(); $sale_id = $intracode ? $intracode->admin_id : 0; // 操作记录 $OrderActionLogModel = new OrderActionLogModel(); $actionLog = $OrderActionLogModel->addLog($order_id, $sale_id, 2, '调整运费为0'); if (!$actionLog) { DB::connection('order')->rollback(); echo '添加运费更新日志失败';die; } DB::connection('order')->commit(); echo '运费更新成功'; } // 导出已离职人员数据 (业务ID、业务人、关联会员账号、公司名称) public function exportDimission() { // 查找已离职人员 $dimission = DB::table('user_info')->where('status', 4)->select('userId', 'name')->get(); if (empty($dimission)) { echo '无离职人员';die; } $sales = []; $sale_ids = []; foreach ($dimission as $v) { $sales[$v->userId] = $v->name; $sale_ids[] = $v->userId; } // 查找离职人员订单 $OrderModel = new OrderModel(); $order_info = $OrderModel->from('lie_order as o') ->leftJoin('lie_user_main as u', 'o.user_id', '=', 'u.user_id') ->leftJoin('lie_user_company as c', 'o.user_id', '=', 'c.user_id') ->whereIn('o.sale_id', $sale_ids) ->select('o.order_id', 'o.user_id', 'o.sale_id', 'u.mobile', 'u.email', 'c.com_name') ->get(); if (empty($order_info)) { echo '无离职人员订单';die; } $cellData = []; foreach ($order_info as $k=>$v) { $cellData[$k]['sale_id'] = $v['sale_id']; $cellData[$k]['sale_name'] = $sales[$v['sale_id']]; $cellData[$k]['account'] = $v['mobile'] ? $v['mobile'] : $v['email']; $cellData[$k]['com_name'] = $v['com_name']; } $headerCell = ['业务ID', '业务员名称', '关联会员账号', '公司名称']; array_unshift($cellData, $headerCell); $fileName = '已离职人员关联客户'.date('_YmdHis'); Excel::create($fileName, function($excel) use ($cellData){ $excel->sheet('人员导出', function($sheet) use ($cellData){ $sheet->rows($cellData); }); })->export('xls'); } // 导入离职业务客户 public function importDimission(Request $request) { if ($request->isMethod('post')) { $file = $_FILES['file']; // $request->file('file') $filePath = $file['tmp_name']; // 临时路径 // 获取导入内容 $excel = []; Excel::load($filePath, function($reader) use(&$excel){ $data = $reader->getSheet(0); // 读取第二个sheet $excel = $data->toArray(); }); if (!$excel) { echo '导入文件为空';die; } array_shift($excel); // 删除第一行 $OrderModel = new OrderModel(); foreach ($excel as $k=>$v) { // 1. 根据手机或邮箱查找客户最近的订单 $order_id = $this->getLastOrderId(trim($v[0])); if ($order_id === false) continue; // 2. 根据企业邮箱查找sale_id $sale_id = $this->getSaleId(trim(strtolower($v[1]))); if ($sale_id === false) continue; // 3. 替换第一步的订单sale_id $OrderModel->where('order_id', $order_id)->update(['sale_id' => $sale_id]); // 记录到日志 $monolog = Log::getMonolog(); $monolog->popHandler(); Log::useDailyFiles(storage_path('logs/updateOrder.log')); Log::info('替换已离职人员的订单,订单ID:'.$order_id.',之前的SALE ID:'.$sale_id); } echo '替换sale_id完成';die; } return view('importDimission'); } // 获取客户最近的订单 public function getLastOrderId($account) { $UserMainModel = new UserMainModel(); $OrderModel = new OrderModel(); if (strpos($account, '@') === false) { $where['mobile'] = $account; } else { $where['email'] = strtolower($account); } $user = $UserMainModel->where($where)->select('user_id')->first(); if (!$user) return false; // 查找最近的订单 $order = $OrderModel->where('user_id', $user['user_id'])->select('order_id')->orderBy('order_id', 'desc')->first(); if (!$order) return false; return $order['order_id']; } // 获取后台业务ID public function getSaleId($email) { $user = DB::table('user_info')->where('email', $email)->select('userId')->first(); if (!$user) return false; return $user->userId; } }