<?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\UserCompanyModel; use App\Model\OrderActionLogModel; use App\Model\PayLogModel; 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(); // 记录到日志 $monolog = Log::getMonolog(); $monolog->popHandler(); Log::useDailyFiles(storage_path('logs/updateOrder.log')); foreach ($excel as $k=>$v) { if (!$v[0] || !$v[1]) continue; // 1. 根据手机或邮箱查找客户最近的订单 $order_id = $this->getLastOrderId(trim($v[0])); if ($order_id === false) { Log::info('客户账号:'.$v[0].',客服邮箱:'.$v[1].',客户无订单'); continue; } // 2. 根据企业邮箱查找sale_id $sale_id = $this->getSaleId(trim(strtolower($v[1]))); if ($sale_id === false) { Log::info('客户账号:'.$v[0].',客服邮箱:'.$v[1].',没有找到跟进人邮箱'); continue; } // 3. 替换第一步的订单sale_id $OrderModel->where('order_id', $order_id)->update(['sale_id' => $sale_id]); Log::info('客户账号:'.$v[0].',客服邮箱:'.$v[1].',替换已离职人员的订单,订单ID:'.$order_id.',之前的SALE ID:'.$sale_id); } echo '替换sale_id完成';die; } return view('importDimission'); } // 获取客户最近的订单 public function getLastOrderId($account) { $UserMainModel = new UserMainModel(); $UserCompanyModel = new UserCompanyModel(); $OrderModel = new OrderModel(); if (strpos($account, '@') !== false) { // 邮箱 $where['email'] = strtolower($account); $user_info = $UserMainModel->where($where)->select('user_id')->first(); } else if (preg_match('/\d{11}/', $account)) { // 手机号码 $where['mobile'] = $account; $user_info = $UserMainModel->where($where)->select('user_id')->first(); } else { // 公司名称 $user_info = $UserCompanyModel->where('com_name', $account)->select('user_id')->first(); } if (!$user_info) return false; // 查找最近的订单 $order = $OrderModel->where('user_id', $user_info['user_id'])->where('is_type', 0)->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; } // 处理支付记录 public function handlePayLog() { $PayLogModel = new PayLogModel(); $pay_log = $PayLogModel->where('pay_type', 4)->where('is_paid', -1)->orderBy('create_time', 'desc')->get()->toArray(); $data = []; foreach ($pay_log as $k=>$v) { $log = $PayLogModel->where('order_id', $v['order_id'])->where('pay_type', 1)->first(); if (!$log) continue; // dump($log['order_id'].'==='.date('Y-m-d H:i:s', $log['create_time']).'==='.date('Y-m-d H:i:s', $log['pay_time'])); // $PayLogModel->where('pay_log_id', $v['pay_log_id'])->update(['is_paid'=>1, 'pay_time'=>$log['pay_time']]); // 更新账期支付 // $PayLogModel->where('pay_log_id', $log['pay_log_id'])->delete(); // // 记录到日志 // $monolog = Log::getMonolog(); // $monolog->popHandler(); // Log::useDailyFiles(storage_path('logs/update_pay_log.log')); // Log::info('更新账期支付记录ID:'.$v['pay_log_id'].',删除的支付记录ID:'.$log['pay_log_id']); $data[] = $log['pay_log_id']; } dd($data); } }