作者 李宇航

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

Lyh server



查看合并请求 !2799
@@ -9,9 +9,13 @@ @@ -9,9 +9,13 @@
9 9
10 namespace App\Console\Commands\LyhTest; 10 namespace App\Console\Commands\LyhTest;
11 11
  12 +use App\Enums\Common\Code;
12 use App\Helper\Common; 13 use App\Helper\Common;
  14 +use App\Http\Requests\Aside\WorkOrder\AsideTicketListRequest;
13 use App\Models\Blog\Blog; 15 use App\Models\Blog\Blog;
14 use App\Models\Com\V6WeeklyReport; 16 use App\Models\Com\V6WeeklyReport;
  17 +use App\Models\Manage\Manage;
  18 +use App\Models\Manage\ManageHr;
15 use App\Models\News\News; 19 use App\Models\News\News;
16 use App\Models\Product\Category; 20 use App\Models\Product\Category;
17 use App\Models\Product\CategoryRelated; 21 use App\Models\Product\CategoryRelated;
@@ -22,6 +26,7 @@ use App\Models\Template\BTemplate; @@ -22,6 +26,7 @@ use App\Models\Template\BTemplate;
22 use App\Models\Visit\Visit; 26 use App\Models\Visit\Visit;
23 use App\Models\Visit\VisitItem; 27 use App\Models\Visit\VisitItem;
24 use App\Models\Workchat\MessagePush; 28 use App\Models\Workchat\MessagePush;
  29 +use App\Models\WorkOrder\Tickets;
