Merge branch 'develop' of 47.244.231.31:zhl/globalso-v6 into develop
正在显示
45 个修改的文件
包含
713 行增加
和
202 行删除
| @@ -4,12 +4,15 @@ namespace App\Console\Commands\DayCount; | @@ -4,12 +4,15 @@ namespace App\Console\Commands\DayCount; | ||
| 4 | 4 | ||
| 5 | use App\Helper\Common; | 5 | use App\Helper\Common; |
| 6 | use App\Helper\FormGlobalsoApi; | 6 | use App\Helper\FormGlobalsoApi; |
| 7 | +use App\Models\Domain\DomainInfo; | ||
| 7 | use App\Models\Project\DeployBuild; | 8 | use App\Models\Project\DeployBuild; |
| 8 | use App\Models\Project\DeployOptimize; | 9 | use App\Models\Project\DeployOptimize; |
| 9 | use App\Models\Project\Project; | 10 | use App\Models\Project\Project; |
| 11 | +use App\Services\ProjectServer; | ||
| 10 | use Carbon\Carbon; | 12 | use Carbon\Carbon; |
| 11 | use Illuminate\Console\Command; | 13 | use Illuminate\Console\Command; |
| 12 | use Illuminate\Support\Facades\DB; | 14 | use Illuminate\Support\Facades\DB; |
| 15 | +use Illuminate\Support\Facades\Log; | ||
| 13 | 16 | ||
| 14 | class Count extends Command | 17 | class Count extends Command |
| 15 | { | 18 | { |
| @@ -28,6 +31,7 @@ class Count extends Command | @@ -28,6 +31,7 @@ class Count extends Command | ||
| 28 | * @var string | 31 | * @var string |
| 29 | */ | 32 | */ |
| 30 | protected $description = '统计昨日数据'; | 33 | protected $description = '统计昨日数据'; |
| 34 | + | ||
| 31 | /** | 35 | /** |
| 32 | * @name :(定时执行生成昨日数据统计)handle | 36 | * @name :(定时执行生成昨日数据统计)handle |
| 33 | * @author :lyh | 37 | * @author :lyh |
| @@ -39,35 +43,51 @@ class Count extends Command | @@ -39,35 +43,51 @@ class Count extends Command | ||
| 39 | $list = DB::table('gl_project')->where('gl_project.extend_type','!=',5) | 43 | $list = DB::table('gl_project')->where('gl_project.extend_type','!=',5) |
| 40 | ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id') | 44 | ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id') |
| 41 | ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id') | 45 | ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id') |
| 42 | - ->select($this->selectParam())->get()->toArray(); | ||
| 43 | - $data = []; | ||
| 44 | - $yesterday = Carbon::yesterday()->toDateString(); | ||
| 45 | - foreach ($list as $v){ | ||
| 46 | - $v = (array)$v; | ||
| 47 | - if($v['domain'] != ''){ | ||
| 48 | - $v['test_domain'] = $v['domain']; | 46 | + ->select($this->selectParam())->get(); |
| 47 | + try { | ||
| 48 | + if(!empty($list)){ | ||
| 49 | + $list = $list->toArray(); | ||
| 50 | + $data = []; | ||
| 51 | + $yesterday = Carbon::yesterday()->toDateString(); | ||
| 52 | + $domainInfo = new DomainInfo(); | ||
| 53 | + foreach ($list as $v){ | ||
| 54 | + $v = (array)$v; | ||
| 55 | + if($v['type'] == Project::TYPE_ZERO){ | ||
| 56 | + continue; | ||
| 57 | + } | ||
| 58 | + if(!empty($v['domain'])){ | ||
| 59 | + $info = $domainInfo->read(['id'=>$v['domain']]); | ||
| 60 | + if($info !== false){ | ||
| 61 | + $v['test_domain'] = $info['domain']; | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + $arr = []; | ||
| 65 | + //统计时间 | ||
| 66 | + $arr['date'] = $yesterday; | ||
| 67 | + ProjectServer::useProject($v['id']); | ||
| 68 | + //pv统计 | ||
| 69 | + $arr['pv_num'] = $this->pv_num($yesterday,$v['test_domain']); | ||
| 70 | + //ip统计 | ||
| 71 | + $arr['ip_num'] = $this->ip_num($yesterday,$v['test_domain']); | ||
| 72 | + DB::disconnect('custom_mysql'); | ||
| 73 | + //服务达标天数 | ||
| 74 | + $arr['compliance_day'] = $this->compliance_day($v['id']); | ||
| 75 | + //剩余服务时常 | ||
| 76 | + $arr['service_day'] = $v['remain_day']; | ||
| 77 | + //项目id | ||
| 78 | + $arr['project_id'] = $v['project_id']; | ||
| 79 | + $arr['created_at'] = date('Y-m-d H:i:s'); | ||
| 80 | + $arr['updated_at'] = date('Y-m-d H:i:s'); | ||
| 81 | + //询盘统计 | ||
| 82 | + $arr = $this->inquiry($arr,$v['test_domain']); | ||
| 83 | + $data[] = $arr; | ||
| 84 | + } | ||
| 85 | + //判断数据是否存在 | ||
| 86 | + DB::table('gl_count')->insert($data); | ||
| 49 | } | 87 | } |
| 50 | - $arr = []; | ||
| 51 | - //统计时间 | ||
| 52 | - $arr['date'] = $yesterday; | ||
| 53 | - //pv统计 | ||
| 54 | - $arr['pv_num'] = $this->pv_num($yesterday,$v['test_domain']); | ||
| 55 | - //ip统计 | ||
| 56 | - $arr['ip_num'] = $this->ip_num($yesterday,$v['test_domain']); | ||
| 57 | - //服务达标天数 | ||
| 58 | - $arr['compliance_day'] = $this->compliance_day($v['test_domain']); | ||
| 59 | - //剩余服务时常 | ||
| 60 | - $arr['service_day'] = ((int)$v['service_duration'] - (int)$arr['compliance_day']) > 0 ? ((int)$v['service_duration'] - (int)$arr['compliance_day']) : 0; | ||
| 61 | - //项目id | ||
| 62 | - $arr['project_id'] = $v['project_id']; | ||
| 63 | - $arr['created_at'] = date('Y-m-d H:i:s'); | ||
| 64 | - $arr['updated_at'] = date('Y-m-d H:i:s'); | ||
| 65 | - //询盘统计 | ||
| 66 | - $arr = $this->inquiry($arr,$v['test_domain']); | ||
| 67 | - $data[] = $arr; | 88 | + }catch (\Exception $e){ |
| 89 | + Log::error('同步数据执行失败'); | ||
| 68 | } | 90 | } |
| 69 | - //判断数据是否存在 | ||
| 70 | - DB::table('gl_count')->insert($data); | ||
| 71 | echo $this->error; | 91 | echo $this->error; |
| 72 | } | 92 | } |
| 73 | 93 | ||
| @@ -78,7 +98,7 @@ class Count extends Command | @@ -78,7 +98,7 @@ class Count extends Command | ||
| 78 | * @time :2023/6/14 15:40 | 98 | * @time :2023/6/14 15:40 |
| 79 | */ | 99 | */ |
| 80 | public function pv_num($yesterday,$domain){ | 100 | public function pv_num($yesterday,$domain){ |
| 81 | - $pv = DB::table('gl_customer_visit_item')->whereDate('updated_date', $yesterday)->where('domain',$domain)->count(); | 101 | + $pv = DB::connection('custom_mysql')->table('gl_customer_visit_item')->whereDate('updated_date', $yesterday)->where('domain',$domain)->count(); |
| 82 | return $pv; | 102 | return $pv; |
| 83 | } | 103 | } |
| 84 | 104 | ||
| @@ -89,7 +109,7 @@ class Count extends Command | @@ -89,7 +109,7 @@ class Count extends Command | ||
| 89 | * @time :2023/6/14 15:40 | 109 | * @time :2023/6/14 15:40 |
| 90 | */ | 110 | */ |
| 91 | public function ip_num($yesterday,$domain){ | 111 | public function ip_num($yesterday,$domain){ |
| 92 | - $ip = DB::table('gl_customer_visit')->whereDate('updated_date', $yesterday)->where('domain',$domain)->count(); | 112 | + $ip = DB::connection('custom_mysql')->table('gl_customer_visit')->whereDate('updated_date', $yesterday)->where('domain',$domain)->count(); |
| 93 | return $ip; | 113 | return $ip; |
| 94 | } | 114 | } |
| 95 | 115 | ||
| @@ -150,8 +170,10 @@ class Count extends Command | @@ -150,8 +170,10 @@ class Count extends Command | ||
| 150 | */ | 170 | */ |
| 151 | public function selectParam(){ | 171 | public function selectParam(){ |
| 152 | $select = [ | 172 | $select = [ |
| 153 | - 'gl_project.id AS user_id', | 173 | + 'gl_project.id AS id', |
| 174 | + 'gl_project.type AS type', | ||
| 154 | 'gl_project.extend_type AS extend_type', | 175 | 'gl_project.extend_type AS extend_type', |
| 176 | + 'gl_project.remain_day AS remain_day', | ||
| 155 | 'gl_project_deploy_build.test_domain AS test_domain', | 177 | 'gl_project_deploy_build.test_domain AS test_domain', |
| 156 | 'gl_project_deploy_optimize.domain AS domain', | 178 | 'gl_project_deploy_optimize.domain AS domain', |
| 157 | 'gl_project_deploy_build.project_id AS project_id', | 179 | 'gl_project_deploy_build.project_id AS project_id', |
| @@ -3,6 +3,9 @@ | @@ -3,6 +3,9 @@ | ||
| 3 | namespace App\Console\Commands\MonthlyCount; | 3 | namespace App\Console\Commands\MonthlyCount; |
| 4 | 4 | ||
| 5 | use App\Helper\FormGlobalsoApi; | 5 | use App\Helper\FormGlobalsoApi; |
| 6 | +use App\Models\Domain\DomainInfo; | ||
| 7 | +use App\Models\Project\Project; | ||
| 8 | +use App\Services\ProjectServer; | ||
| 6 | use Carbon\Carbon; | 9 | use Carbon\Carbon; |
| 7 | use Illuminate\Console\Command; | 10 | use Illuminate\Console\Command; |
| 8 | use Illuminate\Support\Facades\DB; | 11 | use Illuminate\Support\Facades\DB; |
| @@ -41,16 +44,25 @@ class InquiryMonthlyCount extends Command | @@ -41,16 +44,25 @@ class InquiryMonthlyCount extends Command | ||
| 41 | $startTime = Carbon::now()->subMonth()->startOfMonth()->toDateString(); | 44 | $startTime = Carbon::now()->subMonth()->startOfMonth()->toDateString(); |
| 42 | // 获取上个月的结束时间 | 45 | // 获取上个月的结束时间 |
| 43 | $endTime = Carbon::now()->subMonth()->endOfMonth()->toDateString(); | 46 | $endTime = Carbon::now()->subMonth()->endOfMonth()->toDateString(); |
| 47 | + $domainInfo = new DomainInfo(); | ||
| 44 | foreach ($list as $value){ | 48 | foreach ($list as $value){ |
| 45 | $value = (array)$value; | 49 | $value = (array)$value; |
| 46 | - if($value['domain'] != ''){ | ||
| 47 | - $value['test_domain'] = $value['domain']; | 50 | + if($value['type'] == Project::TYPE_ZERO){ |
| 51 | + continue; | ||
| 52 | + } | ||
| 53 | + if(!empty($value['domain'])){ | ||
| 54 | + $info = $domainInfo->read(['id'=>$value['domain']]); | ||
| 55 | + if($info !== false){ | ||
| 56 | + $value['test_domain'] = $value['domain']; | ||
| 57 | + } | ||
| 48 | } | 58 | } |
| 49 | $arr = []; | 59 | $arr = []; |
| 50 | //按月统计询盘记录 | 60 | //按月统计询盘记录 |
| 51 | $arr = $this->inquiryCount($arr,$startTime,$endTime,$value['test_domain']); | 61 | $arr = $this->inquiryCount($arr,$startTime,$endTime,$value['test_domain']); |
| 52 | $arr = $this->flowCount($arr,$startTime,$endTime,$value['project_id']); | 62 | $arr = $this->flowCount($arr,$startTime,$endTime,$value['project_id']); |
| 63 | + ProjectServer::useProject($value['project_id']); | ||
| 53 | $arr = $this->sourceCount($arr,$value['test_domain'],$startTime,$endTime); | 64 | $arr = $this->sourceCount($arr,$value['test_domain'],$startTime,$endTime); |
| 65 | + DB::disconnect('custom_mysql'); | ||
| 54 | $arr['created_at'] = date('Y-m-d H:i:s'); | 66 | $arr['created_at'] = date('Y-m-d H:i:s'); |
| 55 | $arr['updated_at'] = date('Y-m-d H:i:s'); | 67 | $arr['updated_at'] = date('Y-m-d H:i:s'); |
| 56 | $arr['project_id'] = $value['project_id']; | 68 | $arr['project_id'] = $value['project_id']; |
| @@ -128,21 +140,21 @@ class InquiryMonthlyCount extends Command | @@ -128,21 +140,21 @@ class InquiryMonthlyCount extends Command | ||
| 128 | */ | 140 | */ |
| 129 | public function sourceCount(&$arr,$domain,$startTime,$endTime){ | 141 | public function sourceCount(&$arr,$domain,$startTime,$endTime){ |
| 130 | //访问来源前10 | 142 | //访问来源前10 |
| 131 | - $source = DB::table('gl_customer_visit') | 143 | + $source = DB::connection('custom_mysql')->table('gl_customer_visit') |
| 132 | ->select('referrer_url', DB::raw('COUNT(*) as count')) | 144 | ->select('referrer_url', DB::raw('COUNT(*) as count')) |
| 133 | ->groupBy('referrer_url')->where(['domain'=>$domain]) | 145 | ->groupBy('referrer_url')->where(['domain'=>$domain]) |
| 134 | ->whereBetween('updated_date', [$startTime,$endTime]) | 146 | ->whereBetween('updated_date', [$startTime,$endTime]) |
| 135 | ->orderByDesc('count')->limit(10)->get()->toArray(); | 147 | ->orderByDesc('count')->limit(10)->get()->toArray(); |
| 136 | $arr['source'] = json_encode($source); | 148 | $arr['source'] = json_encode($source); |
| 137 | //访问国家前15 | 149 | //访问国家前15 |
| 138 | - $source_country = DB::table('gl_customer_visit') | 150 | + $source_country = DB::connection('custom_mysql')->table('gl_customer_visit') |
| 139 | ->select('country',DB::raw('COUNT(*) as ip'),DB::raw('SUM(depth) as pv')) | 151 | ->select('country',DB::raw('COUNT(*) as ip'),DB::raw('SUM(depth) as pv')) |
| 140 | ->groupBy('country')->where(['domain'=>$domain]) | 152 | ->groupBy('country')->where(['domain'=>$domain]) |
| 141 | ->whereBetween('updated_date', [$startTime,$endTime]) | 153 | ->whereBetween('updated_date', [$startTime,$endTime]) |
| 142 | ->orderBy('ip','desc')->limit(15)->get()->toArray(); | 154 | ->orderBy('ip','desc')->limit(15)->get()->toArray(); |
| 143 | $arr['source_country'] = json_encode($source_country); | 155 | $arr['source_country'] = json_encode($source_country); |
| 144 | //受访界面前15 | 156 | //受访界面前15 |
| 145 | - $referrer_url = DB::table('gl_customer_visit') | 157 | + $referrer_url = DB::connection('custom_mysql')->table('gl_customer_visit') |
| 146 | ->select('url',DB::raw('COUNT(*) as num')) | 158 | ->select('url',DB::raw('COUNT(*) as num')) |
| 147 | ->orderBy('num','desc')->where(['domain'=>$domain]) | 159 | ->orderBy('num','desc')->where(['domain'=>$domain]) |
| 148 | ->whereBetween('updated_date', [$startTime,$endTime]) | 160 | ->whereBetween('updated_date', [$startTime,$endTime]) |
| @@ -150,7 +162,7 @@ class InquiryMonthlyCount extends Command | @@ -150,7 +162,7 @@ class InquiryMonthlyCount extends Command | ||
| 150 | ->limit(15)->get()->toArray(); | 162 | ->limit(15)->get()->toArray(); |
| 151 | $arr['referrer_url'] = json_encode($referrer_url); | 163 | $arr['referrer_url'] = json_encode($referrer_url); |
| 152 | //访问端口 | 164 | //访问端口 |
| 153 | - $referrer_port = DB::table('gl_customer_visit') | 165 | + $referrer_port = DB::connection('custom_mysql')->table('gl_customer_visit') |
| 154 | ->select('device_port',DB::raw('COUNT(*) as num')) | 166 | ->select('device_port',DB::raw('COUNT(*) as num')) |
| 155 | ->orderBy('num','desc')->where(['domain'=>$domain]) | 167 | ->orderBy('num','desc')->where(['domain'=>$domain]) |
| 156 | ->whereBetween('updated_date', [$startTime,$endTime]) | 168 | ->whereBetween('updated_date', [$startTime,$endTime]) |
| @@ -168,7 +180,8 @@ class InquiryMonthlyCount extends Command | @@ -168,7 +180,8 @@ class InquiryMonthlyCount extends Command | ||
| 168 | */ | 180 | */ |
| 169 | public function selectParam(){ | 181 | public function selectParam(){ |
| 170 | $select = [ | 182 | $select = [ |
| 171 | - 'gl_project.id AS user_id', | 183 | + 'gl_project.id AS id', |
| 184 | + 'gl_project.type AS type', | ||
| 172 | 'gl_project.extend_type AS extend_type', | 185 | 'gl_project.extend_type AS extend_type', |
| 173 | 'gl_project_deploy_build.test_domain AS test_domain', | 186 | 'gl_project_deploy_build.test_domain AS test_domain', |
| 174 | 'gl_project_deploy_optimize.domain AS domain', | 187 | 'gl_project_deploy_optimize.domain AS domain', |
| @@ -6,6 +6,7 @@ use App\Helper\Arr; | @@ -6,6 +6,7 @@ use App\Helper\Arr; | ||
| 6 | use App\Helper\QuanqiusouApi; | 6 | use App\Helper\QuanqiusouApi; |
| 7 | use App\Models\Project\DeployBuild; | 7 | use App\Models\Project\DeployBuild; |
| 8 | use App\Models\Project\DeployOptimize; | 8 | use App\Models\Project\DeployOptimize; |
| 9 | +use App\Models\Project\Project; | ||
| 9 | use App\Models\RankData\RankData as GoogleRankModel; | 10 | use App\Models\RankData\RankData as GoogleRankModel; |
| 10 | use App\Utils\LogUtils; | 11 | use App\Utils\LogUtils; |
| 11 | 12 |
app/Console/Commands/RemainDay.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Console\Commands; | ||
| 4 | + | ||
| 5 | +use App\Helper\Arr; | ||
| 6 | +use App\Models\Product\Category; | ||
| 7 | +use App\Models\Product\Product; | ||
| 8 | +use App\Models\Project\OnlineCheck; | ||
| 9 | +use App\Models\Project\Project; | ||
| 10 | +use App\Models\RankData\RankData as GoogleRankModel; | ||
| 11 | +use App\Models\RouteMap\RouteMap; | ||
| 12 | +use GuzzleHttp\Client; | ||
| 13 | +use GuzzleHttp\Promise\Utils; | ||
| 14 | +use Illuminate\Console\Command; | ||
| 15 | +use Illuminate\Support\Facades\DB; | ||
| 16 | +use Illuminate\Support\Str; | ||
| 17 | + | ||
| 18 | +/** | ||
| 19 | + * 剩余服务时长 | ||
| 20 | + * Class Traffic | ||
| 21 | + * @package App\Console\Commands | ||
| 22 | + * @author zbj | ||
| 23 | + * @date 2023/5/18 | ||
| 24 | + */ | ||
| 25 | +class RemainDay extends Command | ||
| 26 | +{ | ||
| 27 | + /** | ||
| 28 | + * The name and signature of the console command. | ||
| 29 | + * | ||
| 30 | + * @var string | ||
| 31 | + */ | ||
| 32 | + protected $signature = 'remain_day'; | ||
| 33 | + | ||
| 34 | + /** | ||
| 35 | + * The console command description. | ||
| 36 | + * | ||
| 37 | + * @var string | ||
| 38 | + */ | ||
| 39 | + protected $description = '网站服务剩余时长'; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * Create a new command instance. | ||
| 43 | + * | ||
| 44 | + * @return void | ||
| 45 | + */ | ||
| 46 | + public function __construct() | ||
| 47 | + { | ||
| 48 | + parent::__construct(); | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + /** | ||
| 52 | + * @return bool | ||
| 53 | + */ | ||
| 54 | + public function handle() | ||
| 55 | + { | ||
| 56 | + $list = Project::whereIn('type', ['2,3,4'])->get(); | ||
| 57 | + foreach ($list as $item){ | ||
| 58 | + if($item['type'] == 3){ | ||
| 59 | + //排名达标天数 | ||
| 60 | + $compliance_day = GoogleRankModel::where(['project_id' => $item['id'], 'lang' => ''])->value('compliance_day') ?: 0; | ||
| 61 | + $remain_day = $item['deploy_build']['service_duration'] - $compliance_day; | ||
| 62 | + }else{ | ||
| 63 | + //审核上线后开始 | ||
| 64 | + $check_time = OnlineCheck::where('project_id', $item['id'])->where('status', 1)->value('created_at') ?: ''; | ||
| 65 | + if($check_time){ | ||
| 66 | + $remain_day = $item['deploy_build']['service_duration']; | ||
| 67 | + }else{ | ||
| 68 | + $diff = time() - strtotime($check_time); | ||
| 69 | + $remain_day = floor($diff / (60 * 60 * 24)); | ||
| 70 | + } | ||
| 71 | + } | ||
| 72 | + $item->remain_day = $remain_day > 0 ? $remain_day : 0; | ||
| 73 | + $item->save(); | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | +} |
| @@ -16,6 +16,7 @@ use App\Models\Project\ProjectRenew; | @@ -16,6 +16,7 @@ use App\Models\Project\ProjectRenew; | ||
| 16 | use App\Utils\LogUtils; | 16 | use App\Utils\LogUtils; |
| 17 | use Hashids\Hashids; | 17 | use Hashids\Hashids; |
| 18 | use Illuminate\Console\Command; | 18 | use Illuminate\Console\Command; |
| 19 | +use Illuminate\Database\Eloquent\Model; | ||
| 19 | use Illuminate\Support\Facades\DB; | 20 | use Illuminate\Support\Facades\DB; |
| 20 | use Illuminate\Support\Facades\Http; | 21 | use Illuminate\Support\Facades\Http; |
| 21 | 22 | ||
| @@ -57,37 +58,41 @@ class SyncProject extends Command | @@ -57,37 +58,41 @@ class SyncProject extends Command | ||
| 57 | */ | 58 | */ |
| 58 | public function handle() | 59 | public function handle() |
| 59 | { | 60 | { |
| 60 | - $list = NoticeLog::where('type', NoticeLog::TYPE_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get(); | ||
| 61 | - foreach ($list as $item){ | ||
| 62 | - try { | ||
| 63 | - $api = new OaGlobalsoApi(); | ||
| 64 | - $data = $api->order_info($item['data']['order_id']); | ||
| 65 | - if(!$data || empty($data['data'])){ | ||
| 66 | - LogUtils::error('OaGlobalsoApi order_info error', $data); | ||
| 67 | - $this->retry($item); | ||
| 68 | - } | ||
| 69 | - if($data['data']['order_type'] == '首次'){ | ||
| 70 | - $this->sync($data['data']); | 61 | + while (true){ |
| 62 | + $list = NoticeLog::where('type', NoticeLog::TYPE_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get(); | ||
| 63 | + foreach ($list as $item){ | ||
| 64 | + try { | ||
| 65 | + $api = new OaGlobalsoApi(); | ||
| 66 | + $data = $api->order_info($item['data']['order_id']); | ||
| 67 | + if(!$data || empty($data['data'])){ | ||
| 68 | + LogUtils::error('OaGlobalsoApi order_info error', $data); | ||
| 69 | + $this->retry($item); | ||
| 70 | + } | ||
| 71 | + if($data['data']['order_type'] == '首次'){ | ||
| 72 | + $this->sync($data['data']); | ||
| 71 | 73 | ||
| 72 | - //同步aicc | ||
| 73 | - if($data['data']['exclusive_aicc']){ | ||
| 74 | - $this->toAicc($data['data']); | 74 | + //同步aicc |
| 75 | + if($data['data']['exclusive_aicc']){ | ||
| 76 | + $this->toAicc($data['data']); | ||
| 77 | + } | ||
| 78 | + //同步hagro | ||
| 79 | + if($data['data']['exclusive_hagro']){ | ||
| 80 | + $this->toHagro($data['data']); | ||
| 81 | + } | ||
| 75 | } | 82 | } |
| 76 | - //同步hagro | ||
| 77 | - if($data['data']['exclusive_hagro']){ | ||
| 78 | - $this->toHagro($data['data']); | 83 | + if($data['data']['order_type'] == '续费'){ |
| 84 | + $this->renewSync($data['data']); | ||
| 79 | } | 85 | } |
| 86 | + $item->status = NoticeLog::STATUS_SUCCESS; | ||
| 87 | + $item->save(); | ||
| 88 | + }catch (\Exception $e){ | ||
| 89 | + errorLog('项目同步失败', $item, $e); | ||
| 90 | + $this->retry($item); | ||
| 80 | } | 91 | } |
| 81 | - if($data['data']['order_type'] == '续费'){ | ||
| 82 | - $this->renewSync($data['data']); | ||
| 83 | - } | ||
| 84 | - $item->status = NoticeLog::STATUS_SUCCESS; | ||
| 85 | - $item->save(); | ||
| 86 | - }catch (\Exception $e){ | ||
| 87 | - errorLog('项目同步失败', $item, $e); | ||
| 88 | - $this->retry($item); | ||
| 89 | } | 92 | } |
| 93 | + sleep(2); | ||
| 90 | } | 94 | } |
| 95 | + | ||
| 91 | } | 96 | } |
| 92 | 97 | ||
| 93 | /** | 98 | /** |
| @@ -190,14 +195,10 @@ class SyncProject extends Command | @@ -190,14 +195,10 @@ class SyncProject extends Command | ||
| 190 | 'project_after' => [], | 195 | 'project_after' => [], |
| 191 | 'payment' => [ | 196 | 'payment' => [ |
| 192 | 'amount' => $param['plan_price'], | 197 | 'amount' => $param['plan_price'], |
| 198 | + 'contract'=>$param['files'], | ||
| 199 | + 'bill'=>$param['images'] | ||
| 193 | ], | 200 | ], |
| 194 | ]; | 201 | ]; |
| 195 | - if(!empty($param['files'])){ | ||
| 196 | - $data['payment']['contract'] = json_encode($param['files']); | ||
| 197 | - } | ||
| 198 | - if(!empty($param['images'])){ | ||
| 199 | - $data['payment']['bill'] = json_encode($param['images']); | ||
| 200 | - } | ||
| 201 | DB::beginTransaction(); | 202 | DB::beginTransaction(); |
| 202 | try { | 203 | try { |
| 203 | $id = $this->saveProject($data['project']); | 204 | $id = $this->saveProject($data['project']); |
| @@ -209,7 +210,7 @@ class SyncProject extends Command | @@ -209,7 +210,7 @@ class SyncProject extends Command | ||
| 209 | DB::commit(); | 210 | DB::commit(); |
| 210 | }catch (\Exception $e){ | 211 | }catch (\Exception $e){ |
| 211 | DB::rollBack(); | 212 | DB::rollBack(); |
| 212 | - errorLog('项目同步失败', $data, $e); | 213 | + throw new \Exception($e->getMessage()); |
| 213 | } | 214 | } |
| 214 | } | 215 | } |
| 215 | 216 | ||
| @@ -242,7 +243,13 @@ class SyncProject extends Command | @@ -242,7 +243,13 @@ class SyncProject extends Command | ||
| 242 | $param['channel'] = Arr::a2s($param['channel']); | 243 | $param['channel'] = Arr::a2s($param['channel']); |
| 243 | } | 244 | } |
| 244 | $projectModel = new Project(); | 245 | $projectModel = new Project(); |
| 245 | - return $projectModel->addReturnId($param); | 246 | + $info = $projectModel->read(['from_order_id'=>$param['from_order_id']]); |
| 247 | + if($info !== false){ | ||
| 248 | + $projectModel->edit($param, ['id' => $info['id']]); | ||
| 249 | + return $info['id']; | ||
| 250 | + }else{ | ||
| 251 | + return $projectModel->addReturnId($param); | ||
| 252 | + } | ||
| 246 | } | 253 | } |
| 247 | 254 | ||
| 248 | /** | 255 | /** |
| @@ -254,7 +261,12 @@ class SyncProject extends Command | @@ -254,7 +261,12 @@ class SyncProject extends Command | ||
| 254 | $param['project_id'] = $id; | 261 | $param['project_id'] = $id; |
| 255 | //查询数据是否存在 | 262 | //查询数据是否存在 |
| 256 | $afterModel = new After(); | 263 | $afterModel = new After(); |
| 257 | - return $afterModel->add($param); | 264 | + $info = $afterModel->read(['project_id'=>$id]); |
| 265 | + if($info !== false){ | ||
| 266 | + $afterModel->edit($param,['id'=>$info['id']]); | ||
| 267 | + }else{ | ||
| 268 | + $afterModel->add($param); | ||
| 269 | + } | ||
| 258 | } | 270 | } |
| 259 | 271 | ||
| 260 | /** | 272 | /** |
| @@ -267,13 +279,18 @@ class SyncProject extends Command | @@ -267,13 +279,18 @@ class SyncProject extends Command | ||
| 267 | protected function savePayment($param,$id){ | 279 | protected function savePayment($param,$id){ |
| 268 | $param['project_id'] = $id; | 280 | $param['project_id'] = $id; |
| 269 | $paymentModel= new Payment(); | 281 | $paymentModel= new Payment(); |
| 270 | - if(isset($param['contract']) && !empty($param['contract'])){ | 282 | +// if(isset($param['contract']) && !empty($param['contract'])){ |
| 271 | $param['contract'] = Arr::a2s($param['contract']); | 283 | $param['contract'] = Arr::a2s($param['contract']); |
| 272 | - } | ||
| 273 | - if(isset($param['bill']) && !empty($param['bill'])){ | 284 | +// } |
| 285 | +// if(isset($param['bill']) && !empty($param['bill'])){ | ||
| 274 | $param['bill'] = Arr::a2s($param['bill']); | 286 | $param['bill'] = Arr::a2s($param['bill']); |
| 287 | +// } | ||
| 288 | + $info = $paymentModel->read(['project_id'=>$id]); | ||
| 289 | + if($info !== false){ | ||
| 290 | + $paymentModel->edit($param,['id'=>$info['id']]); | ||
| 291 | + }else{ | ||
| 292 | + $paymentModel->add($param); | ||
| 275 | } | 293 | } |
| 276 | - return $paymentModel->add($param); | ||
| 277 | } | 294 | } |
| 278 | 295 | ||
| 279 | /** | 296 | /** |
| @@ -289,7 +306,12 @@ class SyncProject extends Command | @@ -289,7 +306,12 @@ class SyncProject extends Command | ||
| 289 | $code = $hashids->encode($id); | 306 | $code = $hashids->encode($id); |
| 290 | $param['test_domain'] = 'https://v6-' . $code . '.globalso.site/'; | 307 | $param['test_domain'] = 'https://v6-' . $code . '.globalso.site/'; |
| 291 | $deployBuildModel = new DeployBuild(); | 308 | $deployBuildModel = new DeployBuild(); |
| 292 | - return $deployBuildModel->add($param); | 309 | + $info = $deployBuildModel->read(['project_id'=>$id]); |
| 310 | + if($info !== false){ | ||
| 311 | + $deployBuildModel->edit($param,['id'=>$info['id']]); | ||
| 312 | + }else{ | ||
| 313 | + $deployBuildModel->add($param); | ||
| 314 | + } | ||
| 293 | } | 315 | } |
| 294 | 316 | ||
| 295 | /** | 317 | /** |
| @@ -302,7 +324,12 @@ class SyncProject extends Command | @@ -302,7 +324,12 @@ class SyncProject extends Command | ||
| 302 | protected function saveDeployOptimize($param,$id){ | 324 | protected function saveDeployOptimize($param,$id){ |
| 303 | $param['project_id'] = $id; | 325 | $param['project_id'] = $id; |
| 304 | $deployOptimizeModel = new DeployOptimize(); | 326 | $deployOptimizeModel = new DeployOptimize(); |
| 305 | - return $deployOptimizeModel->add($param); | 327 | + $info = $deployOptimizeModel->read(['project_id'=>$id]); |
| 328 | + if($info !== false){ | ||
| 329 | + $deployOptimizeModel->edit($param,['id'=>$info['id']]); | ||
| 330 | + }else{ | ||
| 331 | + $deployOptimizeModel->add($param); | ||
| 332 | + } | ||
| 306 | } | 333 | } |
| 307 | 334 | ||
| 308 | /** | 335 | /** |
| @@ -346,7 +373,7 @@ class SyncProject extends Command | @@ -346,7 +373,7 @@ class SyncProject extends Command | ||
| 346 | * @date 2023/9/1 | 373 | * @date 2023/9/1 |
| 347 | */ | 374 | */ |
| 348 | protected function toHagro($data){ | 375 | protected function toHagro($data){ |
| 349 | - $url = 'https://beta.hagro.cn/globalso/create_project'; | 376 | + $url = 'https://admin.hagro.cn/globalso/create_project'; |
| 350 | $param = [ | 377 | $param = [ |
| 351 | 'company' => $data['company_name'], | 378 | 'company' => $data['company_name'], |
| 352 | 'phone' => $data['principal_mobile'], | 379 | 'phone' => $data['principal_mobile'], |
| @@ -46,6 +46,8 @@ class Demo extends Command | @@ -46,6 +46,8 @@ class Demo extends Command | ||
| 46 | */ | 46 | */ |
| 47 | public function handle() | 47 | public function handle() |
| 48 | { | 48 | { |
| 49 | + $domain = parse_url('https//:dev.golbalso.site/'); | ||
| 50 | + dd($domain); | ||
| 49 | echo time() . PHP_EOL; | 51 | echo time() . PHP_EOL; |
| 50 | $blogModel = new Image(); | 52 | $blogModel = new Image(); |
| 51 | $list = $blogModel->list(); | 53 | $list = $blogModel->list(); |
| @@ -6,6 +6,7 @@ use App\Helper\Arr; | @@ -6,6 +6,7 @@ use App\Helper\Arr; | ||
| 6 | use App\Models\Product\Category; | 6 | use App\Models\Product\Category; |
| 7 | use App\Models\Product\Product; | 7 | use App\Models\Product\Product; |
| 8 | use App\Models\RouteMap\RouteMap; | 8 | use App\Models\RouteMap\RouteMap; |
| 9 | +use App\Services\ProjectServer; | ||
| 9 | use GuzzleHttp\Client; | 10 | use GuzzleHttp\Client; |
| 10 | use GuzzleHttp\Promise\Utils; | 11 | use GuzzleHttp\Promise\Utils; |
| 11 | use Illuminate\Console\Command; | 12 | use Illuminate\Console\Command; |
| @@ -230,20 +231,26 @@ class WebTraffic extends Command | @@ -230,20 +231,26 @@ class WebTraffic extends Command | ||
| 230 | */ | 231 | */ |
| 231 | protected function getProductUrls($project_id){ | 232 | protected function getProductUrls($project_id){ |
| 232 | //产品分类页面 | 233 | //产品分类页面 |
| 233 | - $product_cate_ids = Category::where('project_id', $project_id)->where('status', Category::STATUS_ACTIVE)->pluck('id')->toArray(); | ||
| 234 | - $data['urls_cats'] = RouteMap::where('project_id', $project_id)->where('source', RouteMap::SOURCE_PRODUCT_CATE)->whereIn('source_id', $product_cate_ids)->get()->toArray(); | 234 | + ProjectServer::useProject($project_id); |
| 235 | + $product_cate_ids = DB::connection('custom_mysql')->table('gl_product_category') | ||
| 236 | + ->where('project_id', $project_id)->where('status', 1)->pluck('id')->toArray(); | ||
| 237 | + $data['urls_cats'] = DB::connection('custom_mysql')->table('gl_route_map') | ||
| 238 | + ->where('project_id', $project_id)->where('source', 'product_category')->whereIn('source_id', $product_cate_ids)->get()->toArray(); | ||
| 235 | //单页面 | 239 | //单页面 |
| 236 | //todo 发布状态的单页面id | 240 | //todo 发布状态的单页面id |
| 237 | - $data['urls_page'] = RouteMap::where('project_id', $project_id)->where('source', RouteMap::SOURCE_PAGE)->get()->toArray(); | 241 | + $data['urls_page'] = DB::connection('custom_mysql')->table('gl_route_map') |
| 242 | + ->where('project_id', $project_id)->where('source', 'page')->get()->toArray(); | ||
| 238 | //产品详情页 | 243 | //产品详情页 |
| 239 | - $product_ids = Product::where('project_id', $project_id)->where('status', Product::STATUS_ON)->pluck('id')->toArray(); | ||
| 240 | - $data['urls_details'] = RouteMap::where('project_id', $project_id)->where('source', RouteMap::SOURCE_PRODUCT)->whereIn('source_id', $product_ids)->get()->toArray(); | 244 | + $product_ids = DB::connection('custom_mysql')->table('gl_product_category') |
| 245 | + ->where('project_id', $project_id)->where('status', 1)->pluck('id')->toArray(); | ||
| 246 | + $data['urls_details'] = DB::connection('custom_mysql')->table('gl_route_map') | ||
| 247 | + ->where('project_id', $project_id)->where('source', 'product')->whereIn('source_id', $product_ids)->get()->toArray(); | ||
| 241 | 248 | ||
| 242 | $data['urls_cats'] = array_merge($data['urls_cats'], $data['urls_page']); | 249 | $data['urls_cats'] = array_merge($data['urls_cats'], $data['urls_page']); |
| 243 | if(empty($data['urls_cats'])){ | 250 | if(empty($data['urls_cats'])){ |
| 244 | $data['urls_cats'] = $data['urls_details']; | 251 | $data['urls_cats'] = $data['urls_details']; |
| 245 | } | 252 | } |
| 246 | - | 253 | + DB::disconnect('custom_mysql'); |
| 247 | return $data; | 254 | return $data; |
| 248 | } | 255 | } |
| 249 | 256 | ||
| @@ -312,10 +319,10 @@ class WebTraffic extends Command | @@ -312,10 +319,10 @@ class WebTraffic extends Command | ||
| 312 | 319 | ||
| 313 | $url = []; | 320 | $url = []; |
| 314 | if($res_sdzb == 0){//深度一页 | 321 | if($res_sdzb == 0){//深度一页 |
| 315 | - $url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])['route'] : ''; | 322 | + $url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])->route : ''; |
| 316 | }elseif($res_sdzb == 1){//深度两页 | 323 | }elseif($res_sdzb == 1){//深度两页 |
| 317 | $url[] = $project_urls['home']; | 324 | $url[] = $project_urls['home']; |
| 318 | - $url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])['route'] : ''; | 325 | + $url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])->route : ''; |
| 319 | }elseif($res_sdzb == 2){//深度3-6页 | 326 | }elseif($res_sdzb == 2){//深度3-6页 |
| 320 | $yms = rand(2,5); //随机页面数 | 327 | $yms = rand(2,5); //随机页面数 |
| 321 | $url = Arr::pluck(Arr::random($all_url, $yms), 'route'); | 328 | $url = Arr::pluck(Arr::random($all_url, $yms), 'route'); |
| @@ -16,6 +16,7 @@ class Kernel extends ConsoleKernel | @@ -16,6 +16,7 @@ class Kernel extends ConsoleKernel | ||
| 16 | protected function schedule(Schedule $schedule) | 16 | protected function schedule(Schedule $schedule) |
| 17 | { | 17 | { |
| 18 | // $schedule->command('inspire')->hourly(); | 18 | // $schedule->command('inspire')->hourly(); |
| 19 | + $schedule->command('remain_day')->dailyAt('00:30')->withoutOverlapping(1); // 项目剩余服务时长 | ||
| 19 | $schedule->command('rank_data')->dailyAt('01:00')->withoutOverlapping(1); // 排名数据,每天凌晨执行一次 | 20 | $schedule->command('rank_data')->dailyAt('01:00')->withoutOverlapping(1); // 排名数据,每天凌晨执行一次 |
| 20 | $schedule->command('rank_data_speed')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-测速数据,每周一凌晨执行一次 | 21 | $schedule->command('rank_data_speed')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-测速数据,每周一凌晨执行一次 |
| 21 | $schedule->command('rank_data_external_links')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-外链,每周一凌晨执行一次 | 22 | $schedule->command('rank_data_external_links')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-外链,每周一凌晨执行一次 |
| @@ -28,7 +29,6 @@ class Kernel extends ConsoleKernel | @@ -28,7 +29,6 @@ class Kernel extends ConsoleKernel | ||
| 28 | $schedule->command('web_traffic 2')->cron('*/18 * * * *'); // 引流 4-8个月的项目,18分钟一次 | 29 | $schedule->command('web_traffic 2')->cron('*/18 * * * *'); // 引流 4-8个月的项目,18分钟一次 |
| 29 | $schedule->command('web_traffic 3')->cron('*/12 * * * *'); // 引流 大于9个月的项目,12分钟一次 | 30 | $schedule->command('web_traffic 3')->cron('*/12 * * * *'); // 引流 大于9个月的项目,12分钟一次 |
| 30 | $schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每周执行一次 | 31 | $schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每周执行一次 |
| 31 | - $schedule->command('sync_project')->everyMinute()->withoutOverlapping(1); //同步项目 | ||
| 32 | $schedule->command('month_count')->monthlyOn(1,'01:00')->withoutOverlapping(1);//没月月初1号执行月统计记录 | 32 | $schedule->command('month_count')->monthlyOn(1,'01:00')->withoutOverlapping(1);//没月月初1号执行月统计记录 |
| 33 | $schedule->command('forward_count')->monthlyOn(1,'01:00')->withoutOverlapping(1);//没月月初1号执行月统计转发询盘记录 | 33 | $schedule->command('forward_count')->monthlyOn(1,'01:00')->withoutOverlapping(1);//没月月初1号执行月统计转发询盘记录 |
| 34 | $schedule->command('inquiry_delay')->everyMinute()->withoutOverlapping(1);//TODO::上线放开,转发询盘,每分钟执行一次 | 34 | $schedule->command('inquiry_delay')->everyMinute()->withoutOverlapping(1);//TODO::上线放开,转发询盘,每分钟执行一次 |
| @@ -7,8 +7,6 @@ use App\Http\Controllers\Aside\BaseController; | @@ -7,8 +7,6 @@ use App\Http\Controllers\Aside\BaseController; | ||
| 7 | use App\Http\Logic\Aside\Ai\AiCommandLogic; | 7 | use App\Http\Logic\Aside\Ai\AiCommandLogic; |
| 8 | use App\Http\Requests\Aside\Ai\AiCommandRequest; | 8 | use App\Http\Requests\Aside\Ai\AiCommandRequest; |
| 9 | use App\Models\Ai\AiCommand as AiCommandModel; | 9 | use App\Models\Ai\AiCommand as AiCommandModel; |
| 10 | -use Illuminate\Http\Request; | ||
| 11 | -use function App\Helper\send_openai_msg; | ||
| 12 | 10 | ||
| 13 | /** | 11 | /** |
| 14 | * @remark :ai指令 | 12 | * @remark :ai指令 |
| @@ -39,6 +39,7 @@ class BaseController extends Controller | @@ -39,6 +39,7 @@ class BaseController extends Controller | ||
| 39 | $info = Cache::get(Common::MANAGE_TOKEN . $this->token); | 39 | $info = Cache::get(Common::MANAGE_TOKEN . $this->token); |
| 40 | if(!empty($this->token) && !empty($info)){ | 40 | if(!empty($this->token) && !empty($info)){ |
| 41 | $this->manage = $info; | 41 | $this->manage = $info; |
| 42 | + Cache::put($this->token, $info, 3600);//更新缓存时间 | ||
| 42 | $this->uid = $info['id']; | 43 | $this->uid = $info['id']; |
| 43 | } | 44 | } |
| 44 | } | 45 | } |
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * @remark : | ||
| 4 | + * @name :ManagerLogController.php | ||
| 5 | + * @author :lyh | ||
| 6 | + * @method :post | ||
| 7 | + * @time :2023/9/5 16:09 | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +namespace App\Http\Controllers\Aside\Manage; | ||
| 11 | + | ||
| 12 | +use App\Enums\Common\Code; | ||
| 13 | +use App\Http\Controllers\Aside\BaseController; | ||
| 14 | +use App\Models\Manage\LoginLog; | ||
| 15 | +use App\Models\Manage\Manage; | ||
| 16 | + | ||
| 17 | +class ManagerLogController extends BaseController | ||
| 18 | +{ | ||
| 19 | + /** | ||
| 20 | + * @remark :管理员日志列表 | ||
| 21 | + * @name :lists | ||
| 22 | + * @author :lyh | ||
| 23 | + * @method :post | ||
| 24 | + * @time :2023/9/5 16:10 | ||
| 25 | + */ | ||
| 26 | + public function lists(LoginLog $manageLogin){ | ||
| 27 | + $map = $this->searchParam(); | ||
| 28 | + $lists = $manageLogin->lists($map,$this->page,$this->row,$this->order); | ||
| 29 | + if(!empty($lists) && !empty($lists['list'])){ | ||
| 30 | + $managerModel = new Manage(); | ||
| 31 | + foreach ($lists['list'] as $k => $v){ | ||
| 32 | + $info = $managerModel->read(['id'=>$v['manage_id']]); | ||
| 33 | + $v['mobile'] = $info['mobile'] ?? ''; | ||
| 34 | + $v['name'] = $info['name'] ?? ''; | ||
| 35 | + $v['type'] = (isset($v['type']) && $v['type'] == 1) ? '账号密码登录' : '验证码登录'; | ||
| 36 | + $lists['list'][$k] = $v; | ||
| 37 | + } | ||
| 38 | + } | ||
| 39 | + $this->response('success',Code::SUCCESS,$lists); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * @remark :搜索参数 | ||
| 44 | + * @name :searchParam | ||
| 45 | + * @author :lyh | ||
| 46 | + * @method :post | ||
| 47 | + * @time :2023/9/5 16:56 | ||
| 48 | + */ | ||
| 49 | + public function searchParam(){ | ||
| 50 | + $map = []; | ||
| 51 | + $managerModel = new Manage(); | ||
| 52 | + if(isset($this->map['mobile']) && !empty($this->map['mobile'])){ | ||
| 53 | + $ids = $managerModel->where('mobile', 'like', '%' . $this->map['mobile'] . '%')->pluck('id')->toArray(); | ||
| 54 | + $map['manage_id'] = ['in',$ids]; | ||
| 55 | + }elseif (isset($this->map['name']) && !empty($this->map['name'])){ | ||
| 56 | + $ids = $managerModel->where('name', 'like', '%' . $this->param['name'] . '%')->pluck('id')->toArray(); | ||
| 57 | + $map['manage_id'] = ['in',$ids]; | ||
| 58 | + } | ||
| 59 | + if(isset($this->map['created_at'])){ | ||
| 60 | + $map['created_at'] = $this->map['created_at']; | ||
| 61 | + } | ||
| 62 | + return $map; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | +} |
| @@ -95,7 +95,9 @@ class OnlineController extends BaseController | @@ -95,7 +95,9 @@ class OnlineController extends BaseController | ||
| 95 | * @time :2023/8/18 14:44 | 95 | * @time :2023/8/18 14:44 |
| 96 | */ | 96 | */ |
| 97 | public function handleParam(&$item){ | 97 | public function handleParam(&$item){ |
| 98 | - $data = APublicModel::getNumByProjectId($item['id']); | 98 | + if($item['type'] != Project::TYPE_ZERO){ |
| 99 | + $data = APublicModel::getNumByProjectId($item['id']); | ||
| 100 | + } | ||
| 99 | $manageModel = new Manage(); | 101 | $manageModel = new Manage(); |
| 100 | $item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0); | 102 | $item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0); |
| 101 | $item['build_leader'] = $manageModel->getName($item['leader_mid']); | 103 | $item['build_leader'] = $manageModel->getName($item['leader_mid']); |
| @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Aside\Optimize; | @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Aside\Optimize; | ||
| 5 | use App\Enums\Common\Code; | 5 | use App\Enums\Common\Code; |
| 6 | use App\Http\Controllers\Aside\BaseController; | 6 | use App\Http\Controllers\Aside\BaseController; |
| 7 | use App\Http\Logic\Aside\Optimize\OptimizeLogic; | 7 | use App\Http\Logic\Aside\Optimize\OptimizeLogic; |
| 8 | +use App\Models\Domain\DomainInfo; | ||
| 8 | use App\Models\Manage\Manage; | 9 | use App\Models\Manage\Manage; |
| 9 | use App\Models\Project\Project; | 10 | use App\Models\Project\Project; |
| 10 | use Illuminate\Support\Facades\DB; | 11 | use Illuminate\Support\Facades\DB; |
| @@ -32,11 +33,13 @@ class OptimizeController extends BaseController | @@ -32,11 +33,13 @@ class OptimizeController extends BaseController | ||
| 32 | $lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray(); | 33 | $lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray(); |
| 33 | if(!empty($lists['list'])){ | 34 | if(!empty($lists['list'])){ |
| 34 | $manager = new Manage(); | 35 | $manager = new Manage(); |
| 36 | + $domainModel = new DomainInfo(); | ||
| 35 | foreach ($lists['list'] as $k => $v){ | 37 | foreach ($lists['list'] as $k => $v){ |
| 36 | $v['plan'] = $project::planMap()[$v['plan']]; | 38 | $v['plan'] = $project::planMap()[$v['plan']]; |
| 37 | $v['optimist_mid_name'] = $manager->getName($v['optimist_mid']); | 39 | $v['optimist_mid_name'] = $manager->getName($v['optimist_mid']); |
| 38 | $v['tech_mid_name'] = $manager->getName($v['tech_mid']); | 40 | $v['tech_mid_name'] = $manager->getName($v['tech_mid']); |
| 39 | $v['autologin_code'] = getAutoLoginCode($v['id']); | 41 | $v['autologin_code'] = getAutoLoginCode($v['id']); |
| 42 | + $v['domain'] = $domainModel->getDomain($v['domain']); | ||
| 40 | $lists['list'][$k] = $v; | 43 | $lists['list'][$k] = $v; |
| 41 | } | 44 | } |
| 42 | } | 45 | } |
| @@ -55,13 +55,15 @@ class ProjectController extends BaseController | @@ -55,13 +55,15 @@ class ProjectController extends BaseController | ||
| 55 | $map['type'] = $this->searchType($this->map['type']); | 55 | $map['type'] = $this->searchType($this->map['type']); |
| 56 | $map['extend_type'] = 0;//排除未续费项目 | 56 | $map['extend_type'] = 0;//排除未续费项目 |
| 57 | } | 57 | } |
| 58 | - $filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'created_at']; | ||
| 59 | - $lists = $project->formatQuery($map)->select($filed)->with('payment')->with('deploy_build') | 58 | + $filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'remain_day' ,'created_at']; |
| 59 | + $lists = $project->formatQuery($map)->orderBy('id','desc')->select($filed)->with('payment')->with('deploy_build') | ||
| 60 | ->with('deploy_optimize')->with('online_check')->paginate($this->row, ['*'], 'page', $this->page); | 60 | ->with('deploy_optimize')->with('online_check')->paginate($this->row, ['*'], 'page', $this->page); |
| 61 | if(!empty($lists)){ | 61 | if(!empty($lists)){ |
| 62 | $lists = $lists->toArray(); | 62 | $lists = $lists->toArray(); |
| 63 | + $manageModel = new Manage(); | ||
| 64 | + $domainModel = new DomainInfo(); | ||
| 63 | foreach ($lists['list'] as $k=>$item){ | 65 | foreach ($lists['list'] as $k=>$item){ |
| 64 | - $item = $this->handleParam($item); | 66 | + $item = $this->handleParam($item,$manageModel,$domainModel); |
| 65 | $lists['list'][$k] = $item; | 67 | $lists['list'][$k] = $item; |
| 66 | } | 68 | } |
| 67 | } | 69 | } |
| @@ -75,8 +77,7 @@ class ProjectController extends BaseController | @@ -75,8 +77,7 @@ class ProjectController extends BaseController | ||
| 75 | * @method :post | 77 | * @method :post |
| 76 | * @time :2023/8/30 11:07 | 78 | * @time :2023/8/30 11:07 |
| 77 | */ | 79 | */ |
| 78 | - public function handleParam(&$item){ | ||
| 79 | - $manageModel = new Manage(); | 80 | + public function handleParam(&$item,&$manageModel,&$domainModel){ |
| 80 | if($item['mysql_id'] != 0 && $item['type'] != 0){ | 81 | if($item['mysql_id'] != 0 && $item['type'] != 0){ |
| 81 | $data = APublicModel::getNumByProjectId($item['id']); | 82 | $data = APublicModel::getNumByProjectId($item['id']); |
| 82 | } | 83 | } |
| @@ -98,7 +99,7 @@ class ProjectController extends BaseController | @@ -98,7 +99,7 @@ class ProjectController extends BaseController | ||
| 98 | 'type' => $item['type'], | 99 | 'type' => $item['type'], |
| 99 | 'test_domain' => $item['deploy_build']['test_domain'] ?? 0, | 100 | 'test_domain' => $item['deploy_build']['test_domain'] ?? 0, |
| 100 | 'plan' =>Project::planMap()[$item['deploy_build']['plan']], | 101 | 'plan' =>Project::planMap()[$item['deploy_build']['plan']], |
| 101 | - 'domain' => $item['deploy_optimize']['domain'] ?? 0, | 102 | + 'domain' => !empty($item['deploy_optimize']['domain']) ? $domainModel->getDomain($item['deploy_optimize']['domain']) : '', |
| 102 | 'created_at' => date('Y年m月d日', strtotime($item['created_at'])), | 103 | 'created_at' => date('Y年m月d日', strtotime($item['created_at'])), |
| 103 | 'product_num' => $data['product'] ?? 0, | 104 | 'product_num' => $data['product'] ?? 0, |
| 104 | 'keyword_num' => $item['deploy_build']['keyword_num'] ?? 0, | 105 | 'keyword_num' => $item['deploy_build']['keyword_num'] ?? 0, |
| @@ -107,31 +108,12 @@ class ProjectController extends BaseController | @@ -107,31 +108,12 @@ class ProjectController extends BaseController | ||
| 107 | 'task_pending_num' => Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]), | 108 | 'task_pending_num' => Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]), |
| 108 | 'optimist_status'=>$item['online_check']['optimist_status'] ?? 0, | 109 | 'optimist_status'=>$item['online_check']['optimist_status'] ?? 0, |
| 109 | 'qa_status'=>$item['online_check']['qa_status'] ?? 0, | 110 | 'qa_status'=>$item['online_check']['qa_status'] ?? 0, |
| 110 | - 'service_day'=>$item['deploy_build']['service_duration'] - $this->compliance_day($item['id']), | 111 | + 'service_day'=>$item['remain_day'] ?? 0, |
| 111 | ]; | 112 | ]; |
| 112 | return $item; | 113 | return $item; |
| 113 | } | 114 | } |
| 114 | 115 | ||
| 115 | /** | 116 | /** |
| 116 | - * @param $yesterday | ||
| 117 | - * @name :(服务达标天数)compliance_day | ||
| 118 | - * @author :lyh | ||
| 119 | - * @method :post | ||
| 120 | - * @time :2023/6/14 15:48 | ||
| 121 | - */ | ||
| 122 | - public function compliance_day($project_id){ | ||
| 123 | - //服务达标天数 | ||
| 124 | - $rankDataModel = new RankData(); | ||
| 125 | - $rank_info = $rankDataModel->where(['project_id'=>$project_id,'lang'=>''])->select(['compliance_day'])->first(); | ||
| 126 | - if(empty($rank_info)){ | ||
| 127 | - $compliance_day = 0; | ||
| 128 | - }else{ | ||
| 129 | - $compliance_day = $rank_info->compliance_day; | ||
| 130 | - } | ||
| 131 | - return $compliance_day; | ||
| 132 | - } | ||
| 133 | - | ||
| 134 | - /** | ||
| 135 | * @remark :type类型 | 117 | * @remark :type类型 |
| 136 | * @name :searchType | 118 | * @name :searchType |
| 137 | * @author :lyh | 119 | * @author :lyh |
| @@ -354,8 +336,8 @@ class ProjectController extends BaseController | @@ -354,8 +336,8 @@ class ProjectController extends BaseController | ||
| 354 | * @method :post | 336 | * @method :post |
| 355 | * @time :2023/8/30 19:01 | 337 | * @time :2023/8/30 19:01 |
| 356 | */ | 338 | */ |
| 357 | - public function online_check(Request $request, OnlineCheckLogic $logic){ | ||
| 358 | - $request->validate([ | 339 | + public function online_check(OnlineCheckLogic $logic){ |
| 340 | + $this->request->validate([ | ||
| 359 | 'id'=>'required', | 341 | 'id'=>'required', |
| 360 | 'type'=>'required|in:optimist,qa', | 342 | 'type'=>'required|in:optimist,qa', |
| 361 | 'status'=>'required|in:0,1' | 343 | 'status'=>'required|in:0,1' |
| @@ -384,7 +366,7 @@ class ProjectController extends BaseController | @@ -384,7 +366,7 @@ class ProjectController extends BaseController | ||
| 384 | 'type.required' => '请选择审核类型' | 366 | 'type.required' => '请选择审核类型' |
| 385 | ]); | 367 | ]); |
| 386 | $belongGroupModel = new BelongingGroup(); | 368 | $belongGroupModel = new BelongingGroup(); |
| 387 | - $lists = $belongGroupModel->list($this->map); | 369 | + $lists = $belongGroupModel->list($this->map,'name',['id','name','type'],'asc'); |
| 388 | $this->response('success',Code::SUCCESS,$lists); | 370 | $this->response('success',Code::SUCCESS,$lists); |
| 389 | } | 371 | } |
| 390 | 372 | ||
| @@ -397,6 +379,7 @@ class ProjectController extends BaseController | @@ -397,6 +379,7 @@ class ProjectController extends BaseController | ||
| 397 | */ | 379 | */ |
| 398 | public function getManagerList(){ | 380 | public function getManagerList(){ |
| 399 | $hrManagerModel = new ManageHr(); | 381 | $hrManagerModel = new ManageHr(); |
| 382 | + $this->map['status'] = $hrManagerModel::STATUS_ONE; | ||
| 400 | $lists = $hrManagerModel->list($this->map,'id',['id','manage_id','name','entry_position','is_leader']); | 383 | $lists = $hrManagerModel->list($this->map,'id',['id','manage_id','name','entry_position','is_leader']); |
| 401 | $this->response('success',Code::SUCCESS,$lists); | 384 | $this->response('success',Code::SUCCESS,$lists); |
| 402 | } | 385 | } |
| @@ -422,8 +405,32 @@ class ProjectController extends BaseController | @@ -422,8 +405,32 @@ class ProjectController extends BaseController | ||
| 422 | * @time :2023/8/14 10:29 | 405 | * @time :2023/8/14 10:29 |
| 423 | */ | 406 | */ |
| 424 | public function getDomain(){ | 407 | public function getDomain(){ |
| 408 | + $this->request->validate([ | ||
| 409 | + 'project_id'=>'required', | ||
| 410 | + ],[ | ||
| 411 | + 'project_id.required' => 'project_id不能为空', | ||
| 412 | + ]); | ||
| 425 | $domainModel = new DomainInfo(); | 413 | $domainModel = new DomainInfo(); |
| 426 | - $list = $domainModel->list(['status'=>0]); | 414 | + $list = $domainModel->list(['status'=>0,'project_id'=>['or',$this->param['project_id']]]); |
| 427 | $this->response('success',Code::SUCCESS,$list); | 415 | $this->response('success',Code::SUCCESS,$list); |
| 428 | } | 416 | } |
| 417 | + | ||
| 418 | + /** | ||
| 419 | + * 通过企业名称查询项目是否在服务中, 有项目并且在服务中的返回1, 其他的返回0 | ||
| 420 | + * @author zbj | ||
| 421 | + * @date 2023/9/4 | ||
| 422 | + */ | ||
| 423 | + public function getProjectInService(){ | ||
| 424 | + $company = $this->param['company']; | ||
| 425 | + if(!$company){ | ||
| 426 | + $this->response('企业名称必传',Code::SYSTEM_ERROR); | ||
| 427 | + } | ||
| 428 | + $project = Project::where('company', $company)->first(); | ||
| 429 | + if($project && ($project['remain_day'] > 0 || in_array($project['type'], [0, 1,6]))){ | ||
| 430 | + $in_service = 1; | ||
| 431 | + }else{ | ||
| 432 | + $in_service = 0; | ||
| 433 | + } | ||
| 434 | + $this->response('success',Code::SUCCESS, ['in_service' => $in_service]); | ||
| 435 | + } | ||
| 429 | } | 436 | } |
| @@ -16,6 +16,7 @@ use App\Http\Logic\Aside\Project\ProjectLogic; | @@ -16,6 +16,7 @@ use App\Http\Logic\Aside\Project\ProjectLogic; | ||
| 16 | use App\Http\Logic\Aside\Project\RenewLogic; | 16 | use App\Http\Logic\Aside\Project\RenewLogic; |
| 17 | use App\Models\ASide\APublicModel; | 17 | use App\Models\ASide\APublicModel; |
| 18 | use App\Models\Channel\Channel; | 18 | use App\Models\Channel\Channel; |
| 19 | +use App\Models\Domain\DomainInfo; | ||
| 19 | use App\Models\HomeCount\Count; | 20 | use App\Models\HomeCount\Count; |
| 20 | use App\Models\Manage\Manage; | 21 | use App\Models\Manage\Manage; |
| 21 | use App\Models\Project\DeployBuild; | 22 | use App\Models\Project\DeployBuild; |
| @@ -39,13 +40,15 @@ class RenewProjectController extends BaseController | @@ -39,13 +40,15 @@ class RenewProjectController extends BaseController | ||
| 39 | $this->searchParam($map,$this->map,$arr); | 40 | $this->searchParam($map,$this->map,$arr); |
| 40 | //按类型搜索 | 41 | //按类型搜索 |
| 41 | $map['id'] = ['in', $arr]; | 42 | $map['id'] = ['in', $arr]; |
| 42 | - $filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'created_at']; | 43 | + $filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'remain_day' ,'created_at']; |
| 43 | $lists = $project->formatQuery($map)->select($filed)->with('payment')->with('deploy_build') | 44 | $lists = $project->formatQuery($map)->select($filed)->with('payment')->with('deploy_build') |
| 44 | ->with('deploy_optimize')->with('online_check')->paginate($this->row, ['*'], 'page', $this->page); | 45 | ->with('deploy_optimize')->with('online_check')->paginate($this->row, ['*'], 'page', $this->page); |
| 45 | if(!empty($lists)){ | 46 | if(!empty($lists)){ |
| 46 | $lists = $lists->toArray(); | 47 | $lists = $lists->toArray(); |
| 48 | + $manageModel = new Manage(); | ||
| 49 | + $domainModel = new DomainInfo(); | ||
| 47 | foreach ($lists['list'] as $k=>$item){ | 50 | foreach ($lists['list'] as $k=>$item){ |
| 48 | - $item = $this->handleParam($item); | 51 | + $item = $this->handleParam($item,$manageModel,$domainModel); |
| 49 | $lists['list'][$k] = $item; | 52 | $lists['list'][$k] = $item; |
| 50 | } | 53 | } |
| 51 | } | 54 | } |
| @@ -138,8 +141,10 @@ class RenewProjectController extends BaseController | @@ -138,8 +141,10 @@ class RenewProjectController extends BaseController | ||
| 138 | ->with('project_after')->paginate($this->row, ['*'], 'page', $this->page); | 141 | ->with('project_after')->paginate($this->row, ['*'], 'page', $this->page); |
| 139 | if(!empty($lists)){ | 142 | if(!empty($lists)){ |
| 140 | $lists = $lists->toArray(); | 143 | $lists = $lists->toArray(); |
| 144 | + $manageModel = new Manage(); | ||
| 145 | + $domainModel = new DomainInfo(); | ||
| 141 | foreach ($lists['list'] as $k=>$item){ | 146 | foreach ($lists['list'] as $k=>$item){ |
| 142 | - $item = $this->handleParam($item); | 147 | + $item = $this->handleParam($item,$manageModel,$domainModel); |
| 143 | $lists['list'][$k] = $item; | 148 | $lists['list'][$k] = $item; |
| 144 | } | 149 | } |
| 145 | } | 150 | } |
| @@ -153,9 +158,10 @@ class RenewProjectController extends BaseController | @@ -153,9 +158,10 @@ class RenewProjectController extends BaseController | ||
| 153 | * @method :post | 158 | * @method :post |
| 154 | * @time :2023/8/18 14:44 | 159 | * @time :2023/8/18 14:44 |
| 155 | */ | 160 | */ |
| 156 | - public function handleParam(&$item){ | ||
| 157 | - $manageModel = new Manage(); | ||
| 158 | - $data = APublicModel::getNumByProjectId($item['id']); | 161 | + public function handleParam(&$item,&$manageModel,&$domainModel){ |
| 162 | + if($item['type'] != Project::TYPE_ZERO){ | ||
| 163 | + $data = APublicModel::getNumByProjectId($item['id']); | ||
| 164 | + } | ||
| 159 | $item = [ | 165 | $item = [ |
| 160 | 'id' => $item['id'], | 166 | 'id' => $item['id'], |
| 161 | 'title' => $item['title'], | 167 | 'title' => $item['title'], |
| @@ -174,7 +180,7 @@ class RenewProjectController extends BaseController | @@ -174,7 +180,7 @@ class RenewProjectController extends BaseController | ||
| 174 | 'type' => $item['type'], | 180 | 'type' => $item['type'], |
| 175 | 'test_domain' => $item['deploy_build']['test_domain'] ?? 0, | 181 | 'test_domain' => $item['deploy_build']['test_domain'] ?? 0, |
| 176 | 'plan' =>Project::planMap()[$item['deploy_build']['plan']], | 182 | 'plan' =>Project::planMap()[$item['deploy_build']['plan']], |
| 177 | - 'domain' => $item['deploy_optimize']['domain'] ?? 0, | 183 | + 'domain' => !empty($item['deploy_optimize']['domain']) ? $domainModel->getDomain($item['deploy_optimize']['domain']) : '', |
| 178 | 'created_at' => date('Y年m月d日', strtotime($item['created_at'])), | 184 | 'created_at' => date('Y年m月d日', strtotime($item['created_at'])), |
| 179 | 'autologin_code' => getAutoLoginCode($item['id']), | 185 | 'autologin_code' => getAutoLoginCode($item['id']), |
| 180 | 'product_num' => $data['product'] ?? 0, | 186 | 'product_num' => $data['product'] ?? 0, |
| @@ -184,6 +190,7 @@ class RenewProjectController extends BaseController | @@ -184,6 +190,7 @@ class RenewProjectController extends BaseController | ||
| 184 | 'task_pending_num' => Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]), | 190 | 'task_pending_num' => Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]), |
| 185 | 'optimist_status'=>$item['online_check']['optimist_status'] ?? 0, | 191 | 'optimist_status'=>$item['online_check']['optimist_status'] ?? 0, |
| 186 | 'qa_status'=>$item['online_check']['qa_status'] ?? 0, | 192 | 'qa_status'=>$item['online_check']['qa_status'] ?? 0, |
| 193 | + 'service_day'=>$item['remain_day'] ?? 0, | ||
| 187 | ]; | 194 | ]; |
| 188 | return $item; | 195 | return $item; |
| 189 | } | 196 | } |
| @@ -215,10 +215,11 @@ class TaskController extends BaseController | @@ -215,10 +215,11 @@ class TaskController extends BaseController | ||
| 215 | */ | 215 | */ |
| 216 | public function getUserTaskList(){ | 216 | public function getUserTaskList(){ |
| 217 | $taskOwnerModel = new TaskOwner(); | 217 | $taskOwnerModel = new TaskOwner(); |
| 218 | - $this->map['manage_id'] = $this->manage['id']; | ||
| 219 | - $lists = $taskOwnerModel->lists($this->map,$this->page,$this->row,$this->order); | 218 | + |
| 219 | + $taskModel = new Task(); | ||
| 220 | + $map = $this->searchUserParam($taskOwnerModel,$taskModel); | ||
| 221 | + $lists = $taskOwnerModel->lists($map,$this->page,$this->row,$this->order); | ||
| 220 | if(!empty($lists) && !empty($lists['list'])){ | 222 | if(!empty($lists) && !empty($lists['list'])){ |
| 221 | - $taskModel = new Task(); | ||
| 222 | $managerModel = new Manage(); | 223 | $managerModel = new Manage(); |
| 223 | foreach ($lists['list'] as $k => $v){ | 224 | foreach ($lists['list'] as $k => $v){ |
| 224 | $taskInfo = $taskModel->read(['id'=>$v['task_id']]); | 225 | $taskInfo = $taskModel->read(['id'=>$v['task_id']]); |
| @@ -230,4 +231,32 @@ class TaskController extends BaseController | @@ -230,4 +231,32 @@ class TaskController extends BaseController | ||
| 230 | } | 231 | } |
| 231 | $this->response('success',Code::SUCCESS,$lists); | 232 | $this->response('success',Code::SUCCESS,$lists); |
| 232 | } | 233 | } |
| 234 | + | ||
| 235 | + /** | ||
| 236 | + * @remark :我的任务搜索参数 | ||
| 237 | + * @name :searchUserParam | ||
| 238 | + * @author :lyh | ||
| 239 | + * @method :post | ||
| 240 | + * @time :2023/9/5 15:00 | ||
| 241 | + */ | ||
| 242 | + public function searchUserParam(&$taskOwnerModel,&$taskModel){ | ||
| 243 | + $map = []; | ||
| 244 | + if (isset($this->map['search_type']) && !empty($this->map['search_type'])){ | ||
| 245 | + if(isset($this->map['search']) && !empty($this->map['search'])) { | ||
| 246 | + $projectModel = new Project(); | ||
| 247 | + if($this->map['search_type'] == 'project'){ | ||
| 248 | + $ids = $projectModel->where('title', 'like', '%' . $this->map['search'] . '%')->pluck('id')->toArray(); | ||
| 249 | + $manage_ids = $taskOwnerModel->formatQuery(['project'=>['in',$ids],'manage_id'=>$this->manage['id']])->pluck('manage_id')->toArray(); | ||
| 250 | + $map['manage_id'] = ['in',$manage_ids]; | ||
| 251 | + }else{ | ||
| 252 | + $ids = $taskModel->where('content', 'like','%'.$this->map['search'].'%')->pluck('id')->toArray(); | ||
| 253 | + $manage_ids = $taskOwnerModel->formatQuery(['task_id'=>['in',$ids],'manage_id'=>$this->manage['id']])->pluck('manage_id')->toArray(); | ||
| 254 | + $map['manage_id'] = ['in',$manage_ids]; | ||
| 255 | + } | ||
| 256 | + } | ||
| 257 | + }else{ | ||
| 258 | + $map['manage_id'] = $this->manage['id']; | ||
| 259 | + } | ||
| 260 | + return $map; | ||
| 261 | + } | ||
| 233 | } | 262 | } |
| @@ -30,8 +30,8 @@ class ProjectMenuController extends BaseController | @@ -30,8 +30,8 @@ class ProjectMenuController extends BaseController | ||
| 30 | * @time :2023/6/21 17:24 | 30 | * @time :2023/6/21 17:24 |
| 31 | */ | 31 | */ |
| 32 | public function lists(ProjectMenuLogic $projectMenuLogic){ | 32 | public function lists(ProjectMenuLogic $projectMenuLogic){ |
| 33 | - $this->order = 'sort'; | ||
| 34 | - $lists = $projectMenuLogic->MenuList($this->map,$this->order); | 33 | + |
| 34 | + $lists = $projectMenuLogic->MenuList($this->map); | ||
| 35 | $this->response('success',Code::SUCCESS,$lists); | 35 | $this->response('success',Code::SUCCESS,$lists); |
| 36 | } | 36 | } |
| 37 | 37 |
| @@ -6,6 +6,7 @@ use App\Enums\Common\Code; | @@ -6,6 +6,7 @@ use App\Enums\Common\Code; | ||
| 6 | use App\Http\Controllers\Aside\BaseController; | 6 | use App\Http\Controllers\Aside\BaseController; |
| 7 | use App\Http\Logic\Aside\User\UserLogic; | 7 | use App\Http\Logic\Aside\User\UserLogic; |
| 8 | use App\Http\Requests\Aside\User\UserRequest; | 8 | use App\Http\Requests\Aside\User\UserRequest; |
| 9 | +use App\Models\Project\Project; | ||
| 9 | use App\Models\User\ProjectRole; | 10 | use App\Models\User\ProjectRole; |
| 10 | use App\Models\User\User; | 11 | use App\Models\User\User; |
| 11 | use App\Models\User\User as UserModel; | 12 | use App\Models\User\User as UserModel; |
| @@ -162,4 +163,16 @@ class ProjectUserController extends BaseController | @@ -162,4 +163,16 @@ class ProjectUserController extends BaseController | ||
| 162 | $userLogic->setParamStatus(); | 163 | $userLogic->setParamStatus(); |
| 163 | $this->response('success'); | 164 | $this->response('success'); |
| 164 | } | 165 | } |
| 166 | + | ||
| 167 | + /** | ||
| 168 | + * @remark :保存用户获取项目列表 | ||
| 169 | + * @name :getProjectList | ||
| 170 | + * @author :lyh | ||
| 171 | + * @method :post | ||
| 172 | + * @time :2023/9/6 9:06 | ||
| 173 | + */ | ||
| 174 | + public function getProjectList(Project $project){ | ||
| 175 | + $lists = $project->list(['type'=>['!=',$project::TYPE_ZERO]],'id',['id','title']); | ||
| 176 | + $this->response('success',Code::SUCCESS,$lists); | ||
| 177 | + } | ||
| 165 | } | 178 | } |
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * @remark : | ||
| 4 | + * @name :UserLogController.php | ||
| 5 | + * @author :lyh | ||
| 6 | + * @method :post | ||
| 7 | + * @time :2023/9/5 16:07 | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +namespace App\Http\Controllers\Aside\User; | ||
| 11 | + | ||
| 12 | +use App\Enums\Common\Code; | ||
| 13 | +use App\Http\Controllers\Aside\BaseController; | ||
| 14 | +use App\Models\Manage\Manage; | ||
| 15 | +use App\Models\User\User; | ||
| 16 | +use App\Models\User\UserLogin; | ||
| 17 | + | ||
| 18 | +class UserLogController extends BaseController | ||
| 19 | +{ | ||
| 20 | + /** | ||
| 21 | + * @remark :用户日志 | ||
| 22 | + * @name :lists | ||
| 23 | + * @author :lyh | ||
| 24 | + * @method :post | ||
| 25 | + * @time :2023/9/5 16:10 | ||
| 26 | + */ | ||
| 27 | + public function lists(UserLogin $user){ | ||
| 28 | + $userModel = new User(); | ||
| 29 | + $map = $this->searchParam($userModel); | ||
| 30 | + $lists = $user->lists($map,$this->page,$this->row,$this->order); | ||
| 31 | + if(!empty($lists) && !empty($lists['list'])){ | ||
| 32 | + foreach ($lists['list'] as $k => $v){ | ||
| 33 | + $info = $userModel->read(['id'=>$v['user_id']]); | ||
| 34 | + $v['mobile'] = $info['mobile'] ?? ''; | ||
| 35 | + $v['name'] = $info['name'] ?? ''; | ||
| 36 | + $v['type'] = ($v['type'] == 0) ? '用户登录' : '管理员登录'; | ||
| 37 | + if(!empty($v['remark'])){ | ||
| 38 | + $v['remark'] = $this->handleRemark($userModel,$v['remark']); | ||
| 39 | + } | ||
| 40 | + $lists['list'][$k] = $v; | ||
| 41 | + } | ||
| 42 | + } | ||
| 43 | + $this->response('success',Code::SUCCESS,$lists); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * @remark :搜索参数 | ||
| 48 | + * @name :searchParam | ||
| 49 | + * @author :lyh | ||
| 50 | + * @method :post | ||
| 51 | + * @time :2023/9/5 16:56 | ||
| 52 | + */ | ||
| 53 | + public function searchParam(&$userModel){ | ||
| 54 | + $map = []; | ||
| 55 | + if(isset($this->map['mobile']) && !empty($this->map['mobile'])){ | ||
| 56 | + $ids = $userModel->where('mobile', 'like', '%' . $this->map['mobile'] . '%')->pluck('id')->toArray(); | ||
| 57 | + $map['user_id'] = ['in',$ids]; | ||
| 58 | + }elseif (isset($this->map['name']) && !empty($this->map['name'])){ | ||
| 59 | + $ids = $userModel->where('name', 'like', '%' . $this->param['name'] . '%')->pluck('id')->toArray(); | ||
| 60 | + $map['user_id'] = ['in',$ids]; | ||
| 61 | + } | ||
| 62 | + if(isset($this->map['created_at'])){ | ||
| 63 | + $map['created_at'] = $this->map['created_at']; | ||
| 64 | + } | ||
| 65 | + return $map; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * @remark :处理备注 | ||
| 70 | + * @name :handleRemark | ||
| 71 | + * @author :lyh | ||
| 72 | + * @method :post | ||
| 73 | + * @time :2023/9/5 17:21 | ||
| 74 | + */ | ||
| 75 | + public function handleRemark(&$managerModel,$remark){ | ||
| 76 | + $arr = explode(':',$remark); | ||
| 77 | + $managerInfo = $managerModel->read(['id'=>$arr[1]]); | ||
| 78 | + if($managerInfo !== false){ | ||
| 79 | + $remark = $arr[0].':'.$managerInfo['name']; | ||
| 80 | + } | ||
| 81 | + return $remark; | ||
| 82 | + } | ||
| 83 | +} |
| @@ -29,11 +29,17 @@ class ComController extends BaseController | @@ -29,11 +29,17 @@ class ComController extends BaseController | ||
| 29 | $projectRoleModel = new ProjectRoleModel(); | 29 | $projectRoleModel = new ProjectRoleModel(); |
| 30 | $info = $projectRoleModel->read(['id'=>$this->user['role_id']]); | 30 | $info = $projectRoleModel->read(['id'=>$this->user['role_id']]); |
| 31 | $info['role_menu'] = trim($info['role_menu'],','); | 31 | $info['role_menu'] = trim($info['role_menu'],','); |
| 32 | - $lists = $projectMenuModel->where(['status'=>0,'is_role'=>0])->whereIn('id',explode(',',$info['role_menu']))->get(); | 32 | + $this->map = [ |
| 33 | + 'status'=>0, | ||
| 34 | + 'is_role'=>0, | ||
| 35 | + 'id'=>['in',explode(',',$info['role_menu'])] | ||
| 36 | + ]; | ||
| 33 | }else{ | 37 | }else{ |
| 34 | - $lists = $projectMenuModel->where(['is_role'=>0])->get(); | 38 | + $this->map = [ |
| 39 | + 'status'=>0, | ||
| 40 | + ]; | ||
| 35 | } | 41 | } |
| 36 | - $lists = $lists->toArray(); | 42 | + $lists = $projectMenuModel->list($this->map,'sort'); |
| 37 | $menu = array(); | 43 | $menu = array(); |
| 38 | foreach ($lists as $k => $v){ | 44 | foreach ($lists as $k => $v){ |
| 39 | $v = (array)$v; | 45 | $v = (array)$v; |
| @@ -7,6 +7,7 @@ use App\Helper\Common; | @@ -7,6 +7,7 @@ use App\Helper\Common; | ||
| 7 | use App\Http\Controllers\Controller; | 7 | use App\Http\Controllers\Controller; |
| 8 | use App\Http\Logic\Aside\Project\ProjectLogic; | 8 | use App\Http\Logic\Aside\Project\ProjectLogic; |
| 9 | use App\Http\Requests\Scene; | 9 | use App\Http\Requests\Scene; |
| 10 | +use App\Models\Domain\DomainInfo; | ||
| 10 | use App\Models\File\File; | 11 | use App\Models\File\File; |
| 11 | use App\Models\File\Image; | 12 | use App\Models\File\Image; |
| 12 | use App\Models\User\User as UserModel; | 13 | use App\Models\User\User as UserModel; |
| @@ -71,6 +71,10 @@ class BTemplateController extends BaseController | @@ -71,6 +71,10 @@ class BTemplateController extends BaseController | ||
| 71 | * @time :2023/6/29 10:02 | 71 | * @time :2023/6/29 10:02 |
| 72 | */ | 72 | */ |
| 73 | public function save(TemplateRequest $templateRequest,BTemplateLogic $BTemplateLogic){ | 73 | public function save(TemplateRequest $templateRequest,BTemplateLogic $BTemplateLogic){ |
| 74 | + //演示项目,不允许其他号码编辑 | ||
| 75 | + if(($this->user['project_id'] == 1) && ($this->user['mobile'] != '15928018676')){ | ||
| 76 | + $this->response('演示项目不允许编辑',Code::USER_ERROR); | ||
| 77 | + } | ||
| 74 | $templateRequest->validated(); | 78 | $templateRequest->validated(); |
| 75 | $BTemplateLogic->templateSave(); | 79 | $BTemplateLogic->templateSave(); |
| 76 | $this->response('success'); | 80 | $this->response('success'); |
| @@ -87,4 +91,36 @@ class BTemplateController extends BaseController | @@ -87,4 +91,36 @@ class BTemplateController extends BaseController | ||
| 87 | $list = $BTemplateLogic->getModuleType(); | 91 | $list = $BTemplateLogic->getModuleType(); |
| 88 | $this->response('success',Code::SUCCESS,$list); | 92 | $this->response('success',Code::SUCCESS,$list); |
| 89 | } | 93 | } |
| 94 | + | ||
| 95 | + /** | ||
| 96 | + * @remark :公共主题设置公共head | ||
| 97 | + * @name :setHead | ||
| 98 | + * @author :lyh | ||
| 99 | + * @method :post | ||
| 100 | + * @time :2023/7/10 15:30 | ||
| 101 | + */ | ||
| 102 | + public function setHeadFooter(BTemplateLogic $BTemplateLogic){ | ||
| 103 | + $this->request->validate([ | ||
| 104 | + 'head'=>'required', | ||
| 105 | + 'footer'=>'required' | ||
| 106 | + ],[ | ||
| 107 | + 'head.required' => 'head不能为空', | ||
| 108 | + 'footer.required' => 'footer不能为空' | ||
| 109 | + ]); | ||
| 110 | + $BTemplateLogic->setHeadFooterSave(); | ||
| 111 | + $this->response('success'); | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + /** | ||
| 115 | + * @remark :获取公共主题head | ||
| 116 | + * @name :getHead | ||
| 117 | + * @author :lyh | ||
| 118 | + * @method :post | ||
| 119 | + * @time :2023/7/10 15:30 | ||
| 120 | + */ | ||
| 121 | + public function getHeadFooter(BTemplateLogic $BTemplateLogic){ | ||
| 122 | + $info = $BTemplateLogic->getHeadFooterList(); | ||
| 123 | + $this->response('success',Code::SUCCESS,$info); | ||
| 124 | + } | ||
| 125 | + | ||
| 90 | } | 126 | } |
| @@ -10,6 +10,7 @@ use App\Models\Devops\DevopsTask; | @@ -10,6 +10,7 @@ use App\Models\Devops\DevopsTask; | ||
| 10 | use App\Models\Project\Project; | 10 | use App\Models\Project\Project; |
| 11 | use App\Models\Devops\ServerConfig; | 11 | use App\Models\Devops\ServerConfig; |
| 12 | use App\Services\ProjectServer; | 12 | use App\Services\ProjectServer; |
| 13 | +use App\Utils\EncryptUtils; | ||
| 13 | use Illuminate\Support\Facades\DB; | 14 | use Illuminate\Support\Facades\DB; |
| 14 | 15 | ||
| 15 | /** | 16 | /** |
| @@ -47,7 +48,11 @@ class ServerConfigLogic extends BaseLogic | @@ -47,7 +48,11 @@ class ServerConfigLogic extends BaseLogic | ||
| 47 | * @time :2023/8/2 17:53 | 48 | * @time :2023/8/2 17:53 |
| 48 | */ | 49 | */ |
| 49 | public function getServiceConfig(){ | 50 | public function getServiceConfig(){ |
| 51 | + $encrypt = new EncryptUtils(); | ||
| 50 | $info = $this->model->read(['id'=>$this->param['id']]); | 52 | $info = $this->model->read(['id'=>$this->param['id']]); |
| 53 | + $info['user'] = $encrypt->unlock_url($info['user']); | ||
| 54 | + $info['password'] = $encrypt->unlock_url($info['password']); | ||
| 55 | + $info['port'] = $encrypt->unlock_url($info['port']); | ||
| 51 | if($info === false){ | 56 | if($info === false){ |
| 52 | $this->fail('当前数据不存在或者被删除'); | 57 | $this->fail('当前数据不存在或者被删除'); |
| 53 | } | 58 | } |
| @@ -65,6 +70,10 @@ class ServerConfigLogic extends BaseLogic | @@ -65,6 +70,10 @@ class ServerConfigLogic extends BaseLogic | ||
| 65 | { | 70 | { |
| 66 | DB::beginTransaction(); | 71 | DB::beginTransaction(); |
| 67 | try { | 72 | try { |
| 73 | + $encrypt = new EncryptUtils(); | ||
| 74 | + $this->param['user'] = $encrypt->lock_url($this->param['user']); | ||
| 75 | + $this->param['password'] = $encrypt->lock_url($this->param['password']); | ||
| 76 | + $this->param['port'] = $encrypt->lock_url($this->param['port']); | ||
| 68 | //保存配置 | 77 | //保存配置 |
| 69 | if(isset($this->param['id']) && !empty($this->param['id'])){ | 78 | if(isset($this->param['id']) && !empty($this->param['id'])){ |
| 70 | $this->model->edit($this->param,['id'=>$this->param['id']]); | 79 | $this->model->edit($this->param,['id'=>$this->param['id']]); |
| @@ -125,11 +134,6 @@ class ServerConfigLogic extends BaseLogic | @@ -125,11 +134,6 @@ class ServerConfigLogic extends BaseLogic | ||
| 125 | if($rs === false){ | 134 | if($rs === false){ |
| 126 | $this->fail('删除失败'); | 135 | $this->fail('删除失败'); |
| 127 | } | 136 | } |
| 128 | - //TODO::上线放开 | ||
| 129 | -// if($info['type'] == $this->model::TYPE_MYSQL){ | ||
| 130 | -// $sql = 'DROP DATABASE '.$info['title']; | ||
| 131 | -// DB::connection('custom_mysql')->statement($sql); | ||
| 132 | -// } | ||
| 133 | return $this->success(); | 137 | return $this->success(); |
| 134 | } | 138 | } |
| 135 | 139 |
| @@ -31,6 +31,10 @@ class DomainInfoLogic extends BaseLogic | @@ -31,6 +31,10 @@ class DomainInfoLogic extends BaseLogic | ||
| 31 | */ | 31 | */ |
| 32 | public function saveDomain() | 32 | public function saveDomain() |
| 33 | { | 33 | { |
| 34 | + $domain = parse_url($this->param['domain'], PHP_URL_HOST); | ||
| 35 | + if(!empty($domain)){ | ||
| 36 | + $this->param['domain'] = $domain['host']; | ||
| 37 | + } | ||
| 34 | //验证域名 | 38 | //验证域名 |
| 35 | $this->verifyDomain($this->param['domain'],isset($this->param['id']) ?? ''); | 39 | $this->verifyDomain($this->param['domain'],isset($this->param['id']) ?? ''); |
| 36 | if(isset($this->param['id']) && !empty($this->param['id'])){ | 40 | if(isset($this->param['id']) && !empty($this->param['id'])){ |
| @@ -40,8 +40,11 @@ class LoginLogic extends BaseLogic | @@ -40,8 +40,11 @@ class LoginLogic extends BaseLogic | ||
| 40 | if (Manage::STATUS_DISABLE == $manage->status) { | 40 | if (Manage::STATUS_DISABLE == $manage->status) { |
| 41 | $this->fail('帐号已被禁用'); | 41 | $this->fail('帐号已被禁用'); |
| 42 | } | 42 | } |
| 43 | + $type = 1;//账号密码登录 | ||
| 43 | if (!Hash::check($this->param['password'], $manage->password)) { | 44 | if (!Hash::check($this->param['password'], $manage->password)) { |
| 45 | + //验证验证码 | ||
| 44 | $this->verifyCode($this->param['mobile'],$this->param['password']); | 46 | $this->verifyCode($this->param['mobile'],$this->param['password']); |
| 47 | + $type = 2;//验证码登录 | ||
| 45 | } | 48 | } |
| 46 | if(!empty($manage['token'])){ | 49 | if(!empty($manage['token'])){ |
| 47 | //清除上一次用户缓存 | 50 | //清除上一次用户缓存 |
| @@ -51,14 +54,14 @@ class LoginLogic extends BaseLogic | @@ -51,14 +54,14 @@ class LoginLogic extends BaseLogic | ||
| 51 | $token = md5(uniqid().$manage['id']); | 54 | $token = md5(uniqid().$manage['id']); |
| 52 | //存储缓存 | 55 | //存储缓存 |
| 53 | $manage['token'] = $token; | 56 | $manage['token'] = $token; |
| 54 | - Cache::add(Common::MANAGE_TOKEN . $token,$manage); | 57 | + Cache::add(Common::MANAGE_TOKEN . $token,$manage,3600); |
| 55 | //更新用户信息 | 58 | //更新用户信息 |
| 56 | $manage->token = $token; | 59 | $manage->token = $token; |
| 57 | $res = $manage->save(); | 60 | $res = $manage->save(); |
| 58 | if(!$res){ | 61 | if(!$res){ |
| 59 | $this->fail('系统错误,请联系管理员'); | 62 | $this->fail('系统错误,请联系管理员'); |
| 60 | } | 63 | } |
| 61 | - LoginLog::addLog($manage->id); | 64 | + LoginLog::addLog($manage->id,$type); |
| 62 | //获取当前用户特殊模块权限 | 65 | //获取当前用户特殊模块权限 |
| 63 | $manage['special'] = $this->getSpecialMenu($manage['id']); | 66 | $manage['special'] = $this->getSpecialMenu($manage['id']); |
| 64 | return $this->success($manage->makeVisible('token')->toArray()); | 67 | return $this->success($manage->makeVisible('token')->toArray()); |
| @@ -44,7 +44,6 @@ class HrLogic extends BaseLogic | @@ -44,7 +44,6 @@ class HrLogic extends BaseLogic | ||
| 44 | if(isset($this->param['id']) && !empty($this->param['id'])){ | 44 | if(isset($this->param['id']) && !empty($this->param['id'])){ |
| 45 | $rs = $this->model->edit($this->param,['id'=>$this->param['id']]); | 45 | $rs = $this->model->edit($this->param,['id'=>$this->param['id']]); |
| 46 | }else{ | 46 | }else{ |
| 47 | - $this->param['manage_id'] = $this->manager['id']; | ||
| 48 | $rs = $this->model->add($this->param); | 47 | $rs = $this->model->add($this->param); |
| 49 | } | 48 | } |
| 50 | if($rs === false){ | 49 | if($rs === false){ |
| @@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
| 2 | 2 | ||
| 3 | namespace App\Http\Logic\Aside\Project; | 3 | namespace App\Http\Logic\Aside\Project; |
| 4 | 4 | ||
| 5 | +use App\Models\Devops\ServerConfig; | ||
| 5 | use Illuminate\Support\Arr as SupArr; | 6 | use Illuminate\Support\Arr as SupArr; |
| 6 | use App\Helper\Arr; | 7 | use App\Helper\Arr; |
| 7 | use App\Helper\Common; | 8 | use App\Helper\Common; |
| @@ -47,24 +48,19 @@ class ProjectLogic extends BaseLogic | @@ -47,24 +48,19 @@ class ProjectLogic extends BaseLogic | ||
| 47 | * @time :2023/7/28 17:11 | 48 | * @time :2023/7/28 17:11 |
| 48 | */ | 49 | */ |
| 49 | public function getProjectInfo($id){ | 50 | public function getProjectInfo($id){ |
| 50 | -// $info = Common::get_user_cache($this->model->getTable(),$id); | ||
| 51 | -// if(empty($info)){ | ||
| 52 | - $info = $this->model->with('payment')->with('deploy_build')->with('deploy_optimize')->with('online_check') | ||
| 53 | - ->with('project_after')->where(['id'=>$id])->first()->toArray(); | ||
| 54 | - if(!empty($info['online_check']['created_manage_id'])){ | ||
| 55 | - $info['online_check']['name'] = (new Manage())->read(['id'=>$info['online_check']['created_manage_id']])['name'] ?? ''; | ||
| 56 | - } | ||
| 57 | - | ||
| 58 | - if(isset($info['deploy_optimize']['minor_keywords']) && !empty($info['deploy_optimize']['minor_keywords'])){ | ||
| 59 | - $info['deploy_optimize']['minor_keywords'] = json_decode($info['deploy_optimize']['minor_keywords']) ?? ''; | ||
| 60 | - }else{ | ||
| 61 | - $info['deploy_optimize']['minor_keywords'] = []; | ||
| 62 | - } | ||
| 63 | - if($info['extend_type'] != 0){ | ||
| 64 | - $info['type'] = $info['extend_type']; | ||
| 65 | - } | ||
| 66 | -// Common::set_user_cache($info,$this->model->getTable(),$id); | ||
| 67 | -// } | 51 | + $info = $this->model->with('payment')->with('deploy_build')->with('deploy_optimize')->with('online_check') |
| 52 | + ->with('project_after')->where(['id'=>$id])->first()->toArray(); | ||
| 53 | + if(!empty($info['online_check']['created_manage_id'])){ | ||
| 54 | + $info['online_check']['name'] = (new Manage())->read(['id'=>$info['online_check']['created_manage_id']])['name'] ?? ''; | ||
| 55 | + } | ||
| 56 | + if(isset($info['deploy_optimize']['minor_keywords']) && !empty($info['deploy_optimize']['minor_keywords'])){ | ||
| 57 | + $info['deploy_optimize']['minor_keywords'] = json_decode($info['deploy_optimize']['minor_keywords']) ?? ''; | ||
| 58 | + }else{ | ||
| 59 | + $info['deploy_optimize']['minor_keywords'] = []; | ||
| 60 | + } | ||
| 61 | + if($info['extend_type'] != 0){ | ||
| 62 | + $info['type'] = $info['extend_type']; | ||
| 63 | + } | ||
| 68 | return $this->success($info); | 64 | return $this->success($info); |
| 69 | } | 65 | } |
| 70 | 66 | ||
| @@ -164,6 +160,9 @@ class ProjectLogic extends BaseLogic | @@ -164,6 +160,9 @@ class ProjectLogic extends BaseLogic | ||
| 164 | */ | 160 | */ |
| 165 | protected function saveProjectDeployBuild($deploy_build){ | 161 | protected function saveProjectDeployBuild($deploy_build){ |
| 166 | $deployBuildModel = new DeployBuild(); | 162 | $deployBuildModel = new DeployBuild(); |
| 163 | + if(isset($deploy_build['configuration']) && !empty($deploy_build['configuration'])){ | ||
| 164 | + $deploy_build['configuration'] = Arr::a2s($deploy_build['configuration']); | ||
| 165 | + } | ||
| 167 | $deployBuildModel->edit($deploy_build,['id'=>$deploy_build['id']]); | 166 | $deployBuildModel->edit($deploy_build,['id'=>$deploy_build['id']]); |
| 168 | return $this->success(); | 167 | return $this->success(); |
| 169 | } | 168 | } |
| @@ -178,8 +177,9 @@ class ProjectLogic extends BaseLogic | @@ -178,8 +177,9 @@ class ProjectLogic extends BaseLogic | ||
| 178 | protected function saveProjectDeployOptimize($deploy_optimize){ | 177 | protected function saveProjectDeployOptimize($deploy_optimize){ |
| 179 | $deployOptimizeModel = new DeployOptimize(); | 178 | $deployOptimizeModel = new DeployOptimize(); |
| 180 | if(isset($deploy_optimize['domain']) && !empty($deploy_optimize['domain'])){ | 179 | if(isset($deploy_optimize['domain']) && !empty($deploy_optimize['domain'])){ |
| 181 | - if (!preg_match('/http/', $deploy_optimize['domain'])) { | ||
| 182 | - $deploy_optimize['domain'] = 'https://'.trim($deploy_optimize['domain'],'/').'/'; | 180 | + //更改域名 |
| 181 | + if(isset($deploy_optimize['domain']) && !empty($deploy_optimize['domain'])){ | ||
| 182 | + $this->editDomainStatus($deploy_optimize['domain'],$deploy_optimize['project_id']); | ||
| 183 | } | 183 | } |
| 184 | } | 184 | } |
| 185 | if(isset($deploy_optimize['minor_languages']) && !empty($deploy_optimize['minor_languages'])){ | 185 | if(isset($deploy_optimize['minor_languages']) && !empty($deploy_optimize['minor_languages'])){ |
| @@ -258,8 +258,8 @@ class ProjectLogic extends BaseLogic | @@ -258,8 +258,8 @@ class ProjectLogic extends BaseLogic | ||
| 258 | * @time :2023/8/28 10:50 | 258 | * @time :2023/8/28 10:50 |
| 259 | */ | 259 | */ |
| 260 | public function updateServe($serve_id){ | 260 | public function updateServe($serve_id){ |
| 261 | - $domainModel = new DomainInfo(); | ||
| 262 | - $domainModel->edit(['status'=>$domainModel::STATUS_ONE],['id'=>$serve_id]); | 261 | + $serverModel = new ServerConfig(); |
| 262 | + $serverModel->edit(['status'=>$serverModel::STATUS_ONE],['id'=>$serve_id]); | ||
| 263 | return $this->success(); | 263 | return $this->success(); |
| 264 | } | 264 | } |
| 265 | 265 | ||
| @@ -355,7 +355,24 @@ class ProjectLogic extends BaseLogic | @@ -355,7 +355,24 @@ class ProjectLogic extends BaseLogic | ||
| 355 | } | 355 | } |
| 356 | 356 | ||
| 357 | 357 | ||
| 358 | - | 358 | + /** |
| 359 | + * @remark :修改域名时,同时更改其状态 | ||
| 360 | + * @name :domainStatus | ||
| 361 | + * @author :lyh | ||
| 362 | + * @method :post | ||
| 363 | + * @time :2023/9/4 14:29 | ||
| 364 | + */ | ||
| 365 | + public function editDomainStatus($domain,$project_id){ | ||
| 366 | + $domainModel = new DomainInfo(); | ||
| 367 | + //先清空上一次所绑定的域名 | ||
| 368 | + $info = $domainModel->read(['project_id'=>$project_id]); | ||
| 369 | + if($info !== false){ | ||
| 370 | + $domainModel->edit(['project_id'=>0,'status'=>DomainInfo::STATUS_ZERO],['id'=>$info['id']]); | ||
| 371 | + } | ||
| 372 | + //重新设置域名 | ||
| 373 | + $domainModel->edit(['status'=>DomainInfo::STATUS_ONE,'project_id'=>$project_id],['id'=>$domain]); | ||
| 374 | + return $this->success(); | ||
| 375 | + } | ||
| 359 | 376 | ||
| 360 | 377 | ||
| 361 | 378 |
| @@ -14,6 +14,7 @@ use App\Models\Template\BTemplate; | @@ -14,6 +14,7 @@ use App\Models\Template\BTemplate; | ||
| 14 | use App\Models\Template\BTemplateLog; | 14 | use App\Models\Template\BTemplateLog; |
| 15 | use App\Models\Template\Template; | 15 | use App\Models\Template\Template; |
| 16 | use Illuminate\Support\Facades\DB; | 16 | use Illuminate\Support\Facades\DB; |
| 17 | +use mysql_xdevapi\Exception; | ||
| 17 | 18 | ||
| 18 | /** | 19 | /** |
| 19 | * @remark :b端模块 | 20 | * @remark :b端模块 |
| @@ -316,6 +317,43 @@ class BTemplateLogic extends BaseLogic | @@ -316,6 +317,43 @@ class BTemplateLogic extends BaseLogic | ||
| 316 | return $info['values']; | 317 | return $info['values']; |
| 317 | } | 318 | } |
| 318 | 319 | ||
| 320 | + /** | ||
| 321 | + * @remark :设置主题公共head | ||
| 322 | + * @name :setHeadInfo | ||
| 323 | + * @author :lyh | ||
| 324 | + * @method :post | ||
| 325 | + * @time :2023/7/10 15:32 | ||
| 326 | + */ | ||
| 327 | + public function setHeadFooterSave(){ | ||
| 328 | + $serviceSettingModel = new ServiceSettingModel(); | ||
| 329 | + DB::beginTransaction(); | ||
| 330 | + try { | ||
| 331 | + $serviceSettingModel->del(['type'=>2]); | ||
| 332 | + $data = [ | ||
| 333 | + ['type'=>2,'key'=>'head','values'=>$this->param['head'],'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')], | ||
| 334 | + ['type'=>2,'key'=>'footer','values'=>$this->param['footer'],'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')] | ||
| 335 | + ]; | ||
| 336 | + $serviceSettingModel->insert($data); | ||
| 337 | + DB::commit(); | ||
| 338 | + }catch (Exception $e){ | ||
| 339 | + DB::rollBack(); | ||
| 340 | + $this->fail('error'); | ||
| 341 | + } | ||
| 342 | + } | ||
| 343 | + | ||
| 344 | + /** | ||
| 345 | + * @remark :获取主题公共head | ||
| 346 | + * @name :getHeadInfo | ||
| 347 | + * @author :lyh | ||
| 348 | + * @method :post | ||
| 349 | + * @time :2023/7/10 15:33 | ||
| 350 | + */ | ||
| 351 | + public function getHeadFooterList(){ | ||
| 352 | + $serviceSettingModel = new ServiceSettingModel(); | ||
| 353 | + $list = $serviceSettingModel->list(['type'=>2],'created_at'); | ||
| 354 | + return $this->success($list); | ||
| 355 | + } | ||
| 356 | + | ||
| 319 | 357 | ||
| 320 | /** | 358 | /** |
| 321 | * @remark :获取类型 | 359 | * @remark :获取类型 |
| @@ -2,11 +2,9 @@ | @@ -2,11 +2,9 @@ | ||
| 2 | 2 | ||
| 3 | namespace App\Http\Logic\Bside\Product; | 3 | namespace App\Http\Logic\Bside\Product; |
| 4 | 4 | ||
| 5 | -use App\Exceptions\BsideGlobalException; | ||
| 6 | use App\Helper\Arr; | 5 | use App\Helper\Arr; |
| 7 | use App\Http\Logic\Bside\BaseLogic; | 6 | use App\Http\Logic\Bside\BaseLogic; |
| 8 | use App\Models\Product\Category; | 7 | use App\Models\Product\Category; |
| 9 | -use App\Models\Product\CategoryRelated; | ||
| 10 | use App\Models\Product\Product; | 8 | use App\Models\Product\Product; |
| 11 | use App\Models\RouteMap\RouteMap; | 9 | use App\Models\RouteMap\RouteMap; |
| 12 | use Illuminate\Support\Facades\DB; | 10 | use Illuminate\Support\Facades\DB; |
| @@ -6,6 +6,7 @@ use App\Enums\Common\Code; | @@ -6,6 +6,7 @@ use App\Enums\Common\Code; | ||
| 6 | use App\Exceptions\AsideGlobalException; | 6 | use App\Exceptions\AsideGlobalException; |
| 7 | use App\Exceptions\BsideGlobalException; | 7 | use App\Exceptions\BsideGlobalException; |
| 8 | use App\Helper\Common; | 8 | use App\Helper\Common; |
| 9 | +use App\Models\Domain\DomainInfo; | ||
| 9 | use App\Models\Project\Project; | 10 | use App\Models\Project\Project; |
| 10 | use App\Models\Sms\SmsLog; | 11 | use App\Models\Sms\SmsLog; |
| 11 | use App\Models\User\ProjectRole as ProjectRoleModel; | 12 | use App\Models\User\ProjectRole as ProjectRoleModel; |
| @@ -55,6 +56,8 @@ class UserLoginLogic | @@ -55,6 +56,8 @@ class UserLoginLogic | ||
| 55 | } | 56 | } |
| 56 | $projectModel = new Project(); | 57 | $projectModel = new Project(); |
| 57 | $project_list = $projectModel->list(['id'=>['in',$projectArr]],'id',['id','title']); | 58 | $project_list = $projectModel->list(['id'=>['in',$projectArr]],'id',['id','title']); |
| 59 | + //登录选择项目的有效时间 | ||
| 60 | + Cache::add('login-project-'.$this->param['mobile'],1,300); | ||
| 58 | return $this->success($project_list); | 61 | return $this->success($project_list); |
| 59 | } | 62 | } |
| 60 | 63 | ||
| @@ -66,11 +69,15 @@ class UserLoginLogic | @@ -66,11 +69,15 @@ class UserLoginLogic | ||
| 66 | * @time :2023/6/17 16:43 | 69 | * @time :2023/6/17 16:43 |
| 67 | */ | 70 | */ |
| 68 | public function projectLogin(){ | 71 | public function projectLogin(){ |
| 72 | + if(!Cache::get('login-project-'.$this->param['mobile'])){ | ||
| 73 | + $this->fail('当前用户选择项目有限时间已过期'); | ||
| 74 | + } | ||
| 69 | //获取项目详情 | 75 | //获取项目详情 |
| 70 | $info = $this->assembleParam($this->param['mobile'],$this->param['project_id']); | 76 | $info = $this->assembleParam($this->param['mobile'],$this->param['project_id']); |
| 71 | if(isset($info['token']) && !empty($info['token'])){ | 77 | if(isset($info['token']) && !empty($info['token'])){ |
| 72 | //清除上一次用户缓存 | 78 | //清除上一次用户缓存 |
| 73 | Cache::pull($info['token']); | 79 | Cache::pull($info['token']); |
| 80 | + Cache::pull('login-project-'.$this->param['mobile']); | ||
| 74 | } | 81 | } |
| 75 | //生成新token | 82 | //生成新token |
| 76 | $token = md5(uniqid().$info['id']); | 83 | $token = md5(uniqid().$info['id']); |
| @@ -157,7 +164,7 @@ class UserLoginLogic | @@ -157,7 +164,7 @@ class UserLoginLogic | ||
| 157 | $info['hagro'] = $project['hagro'] ?? ''; | 164 | $info['hagro'] = $project['hagro'] ?? ''; |
| 158 | $info['plan'] = Project::planMap()[$project['deploy_build']['plan']]; | 165 | $info['plan'] = Project::planMap()[$project['deploy_build']['plan']]; |
| 159 | $info['domain'] = (!empty($project['deploy_optimize']['domain']) ? | 166 | $info['domain'] = (!empty($project['deploy_optimize']['domain']) ? |
| 160 | - $project['deploy_optimize']['domain'] : ($project['deploy_build']['test_domain'] ?? '')); | 167 | + ((new DomainInfo())->getDomain($project['deploy_optimize']['domain'])) : ($project['deploy_build']['test_domain'] ?? '')); |
| 161 | //保存项目缓存 | 168 | //保存项目缓存 |
| 162 | Cache::put('user-'.$info['project_id'],$project,$minutes = null); | 169 | Cache::put('user-'.$info['project_id'],$project,$minutes = null); |
| 163 | return $this->success($info); | 170 | return $this->success($info); |
| @@ -171,7 +178,7 @@ class UserLoginLogic | @@ -171,7 +178,7 @@ class UserLoginLogic | ||
| 171 | * @time :2023/8/29 15:26 | 178 | * @time :2023/8/29 15:26 |
| 172 | */ | 179 | */ |
| 173 | public function assembleParam($mobile,$project_id){ | 180 | public function assembleParam($mobile,$project_id){ |
| 174 | - $info = $this->model->read(['mobile'=>$mobile,'project_id'=>$project_id],['id','mobile','status','role_id','token','name','project_id']); | 181 | + $info = $this->model->read(['mobile'=>$mobile,'project_id'=>$project_id],['id','mobile','status','role_id','token','name','wechat','project_id']); |
| 175 | //获取项目详情 | 182 | //获取项目详情 |
| 176 | $project = $this->getProjectInfo($project_id); | 183 | $project = $this->getProjectInfo($project_id); |
| 177 | $info['title'] = $project['title'] ?? ''; | 184 | $info['title'] = $project['title'] ?? ''; |
| @@ -181,13 +188,14 @@ class UserLoginLogic | @@ -181,13 +188,14 @@ class UserLoginLogic | ||
| 181 | $info['hagro'] = $project['hagro'] ?? ''; | 188 | $info['hagro'] = $project['hagro'] ?? ''; |
| 182 | $info['plan'] = Project::planMap()[$project['deploy_build']['plan']]; | 189 | $info['plan'] = Project::planMap()[$project['deploy_build']['plan']]; |
| 183 | $info['domain'] = (!empty($project['deploy_optimize']['domain']) ? | 190 | $info['domain'] = (!empty($project['deploy_optimize']['domain']) ? |
| 184 | - $project['deploy_optimize']['domain'] : ($project['deploy_build']['test_domain'] ?? '')); | 191 | + ((new DomainInfo())->getDomain($project['deploy_optimize']['domain'])) : ($project['deploy_build']['test_domain'] ?? '')); |
| 185 | //保存项目缓存 | 192 | //保存项目缓存 |
| 186 | Cache::put('user-'.$info['project_id'],$project,$minutes = null); | 193 | Cache::put('user-'.$info['project_id'],$project,$minutes = null); |
| 187 | return $this->success($info); | 194 | return $this->success($info); |
| 188 | } | 195 | } |
| 189 | 196 | ||
| 190 | 197 | ||
| 198 | + | ||
| 191 | /** | 199 | /** |
| 192 | * @remark :获取项目数据详情 | 200 | * @remark :获取项目数据详情 |
| 193 | * @name :getProjectInfo | 201 | * @name :getProjectInfo |
| @@ -9,6 +9,8 @@ | @@ -9,6 +9,8 @@ | ||
| 9 | 9 | ||
| 10 | namespace App\Models\ASide; | 10 | namespace App\Models\ASide; |
| 11 | 11 | ||
| 12 | +use App\Helper\AyrShare as AyrShareHelper; | ||
| 13 | +use App\Models\AyrShare\AyrShare as AyrShareModel; | ||
| 12 | use App\Models\Base; | 14 | use App\Models\Base; |
| 13 | use App\Services\ProjectServer; | 15 | use App\Services\ProjectServer; |
| 14 | use Illuminate\Support\Facades\DB; | 16 | use Illuminate\Support\Facades\DB; |
| @@ -38,5 +40,4 @@ class APublicModel extends Base | @@ -38,5 +40,4 @@ class APublicModel extends Base | ||
| 38 | return ['product'=>$productNumber,'blog'=>$blogNumber,'news'=>$newsNumber]; | 40 | return ['product'=>$productNumber,'blog'=>$blogNumber,'news'=>$newsNumber]; |
| 39 | } | 41 | } |
| 40 | 42 | ||
| 41 | - | ||
| 42 | } | 43 | } |
| @@ -7,9 +7,6 @@ use App\Models\Base; | @@ -7,9 +7,6 @@ use App\Models\Base; | ||
| 7 | class AyrShare extends Base | 7 | class AyrShare extends Base |
| 8 | { | 8 | { |
| 9 | protected $table = 'gl_ayr_share'; | 9 | protected $table = 'gl_ayr_share'; |
| 10 | - //连接数据库 | ||
| 11 | - protected $connection = 'custom_mysql'; | ||
| 12 | - | ||
| 13 | 10 | ||
| 14 | const COUNT = 3; | 11 | const COUNT = 3; |
| 15 | 12 |
| @@ -31,10 +31,10 @@ class Base extends Model | @@ -31,10 +31,10 @@ class Base extends Model | ||
| 31 | * @author :liyuhang | 31 | * @author :liyuhang |
| 32 | * @method | 32 | * @method |
| 33 | */ | 33 | */ |
| 34 | - public function lists($map, $page, $row, $order = 'id', $fields = ['*']): array | 34 | + public function lists($map, $page, $row, $order = 'id', $fields = ['*'], $sort = 'desc'): array |
| 35 | { | 35 | { |
| 36 | $query = $this->formatQuery($map); | 36 | $query = $this->formatQuery($map); |
| 37 | - $query = $this->sortOrder($query,$order); | 37 | + $query = $this->sortOrder($query,$order,$sort); |
| 38 | $lists = $query->select($fields)->paginate($row, ['*'], 'page', $page); | 38 | $lists = $query->select($fields)->paginate($row, ['*'], 'page', $page); |
| 39 | if (empty($lists)) { | 39 | if (empty($lists)) { |
| 40 | return []; | 40 | return []; |
| @@ -51,10 +51,10 @@ class Base extends Model | @@ -51,10 +51,10 @@ class Base extends Model | ||
| 51 | * @author :liyuhang | 51 | * @author :liyuhang |
| 52 | * @method | 52 | * @method |
| 53 | */ | 53 | */ |
| 54 | - public function list($map = [],$order = 'id',$fields = ['*']): array | 54 | + public function list($map = [],$order = 'id',$fields = ['*'],$sort = 'desc'): array |
| 55 | { | 55 | { |
| 56 | $query = $this->formatQuery($map); | 56 | $query = $this->formatQuery($map); |
| 57 | - $query = $this->sortOrder($query,$order); | 57 | + $query = $this->sortOrder($query,$order,$sort); |
| 58 | $lists = $query->select($fields)->get(); | 58 | $lists = $query->select($fields)->get(); |
| 59 | if (empty($lists)) { | 59 | if (empty($lists)) { |
| 60 | return []; | 60 | return []; |
| @@ -203,13 +203,13 @@ class Base extends Model | @@ -203,13 +203,13 @@ class Base extends Model | ||
| 203 | * @method :post | 203 | * @method :post |
| 204 | * @time :2023/8/21 8:54 | 204 | * @time :2023/8/21 8:54 |
| 205 | */ | 205 | */ |
| 206 | - public function sortOrder(&$query,$order){ | 206 | + public function sortOrder(&$query,$order,$sort){ |
| 207 | if(is_array($order)){ | 207 | if(is_array($order)){ |
| 208 | foreach ($order as $v){ | 208 | foreach ($order as $v){ |
| 209 | - $query = $query->orderBy($v,'desc'); | 209 | + $query = $query->orderBy($v,$sort); |
| 210 | } | 210 | } |
| 211 | }else{ | 211 | }else{ |
| 212 | - $query = $query->orderBy($order,'desc'); | 212 | + $query = $query->orderBy($order,$sort); |
| 213 | } | 213 | } |
| 214 | return $query; | 214 | return $query; |
| 215 | } | 215 | } |
| @@ -40,9 +40,9 @@ class Channel extends Model | @@ -40,9 +40,9 @@ class Channel extends Model | ||
| 40 | } | 40 | } |
| 41 | $user = User::where('channel_id', $channel['id'])->where('name', $sales)->first(); | 41 | $user = User::where('channel_id', $channel['id'])->where('name', $sales)->first(); |
| 42 | return [ | 42 | return [ |
| 43 | - 'zone_id' => (int)$channel['zone_id'] ?? 0, | ||
| 44 | - 'channel_id' => (int)$channel['id'] ?? 0, | ||
| 45 | - 'user_id' => (int)$user['id'] ?? 0, | 43 | + 'zone_id' => $channel['zone_id'] ?? 0, |
| 44 | + 'channel_id' => $channel['id'] ?? 0, | ||
| 45 | + 'user_id' => $user['id'] ?? 0, | ||
| 46 | ]; | 46 | ]; |
| 47 | } | 47 | } |
| 48 | 48 |
| @@ -15,7 +15,7 @@ use App\Models\Base; | @@ -15,7 +15,7 @@ use App\Models\Base; | ||
| 15 | class DomainInfo extends Base | 15 | class DomainInfo extends Base |
| 16 | { | 16 | { |
| 17 | const STATUS_ONE = 1; | 17 | const STATUS_ONE = 1; |
| 18 | - | 18 | + const STATUS_ZERO = 0; |
| 19 | public $btAction = [ | 19 | public $btAction = [ |
| 20 | 'create_site' => '/site?action=AddSite', | 20 | 'create_site' => '/site?action=AddSite', |
| 21 | ]; | 21 | ]; |
| @@ -51,7 +51,20 @@ class DomainInfo extends Base | @@ -51,7 +51,20 @@ class DomainInfo extends Base | ||
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | - | 54 | + /** |
| 55 | + * @remark :获取域名信息 | ||
| 56 | + * @name :getDomain | ||
| 57 | + * @author :lyh | ||
| 58 | + * @method :post | ||
| 59 | + * @time :2023/9/4 17:05 | ||
| 60 | + */ | ||
| 61 | + public function getDomain($domain){ | ||
| 62 | + $info = $this->read(['id'=>$domain]); | ||
| 63 | + if($info === false){ | ||
| 64 | + return ''; | ||
| 65 | + } | ||
| 66 | + return 'https://'.$info['domain'].'/'; | ||
| 67 | + } | ||
| 55 | 68 | ||
| 56 | 69 | ||
| 57 | } | 70 | } |
| @@ -18,10 +18,11 @@ class LoginLog extends Base | @@ -18,10 +18,11 @@ class LoginLog extends Base | ||
| 18 | * @author zbj | 18 | * @author zbj |
| 19 | * @date 2023/4/20 | 19 | * @date 2023/4/20 |
| 20 | */ | 20 | */ |
| 21 | - public static function addLog($manage_id){ | 21 | + public static function addLog($manage_id,$type){ |
| 22 | $log = new self(); | 22 | $log = new self(); |
| 23 | $log->manage_id = $manage_id; | 23 | $log->manage_id = $manage_id; |
| 24 | $log->ip = request()->ip(); | 24 | $log->ip = request()->ip(); |
| 25 | + $log->type = $type; | ||
| 25 | $log->save(); | 26 | $log->save(); |
| 26 | } | 27 | } |
| 27 | } | 28 | } |
| @@ -17,4 +17,17 @@ class DeployBuild extends Base | @@ -17,4 +17,17 @@ class DeployBuild extends Base | ||
| 17 | $cache_key = 'project_' . $row->original['test_domain']; | 17 | $cache_key = 'project_' . $row->original['test_domain']; |
| 18 | Cache::forget($cache_key); | 18 | Cache::forget($cache_key); |
| 19 | } | 19 | } |
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * @remark :扩展字段获取器 | ||
| 23 | + * @name :getConfigurationAttribute | ||
| 24 | + * @author :lyh | ||
| 25 | + * @method :post | ||
| 26 | + * @time :2023/9/6 9:44 | ||
| 27 | + */ | ||
| 28 | + public function getConfigurationAttribute($value) | ||
| 29 | + { | ||
| 30 | + $value = Arr::s2a($value); | ||
| 31 | + return $value; | ||
| 32 | + } | ||
| 20 | } | 33 | } |
| @@ -72,8 +72,8 @@ class Project extends Base | @@ -72,8 +72,8 @@ class Project extends Base | ||
| 72 | 3 => '旗舰版', | 72 | 3 => '旗舰版', |
| 73 | 4 => '【PLUS】尊贵版', | 73 | 4 => '【PLUS】尊贵版', |
| 74 | 5 => '【PLUS】至尊版', | 74 | 5 => '【PLUS】至尊版', |
| 75 | - 6 => '仅建站(模板)', | ||
| 76 | - 7 => '仅建站(订制)', | 75 | + 6 => '自主建站(定制器)', |
| 76 | + 7 => '定制建站(PS订制)', | ||
| 77 | 8 => '星链网站(1年版)', | 77 | 8 => '星链网站(1年版)', |
| 78 | 9 => '星链网站(2年版)', | 78 | 9 => '星链网站(2年版)', |
| 79 | ]; | 79 | ]; |
| @@ -16,7 +16,8 @@ class Visit extends Base | @@ -16,7 +16,8 @@ class Visit extends Base | ||
| 16 | 16 | ||
| 17 | //设置关联表名 | 17 | //设置关联表名 |
| 18 | protected $table = 'gl_customer_visit'; | 18 | protected $table = 'gl_customer_visit'; |
| 19 | - | 19 | + //连接数据库 |
| 20 | + protected $connection = 'custom_mysql'; | ||
| 20 | protected $appends = ['device_text']; | 21 | protected $appends = ['device_text']; |
| 21 | 22 | ||
| 22 | public static function deviceMap(){ | 23 | public static function deviceMap(){ |
| @@ -9,6 +9,7 @@ | @@ -9,6 +9,7 @@ | ||
| 9 | namespace App\Services; | 9 | namespace App\Services; |
| 10 | 10 | ||
| 11 | use App\Models\Project\Project; | 11 | use App\Models\Project\Project; |
| 12 | +use App\Utils\EncryptUtils; | ||
| 12 | use Illuminate\Support\Facades\DB; | 13 | use Illuminate\Support\Facades\DB; |
| 13 | use Illuminate\Support\Facades\Schema; | 14 | use Illuminate\Support\Facades\Schema; |
| 14 | 15 | ||
| @@ -31,12 +32,13 @@ class ProjectServer extends BaseService | @@ -31,12 +32,13 @@ class ProjectServer extends BaseService | ||
| 31 | if(!$project->mysqlConfig){ | 32 | if(!$project->mysqlConfig){ |
| 32 | return false; | 33 | return false; |
| 33 | } | 34 | } |
| 35 | + $encrypt = new EncryptUtils(); | ||
| 34 | // 设置 database.connections.custom_mysql 配置 | 36 | // 设置 database.connections.custom_mysql 配置 |
| 35 | config(['database.connections.custom_mysql.host' => $project->mysqlConfig->host]); | 37 | config(['database.connections.custom_mysql.host' => $project->mysqlConfig->host]); |
| 36 | - config(['database.connections.custom_mysql.port' => $project->mysqlConfig->port]); | 38 | + config(['database.connections.custom_mysql.port' => (int)$encrypt->unlock_url($project->mysqlConfig->port)]); |
| 37 | config(['database.connections.custom_mysql.database' => $project->databaseName()]); | 39 | config(['database.connections.custom_mysql.database' => $project->databaseName()]); |
| 38 | - config(['database.connections.custom_mysql.username' => $project->mysqlConfig->user]); | ||
| 39 | - config(['database.connections.custom_mysql.password' => $project->mysqlConfig->password]); | 40 | + config(['database.connections.custom_mysql.username' => $encrypt->unlock_url($project->mysqlConfig->user)]); |
| 41 | + config(['database.connections.custom_mysql.password' => $encrypt->unlock_url($project->mysqlConfig->password)]); | ||
| 40 | // 设置 redis 配置 | 42 | // 设置 redis 配置 |
| 41 | return $project; | 43 | return $project; |
| 42 | } | 44 | } |
| @@ -51,12 +53,13 @@ class ProjectServer extends BaseService | @@ -51,12 +53,13 @@ class ProjectServer extends BaseService | ||
| 51 | */ | 53 | */ |
| 52 | public static function createDatabase($project) | 54 | public static function createDatabase($project) |
| 53 | { | 55 | { |
| 56 | + $encrypt = new EncryptUtils(); | ||
| 54 | $conn = new \mysqli( | 57 | $conn = new \mysqli( |
| 55 | $project->mysqlConfig->host, | 58 | $project->mysqlConfig->host, |
| 56 | - $project->mysqlConfig->user, | ||
| 57 | - $project->mysqlConfig->password, | 59 | + $encrypt->unlock_url($project->mysqlConfig->user), |
| 60 | + $encrypt->unlock_url($project->mysqlConfig->password), | ||
| 58 | '', | 61 | '', |
| 59 | - $project->mysqlConfig->port, | 62 | + (int)$encrypt->unlock_url($project->mysqlConfig->port) |
| 60 | ); | 63 | ); |
| 61 | $conn->query("CREATE DATABASE IF NOT EXISTS {$project->databaseName()}"); | 64 | $conn->query("CREATE DATABASE IF NOT EXISTS {$project->databaseName()}"); |
| 62 | return true; | 65 | return true; |
| @@ -21,6 +21,7 @@ Route::middleware(['aloginauth'])->group(function () { | @@ -21,6 +21,7 @@ Route::middleware(['aloginauth'])->group(function () { | ||
| 21 | Route::any('/del', [Aside\User\ProjectUserController::class, 'del'])->name('admin.user_del'); | 21 | Route::any('/del', [Aside\User\ProjectUserController::class, 'del'])->name('admin.user_del'); |
| 22 | Route::any('/getRole', [Aside\User\ProjectUserController::class, 'getRole'])->name('admin.user_getRole'); | 22 | Route::any('/getRole', [Aside\User\ProjectUserController::class, 'getRole'])->name('admin.user_getRole'); |
| 23 | Route::any('/sort', [Aside\User\ProjectUserController::class, 'sort'])->name('admin.user_sort'); | 23 | Route::any('/sort', [Aside\User\ProjectUserController::class, 'sort'])->name('admin.user_sort'); |
| 24 | + Route::any('/getProjectList', [Aside\User\ProjectUserController::class, 'getProjectList'])->name('admin.user_getProjectList'); | ||
| 24 | 25 | ||
| 25 | //角色管理 | 26 | //角色管理 |
| 26 | Route::prefix('role')->group(function () { | 27 | Route::prefix('role')->group(function () { |
| @@ -35,7 +36,6 @@ Route::middleware(['aloginauth'])->group(function () { | @@ -35,7 +36,6 @@ Route::middleware(['aloginauth'])->group(function () { | ||
| 35 | //栏目管理 | 36 | //栏目管理 |
| 36 | Route::prefix('menu')->group(function () { | 37 | Route::prefix('menu')->group(function () { |
| 37 | Route::any('/', [Aside\User\ProjectMenuController::class, 'lists'])->name('admin.user_menu_lists'); | 38 | Route::any('/', [Aside\User\ProjectMenuController::class, 'lists'])->name('admin.user_menu_lists'); |
| 38 | - Route::any('/list', [Aside\User\ProjectMenuController::class, 'list'])->name('admin.user_menu_list'); | ||
| 39 | Route::any('/info', [Aside\User\ProjectMenuController::class, 'info'])->name('admin.user_menu_info'); | 39 | Route::any('/info', [Aside\User\ProjectMenuController::class, 'info'])->name('admin.user_menu_info'); |
| 40 | Route::any('/add', [Aside\User\ProjectMenuController::class, 'add'])->name('admin.user_menu_add'); | 40 | Route::any('/add', [Aside\User\ProjectMenuController::class, 'add'])->name('admin.user_menu_add'); |
| 41 | Route::any('/edit', [Aside\User\ProjectMenuController::class, 'edit'])->name('admin.user_menu_edit'); | 41 | Route::any('/edit', [Aside\User\ProjectMenuController::class, 'edit'])->name('admin.user_menu_edit'); |
| @@ -51,6 +51,11 @@ Route::middleware(['aloginauth'])->group(function () { | @@ -51,6 +51,11 @@ Route::middleware(['aloginauth'])->group(function () { | ||
| 51 | Route::any('/read', [Aside\User\ProjectDeptController::class, 'read'])->name('admin.user_group_info'); | 51 | Route::any('/read', [Aside\User\ProjectDeptController::class, 'read'])->name('admin.user_group_info'); |
| 52 | Route::any('/getDeptUser', [Aside\User\ProjectDeptController::class, 'getDeptUser'])->name('admin.user_getDeptUser'); | 52 | Route::any('/getDeptUser', [Aside\User\ProjectDeptController::class, 'getDeptUser'])->name('admin.user_getDeptUser'); |
| 53 | }); | 53 | }); |
| 54 | + | ||
| 55 | + //用户日志 | ||
| 56 | + Route::prefix('log')->group(function () { | ||
| 57 | + Route::any('/', [Aside\User\UserLogController::class, 'lists'])->name('admin.user_log_lists'); | ||
| 58 | + }); | ||
| 54 | }); | 59 | }); |
| 55 | 60 | ||
| 56 | //ai指令 | 61 | //ai指令 |
| @@ -128,6 +133,11 @@ Route::middleware(['aloginauth'])->group(function () { | @@ -128,6 +133,11 @@ Route::middleware(['aloginauth'])->group(function () { | ||
| 128 | Route::post('/save', [Aside\Manage\HrController::class, 'save'])->name('admin.hr_save'); | 133 | Route::post('/save', [Aside\Manage\HrController::class, 'save'])->name('admin.hr_save'); |
| 129 | Route::get('/getSearchParamsList', [Aside\Manage\HrController::class, 'getSearchParamsList'])->name('admin.hr_getSearchParamsList'); | 134 | Route::get('/getSearchParamsList', [Aside\Manage\HrController::class, 'getSearchParamsList'])->name('admin.hr_getSearchParamsList'); |
| 130 | }); | 135 | }); |
| 136 | + | ||
| 137 | + //管理员日志 | ||
| 138 | + Route::prefix('log')->group(function () { | ||
| 139 | + Route::any('/', [Aside\Manage\ManagerLogController::class, 'lists'])->name('admin.manager_log_lists'); | ||
| 140 | + }); | ||
| 131 | }); | 141 | }); |
| 132 | 142 | ||
| 133 | //企业服务配置信息 | 143 | //企业服务配置信息 |
| @@ -308,7 +318,7 @@ Route::group([], function () { | @@ -308,7 +318,7 @@ Route::group([], function () { | ||
| 308 | Route::any('/domain/exportData', [Aside\Domain\DomainInfoController::class, 'exportData'])->name('admin.domain_exportData');//导出数据 | 318 | Route::any('/domain/exportData', [Aside\Domain\DomainInfoController::class, 'exportData'])->name('admin.domain_exportData');//导出数据 |
| 309 | Route::any('/notice/project', [Aside\Notice\NoticeController::class, 'project'])->name('admin.notice.project'); | 319 | Route::any('/notice/project', [Aside\Notice\NoticeController::class, 'project'])->name('admin.notice.project'); |
| 310 | Route::any('/sendLoginSms', [Aside\LoginController::class, 'sendLoginSms'])->name('admin.sendLoginSms');//发送验证码 | 320 | Route::any('/sendLoginSms', [Aside\LoginController::class, 'sendLoginSms'])->name('admin.sendLoginSms');//发送验证码 |
| 311 | - | 321 | + Route::any('/getProjectInService', [Aside\Project\ProjectController::class, 'getProjectInService'])->name('admin.getProjectInService');//获取项目服务状态 |
| 312 | }); | 322 | }); |
| 313 | 323 | ||
| 314 | 324 |
| @@ -268,6 +268,8 @@ Route::middleware(['bloginauth'])->group(function () { | @@ -268,6 +268,8 @@ Route::middleware(['bloginauth'])->group(function () { | ||
| 268 | Route::any('/save', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'save'])->name('template_save'); | 268 | Route::any('/save', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'save'])->name('template_save'); |
| 269 | //可视化保存获取数据类型 | 269 | //可视化保存获取数据类型 |
| 270 | Route::any('/getTypeSetting', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'getTypeSetting'])->name('template_getTypeSetting'); | 270 | Route::any('/getTypeSetting', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'getTypeSetting'])->name('template_getTypeSetting'); |
| 271 | + Route::any('/getHeadFooter', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'getHeadFooter'])->name('template_getHeadFooter'); | ||
| 272 | + Route::any('/setHeadFooter', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'setHeadFooter'])->name('template_setHeadFooter'); | ||
| 271 | // 模板 | 273 | // 模板 |
| 272 | Route::prefix('module')->group(function () { | 274 | Route::prefix('module')->group(function () { |
| 273 | //获取所有左侧模版 | 275 | //获取所有左侧模版 |
-
请 注册 或 登录 后发表评论