作者 lyh

Merge branch 'develop' of http://47.244.231.31:8099/zhl/globalso-v6

@@ -6,6 +6,7 @@ use App\Http\Logic\Bside\Blog\BlogLogic; @@ -6,6 +6,7 @@ use App\Http\Logic\Bside\Blog\BlogLogic;
6 use App\Http\Logic\Bside\News\NewsLogic; 6 use App\Http\Logic\Bside\News\NewsLogic;
7 use App\Http\Logic\Bside\Product\ProductLogic; 7 use App\Http\Logic\Bside\Product\ProductLogic;
8 use App\Models\Import\ImportTask; 8 use App\Models\Import\ImportTask;
  9 +use App\Models\Mail\Mail;
9 use App\Services\ProjectServer; 10 use App\Services\ProjectServer;
10 use Illuminate\Console\Command; 11 use Illuminate\Console\Command;
11 use Illuminate\Support\Facades\DB; 12 use Illuminate\Support\Facades\DB;
@@ -56,6 +57,8 @@ class ProjectImport extends Command @@ -56,6 +57,8 @@ class ProjectImport extends Command
56 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import fail, error: 文件编码格式错误' . PHP_EOL; 57 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import fail, error: 文件编码格式错误' . PHP_EOL;
57 $task->status = ImportTask::STATUS_COM;//导入完成 58 $task->status = ImportTask::STATUS_COM;//导入完成
58 $task->save(); 59 $task->save();
  60 +
  61 + $this->send_mail($task->user_id, $task->created_at, $task->type, 0, 0, '文件编码格式错误,仅支持UTF-8和GBK编码格式');
59 return true; 62 return true;
60 } elseif ($file_code_type === 'GBK') { 63 } elseif ($file_code_type === 'GBK') {
61 $is_gbk = 1; 64 $is_gbk = 1;
@@ -74,11 +77,14 @@ class ProjectImport extends Command @@ -74,11 +77,14 @@ class ProjectImport extends Command
74 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import fail, error: ' . $e->getMessage() . PHP_EOL; 77 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import fail, error: ' . $e->getMessage() . PHP_EOL;
75 $task->status = ImportTask::STATUS_COM;//导入完成 78 $task->status = ImportTask::STATUS_COM;//导入完成
76 $task->save(); 79 $task->save();
  80 +
  81 + $this->send_mail($task->user_id, $task->created_at, $task->type, 0, 0, '读取文件数据失败');
77 return true; 82 return true;
78 } 83 }
79 84
80 $total_count = 0; //总条数 85 $total_count = 0; //总条数
81 - $success_count = 0; //成功导入条数 86 + $success_count = 0; //成功导入条数
  87 + $repeat_count = 0; //过滤已存在条数
