作者 李宇航

合并分支 'lyh-server' 到 'master'

Lyh server



查看合并请求 !2799
... ... @@ -9,9 +9,13 @@
namespace App\Console\Commands\LyhTest;
use App\Enums\Common\Code;
use App\Helper\Common;
use App\Http\Requests\Aside\WorkOrder\AsideTicketListRequest;
use App\Models\Blog\Blog;
use App\Models\Com\V6WeeklyReport;
use App\Models\Manage\Manage;
use App\Models\Manage\ManageHr;
use App\Models\News\News;
use App\Models\Product\Category;
use App\Models\Product\CategoryRelated;
... ... @@ -22,6 +26,7 @@ use App\Models\Template\BTemplate;
use App\Models\Visit\Visit;
use App\Models\Visit\VisitItem;
use App\Models\Workchat\MessagePush;
use App\Models\WorkOrder\Tickets;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
... ... @@ -45,11 +50,11 @@ class DownloadProject extends Command
protected $description = '导出项目数据';
public function handle(){
echo date('Y-m-d H:i:s') . 'start' . PHP_EOL;
ProjectServer::useProject(671);
$this->newsImportBlog();
DB::disconnect('custom_mysql');
echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
echo date('Y-m-d H:i:s') . 'start1' . PHP_EOL;
// ProjectServer::useProject(671);
$this->downloadTicket();
// DB::disconnect('custom_mysql');
echo date('Y-m-d H:i:s') . 'end1' . PHP_EOL;
return true;
}
... ... @@ -121,6 +126,59 @@ class DownloadProject extends Command
}
/**
* @remark :导出工单数据
* @name :downloadTicketList
* @author :lyh
* @method :post
* @time :2025/9/13 15:24
*/
/**
* A端查看所有工单
*
* @return \Illuminate\Http\Response
*/
public function downloadTicket(AsideTicketListRequest $request)
{
$this->param['dept_id'] = 2;
$this->param['entry_position'] = 2;
$query = Tickets::with([
'logs.engineer',
'project.pm',
'project.projectV6',
]);
$query->where('status', 0)->where('plan_end_at','<',date("Y-m-d H:i:s", strtotime("-72 hours")));//超过120个小时未处理的工单
//TODO::用户部门搜索
if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){
$manageHrModel = new ManageHr();
//售后优化+技术搜索
if($this->param['dept_id'] == 2 && !empty($this->param['entry_position'])) {//售后部
if ($this->param['entry_position'] == 1) {
$manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [44, 46, 49]], 'status' => 1], 'manage_id');
} else {
//售后技术
$manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [42, 43, 45, 48, 51]], 'status' => 1], 'manage_id');
}
$query->whereHas('logs', function ($q) use ($manageIdArr) {
$q->whereIn('engineer_id', $manageIdArr);
});
}else{
$manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id');
$query->whereHas('logs', function ($q) use ($manageIdArr) {
$q->whereIn('engineer_id', $manageIdArr);
});
}
}
// 添加排序功能
$query->orderBy('status', 'asc');
$sortField = $request->input('sort_field', 'plan_end_at');
$sortOrder = strtolower($request->input('sort_order', 'asc'));
$query->orderBy($sortField, $sortOrder);
if ($sortField != 'plan_end_at') $query->orderBy('plan_end_at', 'asc');
$lists = $query->get()->toArray();
return $this->exportData($lists);
}
/**
* @remark :导出访问明细
* @name :exportData
* @author :lyh
... ... @@ -132,22 +190,27 @@ class DownloadProject extends Command
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// 添加表头
$sheet->setCellValue('A1', '浏览时间');
$sheet->setCellValue('B1', '访客来源');
$sheet->setCellValue('C1', '访客入路页面');
$sheet->setCellValue('D1', '终端');
$sheet->setCellValue('E1', '国家ip');
$sheet->setCellValue('F1', '深度访问页数');
$sheet->setCellValue('G1', '国家');
$sheet->setCellValue('A1', '公司名称');
$sheet->setCellValue('B1', '工单提交时间');
$sheet->setCellValue('C1', '工单内容');
$sheet->setCellValue('D1', '正式域名');
$sheet->setCellValue('E1', '测试域名');
$sheet->setCellValue('F1', '提交人');
$sheet->setCellValue('G1', '执行技术');
$rowCount = 2;
foreach ($data as $v) {
$sheet->setCellValue('A' . $rowCount, $v['created_at']);
$sheet->setCellValue('B' . $rowCount, $v['referrer_url']);
$sheet->setCellValue('C' . $rowCount, $v['url']);
$sheet->setCellValue('D' . $rowCount, $v['device_text']);
$sheet->setCellValue('E' . $rowCount, $v['ip']);
$sheet->setCellValue('F' . $rowCount, $v['depth']);
$sheet->setCellValue('G' . $rowCount, $v['country']);
foreach ($v['logs'] as $key => $value) {
if($value['is_engineer'] == 1){
$is_engineer = $value['engineer']['name'];
}
}
$sheet->setCellValue('A' . $rowCount, $v['project']['company_name']);
$sheet->setCellValue('B' . $rowCount, $v['created_at']);
$sheet->setCellValue('C' . $rowCount, $v['content']);
$sheet->setCellValue('D' . $rowCount, $v['project']['website']);
$sheet->setCellValue('E' . $rowCount, $v['project']['test_website']);
$sheet->setCellValue('F' . $rowCount, $v['submit_username']);
$sheet->setCellValue('G' . $rowCount, $is_engineer ?? '');
$rowCount++;
}
// 创建一个新的 Excel Writer 对象
... ...
... ... @@ -148,6 +148,10 @@ class AsideTicketController extends BaseController
if($item['project']['version'] != 5){
$item['project']['engineer_id_name'] = $manageModel->getName($item['project']['engineer_id'] ?? 0);
}
//自动登录v6
if($item['project']['project_cate'] == 6){
$item['autologin_code'] = getAutoLoginCode($item['project']['table_id']);
}
//计算超时多少个小时
if($item['status'] == 0){
$end = date('Y-m-d H:i:s');
... ...