作者 赵彬吉

update

... ... @@ -139,7 +139,7 @@ if (!function_exists('checkDomain')) {
return false;
}
if (preg_match('/^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$/', $host)) {
return $scheme . '://' . $host;
return $scheme . '://' . $host . '/';
} else {
return false;
}
... ...
... ... @@ -6,6 +6,7 @@ use App\Helper\Arr;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Project\ProjectLogic;
use App\Http\Requests\Aside\Project\ProjectRequest;
use App\Models\InquirySet;
use App\Rules\Ids;
use Illuminate\Http\Request;
... ... @@ -47,4 +48,34 @@ class ProjectController extends BaseController
$data = $logic->save($this->param);
return $this->success($data);
}
/**
* 询盘通知设置
* @param ProjectRequest $request
* @param ProjectLogic $logic
* @return \Illuminate\Http\JsonResponse
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author zbj
* @date 2023/5/17
*/
public function inquiry_set(Request $request, ProjectLogic $logic){
$request->validate([
'project_id'=>'required'
],[
'project_id.required' => '项目ID不能为空'
]);
if($request->isMethod('get')){
$data = InquirySet::where('project_id', $request->project_id)->first();
if(!$data){
$data = ['emails' => '', 'phones' => ''];
}else{
$data = $data->toArray();
}
return $this->success($data);
}
$data = $logic->saveInquirySet($this->param);
return $this->success($data);
}
}
... ...
... ... @@ -83,17 +83,4 @@ class InquiryController extends BaseController
// return Storage::disk('runtime')->download($file); //直接下载
return $this->success(['url' => $fileurl]);
}
/**
* 询盘通知设置
* @author zbj
* @date 2023/5/17
*/
public function set(Request $request, InquiryLogic $logic){
if($request->isMethod('get')){
return $this->success($logic->getSet());
}
$logic->saveSet();
return $this->success();
}
}
... ...
... ... @@ -4,11 +4,14 @@ namespace App\Http\Logic\Aside\Project;
use App\Helper\Arr;
use App\Helper\FormGlobalsoApi;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\InquirySet;
use App\Models\Project\DeployBuild;
use App\Models\Project\DeployOptimize;
use App\Models\Project\Payment;
use App\Models\Project\Project;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
/**
... ... @@ -39,15 +42,15 @@ class ProjectLogic extends BaseLogic
}
public function save($param){
if(!empty($param['test_domain'])){
$param['test_domain'] = checkDomain($param['test_domain']);
if(!$param['test_domain']){
if(!empty($param['deploy_build']['test_domain'])){
$param['deploy_build']['test_domain'] = checkDomain($param['deploy_build']['test_domain']);
if(!$param['deploy_build']['test_domain']){
$this->fail('测试域名格式不正确');
}
}
if(!empty($param['domain'])){
$param['domain'] = checkDomain($param['domain']);
if(!$param['domain']){
if(!empty($param['deploy_optimize']['domain'])){
$param['deploy_optimize']['domain'] = checkDomain($param['deploy_optimize']['domain']);
if(!$param['deploy_optimize']['domain']){
$this->fail('正式域名格式不正确');
}
}
... ... @@ -122,4 +125,38 @@ class ProjectLogic extends BaseLogic
parent::setWith(['payment', 'deploy_build', 'deploy_optimize']);
parent::clearCache($id);
}
/**
* 保存询盘通知设置
* @author zbj
* @date 2023/5/17
*/
public function saveInquirySet($param)
{
$project = $this->getCacheInfo($param['project_id']);
//同步到接口
$domain = parse_url($project['deploy_optimize']['domain'])['host'];
$emails = Arr::arrToSet($param['emails']??'', 'trim');
$phones = Arr::arrToSet($param['phones']??'', 'trim');
$form_globalso_api = new FormGlobalsoApi();
$res = $form_globalso_api->setInquiry($domain, $emails, $phones);
if (!$res) {
$this->fail('保存失败');
}
if ($res['status'] != 200) {
$this->fail($res['message'] ?? '保存失败');
}
//保存
$set = InquirySet::where('project_id', $param['project_id'])->first();
if (!$set) {
$set = new InquirySet();
}
$set->project_id = $param['project_id'];
$set->emails = $emails;
$set->phones = $phones;
$set->save();
return $this->success();
}
}
... ...
... ... @@ -79,54 +79,7 @@ class InquiryLogic extends BaseLogic
return $this->success();
}
/**
* 读取设置
* @return array
* @author zbj
* @date 2023/5/17
*/
public function getSet()
{
$set = InquirySet::where('project_id', $this->user['project_id'])->first();
if ($set) {
return $this->success(Arr::twoKeepKeys($set->toArray(), ['emails', 'phones']));
} else {
return $this->success(['emails' => '', 'phones' => '']);
}
}
/**
* 保存设置
* @author zbj
* @date 2023/5/17
*/
public function saveSet()
{
$project = (new ProjectLogic())->getInfo($this->user['project_id']);
//同步到接口
$domain = parse_url($project['deploy_optimize']['domain'])['host'] ?? ['path'];
$emails = Arr::arrToSet($this->request['emails'], 'trim');
$phones = Arr::arrToSet($this->request['phones'], 'trim');
$res = $this->form_globalso_api->setInquiry($domain, $emails, $phones);
if (!$res) {
$this->fail('保存失败');
}
if ($res['status'] != 200) {
$this->fail($res['message'] ?? '保存失败');
}
//保存
$set = InquirySet::where('project_id', $this->user['project_id'])->first();
if (!$set) {
$set = new InquirySet();
}
$set->project_id = $this->user['project_id'];
$set->emails = $emails;
$set->phones = $phones;
$set->save();
}
}
... ...
... ... @@ -103,6 +103,7 @@ Route::middleware(['web'])->group(function (){ //admin用渲染默认要加上w
Route::get('/', [Aside\Project\ProjectController::class, 'list'])->name('admin.project');
Route::get('/info', [Aside\Project\ProjectController::class, 'info'])->name('admin.project_info');
Route::post('/save', [Aside\Project\ProjectController::class, 'save'])->name('admin.project_save');
Route::any('/inquiry_set', [Aside\Project\ProjectController::class, 'inquiry_set'])->name('admin.project_inquiry_set');
});
//工单管理
... ...
... ... @@ -199,7 +199,6 @@ Route::middleware(['bloginauth'])->group(function () {
//精准询盘
Route::prefix('inquiry')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\InquiryController::class, 'index'])->name('inquiry');
Route::any('/set', [\App\Http\Controllers\Bside\InquiryController::class, 'set'])->name('inquiry_set');
Route::get('/info', [\App\Http\Controllers\Bside\InquiryController::class, 'info'])->name('inquiry_info');
Route::any('/delete', [\App\Http\Controllers\Bside\InquiryController::class, 'delete'])->name('inquiry_delete');
Route::any('/export', [\App\Http\Controllers\Bside\InquiryController::class, 'export'])->name('inquiry_export');
... ...