82 if (count($line_of_text) > 1) { 88 if (count($line_of_text) > 1) {
83 $task->status = ImportTask::STATUS_ING;//导入中 89 $task->status = ImportTask::STATUS_ING;//导入中
84 $task->save(); 90 $task->save();
@@ -100,14 +106,20 @@ class ProjectImport extends Command @@ -100,14 +106,20 @@ class ProjectImport extends Command
100 if ($task->type == ImportTask::TYPE_NEWS) { 106 if ($task->type == ImportTask::TYPE_NEWS) {
101 if ((new NewsLogic())->importNews($task->project_id, $task->user_id, $v)) { 107 if ((new NewsLogic())->importNews($task->project_id, $task->user_id, $v)) {
102 $success_count += 1; 108 $success_count += 1;
  109 + } else {
  110 + $repeat_count += 1;
103 } 111 }
104 } elseif ($task->type == ImportTask::TYPE_BLOG) { 112 } elseif ($task->type == ImportTask::TYPE_BLOG) {
105 if ((new BlogLogic())->importBlog($task->project_id, $task->user_id, $v)) { 113 if ((new BlogLogic())->importBlog($task->project_id, $task->user_id, $v)) {
106 $success_count += 1; 114 $success_count += 1;
  115 + } else {
  116 + $repeat_count += 1;
107 } 117 }
108 } else { 118 } else {
109 if ((new ProductLogic())->importProduct($task->project_id, $task->user_id, $v)) { 119 if ((new ProductLogic())->importProduct($task->project_id, $task->user_id, $v)) {
110 $success_count += 1; 120 $success_count += 1;
  121 + } else {
  122 + $repeat_count += 1;
111 } 123 }
112 } 124 }
113 } catch (\Exception $e) { 125 } catch (\Exception $e) {
@@ -125,13 +137,15 @@ class ProjectImport extends Command @@ -125,13 +137,15 @@ class ProjectImport extends Command
125 $task->success_count += $success_count; 137 $task->success_count += $success_count;
126 $task->save(); 138 $task->save();
127 139
  140 + $this->send_mail($task->user_id, $task->created_at, $task->type, $success_count, $repeat_count, '');
  141 +
128 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import end, total count: ' . $total_count . ', success count: ' . $success_count . PHP_EOL; 142 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import end, total count: ' . $total_count . ', success count: ' . $success_count . PHP_EOL;
129 143
130 sleep(2); 144 sleep(2);
131 } 145 }
132 146
133 //判断编码格式 147 //判断编码格式
134 - function get_code_type($file) 148 + protected function get_code_type($file)
135 { 149 {
136 $list = array('GBK', 'UTF-8'); 150 $list = array('GBK', 'UTF-8');
137 $str = file_get_contents($file); 151 $str = file_get_contents($file);
@@ -143,4 +157,27 @@ class ProjectImport extends Command @@ -143,4 +157,27 @@ class ProjectImport extends Command
143 } 157 }
144 return false; 158 return false;
145 } 159 }
  160 +
  161 + //发生站内通知
  162 + protected function send_mail($user_list, $time, $type, $success_count, $repeat_count, $reason)
  163 + {
  164 + if ($type == ImportTask::TYPE_NEWS) {
  165 + $type_content = '新闻';
  166 + } elseif ($type == ImportTask::TYPE_BLOG) {
  167 + $type_content = '博客';
  168 + } else {
  169 + $type_content = '产品';
  170 + }
  171 + $title = '导入结果通知';
  172 + $content = '您于 ' . $time . ' 添加的 ' . $type_content . ' 导入任务已执行完成, 成功导入数据:' . $success_count . ' 条';
  173 + $repeat_count && $content .= ',过滤已存在数据:' . $repeat_count . ' 条';
  174 + $reason && $content .= ',原因:' . $reason;
  175 +
  176 + $mail_model = new Mail();
  177 + $mail_model->add([
  178 + 'user_list' => $mail_model->setUserList($user_list),
  179 + 'title' => $title,
  180 + 'content' => $content
  181 + ]);
  182 + }
146 } 183 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :ImportChannel.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2023/9/25 15:31
  8 + */
  9 +
  10 +namespace App\Console\Commands;
  11 +use App\Helper\OaGlobalsoApi;
  12 +use App\Models\Channel\Channel;
  13 +use App\Models\Project\Project;
  14 +use Illuminate\Console\Command;
  15 +class ImportChannel extends Command
  16 +{
  17 + /**
  18 + * The name and signature of the console command.
  19 + *
  20 + * @var string
  21 + */
  22 + protected $signature = 'import_channel';
  23 +
  24 + /**
  25 + * The console command description.
  26 + *
  27 + * @var string
  28 + */
  29 + protected $description = '更新渠道信息';
  30 +
  31 + /**
  32 + * @remark :导入5.0管理员数据
  33 + * @name :handle
  34 + * @author :lyh
  35 + * @method :post
  36 + * @time :2023/8/7 17:49
  37 + */
  38 + public function handle(){
  39 + $projectModel = new Project();
  40 + $map = [
  41 + 'channel'=>['like','%"user_id": "0"%'],
  42 + ];
  43 + $lists = $projectModel->list($map);
  44 +// var_dump($lists);
  45 +// die();
  46 + foreach ($lists as $k => $v){
  47 + $order_id = $v['notice_order_id'];
  48 + $api = new OaGlobalsoApi();
  49 + $data = $api->order_info($order_id);
  50 + $data = $data['data'];
  51 + $channel = Channel::getProjectChannel($data['company_id'], $data['username_sales']);
  52 + $projectModel->edit(['channel'=>$channel],['id'=>$v['id']]);
  53 + }
  54 + return 1;
  55 + }
  56 +}
