作者 李宇航

合并分支 'master-lyh-edit' 到 'master'

oa通知



查看合并请求 !623
<?php
/**
* @remark :
* @name :OaNoticeController.php
* @author :lyh
* @method :post
* @time :2024/6/20 10:47
*/
namespace App\Http\Controllers\Aside\Com;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Com\OaNoticeLogic;
use App\Models\Manage\Manage;
use App\Models\OaNotice\OaNotice;
use App\Models\Project\Project;
use Illuminate\Support\Facades\DB;
class OaNoticeController extends BaseController
{
/**
* @remark :通知消息
* @name :lists
* @author :lyh
* @method :post
* @time :2024/6/20 10:49
*/
public function lists(){
$oaNoticeModel = new OaNotice();
$query = $oaNoticeModel->sortOrder($oaNoticeModel,'created_at','desc');
$query = $this->searchMap($query);
$lists = $query->paginate($this->row, ['*'], 'page', $this->page)->toArray();
if(!empty($lists) && !empty($lists['list'])){
$projectModel = new Project();
foreach ($lists['list'] as $k => $v){
$project_str = trim($v['project_str'],',');
if(strtolower($v['project_str']) != 'all'){
$v['project_title'] = $projectModel->formatQuery(['id'=>['in',explode(',',$project_str)]])->pluck('title')->toArray();
}else{
$v['project_title'] = '所有';
}
$v['operator_name'] = (new Manage())->getName($v['operator_id']);
$lists['list'][$k] = $v;
}
}
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :参数搜索
* @name :searchMap
* @author :lyh
* @method :post
* @time :2024/6/20 11:09
*/
public function searchMap(&$query){
if(isset($this->map['project_title']) && !empty($this->map['project_title'])){
$projectModel = new Project();
$project_id_arr = $projectModel->formatQuery(['title'=>['like','%'.$this->map['project_title'].'%']])->pluck('id')->toArray();
if(!empty($project_id_arr)){
$query->where(function ($subQuery) use ($project_id_arr) {
foreach ($project_id_arr as $v) {
$subQuery->orWhereRaw("FIND_IN_SET(?, project_str) > 0", [$v]);
}
});
}
}
if(isset($this->map['title']) && !empty($this->map['title'])){
$query->where('title','like','%'.$this->map['title'].'%');
}
if(isset($this->map['operator_id']) && !empty($this->map['operator_id'])){
$query->where('operator_id',$this->map['operator_id']);
}
if(isset($this->map['start_time']) && isset($this->map['end_time'])){
$query->whereBetween('end_time',[$this->map['start_time'],$this->map['end_time']]);
}
return $query;
}
/**
* @remark :获取详情
* @name :info
* @author :lyh
* @method :post
* @time :2024/6/20 16:04
*/
public function info(OaNoticeLogic $oaNoticeLogic){
$this->request->validate([
'id'=>'required',
],[
'id.required' => 'ID不能为空',
]);
$data = $oaNoticeLogic->infoOaNotice();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2024/6/20 10:49
*/
public function save(OaNoticeLogic $oaNoticeLogic){
$this->request->validate([
'project_str'=>'required',
'title'=>'required',
'remark'=>'required',
'start_time'=>'required',
'end_time'=>'required',
],[
'project_str.required' => 'project_str不能为空',
'title.required' => 'title不能为空',
'remark.required' => 'remark不能为空',
'start_time.required' => 'start_time不能为空',
'end_time.required' => 'end_time不能为空',
]);
$data = $oaNoticeLogic->saveOaNotice();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :修改状态
* @name :status
* @author :lyh
* @method :post
* @time :2024/6/20 10:50
*/
public function status(OaNoticeLogic $oaNoticeLogic){
$this->request->validate([
'id'=>'required',
'status'=>'required'
],[
'id.required' => 'ID不能为空',
'status.required' => 'status不能为空'
]);
$data = $oaNoticeLogic->statusOaNotice();
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
... ... @@ -227,7 +227,11 @@ class OptimizeController extends BaseController
$query = $query->where('gl_project_deploy_optimize.start_date','>=' ,$this->map['online_updated_at'][0])->where('gl_project_deploy_optimize.start_date','<' ,$this->map['online_updated_at'][1]);
}
if(isset($this->map['special'])){
$query = $query->whereRaw("FIND_IN_SET(?, gl_project_deploy_optimize.special) > 0", [$this->map['special']]);
if($this->map['special'] == 15){
$query = $query->where('gl_project_deploy_optimize.ai_video',1);
}else{
$query = $query->whereRaw("FIND_IN_SET(?, gl_project_deploy_optimize.special) > 0", [$this->map['special']]);
}
}
if(isset($this->map['is_remain_today'])){
$query = $query->where('gl_project.is_remain_today',$this->map['is_remain_today']);
... ...
... ... @@ -8,6 +8,7 @@ use App\Helper\Common;
use App\Http\Controllers\Bside\BaseController;
use App\Jobs\PurchaserJob;
use App\Models\CustomModule\CustomModule;
use App\Models\OaNotice\OaNotice;
use App\Models\Project\DeployBuild;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
... ... @@ -325,4 +326,21 @@ class ComController extends BaseController
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取通知信息
* @name :getNoticeInfo
* @author :lyh
* @method :post
* @time :2024/6/20 16:49
*/
public function getNoticeInfo(){
$oaNoticeModel = new OaNotice();
$this->map['start_time'] = ['<=',date('Y-m-d H:i:s')];
$this->map['end_time'] = ['>=',date('Y-m-d H:i:s')];
$this->map['status'] = 0;
$this->map['project_str'] = ['like','%,'.$this->user['project_id'].',%'];
$lists = $oaNoticeModel->formatQuery($this->map)->orWhere('project_str', 'all')->select(['*'])->orderBy($this->order,'desc')->paginate($this->row, ['*'], 'page', $this->page);
$this->response('success',Code::SUCCESS,$lists);
}
}
... ...
<?php
/**
* @remark :
* @name :OaNoticeLogic.php
* @author :lyh
* @method :post
* @time :2024/6/20 10:48
*/
namespace App\Http\Logic\Aside\Com;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Manage\Manage;
use App\Models\OaNotice\OaNotice;
use App\Models\Project\Project;
class OaNoticeLogic extends BaseLogic
{
/**
* 初始数据
*/
public function __construct()
{
parent::__construct();
$this->model = new OaNotice();
$this->param = $this->requestAll;
}
/**
* @remark :保存数据
* @name :saveOaNotice
* @author :lyh
* @method :post
* @time :2024/6/20 15:03
*/
public function saveOaNotice(){
$this->param['operator_id'] = $this->manager['id'];
$project_str = trim($this->param['project_str'],',');
if($project_str != 'all'){
$this->param['project_str'] = ','.$project_str.',';
}
if(isset($this->param['id']) && !empty($this->param['id'])){
$id = $this->param['id'];
$this->model->edit($this->param,['id'=>$id]);
}else{
$id = $this->model->addReturnId($this->param);
}
return $this->success(['id'=>$id]);
}
/**
* @remark :修改状态
* @name :statusOaNotice
* @author :lyh
* @method :post
* @time :2024/6/20 15:44
*/
public function statusOaNotice(){
$id = $this->param['id'];
$this->model->edit(['status'=>$this->param['status']],['id'=>$id]);
return $this->success(['id'=>$id]);
}
/**
* @remark :获取详情
* @name :infoOaNotice
* @author :lyh
* @method :post
* @time :2024/6/20 16:04
*/
public function infoOaNotice(){
$info = $this->model->read($this->param);
if($info == false){
$this->fail('当前数据不存在或已被删除');
}
$info['project_str'] = trim($info['project_str'],',');
if(strtolower($info['project_str']) != 'all'){
$projectModel = new Project();
$info['project_title'] = $projectModel->formatQuery(['id'=>['in',explode(',',$info['project_str'])]])->pluck('title')->toArray();
}else{
$info['project_title'] = '所有';
}
$info['operator_name'] = (new Manage())->getName($info['operator_id']);
return $this->success($info);
}
}
... ...
<?php
/**
* @remark :
* @name :OaNotice.php
* @author :lyh
* @method :post
* @time :2024/6/20 10:44
*/
namespace App\Models\OaNotice;
use App\Models\Base;
/**
* @remark :oa通知消息
* @name :OaNotice
* @author :lyh
* @method :post
* @time :2024/6/20 10:44
*/
class OaNotice extends Base
{
protected $table = 'gl_oa_notice';
}
... ...
... ... @@ -414,6 +414,14 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/del', [Aside\Com\TutorialController::class, 'del'])->name('admin.tutorial_del');
});
//oa通知
Route::prefix('oa_notice')->group(function () {
Route::any('/', [Aside\Com\OaNoticeController::class, 'lists'])->name('admin.oa_notice_lists');
Route::any('/save', [Aside\Com\OaNoticeController::class, 'save'])->name('admin.oa_notice_save');
Route::any('/status', [Aside\Com\OaNoticeController::class, 'status'])->name('admin.oa_notice_status');
Route::any('/info', [Aside\Com\OaNoticeController::class, 'info'])->name('admin.oa_notice_info');
});
Route::any('/generate_aicc_token', [Aside\Com\IndexController::class, 'generateAiCCToken'])->name('admin.generate_aicc_token');
Route::any('/getAutoToken', [Aside\Com\IndexController::class, 'getAutoToken'])->name('admin.getAutoToken');
... ...
... ... @@ -20,6 +20,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/generateToken', [\App\Http\Controllers\Bside\BCom\ComController::class, 'generateToken'])->name('generateToken');
Route::any('/getLink', [\App\Http\Controllers\Bside\BCom\ComController::class, 'getLink'])->name('getLink');
Route::any('/getMobileProject', [\App\Http\Controllers\Bside\BCom\ComController::class, 'getMobileProject'])->name('getMobileProject');
Route::any('/getNoticeInfo', [\App\Http\Controllers\Bside\BCom\ComController::class, 'getNoticeInfo'])->name('getNoticeInfo');
//黑格数据
Route::prefix('suppliers')->group(function () {
Route::any('/recommendedPurchaser', [\App\Http\Controllers\Bside\Suppliers\SuppliersController::class, 'recommendedPurchaser'])->name('suppliers_recommendedPurchaser');
... ...