作者 zhl

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

... ... @@ -10,9 +10,11 @@ use App\Models\Mail\Mail;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
/**
* Class GoogleRank
* 导入任务异步执行
* Class ProjectImport
* @package App\Console\Commands
* @author Akun
* @date 2023/9/20 15:18
... ... @@ -43,7 +45,13 @@ class ProjectImport extends Command
protected function start_import()
{
$task = ImportTask::where('status', ImportTask::STATUS_UN)->first();
$task_id = $this->get_task();
if (!$task_id) {
sleep(2);
return true;
}
$task = ImportTask::where('id', $task_id)->where('status', ImportTask::STATUS_UN)->first();
if (!$task) {
sleep(2);
return true;
... ... @@ -51,6 +59,9 @@ class ProjectImport extends Command
echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import start' . PHP_EOL;
$task->status = ImportTask::STATUS_ING;//导入中
$task->save();
$is_gbk = 0;
$file_code_type = $this->get_code_type($task->file_url);
if ($file_code_type === false) {
... ... @@ -86,8 +97,6 @@ class ProjectImport extends Command
$success_count = 0; //成功导入条数
$repeat_count = 0; //过滤已存在条数
if (count($line_of_text) > 1) {
$task->status = ImportTask::STATUS_ING;//导入中
$task->save();
//设置数据库
$project = ProjectServer::useProject($task->project_id);
... ... @@ -144,6 +153,28 @@ class ProjectImport extends Command
sleep(2);
}
//获取任务
protected function get_task()
{
$key = 'console_import_task';
$task_id = Redis::rpop($key);
if ($task_id) {
return $task_id;
}
$task_list = ImportTask::where('status', ImportTask::STATUS_UN)->limit(20)->get();
if ($task_list->count() == 0) {
return false;
}
foreach ($task_list as $value) {
Redis::lpush($key, $value->id);
}
$task_id = Redis::rpop($key);
return $task_id;
}
//判断编码格式
protected function get_code_type($file)
{
... ... @@ -158,7 +189,7 @@ class ProjectImport extends Command
return false;
}
//发站内通知
//发站内通知
protected function send_mail($user_list, $time, $type, $success_count, $repeat_count, $reason)
{
if ($type == ImportTask::TYPE_NEWS) {
... ...
... ... @@ -117,7 +117,7 @@ if (!function_exists('_get_child')) {
function _get_child($my_id, $arr)
{
$new_arr = array();
foreach ($arr as $k => $v) {
foreach ($arr as $v) {
$v = (array)$v;
if ($v['pid'] == $my_id) {
$v['sub'] = _get_child($v['id'], $arr);
... ...
... ... @@ -11,6 +11,7 @@ use App\Models\Domain\DomainInfo;
use App\Models\Manage\Manage;
use App\Models\Project\OnlineCheck;
use App\Models\Project\Project;
use App\Models\RankData\RankData;
use App\Models\Task\Task;
use Illuminate\Support\Facades\DB;
... ... @@ -36,8 +37,12 @@ class OptimizeController extends BaseController
->leftJoin('gl_project_online_check', 'gl_project.id', '=', 'gl_project_online_check.project_id');
$query = $this->searchParam($query);
$lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray();
if(!empty($lists['list'])){
if(!empty($lists) && !empty($lists['list'])){
$rankDataModel = new RankData();
foreach ($lists['list'] as $k => $v){
$data = $rankDataModel->read(['project_id'=>$v['id'],'lang'=>''],['first_page_num','indexed_pages_num']);
$v['first_page_num'] = $data['first_page_num'] ?? 0;
$v['indexed_pages_num'] = $data['indexed_pages_num'] ?? 0;
$v = $this->handleParam($v);
$lists['list'][$k] = $v;
}
... ... @@ -74,7 +79,6 @@ class OptimizeController extends BaseController
$item['product_num'] = $data['product'] ?? 0;
$item['keyword_num'] = $item['key'] ?? 0;
$item['autologin_code'] = getAutoLoginCode($item['id']);
// $item['article_num'] = ($data['blog'] ?? 0) + ($data['news'] ?? 0);
return $item;
}
/**
... ... @@ -92,8 +96,10 @@ class OptimizeController extends BaseController
'gl_project.company AS company',
'gl_project.type AS type',
'gl_project.created_at AS created_at',
'gl_project.is_language AS is_language',
'gl_project.cooperate_date AS cooperate_date',
'gl_project.finish_remain_day AS finish_remain_day',
'gl_project.is_remain_today AS is_remain_today',
'gl_project.remain_day AS remain_day',
'gl_project_online_check.id AS online_check_id',
'gl_project_online_check.question AS question',
... ... @@ -120,7 +126,6 @@ class OptimizeController extends BaseController
'gl_project_deploy_optimize.domain AS domain',
'gl_project_deploy_optimize.quality_mid AS quality_mid',
'gl_project_deploy_optimize.design_mid AS design_mid',
'gl_project_deploy_optimize.special AS special',
];
return $select;
}
... ...
... ... @@ -196,7 +196,7 @@ class ProjectController extends BaseController
* @time :2023/9/7 17:28
*/
public function getManagerRole(&$query){
if($this->manage['role'] != 1 || $this->manage['gid'] == 0){//1代表查看所有
if(($this->manage['role'] != 1)){//1代表查看所有
//获取用户所在组
$managerHr = new ManageHr();
$info = $managerHr->read(['manage_id'=>$this->manage['id']]);
... ...
... ... @@ -15,6 +15,7 @@ use App\Http\Logic\Bside\Setting\WebSettingLogic;
use App\Models\Com\UpdateNotify;
use App\Models\Com\UpdateProgress;
use App\Models\Project\Country as CountryModel;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Models\WebSetting\WebSettingCountry;
use Illuminate\Http\Request;
... ... @@ -49,7 +50,6 @@ class CNoticeController extends BaseController
$this->updateMinorLanguages();
}
$urlStr = $this->getString($this->param['type'],$this->param['page']);
@file_put_contents(storage_path('logs/lyh_error.log'), var_export($urlStr, true) . PHP_EOL, FILE_APPEND);
curlGet($urlStr);
$this->response('更新成功');
}
... ... @@ -110,6 +110,11 @@ class CNoticeController extends BaseController
$extent = json_encode(['url'=>$this->param['url'],'language'=>$this->param['language']]);
$this->addProgress($count,$this->param['type'],$this->param['page'],$extent);
}
//更新小语种,同步更新项目表已翻译小语种
if(isset($this->user['is_domain']) && ($this->user['is_domain'] != 0)){
$projectModel = new Project();
$projectModel->edit(['is_language'=>$this->user['is_domain']],['id'=>$this->user['project_id']]);
}
}catch (\Exception $e){
$this->response('error',Code::USER_ERROR);
}
... ...
... ... @@ -92,6 +92,25 @@ class BlogCategoryController extends BaseController
}
/**
* @remark :排序
* @name :sort
* @author :lyh
* @method :post
* @time :2023/9/26 17:40
*/
public function sort(BlogCategoryLogic $blogCategoryLogic){
$this->request->validate([
'id'=>'required',
'sort'=>'required'
],[
'id.required' => '产品ID不能为空',
'sort.required'=>'排序字段不能为空'
]);
$blogCategoryLogic->setSort();
$this->response('success');
}
/**
* @name :删除分类
* @author :liyuhang
* @method
... ...
... ... @@ -20,7 +20,7 @@ class NewsCategoryController extends BaseController
public function lists(NewsCategoryModel $newsCategory){
//搜索条件
$this->map['project_id'] = $this->user['project_id'];
$lists = $newsCategory->lists($this->map,$this->page,$this->row,$this->order,
$lists = $newsCategory->lists($this->map,$this->page,$this->row,$this->order = 'sort',
['id','pid','name','num','alias','status','sort','remark','created_at','updated_at']);
if(!empty($lists['list'])){
$newsModel = new NewsModel();
... ... @@ -91,6 +91,23 @@ class NewsCategoryController extends BaseController
}
/**
* @remark :排序
* @name :sort
* @author :lyh
* @method :post
* @time :2023/9/26 17:35
*/
public function sort(NewsCategoryLogic $newsCategoryLogic){
$this->request->validate([
'id'=>['required'],
],[
'id.required' => 'ID不能为空',
]);
$newsCategoryLogic->categorySort();
$this->response('success');
}
/**
* @name :删除分类
* @author :liyuhang
* @method
... ...
... ... @@ -113,6 +113,23 @@ class CategoryController extends BaseController
}
/**
* @remark :排序
* @name :sort
* @author :lyh
* @method :post
* @time :2023/9/26 17:35
*/
public function sort(CategoryLogic $logic){
$this->request->validate([
'id'=>['required'],
],[
'id.required' => 'ID不能为空',
]);
$logic->categorySort();
$this->response('success');
}
/**
* @remark :删除数据
* @name :delete
* @author :lyh
... ...
... ... @@ -330,7 +330,21 @@ class BlogCategoryLogic extends BaseLogic
}
$return[] = $c_id;
}
return ','.implode(',',$return).',';
}
/**
* @remark :排序
* @name :setSort
* @author :lyh
* @method :post
* @time :2023/8/19 11:16
*/
public function setSort(){
$rs = $this->model->edit(['sort'=>$this->param['sort']],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ...
... ... @@ -59,9 +59,9 @@ class NewsCategoryLogic extends BaseLogic
*/
public function newsCategorySave(){
//验证名称是否存在
// $this->verifyParamName($this->param['name']);
// DB::beginTransaction();
// try {
$this->verifyParamName($this->param['name']);
DB::beginTransaction();
try {
if(isset($this->param['id']) && !empty($this->param['id'])){
//验证是否可编辑
$this->verifyEditParam($this->param['id'],$this->param['pid']);
... ... @@ -78,11 +78,11 @@ class NewsCategoryLogic extends BaseLogic
}
$route = RouteMap::setRoute(isset($this->param['alias']) ? $this->param['alias'] : $this->param['name'], RouteMap::SOURCE_NEWS_CATE, $id, $this->user['project_id']);
$this->model->edit(['alias'=>$route],['id'=>$id]);
// DB::commit();
// }catch (\Exception $e){
// DB::rollBack();
// $this->fail('error');
// }
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('error');
}
//更新通知记录表
$this->updateNotify(['project_id'=>$this->user['project_id'], 'type'=>RouteMap::SOURCE_NEWS_CATE, 'route'=>$route]);
return $this->success();
... ... @@ -312,7 +312,21 @@ class NewsCategoryLogic extends BaseLogic
}
$return[] = $c_id;
}
return ','.implode(',',$return).',';
}
/**
* @remark :排序
* @name :categorySort
* @author :lyh
* @method :post
* @time :2023/9/26 17:38
*/
public function categorySort(){
$rs = $this->model->edit(['sort'=>$this->param['sort']],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('系统错误,请联系管理员');
}
return $this->success();
}
}
... ...
... ... @@ -229,7 +229,21 @@ class CategoryLogic extends BaseLogic
//清除缓存
Common::del_user_cache('product_category',$project_id);
return ','.implode(',',$return).',';
}
/**
* @remark :排序
* @name :categorySort
* @author :lyh
* @method :post
* @time :2023/9/26 17:38
*/
public function categorySort(){
$rs = $this->model->edit(['sort'=>$this->param['sort']],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('系统错误,请联系管理员');
}
return $this->success();
}
}
... ...
... ... @@ -187,7 +187,9 @@ class UserLoginLogic
$info['aicc'] = $project['aicc'] ?? '';
$info['hagro'] = $project['hagro'] ?? '';
$info['plan'] = Project::planMap()[$project['deploy_build']['plan']];
$info['domain'] = (!empty($project['deploy_optimize']['domain']) ? ((new DomainInfo())->getDomain($project['deploy_optimize']['domain'])) : ($project['deploy_build']['test_domain'] ?? ''));
$info['is_domain'] = empty($project['deploy_optimize']['domain']) ? 0 : 1;
$info['domain'] = (!empty($project['deploy_optimize']['domain']) ?
((new DomainInfo())->getDomain($project['deploy_optimize']['domain'])) : ($project['deploy_build']['test_domain'] ?? ''));
//保存项目缓存
Cache::put('user-'.$info['project_id'],$project,$minutes = null);
return $this->success($info);
... ...
... ... @@ -55,6 +55,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/category/edit', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'save'])->name('news_category_edit');
Route::any('/category/del', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'del'])->name('news_category_del');
Route::any('/category/status', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'status'])->name('news_category_status');
Route::any('/category/sort', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'sort'])->name('news_category_sort');
Route::any('/category/categoryTopList', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'categoryTopList'])->name('news_category_categoryTopList');
//新闻
Route::any('/', [\App\Http\Controllers\Bside\News\NewsController::class, 'lists'])->name('news_category_lists');
... ... @@ -89,6 +90,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/category/edit', [\App\Http\Controllers\Bside\Blog\BlogCategoryController::class, 'save'])->name('blog_category_edit');
Route::any('/category/del', [\App\Http\Controllers\Bside\Blog\BlogCategoryController::class, 'del'])->name('blog_category_del');
Route::any('/category/status', [\App\Http\Controllers\Bside\Blog\BlogCategoryController::class, 'status'])->name('blog_category_status');
Route::any('/category/sort', [\App\Http\Controllers\Bside\Blog\BlogCategoryController::class, 'sort'])->name('blog_category_sort');
Route::any('/category/categoryTopList', [\App\Http\Controllers\Bside\Blog\BlogCategoryController::class, 'categoryTopList'])->name('blog_category_categoryTopList');
//博客标签
Route::any('/label/', [\App\Http\Controllers\Bside\Blog\BlogLabelController::class, 'lists'])->name('blog_lists');
... ... @@ -190,6 +192,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::get('category', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'index'])->name('product_category');
Route::get('category/info', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'info'])->name('product_category_info');
Route::post('category/save', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'save'])->name('product_category_save');
Route::post('category/sort', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'sort'])->name('product_category_sort');
Route::any('category/delete', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'delete'])->name('product_category_delete');
//产品关键词
... ...