@@ -75,8 +75,6 @@ class OptimizeController extends BaseController @@ -75,8 +75,6 @@ class OptimizeController extends BaseController
75 $item['keyword_num'] = $item['key'] ?? 0; 75 $item['keyword_num'] = $item['key'] ?? 0;
76 $item['autologin_code'] = getAutoLoginCode($item['id']); 76 $item['autologin_code'] = getAutoLoginCode($item['id']);
77 // $item['article_num'] = ($data['blog'] ?? 0) + ($data['news'] ?? 0); 77 // $item['article_num'] = ($data['blog'] ?? 0) + ($data['news'] ?? 0);
78 -// $item['task_finish_num'] = Task::getNumByProjectId($item['id'], Task::STATUS_DOWN);  
79 -// $item['task_pending_num'] = Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]);  
80 return $item; 78 return $item;
81 } 79 }
82 /** 80 /**
@@ -122,6 +120,7 @@ class OptimizeController extends BaseController @@ -122,6 +120,7 @@ class OptimizeController extends BaseController
122 'gl_project_deploy_optimize.domain AS domain', 120 'gl_project_deploy_optimize.domain AS domain',
123 'gl_project_deploy_optimize.quality_mid AS quality_mid', 121 'gl_project_deploy_optimize.quality_mid AS quality_mid',
124 'gl_project_deploy_optimize.design_mid AS design_mid', 122 'gl_project_deploy_optimize.design_mid AS design_mid',
  123 + 'gl_project_deploy_optimize.special AS special',
125 ]; 124 ];
126 return $select; 125 return $select;
127 } 126 }
@@ -135,9 +134,39 @@ class OptimizeController extends BaseController @@ -135,9 +134,39 @@ class OptimizeController extends BaseController
135 */ 134 */
136 public function searchParam(&$query){ 135 public function searchParam(&$query){
137 //搜索条件处理 136 //搜索条件处理
138 - if(isset($this->map['title'])){ 137 + if(isset($this->map['title']) && !empty($this->map['title'])){
139 $query = $query->where('gl_project.title','like','%'.$this->map['title'].'%'); 138 $query = $query->where('gl_project.title','like','%'.$this->map['title'].'%');
140 } 139 }
  140 + if(isset($this->map['special']) && !empty($this->map['special'])){
  141 + $query = $query->where('gl_project_deploy_optimize.special','like','%'.$this->map['special'].'%');
  142 + }
  143 + if(isset($this->map['manager_mid']) && !empty($this->map['manager_mid'])){
  144 + $query = $query->where('gl_project_deploy_build.manager_mid','like','%'.$this->map['manager_mid'].'%');
  145 + }
  146 + if(isset($this->map['optimize_manager_mid']) && !empty($this->map['optimize_manager_mid'])){
  147 + $query = $query->where('gl_project_deploy_optimize.manager_mid','like','%'.$this->map['optimize_manager_mid'].'%');
  148 + }
  149 + if(isset($this->map['optimize_tech_mid']) && !empty($this->map['optimize_tech_mid'])){
  150 + $query = $query->where('gl_project_deploy_optimize.tech_mid','like','%'.$this->map['optimize_tech_mid'].'%');
  151 + }
  152 + if(isset($this->map['optimize_optimist_mid']) && !empty($this->map['optimize_optimist_mid'])){
  153 + $query = $query->where('gl_project_deploy_optimize.optimist_mid','like','%'.$this->map['optimize_optimist_mid'].'%');
  154 + }
  155 + if(isset($this->map['optimize_assist_mid']) && !empty($this->map['optimize_assist_mid'])){
  156 + $query = $query->where('gl_project_deploy_optimize.assist_mid','like','%'.$this->map['optimize_assist_mid'].'%');
  157 + }
  158 + if(isset($this->map['user_id']) && !empty($this->map['user_id'])){
  159 + $query->where(function ($subQuery) {
  160 + $subQuery->orWhere('gl_project.channel','like','%"user_id": "'.$this->map['user_id'].'"%')
  161 + ->orWhere('gl_project.channel','like','%"user_id": '.$this->map['user_id'].'%');
  162 + });
  163 + }
  164 + if(isset($this->map['domain']) && !empty($this->map['domain'])){
  165 + $query = $query->where('gl_project_deploy_optimize.domain','like','%'.$this->map['domain'].'%');
  166 + }
  167 + if(isset($this->map['test_domain']) && !empty($this->map['test_domain'])){
  168 + $query = $query->where('gl_project_deploy_build.test_domain','like','%'.$this->map['test_domain'].'%');
  169 + }
141 $query = $query->whereIn('gl_project.type',[2,4]);//TODO::2,4代表优化项目 170 $query = $query->whereIn('gl_project.type',[2,4]);//TODO::2,4代表优化项目
142 return $query; 171 return $query;
143 } 172 }
@@ -48,9 +48,9 @@ class Channel extends Model @@ -48,9 +48,9 @@ class Channel extends Model
48 $user['id'] = $userModel->addReturnId($data); 48 $user['id'] = $userModel->addReturnId($data);
49 } 49 }
50 return [ 50 return [
51 - 'zone_id' => $channel['zone_id'] ?? 0,  
52 - 'channel_id' => $channel['id'] ?? 0,  
53 - 'user_id' => $user['id'] ?? 0, 51 + 'zone_id' => (string)$channel['zone_id'] ?? 0,
  52 + 'channel_id' => (string)$channel['id'] ?? 0,
  53 + 'user_id' => (string)$user['id'] ?? 0,
54 ]; 54 ];
55 } 55 }
56 56