作者 赵彬吉

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

<?php
namespace App\Console\Commands;
namespace App\Console\Commands\DayCount;
use App\Models\Inquiry\InquiryInfo;
use Illuminate\Console\Command;
... ... @@ -48,6 +48,7 @@ class InquiryDelay extends Command
$data['url'] = $v;
$this->inquiryForward($data);
}
$inquiryInfoModel->edit(['status'=>1],['id'=>$param['id']]);
}
}
return true;
... ... @@ -78,4 +79,5 @@ class InquiryDelay extends Command
);
return http_post($url,$post_data_new,$header);
}
}
... ...
... ... @@ -30,7 +30,7 @@ class Kernel extends ConsoleKernel
$schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每周执行一次
$schedule->command('sync_project')->everyMinute()->withoutOverlapping(1); //同步项目
$schedule->command('month_count')->monthlyOn(1,'01:00')->withoutOverlapping(1);//没月月初1号执行月统计记录
// $schedule->command('inquiry_delay')->everyMinute()->withoutOverlapping(1);//每分钟执行一次
// $schedule->command('inquiry_delay')->everyMinute()->withoutOverlapping(1);//TODO::上线放开,转发询盘,每分钟执行一次
$schedule->command('inquiry_count')->dailyAt('01:00')->withoutOverlapping(1); // 询盘统计数据,每天凌晨执行一次
// // 更新域名|证书结束时间,每天凌晨1点执行一次
// $schedule->command('domain_time')->dailyAt('01:00')->withoutOverlapping(1);
... ...
... ... @@ -137,23 +137,6 @@ class BaseController extends Controller
throw new HttpResponseException($response);
}
/**
* @remark :获取文件交接链接
* @name :getImageUrl
* @author :lyh
* @method :post
* @time :2023/7/20 16:46
*/
public function getFileUrl($hash){
$fileModel = new File();
$info = $fileModel->read(['hash'=>$hash]);
if($info['is_cos'] == 1){
$cos = new CosService();
$url = $cos->getImageUrl($info['path']);
}else{
$url = url('a/file/'.$info['hash']);
}
return $url;
}
}
... ...
... ... @@ -20,30 +20,14 @@ class ServerInformationController extends BaseController
/**
* @return JsonResponse
*/
public function lists($deleted = ServerInformation::DELETED_NORMAL)
public function lists()
{
$request = $this->param;
$search = [];
$search_array = [
'ip' => 'ip',
'title' => 'title'
];
foreach ($search_array as $key => $item) {
if (isset($request[$key]) && $request[$key]) {
$search[$item] = $request[$key];
}
if(isset($this->map['title']) && !empty($this->map['title'])){
$this->map['title'] = ['like','%'.$this->map['title'],','];
}
$size = request()->input('size', $this->row);
$query = ServerInformation::query()->select(['id', 'title', 'ip']);
if ($search) {
foreach ($search as $key => $item) {
$query = $query->Where("{$key}", 'like', "%{$item}%");
}
}
$data = $query->where('deleted', $deleted)
->orderBy('id', 'desc')
->paginate($size);
return $this->response('success', Code::SUCCESS, $data);
$serverInformationModel = new ServerInformation();
$lists = $serverInformationModel->lists($this->map,$this->page,$this->row,$this->order);
$this->response('success', Code::SUCCESS, $lists);
}
... ... @@ -97,14 +81,6 @@ class ServerInformationController extends BaseController
$this->response('服务器删除成功!');
}
/**
* 获取软删除的数据
* @return JsonResponse
*/
public function delete_list()
{
return $this->lists(ServerInformation::DELETED_DELETE);
}
/**
* 恢复数据
... ... @@ -120,33 +96,6 @@ class ServerInformationController extends BaseController
}
/**
* 搜索
* @param Request $request
* @return JsonResponse
*/
public function search(Request $request)
{
$search = [];
$ip = $request->input('ip');
if ($ip) {
$search['ip'] = $ip;
}
$remark = $request->input('title');
if ($remark) {
$search['title'] = $remark;
}
if (empty($search)) {
return $this->response('请输入搜索内容', Code::USER_ERROR);
}
$query = ServerInformation::query()->select(['id', 'title', 'ip']);
foreach ($search as $key => $item) {
$query = $query->Where("{$key}", 'like', "%{$item}%");
}
$size = $request->input('size', $this->row);
$query = $query->orderBy('id', 'desc')->paginate($size);
return $this->response('success', Code::SUCCESS, $query);
}
/**
* 服务器信息
... ...
... ... @@ -6,7 +6,7 @@ use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Optimize\OptimizeLogic;
/**
* @remark :优化方案设置
* @remark :授权域名
* @name :OptimizeController
* @author :lyh
* @time :2023/6/20 14:33
... ...
... ... @@ -2,6 +2,7 @@
namespace App\Http\Controllers\Aside\Project;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Project\OnlineCheckLogic;
use App\Http\Logic\Aside\Project\ProcessRecordsLogic;
... ... @@ -31,7 +32,11 @@ class ProjectController extends BaseController
$map = [];
//搜索类型
if(!empty($this->param['type'])){
$map[] = ['type', $this->param['type']];
if($this->param['type'] == 3){//推广中
$map[] = ['type', '>=' ,$this->param['type']];
}else{
$map[] = ['type', $this->param['type']];
}
}
//搜索技术组
if(!empty($this->param['dep_id'])){
... ... @@ -67,8 +72,8 @@ class ProjectController extends BaseController
],[
'id.required' => 'ID不能为空'
]);
$data = $logic->getInfo($this->param['id']);
return $this->success($data);
$data = $logic->getProjectInfo($this->param['id']);
$this->response('success',Code::SUCCESS,$data);
}
public function save(ProjectRequest $request, ProjectLogic $logic)
... ...
... ... @@ -231,22 +231,4 @@ class BaseController extends Controller
return '';
}
/**
* @remark :获取文件交接链接
* @name :getImageUrl
* @author :lyh
* @method :post
* @time :2023/7/20 16:46
*/
public function getFileUrl($hash){
$fileModel = new File();
$info = $fileModel->read(['hash'=>$hash]);
if($info['is_cos'] == 1){
$cos = new CosService();
$url = $cos->getImageUrl($info['path']);
}else{
$url = url('a/file/'.$info['hash']);
}
return $url;
}
}
... ...
... ... @@ -20,6 +20,7 @@ use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route;
use Mrgoon\AliSms\AliSms;
/***
... ... @@ -176,4 +177,9 @@ class ComController extends BaseController
$str = Translate::tran($this->param['str'], 'en');
$this->response('success',Code::SUCCESS,$str);
}
public function ceshi(){
return $this->request->route()->getAction();
// return Route::currentRouteName();
}
}
... ...
... ... @@ -55,7 +55,7 @@ class ProductController extends BaseController
$map[] = ['status', $this->param['status']];
}
$sort = ['id' => 'desc'];
$data = $logic->getList($map, $sort, ['id', 'project_id', 'title', 'thumb', 'product_type' ,'category_id', 'keyword_id', 'status', 'created_uid', 'created_at', 'updated_at']);
$data = $logic->getList($map, $sort, ['id', 'project_id', 'title', 'thumb', 'product_type' ,'category_id', 'keyword_id', 'status', 'created_uid', 'created_at', 'updated_at'],$this->row);
return $this->success($data);
}
... ... @@ -94,4 +94,16 @@ class ProductController extends BaseController
$data = $logic->getStatusNumber();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :复制产品
* @name :copyProduct
* @author :lyh
* @method :post
* @time :2023/7/29 14:59
*/
public function copyProduct(ProductLogic $logic){
$rs = $logic->setCopyProduct();
$this->response('success',Code::SUCCESS,$rs);
}
}
... ...
<?php
namespace App\Http\Controllers\Bside\Template;
use App\Http\Controllers\Bside\BaseController;
/**
* @remark :模块相关配置
* @class :ModuleTypeController.php
* @author :lyh
* @time :2023/7/17 15:31
*/
class ModuleTypeController extends BaseController
{
/**
* @remark :获取模版类型
* @name :getModuleTypeList
* @author :lyh
* @method :post
* @time :2023/7/17 15:32
*/
public function getModuleTypeList(){
}
}
... ... @@ -12,18 +12,6 @@ use Illuminate\Support\Facades\Cache;
class FileController
{
public $upload_img = [
//设置静态缓存参数(304)
'header' => [
'Cache-Control' => 'max-age=2592000',
'Pragma' => 'cache',
'Expires' => "%Expires%", // cache 1 month
'etag' => "%etag%",
'Last-Modified' => "%Last-Modified%",
'Content-Description' => 'File Transfer',
],
];
public $path = '';//路径
public $config = '';//存储默认配置
... ...
... ... @@ -58,7 +58,7 @@ class ProjectLogic extends BaseLogic
'optimize_optimist' => ManageLogic::getCacheName($item['deploy_optimize']['optimist_mid'] ?? 0), //优化师
'optimize_assist' => ManageLogic::getCacheName($item['deploy_optimize']['assist_mid'] ?? 0), //优化助理
'optimize_tech' => ManageLogic::getCacheName($item['deploy_optimize']['tech_mid'] ?? 0), //售后技术
'type' => $this->model::typeMap()[$item['type']] ?? '',
'type' => $item['type'],
'test_domain' => $item['deploy_build']['test_domain'] ?? 0,
'domain' => $item['deploy_optimize']['domain'] ?? 0,
'created_at' => date('Y年m月d日', strtotime($item['created_at'])),
... ... @@ -86,6 +86,18 @@ class ProjectLogic extends BaseLogic
return parent::getInfo($id);
}
/**
* @remark :获取当前数据详情
* @name :getProjectInfo
* @author :lyh
* @method :post
* @time :2023/7/28 17:11
*/
public function getProjectInfo($id){
$info = $this->model->with('payment')->with('deploy_build')
->with('deploy_optimize')->with('online_check')->where(['id'=>$id])->first();
return $this->success($info);
}
public function save($param){
if(!empty($param['deploy_optimize']['domain'])){
$param['deploy_optimize']['domain'] = checkDomain($param['deploy_optimize']['domain']);
... ...
... ... @@ -26,9 +26,9 @@ class ProductLogic extends BaseLogic
$this->model = new Product();
}
public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20)
public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $row = 20)
{
$data = parent::getList($map, $sort, $columns, $limit);
$data = parent::getList($map, $sort, $columns, $row);
foreach ($data['list'] as &$v){
$v = $this->formatData($v);
$v['thumb']['image_link'] = getImageUrl($v['thumb']['url']);//图片统一
... ... @@ -142,4 +142,19 @@ class ProductLogic extends BaseLogic
}
return $this->success($data);
}
/**
* @remark :复制产品
* @name :setCopyProduct
* @author :lyh
* @method :post
* @time :2023/7/29 15:03
*/
public function setCopyProduct(){
var_dump($this->param);
die();
$info = $this->model->read(['id'=>$this->param['id']]);
var_dump($info);
die();
}
}
... ...
... ... @@ -6,6 +6,7 @@ use App\Enums\Common\Code;
use App\Http\Logic\Aside\LoginLogic;
use App\Models\Manage\Group;
use App\Models\Manage\Manage;
use App\Models\Manage\Menu;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
... ... @@ -32,6 +33,44 @@ class LoginAuthMiddleware
return response(['code'=> Code::USER_LOGIN_ERROE,'msg'=>'当前用户被禁用']);
}
}
$groupInfo = $this->getGroup($manage);
//获取当前操作的路由name
$action = Route::currentRouteName();
//TODO::操作权限
$this->viewOperateAuth($groupInfo,$action);
return $next($request);
}
/**
* @remark :查看角色是否被禁用
* @name :getGroup
* @author :lyh
* @method :post
* @time :2023/7/28 15:26
*/
public function getGroup($manage){
$groupModel = new Group();
$groupInfo = $groupModel->read(['id'=>$manage['gid']]);
if($groupInfo['status'] != 0){
return response(['code'=> Code::USER_LOGIN_ERROE,'msg'=>'当前用户角色被禁用']);
}
return $groupInfo;
}
/**
* @remark :查看操作权限
* @name :viewOperateAuth
* @author :lyh
* @method :post
* @time :2023/7/28 14:56
*/
public function viewOperateAuth($groupInfo,$action){
$menuModel = new Menu();
$menu_id = $menuModel->read(['route_name'=>$action],['id']);
if($menu_id !== false){
if(strpos($groupInfo['rights'], $menu_id['id']) < 0){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'当前用户没有权限']);
}
}
}
}
... ...
... ... @@ -9,6 +9,7 @@ use App\Services\ProjectServer;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
class LoginAuthMiddleware
{
... ... @@ -22,32 +23,66 @@ class LoginAuthMiddleware
public function handle(Request $request, Closure $next)
{
$token = $request->header('token');
if(!isset($token) || empty($token)){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'当前用户未登录']);
}
$info = Cache::get($token);
if(empty($info)){
if(empty($info) || empty($token)){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'当前用户未登录']);
}
$role_info = $this->setRole($info);
//获取当前操作的路由name
$action = Route::currentRouteName();
//查询当前用户是否拥有权限操作
$this->viewOperateAuth($role_info,$action);
//配置数据库
$this->setProject($info);
return $next($request);
}
/**
* @remark :设置数据库
* @name :setProject
* @author :lyh
* @method :post
* @time :2023/7/28 14:52
*/
public function setProject($info){
// 设置数据信息
$project = ProjectServer::useProject($info['project_id']);
if(empty($project)){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'数据库未配置']);
}
}
/**
* @remark :查看角色权限
* @name :setRole
* @author :lyh
* @method :post
* @time :2023/7/28 14:53
*/
public function setRole($info){
//操作权限设置
$projectRoleModel = new ProjectRoleModel();
$role_info = $projectRoleModel->read(['id'=>$info['role_id']]);
//获取当前操作的控制器与方法
$action = $request->route()->getAction();
//查询当前用户是否拥有权限操作
if($role_info['status'] != 0){
return response(['code'=>Code::USER_LOGIN_ERROE,'当前用户角色被禁用']);
}
return $role_info;
}
/**
* @remark :查看操作权限
* @name :viewOperateAuth
* @author :lyh
* @method :post
* @time :2023/7/28 14:56
*/
public function viewOperateAuth($role_info,$action){
$projectMenuModel = new ProjectMenu();
$menu_id = $projectMenuModel->read(['action'=>$action['as']],['id']);
$menu_id = $projectMenuModel->read(['action'=>$action],['id']);
if($menu_id !== false){
if(strpos($role_info['role_menu'], $menu_id['id']) < 0){
return response(['code'=>Code::USER_LOGIN_ERROE,'msg'=>'当前用户没有权限']);
}
}
return $next($request);
}
}
... ...
... ... @@ -185,7 +185,7 @@ class Project extends Base
public function setNoticeFileAttribute($value)
{
foreach ($value as &$v) {
$v = Upload::url2path($v);
$v = basename($v);
}
$this->attributes['notice_file'] = Arr::a2s($value);
}
... ... @@ -193,9 +193,9 @@ class Project extends Base
public function getNoticeFileAttribute($value)
{
$value = Arr::s2a($value);
if(!empty($value)){
if(!empty($value)) {
foreach ($value as &$v) {
$v = Upload::path2url($v);
$v = getImageUrl($v);
}
}
return $value;
... ... @@ -204,7 +204,7 @@ class Project extends Base
public function setConfirmFileAttribute($value)
{
foreach ($value as &$v) {
$v = Upload::url2path($v);
$v = basename($v);
}
$this->attributes['confirm_file'] = Arr::a2s($value);
}
... ... @@ -214,7 +214,7 @@ class Project extends Base
$value = Arr::s2a($value);
if(!empty($value)) {
foreach ($value as &$v) {
$v = Upload::path2url($v);
$v = getImageUrl($v);
}
}
return $value;
... ...
... ... @@ -167,7 +167,6 @@ Route::middleware(['aloginauth'])->group(function () {
Route::post('/add', [Aside\Devops\ServerInformationController::class, 'add'])->name('admin.devops.bt_add'); // 添加
Route::post('/edit', [Aside\Devops\ServerInformationController::class, 'edit'])->name('admin.devops.bt_edit'); // 修改
Route::get('/delete', [Aside\Devops\ServerInformationController::class, 'delete'])->name('admin.devops.bt_delete'); // 删除
Route::get('/delete_list', [Aside\Devops\ServerInformationController::class, 'delete_list'])->name('admin.devops.bt_delete_list'); // 删除列表
Route::get('/restore', [Aside\Devops\ServerInformationController::class, 'restore'])->name('admin.devops.bt_restore'); //恢复数据
Route::get('/log', [Aside\Devops\ServerInformationLogController::class, 'lists'])->name('admin.devops.bt_log_lists'); //日志列表
});
... ...
... ... @@ -335,6 +335,8 @@ Route::middleware(['bloginauth'])->group(function () {
//无需登录验证的路由组
Route::group([], function () {
Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
Route::any('/copyProduct', [\App\Http\Controllers\Bside\Product\ProductController::class, 'copyProduct'])->name('product_copyProduct');
// Route::any('/ceshi', [\App\Http\Controllers\Bside\ComController::class, 'ceshi'])->name('ceshi_ceshi');
Route::any('/stringTranslation', [\App\Http\Controllers\Bside\ComController::class, 'stringTranslation'])->name('com_stringTranslation');
Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\ComController::class, 'sendLoginSms'])->name('sendLoginSms');
Route::any('/autologin', [\App\Http\Controllers\Bside\ComController::class, 'autologin'])->name('autologin');
... ...