作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -33,7 +33,7 @@ class UpgradeProjectCount extends Command
protected $description = '升级项目统计';
public function handle(){
$project_id = 450;
$project_id = 759;
ProjectServer::useProject($project_id);
$this->count($project_id);
DB::disconnect('custom_mysql');
... ...
... ... @@ -36,7 +36,7 @@ class UpgradeProjectCount extends Command
protected $description = '升级项目统计';
public function handle(){
$project_id = 450;
$project_id = 759;
$oldModel = new UpdateOldInfo();
$info = $oldModel->read(['project_id'=>$project_id]);
$url = $info['old_domain_online'];
... ...
... ... @@ -50,14 +50,21 @@ class RankDataTask extends Command
public function handle()
{
$list = NoticeLog::where('type', NoticeLog::TYPE_RANK_DATA)->where('status', NoticeLog::STATUS_PENDING)->get();
foreach ($list as $item){
foreach ($list as $item) {
echo 'start:' . $item['id'] . PHP_EOL;
try {
$error_msg = [];
$rankDataLogic = new RankDataLogic();
try {
//排名数据
$api = new QuanqiusouApi();
$site_res = $api->getSiteRes();
$rankDataLogic->syncRankData($item['data']['api_no'], $site_res, true);
} catch (\Exception $e) {
Log::channel('rank_data')->error('排名数据更新失败' . $e->getMessage(), $item->toArray());
$error_msg[] = $e->getMessage();
}
try {
//外链数据
$rankDataLogic->syncExternalLinks($item['data']['api_no'], true);
//外链引荐域名
... ... @@ -70,10 +77,14 @@ class RankDataTask extends Command
$item->status = NoticeLog::STATUS_SUCCESS;
$item->save();
echo 'success:' . $item['id'] . PHP_EOL;
}catch (\Exception $e){
} catch (\Exception $e){
echo 'error:' . $item['id'] . $e->getMessage() . PHP_EOL;
Log::channel('rank_data')->error('排名数据更新失败' . $e->getMessage(), $item);
$this->retry($item, $e->getMessage());
Log::channel('rank_data')->error('排名数据更新失败' . $e->getMessage(), $item->toArray());
$error_msg[] = $e->getMessage();
}
if($error_msg){
$this->retry($item, implode(',', $error_msg));
}
}
}
... ...
... ... @@ -94,9 +94,8 @@ class UpdateProductCategory extends Command
if(!empty($cate_arr) && is_array($cate_arr)){
foreach ($cate_arr as $v){
$categoryModel = new Category();
$info = $categoryModel->read(['pid'=>$v],['id']);
if($info !== false){
//有下级时,跳过
$info = $categoryModel->read(['id'=>$v],['id']);
if($info === false){
continue;
}else{
//更新关联表
... ...
... ... @@ -12,6 +12,7 @@ use App\Models\ASide\APublicModel;
use App\Models\Channel\Channel;
use App\Models\Domain\DomainInfo;
use App\Models\Manage\Manage;
use App\Models\Manage\ManageHr;
use App\Models\Project\OnlineCheck;
use App\Models\Project\Project;
use App\Models\RankData\RankData;
... ... @@ -88,7 +89,7 @@ class OptimizeController extends BaseController
if($item['type'] != Project::TYPE_ZERO){
$data = APublicModel::getNumByProjectId($item['id']);
}
$manageModel = new Manage();
$manageModel = new ManageHr();
$item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0);
$item['build_leader'] = $manageModel->getName($item['leader_mid']);
$item['build_manager'] = $manageModel->getName($item['manager_mid']);
... ...
... ... @@ -7,6 +7,7 @@ use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Template\ATemplateLogic;
use App\Http\Logic\Aside\Template\ATemplateModuleLogic;
use App\Http\Requests\Aside\Template\ATemplateModuleRequest;
use App\Models\Project\Project;
/**
* @remark :左侧模块管理
... ... @@ -79,5 +80,20 @@ class ATemplateModuleController extends BaseController
$this->response('success');
}
/**
* @remark :添加私有模块时获取项目列表
* @name :getProjectList
* @author :lyh
* @method :post
* @time :2024/1/15 10:18
*/
public function getProjectList(Project $project){
$this->map['type'] = ['!=',0];
$this->map['delete_status'] = 0;
if(isset($this->map['title']) && !empty($this->map['title'])){
$this->map['title'] = ['like','%'.$this->map['title'].'%'];
}
$list = $project->list($this->map,'id',['id','title']);
$this->response('success',Code::SUCCESS,$list);
}
}
... ...
... ... @@ -238,14 +238,15 @@ class BaseController extends Controller
* @method :post
* @time :2023/9/13 14:02
*/
public function getIsRenovation($source,$is_list,$template_id,$id){
public function getIsRenovation($source,$is_list,$template_id,$id,$is_custom = 0){
$webTemplateModel = new BTemplate();
$param = [
'source'=>$source,
'project_id'=>$this->user['project_id'],
'source_id'=>$id,
'template_id'=>$template_id,
'is_list'=>$is_list
'is_list'=>$is_list,
'is_custom'=>$is_custom
];
$templateInfo = $webTemplateModel->read($param);
if($templateInfo !== false){
... ...
... ... @@ -176,9 +176,8 @@ class BlogController extends BaseController
}
/**
* @name :获取当前博客详情
* @author :liyuhang
* @method
* 获取当前博客详情
* @param BlogLogic $blogLogic
*/
public function info(BlogLogic $blogLogic){
$this->request->validate([
... ... @@ -187,15 +186,17 @@ class BlogController extends BaseController
'id.required' => 'ID不能为空'
]);
$info = $blogLogic->blogInfo();
$template_id = $this->getTemplateId(BTemplate::SOURCE_BLOG,BTemplate::IS_DETAIL);
$info['is_renovation'] = $this->getIsRenovation(BTemplate::SOURCE_BLOG,BTemplate::IS_DETAIL,$template_id, $info['id']);
$this->response('success',Code::SUCCESS,$info);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2023/9/7 13:40
* 保存数据
* @param BlogRequest $request
* @param BlogLogic $blogLogic
*/
public function save(BlogRequest $request,BlogLogic $blogLogic){
$request->validated();
... ...
... ... @@ -154,18 +154,19 @@ class NewsController extends BaseController
/**
* @name :添加新闻时获取分类列表
* @author :liyuhang
* @method
* 添加新闻时获取分类列表
* @param NewsLogic $newsLogic
* @throws \App\Exceptions\BsideGlobalException
*/
public function get_category_list(NewsLogic $newsLogic){
$list = $newsLogic->news_get_category_list();
$this->response('success',Code::SUCCESS,$list);
}
/**
* @name :获取详情
* @author :liyuhang
* @method
* 获取新闻详情
* @param NewsLogic $newsLogic
* @throws \App\Exceptions\BsideGlobalException
*/
public function info(NewsLogic $newsLogic){
$this->request->validate([
... ... @@ -174,6 +175,10 @@ class NewsController extends BaseController
'id.required' => 'ID不能为空',
]);
$info = $newsLogic->newsInfo();
$template_id = $this->getTemplateId(BTemplate::SOURCE_NEWS,BTemplate::IS_DETAIL);//获取模版id
$info['is_renovation'] = $this->getIsRenovation(BTemplate::SOURCE_NEWS,BTemplate::IS_DETAIL,$template_id, $info['id']);
$this->response('success',Code::SUCCESS,$info);
}
... ...
... ... @@ -95,8 +95,8 @@ class KeywordController extends BaseController
public function save(KeywordRequest $request, KeywordLogic $logic)
{
$request->validated();
$logic->keywordSave();
$this->response('success');
$data = $logic->keywordSave();
$this->response('success',Code::SUCCESS,$data);
}
/**
... ...
... ... @@ -12,6 +12,7 @@ namespace App\Http\Controllers\Bside\Setting;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Setting\TranslateLogic;
use App\Models\RouteMap\RouteMap;
use App\Models\WebSetting\WebLanguage;
class TranslateController extends BaseController
... ... @@ -80,4 +81,46 @@ class TranslateController extends BaseController
$logic->translateSave();
$this->response('success');
}
/**
* @remark :获取所有路由
* @name :getUrl
* @author :lyh
* @method :post
* @time :2024/1/12 14:34
*/
public function getUrl(){
$data = [];
$routeMapModel = new RouteMap();
$list = $routeMapModel->list();
foreach ($list as $k => $v){
switch ($v['source']){
case RouteMap::SOURCE_INDEX:
$data[] = $this->user['domain'];
break;
case RouteMap::SOURCE_PRODUCT:
$data[] = $this->user['domain'].$v['route'].'/';
break;
case RouteMap::SOURCE_PRODUCT_CATE:
//todo::查看当前有好多页
$data[] = $this->user['domain'].$v['route'].'/';
break;
case RouteMap::SOURCE_BLOG:
$data[] = $this->user['domain'].$v['path'].'/'.$v['route'].'/';
break;
case RouteMap::SOURCE_BLOG_CATE:
$data[] = $this->user['domain'].RouteMap::PATH_BLOG_CATE.'/'.$v['route'].'/';
break;
case RouteMap::SOURCE_NEWS:
$data[] = $this->user['domain'].$v['path'].'/'.$v['route'].'/';
break;
case RouteMap::SOURCE_BLOG_CATE:
$data[] = $this->user['domain'].RouteMap::PATH_NEWS_CATE.'/'.$v['route'].'/';
break;
default:
$data[] = $this->user['domain'].$v['route'].'/';
break;
}
}
}
}
... ...
... ... @@ -26,6 +26,7 @@ class BTemplateModuleController extends BaseController
public function lists(BTemplateModuleLogic $bTemplateModuleLogic,BTemplateModuleProjectLogic $bTemplateModuleProjectLogic){
if(!isset($this->map['test_model'])){
$this->map['test_model'] = ['in',[0,1]];
$this->map['project_id'] = 0;
}
$data = [];
$list = $bTemplateModuleLogic->ModuleList($this->map,$this->order);
... ...
... ... @@ -13,6 +13,7 @@ use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\BTemplate\BTemplateModuleProjectLogic;
use App\Models\Template\BModuleProject;
use App\Models\Template\TemplateModule;
class BTemplateModuleProjectController extends BaseController
{
... ... @@ -23,8 +24,10 @@ class BTemplateModuleProjectController extends BaseController
* @method :post
* @time :2023/11/14 14:34
*/
public function lists(BModuleProject $BModuleProject){
$list = $BModuleProject->list($this->map);
public function lists(TemplateModule $templateModule){
$this->map['project_id'] = $this->user['project_id'];
$this->map['type'] = 99;//私有模块类型
$list = $templateModule->list($this->map);
$this->response('success',Code::SUCCESS,$list);
}
... ...
... ... @@ -11,13 +11,14 @@ namespace App\Http\Logic\Bside\BTemplate;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Template\BModuleProject;
use App\Models\Template\TemplateModule;
class BTemplateModuleProjectLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new BModuleProject();
$this->model = new TemplateModule();
$this->param = $this->requestAll;
}
... ... @@ -28,8 +29,9 @@ class BTemplateModuleProjectLogic extends BaseLogic
* @method :post
* @time :2023/6/29 13:35
*/
public function ModuleList($map,$order = 'created_at',$filed = ['id','name','sort','status','image','html']){
$map['status'] = 0;
public function ModuleList($map,$order = 'created_at',$filed = ['id','name','status','image','html','project_id']){
$map['deleted_status'] = 0;
$map['project_id'] = $this->user['project_id'];
$lists = $this->model->list($map,$order,$filed);
return $this->success($lists);
}
... ...
... ... @@ -97,7 +97,9 @@ class CategoryLogic extends BaseLogic
public function getCateInfo($id)
{
$info = $this->model->read(['id'=>$id]);
$info['url'] = $info['route'];
if($info === false){
$this->fail('当前数据不存在或者已被删除');
}
$info['image_link'] = getImageUrl($info['image']);
$info['describe_image'] = !empty($info['describe_image']) ? getImageUrl(json_decode($info['describe_image'])) : [];
return $this->success($info);
... ...
... ... @@ -62,6 +62,7 @@ class KeywordLogic extends BaseLogic
//TODO::不能修改路由
$this->model->edit($this->param,['id'=>$this->param['id']]);
$route = RouteMap::getRoute(RouteMap::SOURCE_PRODUCT_KEYWORD,$this->param['id'], $this->user['project_id']);
$data = ['id'=>$this->param['id']];
}else{
$info = $this->model->read(['title'=>$this->param['title']]);
if($info !== false){
... ... @@ -72,11 +73,12 @@ class KeywordLogic extends BaseLogic
//路由映射
$route = RouteMap::setRoute($this->param['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $id, $this->user['project_id']);
$this->model->edit(['route'=>$route],['id'=>$id]);
$data = ['id'=>$id];
}
Common::del_user_cache('product_keyword',$this->user['project_id']);
$this->addUpdateNotify(RouteMap::SOURCE_PRODUCT_KEYWORD,$route);
$this->curlDelRoute(['new_route'=>$route]);
return $this->success();
return $this->success($data);
}
/**
... ...
... ... @@ -46,7 +46,7 @@ class TranslateLogic extends BaseLogic
trim($v)=>$translate_list[$k],
];
}
return $this->response('success',Code::SUCCESS,$data);
return $this->success($data);
}
$old_key = [];//key值组成数据
$data = json_decode($info['data'],true);
... ... @@ -62,7 +62,7 @@ class TranslateLogic extends BaseLogic
];
}
}
$this->response('success',Code::SUCCESS,$data);
$this->success($data);
}
/**
* @remark :获取图片列表
... ... @@ -81,7 +81,7 @@ class TranslateLogic extends BaseLogic
$v=>$v,
];
}
return $this->response('success',Code::SUCCESS,$data);
return $this->success($data);
}
$new_list = $this->getUrlImageRead($this->param['url']);
$old_list = [];
... ... @@ -100,7 +100,7 @@ class TranslateLogic extends BaseLogic
];
}
}
$this->response('success',Code::SUCCESS,$data);
return $this->success($data);
}
/**
* @remark :获取语种信息
... ... @@ -158,6 +158,21 @@ class TranslateLogic extends BaseLogic
}
/**
* 翻译校对 dom
*/
public function proofreadPhpQuery($url)
{
$html = file_get_contents($url);
$dom = \phpQuery::newDocument($html);
$dom->find('.change-language')->remove();
$dom->find('script')->remove();
$dom->find('style')->remove();
$test = $dom->text();
file_put_contents($url, $test);
$this->success($test);
}
/**
* @remark :获取Url内容
* @name :getUrlRead
* @author :lyh
... ... @@ -195,7 +210,7 @@ class TranslateLogic extends BaseLogic
* @time :2023/6/12 10:52
*/
public function translateSave(){
try {
// try {
$info = $this->model->read(['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
if($info === false){
$param = [
... ... @@ -211,9 +226,9 @@ class TranslateLogic extends BaseLogic
$data = json_encode($this->param['data'],true);
$this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
}
}catch (\Exception $e){
$this->fail('系统错误请联系管理员');
}
$this->response('success');
// }catch (\Exception $e){
// $this->fail('系统错误请联系管理员');
// }
return $this->success();
}
}
... ...
... ... @@ -179,4 +179,22 @@ class ManageHr extends Base
{
return $this->dept->name;
}
/**
* @remark :获取用户名称
* @name :getName
* @author :lyh
* @method :post
* @time :2023/8/18 14:41
*/
public function getName($id){
$name = '';
if(!empty($id)){
$info = $this->read(['id'=>$id],['id','name']);
if($info !== false){
$name = $info['name'];
}
}
return $name;
}
}
... ...
... ... @@ -31,18 +31,17 @@ class RouteMap extends Base
const SOURCE_BLOG_CATE = 'blog_category';
const SOURCE_NEWS = 'news';
const SOURCE_NEWS_CATE = 'news_category';
//自定义模块
const SOURCE_MODULE = 'module';
//自定义模块分类
const SOURCE_MODULE_CATE = 'module_category';
//路由二级目录
const PATH_NEWS_CATE = 'news_catalog';
const PATH_BLOG_CATE = 'blog_catalog';
const PATH_MODULE_CATE = 'module_category_route';//扩展模块
const SOURCE_NAV = 'nav';
//自定义模块
const SOURCE_MODULE = 'module';
//自定义模块分类
const SOURCE_MODULE_CATE = 'module_category';
/**
* 生成路由标识
* @param $title
... ... @@ -132,6 +131,8 @@ class RouteMap extends Base
$route_map->path = self::SOURCE_NEWS;
}elseif ($source == self::SOURCE_BLOG){
$route_map->path = self::SOURCE_BLOG.'s';
}elseif($source == self::SOURCE_MODULE){
$route_map->path = self::PATH_MODULE_CATE;
}
$route_map->route = $route;
$route_map->save();
... ...
... ... @@ -15,7 +15,7 @@ class TemplateModule extends Base
{
protected $table = 'gl_public_template_module';
const PRIVATE_MODULES = 99;//私有模块类型
/**
* @remark :获取器image
* @name :getImageAttribute
... ...
... ... @@ -343,6 +343,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/status', [Aside\Template\ATemplateModuleController::class, 'status'])->name('admin.ATemplateModule_status');
Route::any('/del', [Aside\Template\ATemplateModuleController::class, 'del'])->name('admin.ATemplateModule_del');
Route::any('/type', [Aside\Template\ATemplateModuleController::class, 'getType'])->name('admin.ATemplateModule_getType');
Route::any('/getProjectList', [Aside\Template\ATemplateModuleController::class, 'getProjectList'])->name('admin.ATemplateModule_getProjectList');
});
//设置类型
Route::prefix('type')->group(function () {
... ...