25 use App\Services\ProjectServer; 30 use App\Services\ProjectServer;
26 use Illuminate\Console\Command; 31 use Illuminate\Console\Command;
27 use Illuminate\Support\Facades\DB; 32 use Illuminate\Support\Facades\DB;
@@ -45,11 +50,11 @@ class DownloadProject extends Command @@ -45,11 +50,11 @@ class DownloadProject extends Command
45 protected $description = '导出项目数据'; 50 protected $description = '导出项目数据';
46 51
47 public function handle(){ 52 public function handle(){
48 - echo date('Y-m-d H:i:s') . 'start' . PHP_EOL;  
49 - ProjectServer::useProject(671);  
50 - $this->newsImportBlog();  
51 - DB::disconnect('custom_mysql');  
52 - echo date('Y-m-d H:i:s') . 'end' . PHP_EOL; 53 + echo date('Y-m-d H:i:s') . 'start1' . PHP_EOL;
  54 +// ProjectServer::useProject(671);
  55 + $this->downloadTicket();
  56 +// DB::disconnect('custom_mysql');
  57 + echo date('Y-m-d H:i:s') . 'end1' . PHP_EOL;
53 return true; 58 return true;
54 } 59 }
55 60
@@ -121,6 +126,59 @@ class DownloadProject extends Command @@ -121,6 +126,59 @@ class DownloadProject extends Command
121 } 126 }
122 127
123 /** 128 /**
  129 + * @remark :导出工单数据
  130 + * @name :downloadTicketList
  131 + * @author :lyh
  132 + * @method :post
  133 + * @time :2025/9/13 15:24
  134 + */
  135 + /**
  136 + * A端查看所有工单
  137 + *
  138 + * @return \Illuminate\Http\Response
  139 + */
  140 + public function downloadTicket(AsideTicketListRequest $request)
  141 + {
  142 + $this->param['dept_id'] = 2;
  143 + $this->param['entry_position'] = 2;
  144 + $query = Tickets::with([
  145 + 'logs.engineer',
  146 + 'project.pm',
  147 + 'project.projectV6',
  148 + ]);
  149 + $query->where('status', 0)->where('plan_end_at','<',date("Y-m-d H:i:s", strtotime("-72 hours")));//超过120个小时未处理的工单
  150 + //TODO::用户部门搜索
  151 + if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){
  152 + $manageHrModel = new ManageHr();
  153 + //售后优化+技术搜索
  154 + if($this->param['dept_id'] == 2 && !empty($this->param['entry_position'])) {//售后部
  155 + if ($this->param['entry_position'] == 1) {
  156 + $manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [44, 46, 49]], 'status' => 1], 'manage_id');
  157 + } else {
  158 + //售后技术
  159 + $manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [42, 43, 45, 48, 51]], 'status' => 1], 'manage_id');
  160 + }
  161 + $query->whereHas('logs', function ($q) use ($manageIdArr) {
  162 + $q->whereIn('engineer_id', $manageIdArr);
  163 + });
  164 + }else{
  165 + $manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id');
  166 + $query->whereHas('logs', function ($q) use ($manageIdArr) {
  167 + $q->whereIn('engineer_id', $manageIdArr);
  168 + });
  169 + }
  170 + }
  171 + // 添加排序功能
  172 + $query->orderBy('status', 'asc');
  173 + $sortField = $request->input('sort_field', 'plan_end_at');
  174 + $sortOrder = strtolower($request->input('sort_order', 'asc'));
  175 + $query->orderBy($sortField, $sortOrder);
  176 + if ($sortField != 'plan_end_at') $query->orderBy('plan_end_at', 'asc');
  177 + $lists = $query->get()->toArray();
  178 + return $this->exportData($lists);
  179 + }
  180 +
  181 + /**
124 * @remark :导出访问明细 182 * @remark :导出访问明细
125 * @name :exportData 183 * @name :exportData
126 * @author :lyh 184 * @author :lyh
@@ -132,22 +190,27 @@ class DownloadProject extends Command @@ -132,22 +190,27 @@ class DownloadProject extends Command
132 $spreadsheet = new Spreadsheet(); 190 $spreadsheet = new Spreadsheet();
133 $sheet = $spreadsheet->getActiveSheet(); 191 $sheet = $spreadsheet->getActiveSheet();
134 // 添加表头 192 // 添加表头
135 - $sheet->setCellValue('A1', '浏览时间');  
136 - $sheet->setCellValue('B1', '访客来源');  
137 - $sheet->setCellValue('C1', '访客入路页面');  
138 - $sheet->setCellValue('D1', '终端');  
139 - $sheet->setCellValue('E1', '国家ip');  
140 - $sheet->setCellValue('F1', '深度访问页数');  
141 - $sheet->setCellValue('G1', '国家'); 193 + $sheet->setCellValue('A1', '公司名称');
  194 + $sheet->setCellValue('B1', '工单提交时间');
  195 + $sheet->setCellValue('C1', '工单内容');
  196 + $sheet->setCellValue('D1', '正式域名');
  197 + $sheet->setCellValue('E1', '测试域名');
  198 + $sheet->setCellValue('F1', '提交人');
  199 + $sheet->setCellValue('G1', '执行技术');
142 $rowCount = 2; 200 $rowCount = 2;
143 foreach ($data as $v) { 201 foreach ($data as $v) {
144 - $sheet->setCellValue('A' . $rowCount, $v['created_at']);  
145 - $sheet->setCellValue('B' . $rowCount, $v['referrer_url']);  
146 - $sheet->setCellValue('C' . $rowCount, $v['url']);  
147 - $sheet->setCellValue('D' . $rowCount, $v['device_text']);  
148 - $sheet->setCellValue('E' . $rowCount, $v['ip']);  
149 - $sheet->setCellValue('F' . $rowCount, $v['depth']);  
150 - $sheet->setCellValue('G' . $rowCount, $v['country']); 202 + foreach ($v['logs'] as $key => $value) {
  203 + if($value['is_engineer'] == 1){
  204 + $is_engineer = $value['engineer']['name'];
  205 + }
  206 + }
  207 + $sheet->setCellValue('A' . $rowCount, $v['project']['company_name']);
  208 + $sheet->setCellValue('B' . $rowCount, $v['created_at']);
  209 + $sheet->setCellValue('C' . $rowCount, $v['content']);
  210 + $sheet->setCellValue('D' . $rowCount, $v['project']['website']);
  211 + $sheet->setCellValue('E' . $rowCount, $v['project']['test_website']);
  212 + $sheet->setCellValue('F' . $rowCount, $v['submit_username']);
  213 + $sheet->setCellValue('G' . $rowCount, $is_engineer ?? '');
151 $rowCount++; 214 $rowCount++;
152 } 215 }
153 // 创建一个新的 Excel Writer 对象 216 // 创建一个新的 Excel Writer 对象
@@ -148,6 +148,10 @@ class AsideTicketController extends BaseController @@ -148,6 +148,10 @@ class AsideTicketController extends BaseController
148 if($item['project']['version'] != 5){ 148 if($item['project']['version'] != 5){
149 $item['project']['engineer_id_name'] = $manageModel->getName($item['project']['engineer_id'] ?? 0); 149 $item['project']['engineer_id_name'] = $manageModel->getName($item['project']['engineer_id'] ?? 0);
150 } 150 }
  151 + //自动登录v6
  152 + if($item['project']['project_cate'] == 6){
  153 + $item['autologin_code'] = getAutoLoginCode($item['project']['table_id']);
  154 + }
151 //计算超时多少个小时 155 //计算超时多少个小时
152 if($item['status'] == 0){ 156 if($item['status'] == 0){
153 $end = date('Y-m-d H:i:s'); 157 $end = date('Y-m-d H:i:s');