作者 赵彬吉

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

... ... @@ -6,6 +6,7 @@ use App\Helper\Arr;
use App\Models\Product\Category;
use App\Models\Product\Product;
use App\Models\RouteMap\RouteMap;
use App\Services\ProjectServer;
use GuzzleHttp\Client;
use GuzzleHttp\Promise\Utils;
use Illuminate\Console\Command;
... ... @@ -230,20 +231,26 @@ class WebTraffic extends Command
*/
protected function getProductUrls($project_id){
//产品分类页面
$product_cate_ids = Category::where('project_id', $project_id)->where('status', Category::STATUS_ACTIVE)->pluck('id')->toArray();
$data['urls_cats'] = RouteMap::where('project_id', $project_id)->where('source', RouteMap::SOURCE_PRODUCT_CATE)->whereIn('source_id', $product_cate_ids)->get()->toArray();
ProjectServer::useProject($project_id);
$product_cate_ids = DB::connection('custom_mysql')->table('gl_product_category')
->where('project_id', $project_id)->where('status', 1)->pluck('id')->toArray();
$data['urls_cats'] = DB::connection('custom_mysql')->table('gl_route_map')
->where('project_id', $project_id)->where('source', 'product_category')->whereIn('source_id', $product_cate_ids)->get()->toArray();
//单页面
//todo 发布状态的单页面id
$data['urls_page'] = RouteMap::where('project_id', $project_id)->where('source', RouteMap::SOURCE_PAGE)->get()->toArray();
$data['urls_page'] = DB::connection('custom_mysql')->table('gl_route_map')
->where('project_id', $project_id)->where('source', 'page')->get()->toArray();
//产品详情页
$product_ids = Product::where('project_id', $project_id)->where('status', Product::STATUS_ON)->pluck('id')->toArray();
$data['urls_details'] = RouteMap::where('project_id', $project_id)->where('source', RouteMap::SOURCE_PRODUCT)->whereIn('source_id', $product_ids)->get()->toArray();
$product_ids = DB::connection('custom_mysql')->table('gl_product_category')
->where('project_id', $project_id)->where('status', 1)->pluck('id')->toArray();
$data['urls_details'] = DB::connection('custom_mysql')->table('gl_route_map')
->where('project_id', $project_id)->where('source', 'product')->whereIn('source_id', $product_ids)->get()->toArray();
$data['urls_cats'] = array_merge($data['urls_cats'], $data['urls_page']);
if(empty($data['urls_cats'])){
$data['urls_cats'] = $data['urls_details'];
}
DB::disconnect('custom_mysql');
return $data;
}
... ... @@ -312,10 +319,10 @@ class WebTraffic extends Command
$url = [];
if($res_sdzb == 0){//深度一页
$url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])['route'] : '';
$url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])->route : '';
}elseif($res_sdzb == 1){//深度两页
$url[] = $project_urls['home'];
$url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])['route'] : '';
$url[] = $project_urls[$res_ymzb] ? Arr::random($project_urls[$res_ymzb])->route : '';
}elseif($res_sdzb == 2){//深度3-6页
$yms = rand(2,5); //随机页面数
$url = Arr::pluck(Arr::random($all_url, $yms), 'route');
... ...
... ... @@ -39,6 +39,7 @@ class BaseController extends Controller
$info = Cache::get(Common::MANAGE_TOKEN . $this->token);
if(!empty($this->token) && !empty($info)){
$this->manage = $info;
Cache::put($this->token, $info, 3600);//更新缓存时间
$this->uid = $info['id'];
}
}
... ...
<?php
/**
* @remark :
* @name :ManagerLogController.php
* @author :lyh
* @method :post
* @time :2023/9/5 16:09
*/
namespace App\Http\Controllers\Aside\Manage;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Models\Manage\LoginLog;
use App\Models\Manage\Manage;
class ManagerLogController extends BaseController
{
/**
* @remark :管理员日志列表
* @name :lists
* @author :lyh
* @method :post
* @time :2023/9/5 16:10
*/
public function lists(LoginLog $manageLogin){
$map = $this->searchParam();
$lists = $manageLogin->lists($map,$this->page,$this->row,$this->order);
if(!empty($lists) && !empty($lists['list'])){
$managerModel = new Manage();
foreach ($lists['list'] as $k => $v){
$info = $managerModel->read(['id'=>$v['manage_id']]);
$v['mobile'] = $info['mobile'] ?? '';
$v['name'] = $info['name'] ?? '';
$v['type'] = (isset($v['type']) && $v['type'] == 1) ? '账号密码登录' : '验证码登录';
$lists['list'][$k] = $v;
}
}
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :搜索参数
* @name :searchParam
* @author :lyh
* @method :post
* @time :2023/9/5 16:56
*/
public function searchParam(){
$map = [];
$managerModel = new Manage();
if(isset($this->map['mobile']) && !empty($this->map['mobile'])){
$ids = $managerModel->where('mobile', 'like', '%' . $this->map['mobile'] . '%')->pluck('id')->toArray();
$map['manage_id'] = ['in',$ids];
}elseif (isset($this->map['name']) && !empty($this->map['name'])){
$ids = $managerModel->where('name', 'like', '%' . $this->param['name'] . '%')->pluck('id')->toArray();
$map['manage_id'] = ['in',$ids];
}
if(isset($this->map['created_at'])){
$map['created_at'] = $this->map['created_at'];
}
return $map;
}
}
... ...
... ... @@ -95,7 +95,9 @@ class OnlineController extends BaseController
* @time :2023/8/18 14:44
*/
public function handleParam(&$item){
$data = APublicModel::getNumByProjectId($item['id']);
if($item['type'] != Project::TYPE_ZERO){
$data = APublicModel::getNumByProjectId($item['id']);
}
$manageModel = new Manage();
$item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0);
$item['build_leader'] = $manageModel->getName($item['leader_mid']);
... ...
... ... @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Aside\Optimize;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Optimize\OptimizeLogic;
use App\Models\Domain\DomainInfo;
use App\Models\Manage\Manage;
use App\Models\Project\Project;
use Illuminate\Support\Facades\DB;
... ... @@ -32,11 +33,13 @@ class OptimizeController extends BaseController
$lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray();
if(!empty($lists['list'])){
$manager = new Manage();
$domainModel = new DomainInfo();
foreach ($lists['list'] as $k => $v){
$v['plan'] = $project::planMap()[$v['plan']];
$v['optimist_mid_name'] = $manager->getName($v['optimist_mid']);
$v['tech_mid_name'] = $manager->getName($v['tech_mid']);
$v['autologin_code'] = getAutoLoginCode($v['id']);
$v['domain'] = $domainModel->getDomain($v['domain']);
$lists['list'][$k] = $v;
}
}
... ...
... ... @@ -55,13 +55,15 @@ class ProjectController extends BaseController
$map['type'] = $this->searchType($this->map['type']);
$map['extend_type'] = 0;//排除未续费项目
}
$filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'created_at'];
$lists = $project->formatQuery($map)->select($filed)->with('payment')->with('deploy_build')
$filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'remain_day' ,'created_at'];
$lists = $project->formatQuery($map)->orderBy('id','desc')->select($filed)->with('payment')->with('deploy_build')
->with('deploy_optimize')->with('online_check')->paginate($this->row, ['*'], 'page', $this->page);
if(!empty($lists)){
$lists = $lists->toArray();
$manageModel = new Manage();
$domainModel = new DomainInfo();
foreach ($lists['list'] as $k=>$item){
$item = $this->handleParam($item);
$item = $this->handleParam($item,$manageModel,$domainModel);
$lists['list'][$k] = $item;
}
}
... ... @@ -75,8 +77,7 @@ class ProjectController extends BaseController
* @method :post
* @time :2023/8/30 11:07
*/
public function handleParam(&$item){
$manageModel = new Manage();
public function handleParam(&$item,&$manageModel,&$domainModel){
if($item['mysql_id'] != 0 && $item['type'] != 0){
$data = APublicModel::getNumByProjectId($item['id']);
}
... ... @@ -98,7 +99,7 @@ class ProjectController extends BaseController
'type' => $item['type'],
'test_domain' => $item['deploy_build']['test_domain'] ?? 0,
'plan' =>Project::planMap()[$item['deploy_build']['plan']],
'domain' => !empty($item['deploy_optimize']['domain']) ? (new DomainInfo())->getDomain($item['deploy_optimize']['domain']) : '',
'domain' => !empty($item['deploy_optimize']['domain']) ? $domainModel->getDomain($item['deploy_optimize']['domain']) : '',
'created_at' => date('Y年m月d日', strtotime($item['created_at'])),
'product_num' => $data['product'] ?? 0,
'keyword_num' => $item['deploy_build']['keyword_num'] ?? 0,
... ... @@ -107,31 +108,12 @@ class ProjectController extends BaseController
'task_pending_num' => Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]),
'optimist_status'=>$item['online_check']['optimist_status'] ?? 0,
'qa_status'=>$item['online_check']['qa_status'] ?? 0,
'service_day'=>$item['deploy_build']['service_duration'] - $this->compliance_day($item['id']),
'service_day'=>$item['remain_day'] ?? 0,
];
return $item;
}
/**
* @param $yesterday
* @name :(服务达标天数)compliance_day
* @author :lyh
* @method :post
* @time :2023/6/14 15:48
*/
public function compliance_day($project_id){
//服务达标天数
$rankDataModel = new RankData();
$rank_info = $rankDataModel->where(['project_id'=>$project_id,'lang'=>''])->select(['compliance_day'])->first();
if(empty($rank_info)){
$compliance_day = 0;
}else{
$compliance_day = $rank_info->compliance_day;
}
return $compliance_day;
}
/**
* @remark :type类型
* @name :searchType
* @author :lyh
... ... @@ -384,7 +366,7 @@ class ProjectController extends BaseController
'type.required' => '请选择审核类型'
]);
$belongGroupModel = new BelongingGroup();
$lists = $belongGroupModel->list($this->map,'id',['id','name','type'],'asc');
$lists = $belongGroupModel->list($this->map,'name',['id','name','type'],'asc');
$this->response('success',Code::SUCCESS,$lists);
}
... ...
... ... @@ -16,6 +16,7 @@ use App\Http\Logic\Aside\Project\ProjectLogic;
use App\Http\Logic\Aside\Project\RenewLogic;
use App\Models\ASide\APublicModel;
use App\Models\Channel\Channel;
use App\Models\Domain\DomainInfo;
use App\Models\HomeCount\Count;
use App\Models\Manage\Manage;
use App\Models\Project\DeployBuild;
... ... @@ -39,13 +40,15 @@ class RenewProjectController extends BaseController
$this->searchParam($map,$this->map,$arr);
//按类型搜索
$map['id'] = ['in', $arr];
$filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'created_at'];
$filed = ['id', 'title', 'mysql_id' ,'channel','cooperate_date' ,'type', 'remain_day' ,'created_at'];
$lists = $project->formatQuery($map)->select($filed)->with('payment')->with('deploy_build')
->with('deploy_optimize')->with('online_check')->paginate($this->row, ['*'], 'page', $this->page);
if(!empty($lists)){
$lists = $lists->toArray();
$manageModel = new Manage();
$domainModel = new DomainInfo();
foreach ($lists['list'] as $k=>$item){
$item = $this->handleParam($item);
$item = $this->handleParam($item,$manageModel,$domainModel);
$lists['list'][$k] = $item;
}
}
... ... @@ -138,8 +141,10 @@ class RenewProjectController extends BaseController
->with('project_after')->paginate($this->row, ['*'], 'page', $this->page);
if(!empty($lists)){
$lists = $lists->toArray();
$manageModel = new Manage();
$domainModel = new DomainInfo();
foreach ($lists['list'] as $k=>$item){
$item = $this->handleParam($item);
$item = $this->handleParam($item,$manageModel,$domainModel);
$lists['list'][$k] = $item;
}
}
... ... @@ -153,9 +158,10 @@ class RenewProjectController extends BaseController
* @method :post
* @time :2023/8/18 14:44
*/
public function handleParam(&$item){
$manageModel = new Manage();
$data = APublicModel::getNumByProjectId($item['id']);
public function handleParam(&$item,&$manageModel,&$domainModel){
if($item['type'] != Project::TYPE_ZERO){
$data = APublicModel::getNumByProjectId($item['id']);
}
$item = [
'id' => $item['id'],
'title' => $item['title'],
... ... @@ -174,7 +180,7 @@ class RenewProjectController extends BaseController
'type' => $item['type'],
'test_domain' => $item['deploy_build']['test_domain'] ?? 0,
'plan' =>Project::planMap()[$item['deploy_build']['plan']],
'domain' => $item['deploy_optimize']['domain'] ?? 0,
'domain' => !empty($item['deploy_optimize']['domain']) ? $domainModel->getDomain($item['deploy_optimize']['domain']) : '',
'created_at' => date('Y年m月d日', strtotime($item['created_at'])),
'autologin_code' => getAutoLoginCode($item['id']),
'product_num' => $data['product'] ?? 0,
... ... @@ -184,6 +190,7 @@ class RenewProjectController extends BaseController
'task_pending_num' => Task::getNumByProjectId($item['id'], [Task::STATUS_DONGING, Task::STATUS_WAIT]),
'optimist_status'=>$item['online_check']['optimist_status'] ?? 0,
'qa_status'=>$item['online_check']['qa_status'] ?? 0,
'service_day'=>$item['remain_day'] ?? 0,
];
return $item;
}
... ...
... ... @@ -215,10 +215,11 @@ class TaskController extends BaseController
*/
public function getUserTaskList(){
$taskOwnerModel = new TaskOwner();
$this->map['manage_id'] = $this->manage['id'];
$lists = $taskOwnerModel->lists($this->map,$this->page,$this->row,$this->order);
$taskModel = new Task();
$map = $this->searchUserParam($taskOwnerModel,$taskModel);
$lists = $taskOwnerModel->lists($map,$this->page,$this->row,$this->order);
if(!empty($lists) && !empty($lists['list'])){
$taskModel = new Task();
$managerModel = new Manage();
foreach ($lists['list'] as $k => $v){
$taskInfo = $taskModel->read(['id'=>$v['task_id']]);
... ... @@ -230,4 +231,32 @@ class TaskController extends BaseController
}
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :我的任务搜索参数
* @name :searchUserParam
* @author :lyh
* @method :post
* @time :2023/9/5 15:00
*/
public function searchUserParam(&$taskOwnerModel,&$taskModel){
$map = [];
if (isset($this->map['search_type']) && !empty($this->map['search_type'])){
if(isset($this->map['search']) && !empty($this->map['search'])) {
$projectModel = new Project();
if($this->map['search_type'] == 'project'){
$ids = $projectModel->where('title', 'like', '%' . $this->map['search'] . '%')->pluck('id')->toArray();
$manage_ids = $taskOwnerModel->formatQuery(['project'=>['in',$ids],'manage_id'=>$this->manage['id']])->pluck('manage_id')->toArray();
$map['manage_id'] = ['in',$manage_ids];
}else{
$ids = $taskModel->where('content', 'like','%'.$this->map['search'].'%')->pluck('id')->toArray();
$manage_ids = $taskOwnerModel->formatQuery(['task_id'=>['in',$ids],'manage_id'=>$this->manage['id']])->pluck('manage_id')->toArray();
$map['manage_id'] = ['in',$manage_ids];
}
}
}else{
$map['manage_id'] = $this->manage['id'];
}
return $map;
}
}
... ...
... ... @@ -6,6 +6,7 @@ use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\User\UserLogic;
use App\Http\Requests\Aside\User\UserRequest;
use App\Models\Project\Project;
use App\Models\User\ProjectRole;
use App\Models\User\User;
use App\Models\User\User as UserModel;
... ... @@ -162,4 +163,16 @@ class ProjectUserController extends BaseController
$userLogic->setParamStatus();
$this->response('success');
}
/**
* @remark :保存用户获取项目列表
* @name :getProjectList
* @author :lyh
* @method :post
* @time :2023/9/6 9:06
*/
public function getProjectList(Project $project){
$lists = $project->list(['type'=>['!=',$project::TYPE_ZERO]],'id',['id','title']);
$this->response('success',Code::SUCCESS,$lists);
}
}
... ...
<?php
/**
* @remark :
* @name :UserLogController.php
* @author :lyh
* @method :post
* @time :2023/9/5 16:07
*/
namespace App\Http\Controllers\Aside\User;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Models\Manage\Manage;
use App\Models\User\User;
use App\Models\User\UserLogin;
class UserLogController extends BaseController
{
/**
* @remark :用户日志
* @name :lists
* @author :lyh
* @method :post
* @time :2023/9/5 16:10
*/
public function lists(UserLogin $user){
$userModel = new User();
$map = $this->searchParam($userModel);
$lists = $user->lists($map,$this->page,$this->row,$this->order);
if(!empty($lists) && !empty($lists['list'])){
foreach ($lists['list'] as $k => $v){
$info = $userModel->read(['id'=>$v['user_id']]);
$v['mobile'] = $info['mobile'] ?? '';
$v['name'] = $info['name'] ?? '';
$v['type'] = ($v['type'] == 0) ? '用户登录' : '管理员登录';
if(!empty($v['remark'])){
$v['remark'] = $this->handleRemark($userModel,$v['remark']);
}
$lists['list'][$k] = $v;
}
}
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :搜索参数
* @name :searchParam
* @author :lyh
* @method :post
* @time :2023/9/5 16:56
*/
public function searchParam(&$userModel){
$map = [];
if(isset($this->map['mobile']) && !empty($this->map['mobile'])){
$ids = $userModel->where('mobile', 'like', '%' . $this->map['mobile'] . '%')->pluck('id')->toArray();
$map['user_id'] = ['in',$ids];
}elseif (isset($this->map['name']) && !empty($this->map['name'])){
$ids = $userModel->where('name', 'like', '%' . $this->param['name'] . '%')->pluck('id')->toArray();
$map['user_id'] = ['in',$ids];
}
if(isset($this->map['created_at'])){
$map['created_at'] = $this->map['created_at'];
}
return $map;
}
/**
* @remark :处理备注
* @name :handleRemark
* @author :lyh
* @method :post
* @time :2023/9/5 17:21
*/
public function handleRemark(&$managerModel,$remark){
$arr = explode(':',$remark);
$managerInfo = $managerModel->read(['id'=>$arr[1]]);
if($managerInfo !== false){
$remark = $arr[0].':'.$managerInfo['name'];
}
return $remark;
}
}
... ...
... ... @@ -40,8 +40,11 @@ class LoginLogic extends BaseLogic
if (Manage::STATUS_DISABLE == $manage->status) {
$this->fail('帐号已被禁用');
}
$type = 1;//账号密码登录
if (!Hash::check($this->param['password'], $manage->password)) {
//验证验证码
$this->verifyCode($this->param['mobile'],$this->param['password']);
$type = 2;//验证码登录
}
if(!empty($manage['token'])){
//清除上一次用户缓存
... ... @@ -51,14 +54,14 @@ class LoginLogic extends BaseLogic
$token = md5(uniqid().$manage['id']);
//存储缓存
$manage['token'] = $token;
Cache::add(Common::MANAGE_TOKEN . $token,$manage);
Cache::add(Common::MANAGE_TOKEN . $token,$manage,3600);
//更新用户信息
$manage->token = $token;
$res = $manage->save();
if(!$res){
$this->fail('系统错误,请联系管理员');
}
LoginLog::addLog($manage->id);
LoginLog::addLog($manage->id,$type);
//获取当前用户特殊模块权限
$manage['special'] = $this->getSpecialMenu($manage['id']);
return $this->success($manage->makeVisible('token')->toArray());
... ...
... ... @@ -2,11 +2,9 @@
namespace App\Http\Logic\Bside\Product;
use App\Exceptions\BsideGlobalException;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Product\Category;
use App\Models\Product\CategoryRelated;
use App\Models\Product\Product;
use App\Models\RouteMap\RouteMap;
use Illuminate\Support\Facades\DB;
... ...
... ... @@ -18,10 +18,11 @@ class LoginLog extends Base
* @author zbj
* @date 2023/4/20
*/
public static function addLog($manage_id){
public static function addLog($manage_id,$type){
$log = new self();
$log->manage_id = $manage_id;
$log->ip = request()->ip();
$log->type = $type;
$log->save();
}
}
... ...
... ... @@ -21,6 +21,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/del', [Aside\User\ProjectUserController::class, 'del'])->name('admin.user_del');
Route::any('/getRole', [Aside\User\ProjectUserController::class, 'getRole'])->name('admin.user_getRole');
Route::any('/sort', [Aside\User\ProjectUserController::class, 'sort'])->name('admin.user_sort');
Route::any('/getProjectList', [Aside\User\ProjectUserController::class, 'getProjectList'])->name('admin.user_getProjectList');
//角色管理
Route::prefix('role')->group(function () {
... ... @@ -50,6 +51,11 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/read', [Aside\User\ProjectDeptController::class, 'read'])->name('admin.user_group_info');
Route::any('/getDeptUser', [Aside\User\ProjectDeptController::class, 'getDeptUser'])->name('admin.user_getDeptUser');
});
//用户日志
Route::prefix('log')->group(function () {
Route::any('/', [Aside\User\UserLogController::class, 'lists'])->name('admin.user_log_lists');
});
});
//ai指令
... ... @@ -127,6 +133,11 @@ Route::middleware(['aloginauth'])->group(function () {
Route::post('/save', [Aside\Manage\HrController::class, 'save'])->name('admin.hr_save');
Route::get('/getSearchParamsList', [Aside\Manage\HrController::class, 'getSearchParamsList'])->name('admin.hr_getSearchParamsList');
});
//管理员日志
Route::prefix('log')->group(function () {
Route::any('/', [Aside\Manage\ManagerLogController::class, 'lists'])->name('admin.manager_log_lists');
});
});
//企业服务配置信息
... ...