作者 赵彬吉
@@ -36,6 +36,7 @@ class RemainDay extends Command @@ -36,6 +36,7 @@ class RemainDay extends Command
36 */ 36 */
37 protected $ceaseProjectId = [ 37 protected $ceaseProjectId = [
38 354, 38 354,
  39 + 649,
39 1283 40 1283
40 ];//需要单独处理的项目 41 ];//需要单独处理的项目
41 /** 42 /**
@@ -94,16 +95,16 @@ class RemainDay extends Command @@ -94,16 +95,16 @@ class RemainDay extends Command
94 } 95 }
95 } 96 }
96 $item->remain_day = ($remain_day > 0 ? $remain_day : 0); 97 $item->remain_day = ($remain_day > 0 ? $remain_day : 0);
97 - if($item->remain_day == 0){  
98 - $item->extend_type = Project::TYPE_FIVE;  
99 - $item->site_status = Project::TYPE_ONE;//关闭站点  
100 - //TODO::未续费网站禁止登录及通知C端禁止网站  
101 - $domainModel = new DomainInfoModel();  
102 - $domainInfos = $domainModel->read(['project_id'=>$item->id]);  
103 - if($domainInfos !== false){  
104 - curl_get('https://'.$domainInfos['domain'].'/api/stop_or_start_website/');  
105 - }  
106 - } 98 +// if($item->remain_day == 0){
  99 +// $item->extend_type = Project::TYPE_FIVE;
  100 +// $item->site_status = Project::TYPE_ONE;//关闭站点
  101 +// //TODO::未续费网站禁止登录及通知C端禁止网站
  102 +// $domainModel = new DomainInfoModel();
  103 +// $domainInfos = $domainModel->read(['project_id'=>$item->id]);
  104 +// if($domainInfos !== false){
  105 +// curl_get('https://'.$domainInfos['domain'].'/api/stop_or_start_website/');
  106 +// }
  107 +// }
107 $item->save(); 108 $item->save();
108 } 109 }
109 } 110 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :CountAllProject.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/11/9 10:03
  8 + */
  9 +
  10 +namespace App\Console\Commands\Project;
  11 +
  12 +use App\Models\Channel\Channel;
  13 +use App\Models\Domain\DomainInfo;
  14 +use App\Models\Manage\ManageHr;
  15 +use App\Models\Project\Project;
  16 +use Illuminate\Console\Command;
  17 +use App\Models\Project\CountAllProject as AllProject;
  18 +
  19 +class CountAllProject extends Command
  20 +{
  21 + /**
  22 + * The name and signature of the console command.
  23 + *
  24 + * @var string
  25 + */
  26 + protected $signature = 'count_all_project';
  27 +
  28 + /**
  29 + * The console command description.
  30 + *
  31 + * @var string
  32 + */
  33 + protected $description = '统计所有项目设置';
  34 +
  35 +
  36 + public function handle(){
  37 + $noSixData = [];
  38 +// $noSixData = $this->NoSixProject();
  39 + $sixData = $this->sixProject();
  40 + $data = array_merge($noSixData,$sixData);
  41 + echo 'success:' .count($data) . PHP_EOL . date('Y-m-d H:i:s');
  42 + return true;
  43 + }
  44 +
  45 + /**
  46 + * @remark :5.0数据
  47 + * @name :NoSixProject
  48 + * @author :lyh
  49 + * @method :post
  50 + * @time :2024/11/11 15:21
  51 + */
  52 + public function NoSixProject(){
  53 + $res_data = [];
  54 + $i = 1;
  55 + while (true){
  56 + $url = 'https://quanqiusou.cn/extend_api/api/projects.php?page='.$i.'&pagesize=500';
  57 + $result = http_get($url);
  58 + $data = $result['data'];
  59 + if(empty($data)){
  60 + break;
  61 + }
  62 + $res_data = array_merge($res_data,$data['data']);
  63 + $i++;
  64 + }
  65 + return $res_data;
  66 + }
  67 +
  68 + public function sixProject(){
  69 + $projectModel = new Project();
  70 + $manageModel = new ManageHr();
  71 + $i = 1;
  72 + while (true){
  73 + $query = $projectModel->leftJoin('gl_project_payment', 'gl_project.id', '=', 'gl_project_payment.project_id')
  74 + ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
  75 + ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
  76 + ->where('gl_project.delete_status',Project::TYPE_ZERO);
  77 + $lists = $query->paginate(500, $this->selectParam(), 'page', $i)->toArray();
  78 + if(empty($lists) || empty($lists['list'])){
  79 + break;
  80 + }
  81 + foreach ($lists['list'] as $k => $v){
  82 + $data[] = [
  83 + 'project_id'=>$v['id'],
  84 + 'version'=>1,//代表6.0
  85 + 'is_upgrade'=>$v['is_upgrade'],
  86 + 'title'=>$v['title'],
  87 + 'company'=>$v['company'],
  88 + 'channel'=>Channel::getChannelText($v['channel']['user_id'] ?? 0),
  89 + 'join_date'=>$v['cooperate_date'],
  90 + 'online_date'=>$v['uptime'],
  91 + 'keywords_num'=>$v['key'],
  92 + 'service_num'=>$v['day'],
  93 + 'production_num'=>intval(abs(strtotime((empty($v['uptime']) ? date('Y-m-d H:i:s') : $v['uptime'])) - $v['created_at']) / 86400),
  94 + 'plan'=>Project::planMap()[$v['plan']],
  95 + 'status'=>$v['status'],
  96 + 'test_domain'=>$v['test_domain'],
  97 + 'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
  98 + 'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
  99 + 'project_group'=>$manageModel->getName($v['leader_mid'] ?? ''),
  100 + 'project_design'=>$manageModel->getName($v['designer_mid'] ?? ''),
  101 + 'project_assistant'=>$manageModel->getName($v['tech_mid'] ?? ''),
  102 + 'service_manager'=>$manageModel->getName($v['optimize_manager_mid'] ??''),
  103 + 'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
  104 + 'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
  105 + 'qa'=>$manageModel->getName($v['quality_mid'] ??''),
  106 + ];
  107 + }
  108 + $i++;
  109 + }
  110 + return $data;
  111 + }
  112 +
  113 + /**
  114 + * 需要查询的字段
  115 + * @return array
  116 + */
  117 + public function selectParam(){
  118 + $select = [
  119 + 'gl_project.id AS id',
  120 + 'gl_project.title AS title',
  121 + 'gl_project.channel AS channel',
  122 + 'gl_project.company AS company',
  123 + 'gl_project.type AS type',
  124 + 'gl_project.extend_type AS extend_type',
  125 + 'gl_project.uptime AS uptime',
  126 + 'gl_project.is_upgrade AS is_upgrade',
  127 + 'gl_project.created_at AS created_at',
  128 + 'gl_project.cooperate_date AS cooperate_date',
  129 + 'gl_project.site_status AS site_status',
  130 + 'gl_project_deploy_build.keyword_num AS key',
  131 + 'gl_project_deploy_build.service_duration AS day',
  132 + 'gl_project_deploy_build.is_comment AS is_comment',
  133 + 'gl_project_deploy_build.leader_mid AS leader_mid',
  134 + 'gl_project_deploy_build.manager_mid AS manager_mid',
  135 + 'gl_project_deploy_build.designer_mid AS designer_mid',
  136 + 'gl_project_deploy_build.tech_mid AS tech_mid',
  137 + 'gl_project_deploy_build.test_domain AS test_domain',
  138 + 'gl_project_deploy_build.plan AS plan',
  139 + 'gl_project_deploy_optimize.dept_id AS optimize_dept_id',
  140 + 'gl_project_deploy_optimize.manager_mid AS optimize_manager_mid',
  141 + 'gl_project_deploy_optimize.optimist_mid AS optimize_optimist_mid',
  142 + 'gl_project_deploy_optimize.assist_mid AS optimize_assist_mid',
  143 + 'gl_project_deploy_optimize.tech_mid AS optimize_tech_mid',
  144 + 'gl_project_deploy_optimize.tech_leader AS tech_leader',
  145 + 'gl_project_deploy_optimize.domain AS domain',
  146 + 'gl_project_deploy_optimize.api_no AS api_no',
  147 + ];
  148 + return $select;
  149 + }
  150 +
  151 + public function end_channel($channel){
  152 + $parts = explode("-", $channel);
  153 + return end($parts);
  154 + }
  155 +}
@@ -56,30 +56,43 @@ class UpdateRoute extends Command @@ -56,30 +56,43 @@ class UpdateRoute extends Command
56 * @time :2023/11/20 15:13 56 * @time :2023/11/20 15:13
57 */ 57 */
58 public function handle(){ 58 public function handle(){
59 - $recordModel = new ProcessRecords();  
60 - $lists = $recordModel->list();  
61 - foreach ($lists as $k => $v){  
62 - $date = $v['record'][0]['date'];  
63 - $recordModel->edit(['date'=>$date],['id'=>$v['id']]);  
64 - }  
65 -// $projectModel = new Project();  
66 -// $list = $projectModel->list(['delete_status'=>['=',0]]);  
67 -// $data = [];  
68 -// foreach ($list as $v){  
69 -// echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;  
70 -// ProjectServer::useProject($v['id']);  
71 -//// $this->getProduct();  
72 -//// $this->setProductKeyword();  
73 -//// $this->getBlog();  
74 -//// $this->setCustomRoute($v['id']);  
75 -// $this->editProductAlt();  
76 -//// $this->custom_to_blogs();  
77 -// DB::disconnect('custom_mysql');  
78 -// } 59 + $projectModel = new Project();
  60 + $list = $projectModel->list(['id'=>['=',475]]);
  61 + $data = [];
  62 + foreach ($list as $v){
  63 + echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
  64 + ProjectServer::useProject($v['id']);
  65 + $this->updateProduct();
  66 + DB::disconnect('custom_mysql');
  67 + }
79 echo date('Y-m-d H:i:s') . 'end' . PHP_EOL; 68 echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
80 } 69 }
81 70
82 /** 71 /**
  72 + * @remark :更新产品
  73 + * @name :updateProduct
  74 + * @author :lyh
  75 + * @method :post
  76 + * @time :2024/11/11 13:59
  77 + */
  78 + public function updateProduct(){
  79 + $productModel = new Product();
  80 + $list = $productModel->list(['created_at'=>['like','2024-11-11%']],'id',['id']);
  81 + $productModel->edit(['category_id'=>',14,'],['created_at'=>['like','2024-11-11%']]);
  82 + $data = [];
  83 + foreach ($list as $k => $v){
  84 + $data[] = [
  85 + 'product_id'=>$v['id'],
  86 + 'cate_id'=>14,
  87 + 'created_at'=>date('Y-m-d H:i:s'),
  88 + 'updated_at'=>date('Y-m-d H:i:s')
  89 + ];
  90 + }
  91 + $relaModel = new CategoryRelated();
  92 + $relaModel->insert($data);
  93 + }
  94 +
  95 + /**
83 * @remark :同步擴展模塊數據到blogs 96 * @remark :同步擴展模塊數據到blogs
84 * @name :custom_to_blogs 97 * @name :custom_to_blogs
85 * @author :lyh 98 * @author :lyh
@@ -863,6 +863,15 @@ function check_remote_url_down($url,$project_id,$domain,$is_complete=0){ @@ -863,6 +863,15 @@ function check_remote_url_down($url,$project_id,$domain,$is_complete=0){
863 $host_arr = explode('.',$host); 863 $host_arr = explode('.',$host);
864 $path = $arr['path'] ?? ''; 864 $path = $arr['path'] ?? '';
865 865
  866 + if(strpos($host_arr[0], 'cdn') !== false){
  867 + return $url;
  868 + }
  869 +
  870 + //475项目特殊处理
  871 + if($project_id == 475 && $host == 'www.ebuyplc.com'){
  872 + $host = 'g934.goodao.net';
  873 + }
  874 +
866 if($path && substr($path,0,1) != '/'){ 875 if($path && substr($path,0,1) != '/'){
867 $path = '/'.$path; 876 $path = '/'.$path;
868 } 877 }
@@ -371,6 +371,9 @@ class ProjectController extends BaseController @@ -371,6 +371,9 @@ class ProjectController extends BaseController
371 } 371 }
372 } 372 }
373 } 373 }
  374 + if(!empty($item['extend_type'])){
  375 + $item['type'] = $item['extend_type'];
  376 + }
374 $manageModel = new ManageHr(); 377 $manageModel = new ManageHr();
375 $item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0); 378 $item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0);
376 $item['build_leader'] = $manageModel->getName($item['leader_mid']); 379 $item['build_leader'] = $manageModel->getName($item['leader_mid']);
@@ -11,50 +11,159 @@ namespace App\Http\Controllers\Bside; @@ -11,50 +11,159 @@ namespace App\Http\Controllers\Bside;
11 11
12 use App\Enums\Common\Code; 12 use App\Enums\Common\Code;
13 use App\Http\Logic\Bside\News\NewsLogic; 13 use App\Http\Logic\Bside\News\NewsLogic;
  14 +use App\Models\Channel\Channel;
14 use App\Models\CustomModule\CustomModuleContent; 15 use App\Models\CustomModule\CustomModuleContent;
  16 +use App\Models\Domain\DomainInfo;
  17 +use App\Models\Manage\ManageHr;
  18 +use App\Models\Project\CountAllProject as AllProject;
  19 +use App\Models\Project\Project;
15 use App\Models\RouteMap\RouteMap; 20 use App\Models\RouteMap\RouteMap;
16 use App\Services\ProjectServer; 21 use App\Services\ProjectServer;
17 use Illuminate\Support\Facades\DB; 22 use Illuminate\Support\Facades\DB;
18 23
19 class TestController extends BaseController 24 class TestController extends BaseController
20 { 25 {
21 - public function ceshi(){  
22 - $test = '';  
23 - $pattern = '/<img\s+[^>]*src=["\']([^"\']+)["\']/i';  
24 - $matches = [];  
25 - preg_match_all($pattern, $test, $matches);  
26 - $updatedSources = $this->saveBase64Images($matches[1]);  
27 - foreach($updatedSources as $k => $v){  
28 - $test = str_replace($v, $k, $test);  
29 - }  
30 - $this->response('success',Code::SUCCESS,$test);  
31 - }  
32 -  
33 /** 26 /**
34 - * @remark :解码图片  
35 - * @name :saveBase64Images 27 + * @remark :非6.0拉取数据
  28 + * @name :NoSixProject
36 * @author :lyh 29 * @author :lyh
37 * @method :post 30 * @method :post
38 - * @time :2024/11/7 16:52 31 + * @time :2024/11/11 14:51
39 */ 32 */
40 - public function saveBase64Images($imageSources) {  
41 - $updatedSources = [];  
42 - foreach ($imageSources as $src) {  
43 - // Check if src is a base64 image  
44 - if (preg_match('/^data:image\/(png|jpg|jpeg|gif);base64,/', $src, $match)) {  
45 - $imageType = $match[1]; // Image type (png, jpg, etc.)  
46 - $base64Data = preg_replace('/^data:image\/(png|jpg|jpeg|gif);base64,/', '', $src);  
47 - $decodedData = base64_decode($base64Data);  
48 - if ($decodedData === false) {  
49 - $updatedSources[] = $src; // If decoding fails, keep original src  
50 - continue; 33 + public function ceshi(){
  34 + $data = $this->NoSixProject();
  35 + $this->response('success',Code::SUCCESS,$data);
  36 + }
  37 +
  38 + public function NoSixProject(){
  39 + $res_data = [];
  40 +// $i = 1;
  41 +// while (true){
  42 + $url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=200&pagesize=100';
  43 + $result = http_get($url);
  44 + $data = $result['data'];
  45 +// if(empty($data)){
  46 +// break;
  47 +// }
  48 +// $res_data = array_merge($res_data,$data['data']);
  49 +// $i++;
  50 +// }
  51 + return $data;
  52 + }
  53 +
  54 + public function SixProject(){
  55 + $projectModel = new Project();
  56 + $query = $projectModel->leftJoin('gl_project_payment', 'gl_project.id', '=', 'gl_project_payment.project_id')
  57 + ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
  58 + ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
  59 + ->where('gl_project.delete_status',Project::TYPE_ZERO);
  60 + $lists = $query->paginate(100000, $this->selectParam(), 'page', 1)->toArray();
  61 + $manageModel = new ManageHr();
  62 + foreach ($lists as $k => $v){
  63 + $allProjectModel = new AllProject();
  64 + $info = $allProjectModel->read(['version'=>1,'project_id'=>$v['id']],['id']);
  65 + if($info === false){
  66 + $channel = Channel::getChannelText($v['channel']['user_id'] ?? 0);
  67 + $data[] = [
  68 + 'project_id'=>$v['id'],
  69 + 'version'=>1,//代表6.0
  70 + 'is_upgrade'=>$v['is_upgrade'],
  71 + 'title'=>$v['title'],
  72 + 'company'=>$v['company'],
  73 + 'channel'=>$channel,
  74 + 'sale'=>$this->end_channel($channel),
  75 + 'join_date'=>$v['cooperate_date'],
  76 + 'online_date'=>$v['uptime'],
  77 + 'keywords_num'=>$v['key'],
  78 + 'service_num'=>$v['day'],
  79 + 'production_num'=>intval(abs(strtotime((empty($v['uptime']) ? date('Y-m-d H:i:s') : $v['uptime'])) - $v['created_at']) / 86400),
  80 + 'plan'=>Project::planMap()[$v['plan']],
  81 + 'status'=>$v['status'],
  82 + 'test_domain'=>$v['test_domain'],
  83 + 'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
  84 + 'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
  85 + 'project_group'=>$manageModel->getName($v['leader_mid'] ?? ''),
  86 + 'project_design'=>$manageModel->getName($v['designer_mid'] ?? ''),
  87 + 'project_assistant'=>$manageModel->getName($v['tech_mid'] ?? ''),
  88 + 'service_manager'=>$manageModel->getName($v['optimize_manager_mid'] ??''),
  89 + 'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
  90 + 'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
  91 + 'qa'=>$manageModel->getName($v['quality_mid'] ??''),
  92 + ];
  93 + $allProjectModel->add($data);
  94 + }else{
  95 + $data_edit = [
  96 + 'title'=>$v['title'],
  97 + 'company'=>$v['company'],
  98 + 'channel'=>Channel::getChannelText($v['channel']['user_id'] ?? 0),
  99 + 'sale'=>$this->end_channel($channel),
  100 + 'join_date'=>$v['cooperate_date'],
  101 + 'online_date'=>$v['uptime'],
  102 + 'keywords_num'=>$v['key'],
  103 + 'service_num'=>$v['day'],
  104 + 'production_num'=>intval(abs(strtotime((empty($v['uptime']) ? date('Y-m-d H:i:s') : $v['uptime'])) - $v['created_at']) / 86400),
  105 + 'plan'=>Project::planMap()[$v['plan']],
  106 + 'status'=>$v['status'],
  107 + 'test_domain'=>$v['test_domain'],
  108 + 'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
  109 + 'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
  110 + 'project_group'=>$manageModel->getName($v['leader_mid'] ?? ''),
  111 + 'project_design'=>$manageModel->getName($v['designer_mid'] ?? ''),
  112 + 'project_assistant'=>$manageModel->getName($v['tech_mid'] ?? ''),
  113 + 'service_manager'=>$manageModel->getName($v['optimize_manager_mid'] ??''),
  114 + 'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
  115 + 'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
  116 + 'qa'=>$manageModel->getName($v['quality_mid'] ??''),
  117 + ];
  118 + $allProjectModel->edit($data_edit,['id'=>$info['id']]);
51 } 119 }
52 - $outputFile = 'images' . uniqid() . '.' . $imageType;  
53 - $imageUrl = 'http://your-domain.com/' . $outputFile;  
54 - $updatedSources[$imageUrl] = $src; 120 +
55 } 121 }
56 } 122 }
57 - return $updatedSources;  
58 -}  
59 123
  124 + /**
  125 + * 需要查询的字段
  126 + * @return array
  127 + */
  128 + public function selectParam(){
  129 + $select = [
  130 + 'gl_project.id AS id',
  131 + 'gl_project.title AS title',
  132 + 'gl_project.channel AS channel',
  133 + 'gl_project.company AS company',
  134 + 'gl_project.type AS type',
  135 + 'gl_project.extend_type AS extend_type',
  136 + 'gl_project.uptime AS uptime',
  137 + 'gl_project.is_upgrade AS is_upgrade',
  138 + 'gl_project.created_at AS created_at',
  139 + 'gl_project.cooperate_date AS cooperate_date',
  140 + 'gl_project.site_status AS site_status',
  141 + 'gl_project_deploy_build.keyword_num AS key',
  142 + 'gl_project_deploy_build.service_duration AS day',
  143 + 'gl_project_deploy_build.is_comment AS is_comment',
  144 + 'gl_project_deploy_build.leader_mid AS leader_mid',
  145 + 'gl_project_deploy_build.manager_mid AS manager_mid',
  146 + 'gl_project_deploy_build.designer_mid AS designer_mid',
  147 + 'gl_project_deploy_build.tech_mid AS tech_mid',
  148 + 'gl_project_deploy_build.test_domain AS test_domain',
  149 + 'gl_project_deploy_build.plan AS plan',
  150 + 'gl_project_deploy_optimize.dept_id AS optimize_dept_id',
  151 + 'gl_project_deploy_optimize.manager_mid AS optimize_manager_mid',
  152 + 'gl_project_deploy_optimize.optimist_mid AS optimize_optimist_mid',
  153 + 'gl_project_deploy_optimize.assist_mid AS optimize_assist_mid',
  154 + 'gl_project_deploy_optimize.tech_mid AS optimize_tech_mid',
  155 + 'gl_project_deploy_optimize.tech_leader AS tech_leader',
  156 + 'gl_project_deploy_optimize.domain AS domain',
  157 + 'gl_project_deploy_optimize.api_no AS api_no',
  158 + ];
  159 + return $select;
  160 + }
  161 +
  162 + public function end_channel($channel){
  163 + if(!empty($channel)){
  164 + $parts = explode("-", $channel);
  165 + return end($parts);
  166 + }
  167 + return $channel;
  168 + }
60 } 169 }
@@ -68,19 +68,21 @@ class RenewLogic extends BaseLogic @@ -68,19 +68,21 @@ class RenewLogic extends BaseLogic
68 * @time :2023/9/19 10:21 68 * @time :2023/9/19 10:21
69 */ 69 */
70 public function editProjectRenew(){ 70 public function editProjectRenew(){
71 - //获取续费单详情  
72 - $info = $this->model->read(['id'=>$this->param['renew_id']]);  
73 - if($info === false){  
74 - $this->fail('当前续费单不存在');  
75 - }  
76 - if($info['project_id'] != 0){  
77 - $this->fail('当前续费单已关联项目,请重新选择'); 71 + if($this->param['renew_id'] != 0){
  72 + //获取续费单详情
  73 + $info = $this->model->read(['id'=>$this->param['renew_id']]);
  74 + if($info === false){
  75 + $this->fail('当前续费单不存在');
  76 + }
  77 + if($info['project_id'] != 0){
  78 + $this->fail('当前续费单已关联项目,请重新选择');
  79 + }
78 } 80 }
79 DB::beginTransaction(); 81 DB::beginTransaction();
80 try { 82 try {
81 $this->model->edit(['project_id'=>$this->param['id'],'operator_id'=>$this->manager['id']],['id'=>$this->param['renew_id']]); 83 $this->model->edit(['project_id'=>$this->param['id'],'operator_id'=>$this->manager['id']],['id'=>$this->param['renew_id']]);
82 $param = $this->param; 84 $param = $this->param;
83 - $param['api_no'] = $info['api_no']; 85 + $param['api_no'] = $info['api_no'] ?? 0;
84 $this->saveLog($param); 86 $this->saveLog($param);
85 $this->updateProject($this->param['id'],$this->param['type']); 87 $this->updateProject($this->param['id'],$this->param['type']);
86 $this->updateProjectBuild($this->param['id'],$this->param['service_duration'],$this->param['plan']); 88 $this->updateProjectBuild($this->param['id'],$this->param['service_duration'],$this->param['plan']);
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :CountAllProject.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/11/11 10:36
  8 + */
  9 +
  10 +namespace App\Models\Project;
  11 +
  12 +use App\Models\Base;
  13 +
  14 +class CountAllProject extends Base
  15 +{
  16 + protected $table = 'gl_count_all_project';
  17 +}