作者 李美松

Merge branch 'develop' into lms

正在显示 46 个修改的文件 包含 683 行增加737 行删除
... ... @@ -23,6 +23,9 @@ class Kernel extends ConsoleKernel
$schedule->command('rank_data_recomm_domain')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据-引荐域名,每周一凌晨执行一次
$schedule->command('rank_data_week')->weeklyOn(1, '01:00')->withoutOverlapping(1); // 排名数据,每周一凌晨执行一次
$schedule->command('share_user')->dailyAt('01:00')->withoutOverlapping(1); // 清除用户ayr_share数据,每天凌晨1点执行一次
$schedule->command('visit', ['type' => 1])->everyThirtyMinutes(); // 引流 1-3个月的项目,半小时一次
$schedule->command('visit', ['type' => 2])->cron('*/18 * * * *'); // 引流 4-8个月的项目,18分钟一次
$schedule->command('visit', ['type' => 3])->cron('*/12 * * * *'); // 引流 大于9个月的项目,12分钟一次
}
/**
... ...
... ... @@ -18,5 +18,4 @@ final class Common extends Enum
//端
const A='a';
const B='b';
const C='c';
}
... ...
<?php
namespace App\Exceptions;
use App\Enums\Common\Code;
use Exception;
use Throwable;
/**
* @notes: C端接口统一错误格式
* Class CsideGlobalException
* @package App\Exceptions
*/
class CsideGlobalException extends Exception
{
public function __construct($code = 0, $message = "", Throwable $previous = null)
{
$this->code = $code;
$this->message = $message;
if (empty($this->message)) {
$this->message = Code::fromValue($code)->description;
}
}
}
... ... @@ -72,10 +72,6 @@ class Handler extends ExceptionHandler
elseif($exception instanceof BsideGlobalException) {
LogUtils::error("BsideGlobalException", [], $exceptionMessage);
}
//C端错误
elseif($exception instanceof CsideGlobalException) {
LogUtils::error("CsideGlobalException", [], $exceptionMessage);
}
//验证错误(非手动抛出)
elseif ($exception instanceof ValidationException) {
LogUtils::error("参数验证失败", [], $exceptionMessage);
... ... @@ -114,9 +110,7 @@ class Handler extends ExceptionHandler
$code = $exception->getCode();
}elseif ($exception instanceof BsideGlobalException) {
$code = $exception->getCode();
}elseif ($exception instanceof CsideGlobalException) {
$code = $exception->getCode();
} elseif ($exception instanceof ValidationException) {
}elseif ($exception instanceof ValidationException) {
$code = Code::USER_PARAMS_ERROE();
$message = $code->description = Arr::first(Arr::first($exception->errors()));
} elseif ($exception instanceof NotFoundHttpException || $exception instanceof MethodNotAllowedHttpException) {
... ...
... ... @@ -103,6 +103,7 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K
return $this->http_click('get',$url,[],$this->headers);
}
/**
* @name :(发帖)post_send_msg
* @author :lyh
... ... @@ -113,12 +114,33 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K
*/
public function post_send_msg($param,$api_key){
//平台参数处理
$this->headers['Accept-Encoding'] = 'gzip';
$this->headers['Authorization'] = $this->headers['Authorization'].$api_key;
// $this->headers['Accept-Encoding'] = 'gzip';
// $this->headers['Authorization'] = $this->headers['Authorization'].$api_key;
$param['idempotencyKey'] = uniqid().time();
$url = $this->path.'/api/post';
return $this->http_click('posts',$url,$param,$this->headers);
return $this->http_post_ayr($url,$param,$api_key);
}
public function http_post_ayr($url,$param,$api_key){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => http_build_query($param),
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer '.$api_key,
'Accept-Encoding: gzip'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
/**
* @name :(上传图片或视频到ayr_share)post_media_upload
* @author :lyh
... ...
<?php
namespace App\Helper;
use App\Utils\HttpUtils;
use GuzzleHttp\Exception\GuzzleException;
/**
* Class FormGlobalsoApi
* @package App\Helper
* @author zbj
* @date 2023/5/17
*/
class FormGlobalsoApi
{
//接口地址
protected $url = 'https://form.globalso.com';
/**
* 设置询盘通知
* @author zbj
* @date 2023/5/17
*/
public function setInquiry($domain, $emails, $phones)
{
$api_url = $this->url . '/api/external-project/save/dc77a54480b184c4';
$params = [
'token' => md5($domain.$emails.$phones.date("Y-m-d")),
'domain' => $domain,
'email' => $emails,
'phone' => $phones,
];
try {
$res = HttpUtils::get($api_url, $params);
$res = Arr::s2a($res);
} catch (\Exception | GuzzleException $e) {
errorLog('设置询盘通知', $params, $e);
return false;
}
return $res;
}
/**
* 询盘列表
* @author zbj
* @date 2023/5/17
*/
public function getInquiryList($domain, $search = '', $page = 1, $page_size = 20)
{
$api_url = $this->url . '/api/external-interface/6a1bd159b1fd60af';
$params = [
'token' => md5($domain.$search.date("Y-m-d")),
'domain' => $domain,
'limit' => $page_size,
'page' => $page,
'source' => '1,3' //来源类型 新项目用1,3
];
if($search){
$params['name'] = $search;
}
try {
$res = HttpUtils::get($api_url, $params);
$res = Arr::s2a($res);
} catch (\Exception | GuzzleException $e) {
errorLog('询盘列表', $params, $e);
return false;
}
return $res;
}
/**
* 设置询盘信息已读
* @author zbj
* @date 2023/5/17
*/
public function saveInquiryRead($domain, $id)
{
$api_url = $this->url . '/api/external-interface/save/d1483a8e57cb485a';
$params = [
'token' => md5($domain.$id.date("Y-m-d")),
'domain' => $domain,
'id' => $id,
];
try {
$res = HttpUtils::get($api_url, $params);
$res = Arr::s2a($res);
} catch (\Exception | GuzzleException $e) {
errorLog('设置询盘信息已读', $params, $e);
return false;
}
return $res;
}
/**
* 删除询盘信息
* @author zbj
* @date 2023/5/17
*/
public function delInquiry($domain, $ids)
{
$api_url = $this->url . '/api/external-interface/del/c4b11cf6f1508489';
$ids = Arr::arrToSet($ids);
$params = [
'token' => md5($domain.$ids.date("Y-m-d")),
'domain' => $domain,
'id' => $ids,
];
try {
$res = HttpUtils::get($api_url, $params);
$res = Arr::s2a($res);
} catch (\Exception | GuzzleException $e) {
errorLog('删除询盘信息', $params, $e);
return false;
}
return $res;
}
}
... ...
... ... @@ -64,7 +64,7 @@ if(!function_exists('http_post')){
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
if (curl_errno($ch)) {
Log::write(print_r(curl_errno($ch),1),'debug---1');
\Illuminate\Support\Facades\Log::write(print_r(curl_errno($ch),1),'debug---1');
}
curl_close($ch);
return json_decode($res, true);
... ... @@ -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);
}
}
... ...
... ... @@ -7,7 +7,7 @@ use App\Helper\AyrShare as AyrShareHelper;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\AyrShare\AyrReleaseLogic;
use App\Http\Logic\Bside\AyrShare\AyrShareLogic;
use App\Http\Requests\Bside\AyrRelease\AyrReleaseRequest;
use App\Http\Requests\Bside\AyrShare\AyrReleaseRequest;
/**
* @name:社交发布
... ... @@ -34,7 +34,7 @@ class AyrReleaseController extends BaseController
}
/**
* @name :(获取当前用户已绑定的社交链接)info
* @name :(获取当前用户已绑定的社交链接)
* @author :lyh
* @method :post
* @time :2023/5/9 16:00
... ... @@ -61,24 +61,29 @@ class AyrReleaseController extends BaseController
$share_info = $ayrShareLogic->ayr_share_info($this->param['share_id']);
//验证发送平台
$ayrShareLogic->verify_param($share_info);
$data = [
'images'=>$this->param['images'],
'files'=>$this->param['video'],
];
if(isset($this->param['video']) && !empty($this->param['video'])){
$data['files'] = $this->param['video'];
}
if(isset($this->param['images']) && !empty($this->param['images'])){
$data['images'] = $this->param['images'];
}
//参数处理
$this->param['mediaUrls'] = $ayrReleaseLogic->image_file_param($data);;
$this->param['mediaUrls'] = $ayrReleaseLogic->image_file_param($data);
//时间处理
$datetime = new \DateTime($this->param['schedule_date']);
$formattedTime = $datetime->format("Y-m-d\TH:i:s\Z");
//统一生成发布
$param = [
'post'=>$this->param['content'],
'platforms'=>$this->param['platforms'],
'mediaUrls'=>$this->param['mediaUrls'],//参数处理
'idempotencyKey'=>$this->param['idempotency_key'],//时间(如是过去时间,立即发布)
'scheduleDate'=>$formattedTime,//时间(如是过去时间,立即发布)
];
//发送请求发布社交文章
$res = $ayrShare->post_send_msg($param,$share_info['profile_key']);
//保存数据库
$ayrReleaseLogic->release_add();
$this->response('success',Code::SUCCESS,$res);
$this->response('success',Code::SUCCESS,json_decode($res));
}
/**
... ... @@ -95,19 +100,16 @@ class AyrReleaseController extends BaseController
'share_id.required' => 'SHARE_ID不能为空',
'hash.required' => 'HASH不能为空'
]);
$image_info = $ayrShareLogic->save_img_info($this->param['hash']);
if(empty($image_info['ayr_id'])){
//获取发送账号详情
$share_info = $ayrShareLogic->ayr_share_info();
//向第三方存储图片
$param = [
'file'=>$ayrShareLogic->base_img_content($this->param['hash']),//base64编码
];
$param_data = $ayrShare->post_media_upload($param,$share_info['profile_key']);
//更新图片库
$ayrShareLogic->save_img($param_data);
}
$this->response('success',Code::SUCCESS,$image_info);
//获取发送账号详情
$share_info = $ayrShareLogic->ayr_share_info();
//向第三方存储图片
$param = [
'file'=>$ayrShareLogic->base_img_content($this->param['hash']),//base64编码
];
$param_data = $ayrShare->post_media_upload($param,$share_info['profile_key']);
//更新图片库
$ayrShareLogic->save_img($param_data);
$this->response('success',Code::SUCCESS,$param_data);
}
/**
... ... @@ -124,18 +126,15 @@ class AyrReleaseController extends BaseController
'share_id.required' => 'SHARE_ID不能为空',
'hash.required' => 'HASH不能为空'
]);
$image_info = $ayrShareLogic->save_file_info($this->param['hash']);
if(empty($image_info['ayr_id'])){
//获取发送账号详情
$share_info = $ayrShareLogic->ayr_share_info();
//向第三方存储图片
$param = [
'file'=>$ayrShareLogic->base_img_content($this->param['hash']),//base64编码
];
$param_data = $ayrShare->post_media_upload($param,$share_info['profile_key']);
//更新图片库
$ayrShareLogic->save_file($param_data);
}
//获取发送账号详情
$share_info = $ayrShareLogic->ayr_share_info();
//向第三方存储图片
$param = [
'file'=>$ayrShareLogic->base_img_content($this->param['hash']),//base64编码
];
$param_data = $ayrShare->post_media_upload($param,$share_info['profile_key']);
//更新图片库
$ayrShareLogic->save_file($param_data);
$this->response('success');
}
}
... ...
... ... @@ -2,16 +2,12 @@
namespace App\Http\Controllers\Bside;
use App\Exceptions\BsideGlobalException;
use App\Helper\Arr;
use App\Http\Logic\Bside\InquiryLogic;
use App\Http\Requests\Bside\InquiryRequest;
use App\Rules\Ids;
use App\Services\BatchExportService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\ValidationException;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
/**
* 精准询盘
... ... @@ -25,23 +21,18 @@ class InquiryController extends BaseController
public function index(InquiryLogic $logic)
{
$map = [];
if(!empty($this->param['search'])){
$map[] = ['name|email|content', 'like', "%{$this->param['search']}%"];
}
$sort = ['id' => 'desc'];
$data = $logic->getList($map, $sort, ['id', 'name', 'email', 'phone', 'url', 'ip', 'ip_country', 'status', 'created_at']);
$data = $logic->getApiList();
return $this->success($data);
}
public function info(Request $request, InquiryLogic $logic){
$request->validate([
'id'=>'required'
'id' => 'required',
],[
'id.required' => 'ID不能为空'
]);
$data = $logic->getInfo($this->param['id']);
return $this->success(Arr::twoKeepKeys($data, ['id', 'name', 'email', 'phone', 'url', 'ip', 'ip_country', 'status', 'content', 'trans_content', 'created_at']));
return $this->success($data);
}
public function delete(Request $request, InquiryLogic $logic)
... ... @@ -52,8 +43,8 @@ class InquiryController extends BaseController
'ids.required' => 'ID不能为空'
]);
$data = $logic->delete($this->param['ids']);
return $this->success($data);
$logic->delete($this->param['ids']);
return $this->success();
}
/**
... ... @@ -66,22 +57,20 @@ class InquiryController extends BaseController
*/
public function export(InquiryLogic $logic)
{
$sort = ['id' => 'desc'];
//最多到1w条
$data = $logic->getList([], $sort, ['name', 'email', 'phone', 'url', 'ip', 'ip_country', 'content', 'created_at'], 10000);
$data = $logic->getApiList(true);
$data = $data['list'] ?? [];
foreach ($data as &$item){
$item['ip_address'] = "{$item['ip_country']}({$item['ip']})";
$item['ip_address'] = "{$item['country']}({$item['ip']})";
}
$map = [
'created_at' => '询盘发送时间',
'submit_time' => '询盘发送时间',
'name' => '姓名',
'email' => '邮箱',
'phone' => '电话',
'ip_address' => '访问国家/地区(IP)',
'url' => '发送页面',
'content' => '询盘内容',
'refer' => '发送页面',
'message' => '询盘内容',
];
//生成文件,发送到客户端
... ...
<?php
namespace App\Http\Controllers\Bside\User;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\User\DeptUserLogic;
use App\Http\Logic\Bside\User\UserLogic;
use App\Models\User\DeptUser;
use App\Models\User\ViewDeptUser;
class DeptUserController extends BaseController
{
/**
* @param ViewDeptUser $viewDeptUser
* @name :(详情)info
* @author :lyh
* @method :post
* @time :2023/5/18 9:32
*/
public function info(ViewDeptUser $viewDeptUser){
$this->request->validate([
'id'=>['required']
],[
'id.required' => 'id不能为空'
]);
$info = $viewDeptUser->read($this->param);
$this->response('success',Code::SUCCESS,$info);
}
/**
* @name :(部门添加与更新用户)add
* @author :lyh
* @method :post
* @time :2023/5/17 17:36
*/
public function save(DeptUserLogic $deptUserLogic){
$this->request->validate([
'dept_id'=>['required'],
'user_id'=>['required']
],[
'dept_id.required' => '组织架构id不能为空',
'user_id.required' => '用户id不能为空',
]);
$deptUserLogic->dept_user_save();
$this->response('success');
}
/**
* @name :(设置管理员)set_admin
* @author :lyh
* @method :post
* @time :2023/5/18 10:32
*/
public function set_admin(DeptUserLogic $deptUserLogic){
$this->request->validate([
'id'=>['required'],
'is_admin'=>['required'],
],[
'id.required' => 'id不能为空',
'is_admin.required' => 'is_admin不能为空',
]);
$deptUserLogic->dept_user_edit();
$this->response('success');
}
/**
* @name :(设置用户角色)set_role
* @author :lyh
* @method :post
* @time :2023/5/19 9:32
*/
public function set_role(DeptUserLogic $deptUserLogic){
$this->request->validate([
'id'=>['required'],
'role_id'=>['required'],
],[
'id.required' => '用户id不能为空',
'role_id.required' => 'role_id不能为空',
]);
$deptUserLogic->user_edit_role();
$this->response('success');
}
}
... ...
<?php
namespace App\Http\Controllers\Bside\User;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Controllers\Bside\Ids;
use App\Http\Controllers\Bside\json;
use App\Http\Logic\Bside\ProjectGroupLogic;
use App\Http\Logic\Bside\User\GroupLogic;
use App\Http\Requests\Bside\User\ProjectGroupRequest;
use App\Models\User\ProjectGroup;
/**
* @name:用户组相关
*/
class ProjectGroupController extends BaseController
{
/**
* @name :用户组列表
* @return json
* @author :liyuhang
* @method
*/
public function lists(ProjectGroup $projectGroup)
{
$lists = $projectGroup->list($this->map,'id',['name','user_list','pid','id']);
$menu = [];
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
$this->response('success',Code::SUCCESS,$menu);
}
/**
* @name :详情
* @return json
* @author :liyuhang
* @method
*/
public function info(GroupLogic $groupLogic){
$this->request->validate([
'id'=>['required', new Ids()],
],[
'id.required' => 'ID不能为空',
]);
$groupLogic->group_info();
$this->response('success');
}
/**
* @name:添加用户组获取用户列表
* @return void
* @author :liyuhang
* @method
*/
public function get_user_lists(GroupLogic $groupLogic){
$lists = $groupLogic->user_list();
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @param ProjectGroupRequest $request
* @param ProjectGroupLogic $logic
* @name : 添加用户组
* @return void
* @author :liyuhang
* @method
*/
public function add(ProjectGroupRequest $request,GroupLogic $groupLogic){
$request->validated();
$groupLogic->group_add();
$this->response('success');
}
/**
* @param ProjectGroupRequest $request
* @param ProjectGroupLogic $logic
* @name :编辑用户组
* @return void
* @author :liyuhang
* @method
*/
public function edit(ProjectGroupRequest $request,GroupLogic $groupLogic){
$request->validate([
'id'=>['required'],
],[
'id.required' => 'ID不能为空',
]);
$groupLogic->group_edit();
$this->response('success');
}
/**
* @name :删除用户组
* @return void
* @author :liyuhang
* @method
*/
public function del(GroupLogic $groupLogic){
$this->request->validate([
'id'=>['required','array'],
],[
'id.required' => 'ID不能为空',
'id.array' => 'ID为数组',
]);
$groupLogic->group_del();
$this->response('success');
}
}
... ... @@ -7,7 +7,9 @@ use App\Http\Controllers\Bside\BaseController;
use App\Http\Controllers\Bside\json;
use App\Http\Logic\Bside\User\UserLogic;
use App\Http\Requests\Bside\User\UserRequest;
use App\Models\User\ProjectRole;
use App\Models\User\User as UserModel;
use App\Models\User\ViewDeptUser;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
... ... @@ -19,17 +21,24 @@ class UserController extends BaseController
* @author :liyuhang
* @method
*/
public function lists(UserModel $userModel){
//TODO::搜索参数统一处理
public function lists(ViewDeptUser $viewDeptUser){
$this->map['project_id'] = $this->user['project_id'];
$lists = $userModel->lists($this->map,$this->page,$this->row,$this->order,['id','name','mobile','created_at','wechat','status']);
if(empty($lists)){
$this->response('error',Code::USER_ERROR,[]);
}
$lists = $viewDeptUser->lists($this->map,$this->page,$this->row,'user_id');
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @name :(添加管理员获取角色菜单)role_list
* @author :lyh
* @method :post
* @time :2023/5/18 17:04
*/
public function role_list(ProjectRole $projectRole){
$list = $projectRole->list(['status'=>0,'project_id'=>$this->user['project_id']],'id');
$this->response('success',Code::SUCCESS,$list);
}
/**
* @name :添加管理员
* @return void
* @author :liyuhang
... ...
<?php
namespace App\Http\Controllers\Cside;
use App\Enums\Common\Code;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Session;
class BaseController extends Controller
{
protected $param = [];//所有请求参数
protected $token = ''; //token
protected $request = [];//助手函数
protected $project = [];//当前登录用户详情
/**
* 获取所有参数
*/
public function __construct(Request $request)
{
$this->request = $request;
$this->param = $this->request->all();
$this->token = $this->request->header('token');
if(!empty($this->token) && !empty(Cache::get($this->token))){
$info = Cache::get($this->token);
$this->user = $info;
$this->uid = $info['id'];
}
}
/**
* 成功返回
* @param array $data
* @param string $code
* @param bool $objectData
* @return JsonResponse
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
*/
function success(array $data = [], string $code = Code::SUCCESS, bool $objectData = false): JsonResponse
{
if ($objectData) {
$data = (object)$data;
}
$code = Code::fromValue($code);
$response = [
'code' => $code->value,
'data' => $data,
'msg' => $code->description,
];
return response()->json($response,200);
}
}
<?php
namespace App\Http\Controllers\Cside;
use App\Http\Logic\Cside\InquiryLogic;
use App\Http\Requests\Cside\InquiryRequest;
/**
* 精准询盘
* Class InquiryController
* @package App\Http\Controllers\Bside
* @author zbj
* @date 2023/5/4
*/
class InquiryController extends BaseController
{
public function save(InquiryRequest $request, InquiryLogic $logic)
{
$data = $logic->save($this->param);
return $this->success($data);
}
}
... ... @@ -44,7 +44,7 @@ class FileController
* @method :post
* @time :2023/5/9 9:15
*/
public function index($hash = '', $type = 1)
public function index($hash = '', $w = 1)
{
// 检查是否有修改日期或ETag头部
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
... ...
... ... @@ -11,7 +11,6 @@ use App\Http\Middleware\Bside\EnableCrossRequestMiddleware;
use App\Http\Middleware\Bside\ParamMiddleware as BsideParamMiddleware;
use App\Http\Middleware\Aside\LoginAuthMiddleware as AsideLoginAuthMiddleware;
use App\Http\Middleware\Bside\LoginAuthMiddleware as BsideLoginAuthMiddleware;
use App\Http\Middleware\Cside\ParamMiddleware as CsideParamMiddleware;
use App\Http\Middleware\PreventRepeatQuitCallMiddleware;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
... ... @@ -77,11 +76,6 @@ class Kernel extends HttpKernel
//允许跨域请求
EnableCrossRequestMiddleware::class
],
//C端中间件组
'cside'=>[
//参数处理中间件--涉及-参数记录-参数加解密等
CsideParamMiddleware::class,
]
];
/**
... ...
... ... @@ -20,7 +20,7 @@ class DomainInfoLogic extends BaseLogic
public function getDomainInfo($project_id)
{
$project = app(ProjectLogic::class)->getInfo($project_id);
$domain = $project['deploy_optimize']['domain'];
$domain = $project['deploy_optimize']['domain'] ?? '';
$info = $this->model->where('project_id', $project_id)->first();
//不存在或时间过期了 重新获取信息
$expiration_date = $info['domain_info']['expiration_date'] ?? '';
... ...
... ... @@ -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();
}
}
... ...
<?php
namespace App\Http\Logic\Aside\User;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\User\ProjectMenu;
class ProjectGroupLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new ProjectMenu();
$this->param = $this->requestAll;
}
/**
* @name :详情
* @return void
* @author :liyuhang
* @method
*/
public function group_info(){
$info = $this->info($this->param);
return $this->success($info);
}
/**
* @name :添加
* @return void
* @author :liyuhang
* @method
*/
public function group_add(){
//查看当前用户组是否存在
$this->model->read(['name'=>$this->param['name'],'create_id'=>$this->user['id']]);
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @name :编辑
* @return void
* @author :liyuhang
* @method
*/
public function group_edit(){
//查看当前用户组是否存在
$rs = $this->model->read(['name'=>$this->param['name'],'create_id'=>$this->user['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @name :删除
* @return void
* @author :liyuhang
* @method
*/
public function group_del(){
$this->param['id'] = ['in',$this->param['id']];
$rs = $this->model->del($this->param);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ... @@ -40,6 +40,8 @@ class AyrReleaseLogic extends BaseLogic
public function release_add(){
$this->param['project_id'] = $this->user['project_id'];
$this->param['operator_id'] = $this->user['id'];
$this->param['images'] = implode(',',$this->param['images']);
$this->param['platforms'] = json_encode($this->param['platforms']);
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('error');
... ... @@ -61,17 +63,17 @@ class AyrReleaseLogic extends BaseLogic
$imageModel = new Image();
$list = $imageModel->list(['hash'=>['in',$images]],'id');
foreach ($list as $v1){
$arr[] = $v1['ayr_url'];
$filename = basename($v1['path']);
$arr[] = url('/upload/images/'.$filename);
}
}else{
$arr[] = url('/b/file_hash/' . $v.rand(10000,99999).'mp4');;
$fileModel = new File();
$info = $fileModel->read(['hash'=>$v]);
$filename = basename($info['path']);
$arr[] = url('/upload/files/'.$filename);
}
}
return $this->success($arr);
}
public function platforms_request(){
}
}
... ...
... ... @@ -209,16 +209,19 @@ class AyrShareLogic extends BaseLogic
if(!in_array($v,json_decode($info['bind_platforms']))){
$this->fail('未绑定平台');
}
if($v == 'reddit' && isset($this->param['video'])){
$this->fail('不支持视频');
}
//验证图片数
$img_num = count($this->param['images']);
if($img_num > $this->send_num[$v]){
$this->fail('发布图片数量超过最大限制,'.$v.'只允许'.$this->send_num[$v].'张图');
}
//验证图片数
$img_num = count($this->param['video']);
if($img_num > 1){
$this->fail('发布视频数量超过最大限制,'.$v.'只允许'.$this->send_num[$v].'个视频');
}
// $img_num = count($this->param['video']);
// if($img_num > 1){
// $this->fail('发布视频数量超过最大限制,'.$v.'只允许'.$this->send_num[$v].'个视频');
// }
}
return $this->success();
}
... ...
... ... @@ -3,7 +3,10 @@
namespace App\Http\Logic\Bside;
use App\Helper\Arr;
use App\Models\Inquiry;
use App\Helper\FormGlobalsoApi;
use App\Helper\Translate;
use App\Http\Logic\Aside\Project\ProjectLogic;
use App\Models\InquirySet;
/**
* Class InquiryLogic
... ... @@ -11,25 +14,72 @@ use App\Models\Inquiry;
* @author zbj
* @date 2023/5/4
*/
class InquiryLogic extends BaseLogic
class InquiryLogic extends BaseLogic
{
protected $form_globalso_api;
public function __construct()
{
parent::__construct();
$this->model = new Inquiry();
$this->form_globalso_api = new FormGlobalsoApi();
}
public function getApiList($export = false)
{
$page_size = $export ? 1000 : 20;
$search = $this->request['search'] ?: '';
$page = $this->request['page'] ?: 1;
$project = (new ProjectLogic())->getInfo($this->user['project_id']);
$domain = $project['deploy_optimize']['domain'] ?? '';
$list = $this->form_globalso_api->getInquiryList($domain, $search, $page, $page_size);
//处理格式 免得前端又改
$data = [
"list" => [],
"total" => 0,
"page" => $page,
"total_page" => 1,
"size" => $page_size
];
if (!empty($list['status']) && $list['status'] == 200) {
foreach ($list['data']['data'] as $item) {
$data['list'][] = $item;
}
$data['total'] = $list['data']['total'];
$data['total_page'] = $list['data']['last_page'];
}
return $this->success($data);
}
public function getInfo($id)
{
$info = $this->getCacheInfo($id);
if(!$info){
$this->fail('数据不存在或者已经删除');
$project = (new ProjectLogic())->getInfo($this->user['project_id']);
$domain = $project['deploy_optimize']['domain'] ?: '';
//修改状态为已读
if($this->request['read_status']){
$this->form_globalso_api->saveInquiryRead($domain, $id);
}
//标记已读
if($info->status == Inquiry::STATUS_UNREAD){
parent::save(['id' => $info['id'], 'status' => Inquiry::STATUS_READ]);
//翻译
$trans_message = '';
if($this->request['message']){
$trans_message = Translate::tran($this->request['message'], 'zh');
}
return $this->success($info->toArray());
return $this->success(['trans_message' => $trans_message]);
}
public function delete($ids, $map = [])
{
$project = (new ProjectLogic())->getInfo($this->user['project_id']);
$domain = $project['deploy_optimize']['domain'] ?: '';
$ids = array_filter(Arr::splitFilterToArray($ids), 'intval');
if(!$ids){
$this->fail('ID不能为空');
}
$this->form_globalso_api->delInquiry($domain, $ids);
return $this->success();
}
}
... ...
... ... @@ -55,10 +55,10 @@ class RankDataLogic extends BaseLogic
//项目信息
$data['project'] = [
'company' => $project['company'],
'domain' => $project['deploy_optimize']['domain'],
'domain' => $project['deploy_optimize']['domain'] ?? '',
'domain_info' => ($domain_info['domain_info']['creation_date'] ?? '') . ' - ' . ($domain_info['domain_info']['expiration_date'] ?? ''),
'cert_info' => ($domain_info['ssl']['start_time'] ?? '') . ' - ' . ($domain_info['ssl']['end_time'] ?? ''),
'plan' => str_replace('营销大师-', '全球搜-', $project['deploy_build']['plan'][0]),
'plan' => str_replace('营销大师-', '全球搜-', $project['deploy_build']['plan'][0] ?? ''),
'keyword_num' => $project['deploy_build']['keyword_num'],
'compliance_day' => $rank['compliance_day'] ?? 0,
'remain_day' => $project['deploy_build']['service_duration'] - ($rank['compliance_day'] ?? 0),
... ... @@ -69,7 +69,7 @@ class RankDataLogic extends BaseLogic
$lang_data = $quanqiusou_api->getLangRankData($api_no);
$lang_data = Arr::setValueToKey($lang_data, 'language');
$data['langs'] = [];
foreach($project['deploy_optimize']['minor_languages'] as $lang){
foreach($project['deploy_optimize']['minor_languages']??[] as $lang){
$remain_day = $lang_data[$lang['tl']]['dabiao_day'] ?? 0;
$data['langs'][$lang['tl'] ?? ''] = [
'lang_text' => Translate::getTls($lang['tl'] ?? ''),
... ... @@ -96,6 +96,7 @@ class RankDataLogic extends BaseLogic
];
//外链引荐域名
$recomm_domain = $recomm_domain ? $recomm_domain->toArray() : [];
$data['external_links_domain_chat'] = [
'labels' => array_map(function ($item) {
return Str::substrReplace($item, '***', 2, 3);
... ... @@ -120,8 +121,8 @@ class RankDataLogic extends BaseLogic
}
//关键词排名分析图
$data['rank_chat'] = [
'data' => $rank_week['data'],
'labels' => $rank_week['date'],
'data' => $rank_week['data'] ?? [],
'labels' => $rank_week['date'] ?? [],
];
return $data;
... ...
... ... @@ -4,7 +4,7 @@ namespace App\Http\Logic\Bside\User;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\ProjectDept;
use App\Models\User\ProjectDept;
/**
* Class DeptLogic
... ...
<?php
namespace App\Http\Logic\Bside\User;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\User\DeptUser;
use App\Models\User\User as UserModel;
class DeptUserLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new DeptUser();
$this->param = $this->requestAll;
}
/**
* @name :(部门用户)dept_user_add
* @author :lyh
* @method :post
* @time :2023/5/18 10:21
*/
public function dept_user_save(){
if(isset($this->param['id']) && !empty($this->param['id'])){
$rs = $this->dept_user_edit($this->param);
}else{
$rs = $this->dept_user_add();
}
if ($rs === false) {
$this->fail('部门添加成员失败');
}
return $this->success();
}
/**
* @name :(部门添加用户)dept_user_add
* @author :lyh
* @method :post
* @time :2023/5/18 10:21
*/
public function dept_user_add(){
$param = [
'dept_id'=> $this->param['dept_id'],
'project_id'=>$this->user['project_id'],
'user_id'=>$this->param['user_id'],
'operator_id'=>$this->user['id'],
'create_id'=>$this->user['id']
];
$rs = $this->model->add($param);
if($rs === false){
$this->fail('部门添加成员失败');
}
return $this->success();
}
/**
* @name :(用户更改部门)dept_user_edit
* @author :lyh
* @method :post
* @time :2023/5/17 17:54
*/
public function dept_user_edit($param){
$rs = $this->model->edit($param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @name :(用户设置角色)user_edit_role
* @author :lyh
* @method :post
* @time :2023/5/19 9:35
*/
public function user_edit_role(){
$userModel = new UserModel();
$rs = $userModel->edit(['role_id'=>$this->param['role_id']],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ...
... ... @@ -4,6 +4,8 @@ namespace App\Http\Logic\Bside\User;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\User\ProjectGroup;
use App\Models\User\User as UserModel;
use Illuminate\Support\Facades\DB;
class GroupLogic extends BaseLogic
{
... ... @@ -15,52 +17,86 @@ class GroupLogic extends BaseLogic
$this->param = $this->requestAll;
}
/**
* @name :添加
* @name :添加用户组
* @return void
* @author :liyuhang
* @method
*/
public function group_add(){
$this->param['project_id'] = $this->user['project_id'];
$this->param['admin_id'] = $this->user['admin_id'];
$this->param['create_id'] = $this->user['create_id'];
$this->param['operator_id'] = $this->user['operator_id'];
$this->param['user_list'] = ','.trim($this->param['user_list'],',').',';
$this->param['admin_id'] = $this->user['id'];
$this->param['create_id'] = $this->user['id'];
$this->param['operator_id'] = $this->user['id'];
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('error');
}
if(isset($this->param['pid']) && !empty($this->param['pid'])){
$this->add_update_parent($this->param);
}
return $this->success();
}
/**
* @name :(添加成员)group_add_user
* @author :lyh
* @method :post
* @time :2023/5/17 15:58
*/
public function group_add_user(){
$info = $this->model->read(['id'=>$this->param['id']]);
//组装数据
$str = ltrim($info['user_list'],',').$this->param['user_list'];
$arr = array_unique(explode(',',$str));
sort($arr);
$str = ','.implode(',',$arr).',';
DB::beginTransaction();
try {
$this->model->edit(['user_list'=>$str],['id'=>$this->param['id']]);
//更新父类
$this->update_parent($this->param,$info);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('添加成员失败');
}
return $this->success();
}
/**
* @name :编辑
* @return void
* @author :liyuhang
* @method
*/
public function group_edit(){
$this->param['user_list'] = ','.trim($this->param['user_list'],',').',';
$rs = $this->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
//更新父类
$this->update_parent($this->param,$this->param['id']);
return $this->success();
}
/**
* @name :(获取成员列表)user_list
* @author :lyh
* @method :post
* @time :2023/5/17 14:51
*/
public function user_list($data = [],$order = 'id'){
unset($this->param['id']);
$userModel = new UserModel();
$data = array_merge($data,$this->param);
$lists = $userModel->list($data,$order,['id','name','mobile','created_at']);
return $this->success($lists);
}
/**
* @name :详情
* @return void
* @author :liyuhang
* @method
*/
public function group_info(){
$info = $this->info($this->param);
public function group_info($param = []){
if(empty($param)){
$param = $this->param;
}
$info = $this->model->read($this->param);
return $this->success($info);
}
... ... @@ -76,7 +112,7 @@ class GroupLogic extends BaseLogic
if($info !== false){
$this->fail('当前删除组织拥有下级组织,不允许删除');
}
$rs = $this->model->del($this->param);
$rs = $this->del($this->param);
if($rs === false){
$this->fail('error');
}
... ... @@ -89,26 +125,51 @@ class GroupLogic extends BaseLogic
* @method :post
* @time :2023/5/17 9:22
*/
public function update_parent($param,$id = ''){
if(!empty($id)){
$param = $this->model->read(['id'=>$id]);
}
public function update_parent($param,$info){
//查询当前组是否拥有父类
if($param['pid'] != 0){
$parent_info = $this->model->read(['id'=>$param['pid']]);
if($info['pid'] != 0){
$parent_info = $this->model->read(['id'=>$info['pid']]);
//把添加成员合并到上级
$str = trim($param['user_list'].$parent_info['user_list'],',');
$mergedString = ','.implode(',', array_unique(explode(',', $str))).',';
$str = trim(trim($param['user_list'],',').$parent_info['user_list'],',');
$arr = array_unique(explode(',', $str));
sort($arr);
$mergedString = ','.implode(',', $arr).',';
$rs = $this->model->edit(['user_list'=>$mergedString],['id'=>$parent_info['id']]);
if($rs === false){
$this->fail('更新父级失败');
}
//查看当前父级是否还拥有父级
if($parent_info['pid'] != 0){
$rs = $this->update_parent($parent_info);
return $this->update_parent($param,$parent_info);
}
}
return $this->success($rs);
return $this->success();
}
/**
* @name :(更新子类,同时清空子集成员)edit_son
* @author :lyh
* @method :post
* @time :2023/5/17 13:52
*/
public function update_son($param,$id){
//当前数据详情
$info = $this->model->read(['id'=>$id]);
//子集详情
$son_list = $this->model->list(['pid'=>$info['id']],'id');
if(!empty($son_list)){
//循环查询
foreach ($son_list as $k => $v){
$son_data = explode(',',trim($v['user_list'],','));
$son_str = '';
foreach ($son_data as $v1){
if(strpos($param['user_list'],','.$v1.',') > -1){
$son_str .= $v1.',';
}
}
$this->model->edit(['user_list'=>','.$son_str],['id'=>$v['id']]);
}
}
return true;
}
}
... ...
... ... @@ -22,7 +22,7 @@ class UserLogic extends BaseLogic
* @method
*/
public function user_info(){
$info = $this->info($this->param);
$info = $this->model->read($this->param);
return $this->success($info);
}
/**
... ... @@ -97,9 +97,9 @@ class UserLogic extends BaseLogic
* @method
*/
public function user_del(){
$ids = $this->param['id'];
$this->param['id'] = ['in',$this->param['id']];
$this->del($this->param,$ids);
$this->model->del($this->param);
//对应删除组织架构
return $this->success();
}
... ...
<?php
namespace App\Http\Logic\Cside;
use App\Enums\Common\Common;
use App\Exceptions\BsideGlobalException;
use App\Http\Logic\Logic;
/**
* @notes: 逻辑层基类 控制器调用 统一返回 统一抛出异常
*/
class BaseLogic extends Logic
{
protected $requestAll;
protected $param;
protected $request;
protected $project;
protected $side = Common::C;
public function __construct()
{
$this->request = request();
$this->requestAll = request()->all();
$this->project = $this->request->get('project');
}
/**
* 列表
* @param array $map
* @param array $sort
* @param array $columns
* @param int $limit
* @return array
* @author zbj
* @date 2023/4/13
*/
public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20)
{
$map[] = ['project_id' => $this->project['id']];
return parent::getList($map, $sort, $columns, $limit);
}
/**
* @param $id
* @return mixed
* @author zbj
* @date 2023/4/15
*/
public function getCacheInfo($id)
{
$info = parent::getCacheInfo($id);
if ($info && $info['project_id'] != $this->project['id']) {
$info = null;
}
return $info;
}
/**
* 保存
* @param $param
* @return array
* @throws BsideGlobalException
* @author zbj
* @date 2023/4/13
*/
public function save($param)
{
$param['project_id'] = $this->project['id'];
return parent::save($param);
}
/**
* 批量删除
* @param $ids
* @param array $map
* @return array
* @author zbj
* @date 2023/4/13
*/
public function delete($ids, $map = [])
{
$map[] = ['project_id' => $this->project['id']];
return parent::delete($ids, $map);
}
}
<?php
namespace App\Http\Logic\Cside;
use App\Helper\Arr;
use App\Models\Inquiry;
/**
* Class InquiryLogic
* @package App\Http\Logic\Bside
* @author zbj
* @date 2023/5/4
*/
class InquiryLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new Inquiry();
}
public function save($param)
{
$param['ip_info'] = Arr::s2a($param['ip_info']);
$param['ip'] = $param['ip_info']['ip'] ?? '';
$param['ip_country'] = $param['ip_info']['country'] ?? '';
return parent::save($param);
}
}
... ... @@ -4,7 +4,6 @@ namespace App\Http\Logic;
use App\Enums\Common\Code;
use App\Enums\Common\Common;
use App\Exceptions\CsideGlobalException;
use \App\Helper\Common as CommonHelper;
use App\Exceptions\AsideGlobalException;
use App\Exceptions\BsideGlobalException;
... ... @@ -46,9 +45,6 @@ class Logic
if((request()->path()[0]) == Common::B){
throw new BsideGlobalException($code, $message);
}
if((request()->path()[0]) == Common::C){
throw new CsideGlobalException($code, $message);
}
throw new AsideGlobalException($code, $message);
}
... ...
<?php
namespace App\Http\Middleware\Cside;
use App\Enums\Common\Code;
use App\Models\Project\Project;
use App\Services\ProjectServer;
use Closure;
use Illuminate\Http\Request;
class ParamMiddleware
{
protected $param = [];
protected $project = [];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$this->param = $request->all();
$domain = $request->header('domain');
if(!isset($domain) || empty($domain)){
return response(['code'=>Code::USER_ERROR,'msg'=>'非法请求']);
}
$project = Project::getProjectByDomain($domain);
if(empty($project)){
return response(['code'=>Code::USER_ERROR,'msg'=>'非法请求']);
}
// 设置数据信息
// $project = ProjectServer::useProject($project['id']);
// if($project){
// return response(['code'=>Code::USER_ERROR,'msg'=>'数据库未配置']);
// }
$request->attributes->add(['project' => $project]);
return $next($request);
}
}
<?php
namespace App\Http\Requests\Bside\AyrRelease;
namespace App\Http\Requests\Bside\AyrShare;
use Illuminate\Foundation\Http\FormRequest;
... ... @@ -24,12 +24,12 @@ class AyrReleaseRequest extends FormRequest
{
return [
'title'=>'required',
'images'=>'required|array',
'video'=>'required',
// 'images'=>'required|array',
// 'video'=>'required',
'content'=>'required',
'share_id'=>'required',
'platforms'=>'required|array',
'idempotency_key'=>'required',
// 'schedule_date'=>'required',
];
}
... ...
<?php
namespace App\Http\Requests\Cside;
use Illuminate\Foundation\Http\FormRequest;
/**
* Class InquiryRequest
* @package App\Http\Requests\Cside
* @author zbj
* @date 2023/5/4
*/
class InquiryRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:200',
'email' => 'required|email|max:200',
'phone' => 'max:200',
'content' => 'required',
];
}
public function messages()
{
return [];
}
}
... ... @@ -187,7 +187,7 @@ class Base extends Model
// in查询 ['id'=>['in',[1,2,3]]]
$query->orWhere($k, $v[1]);
break;
case 'no in':
case 'not in':
// in查询 ['id'=>['not in',[1,2,3]]]
$query->whereNotIn($k, $v[1]);
break;
... ...
<?php
namespace App\Models;
use App\Helper\Arr;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* Class Inquiry
* @package App\Models
* @author zbj
* @date 2023/5/4
*/
class Inquiry extends Base
{
use SoftDeletes;
//设置关联表名
protected $table = 'gl_inquiry';
const STATUS_UNREAD = 0;
const STATUS_READ = 1;
public function setIpInfoAttribute($value){
$this->attributes['ip_info'] = Arr::a2s($value);
}
public function getIpInfoAttribute($value){
return Arr::s2a($value);
}
}
<?php
namespace App\Models;
/**
* Class InquirySet
* @package App\Models
* @author zbj
* @date 2023/5/17
*/
class InquirySet extends Base
{
//设置关联表名
protected $table = 'gl_inquiry_set';
}
... ...
... ... @@ -4,10 +4,7 @@ namespace App\Models\User;
use App\Models\Base;
class ProjectGroup extends Base
class DeptUser extends Base
{
//设置关联表名
protected $table = 'gl_project_group';
//自动维护create_at创建时间 updated_at修改时间
public $timestamps = true;
protected $table = 'gl_project_dept_user';
}
... ...
<?php
namespace App\Models;
namespace App\Models\User;
use App\Models\Base;
use Illuminate\Database\Eloquent\SoftDeletes;
class ProjectDept extends Base
... ...
<?php
namespace App\Models\User;
use App\Models\Base;
class ViewDeptUser extends Base
{
protected $table = 'gl_view_dept_user';
}
... ...
... ... @@ -40,7 +40,6 @@ class RouteServiceProvider extends ServiceProvider
//预定义两个端的API路由
$this->mapAsideRoute();
$this->mapBsideRoute();
$this->mapCsideRoute();
// 暂时无用
$this->routes(function () {
... ... @@ -75,16 +74,6 @@ class RouteServiceProvider extends ServiceProvider
->namespace($this->namespace . '\Bside')
->group(base_path('routes/bside.php'));
}
/**
*C端API路由
* @return void
*/
protected function mapCsideRoute(){
Route::middleware('cside')
->prefix('c')
->namespace($this->namespace . '\Cside')
->group(base_path('routes/cside.php'));
}
/**
* Configure the rate limiters for the application.
... ...
... ... @@ -60,12 +60,6 @@ return [
'via' => \App\Factory\LogFormatterFactory::class,
'prefix' => 'bside',
],
//自定义B端错误日志
'cside' => [
'driver' => 'custom',
'via' => \App\Factory\LogFormatterFactory::class,
'prefix' => 'cside',
],
'stack' => [
'driver' => 'stack',
... ...
... ... @@ -19,14 +19,14 @@ return [
'size' => [
'max' => 1024*1024*2, // 2M
],
'path' => '/image'
'path' => '/images'
],
//默认视频
'default_file' =>[
'size' => [
'max' => 1024*1024*20, // 2M
],
'path' => '/file'
'path' => '/files'
],
//博客图
'blog' =>[
... ...
... ... @@ -104,6 +104,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');
});
//工单管理
... ...
... ... @@ -21,6 +21,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/edit', [\App\Http\Controllers\Bside\User\UserController::class, 'edit'])->name('user_edit');
Route::any('/status', [\App\Http\Controllers\Bside\User\UserController::class, 'status'])->name('user_status');
Route::any('/info', [\App\Http\Controllers\Bside\User\UserController::class, 'info'])->name('user_info');
Route::any('/role_list', [\App\Http\Controllers\Bside\User\UserController::class, 'role_list'])->name('user_role_list');
Route::any('/del', [\App\Http\Controllers\Bside\User\UserController::class, 'del'])->name('user_del');
});
... ... @@ -42,16 +43,6 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/get_user_list', [\App\Http\Controllers\Bside\User\ProjectRoleController::class, 'get_user_list'])->name('project_role_get_user_list');
});
//group相关路
Route::prefix('group')->group(function () {
Route::any('/', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'lists'])->name('project_group_lists');
Route::any('/add', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'add'])->name('project_group_add');
Route::any('/edit', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'edit'])->name('project_group_edit');
Route::any('/info', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'info'])->name('project_group_info');
Route::any('/del', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'del'])->name('project_group_del');
Route::any('/get_user_lists', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'get_user_lists'])->name('project_group_get_user_lists');
});
//新闻相关路由
Route::prefix('news')->group(function () {
//分类
... ... @@ -106,7 +97,7 @@ Route::middleware(['bloginauth'])->group(function () {
//公用ai自动生成
Route::any('/ai_http_post', [\App\Http\Controllers\Bside\Ai\AiCommandController::class, 'ai_http_post'])->name('ai_http_post');
});
//ai指令
//网站设置
Route::prefix('setting')->group(function () {
//首页设置
Route::any('/', [\App\Http\Controllers\Bside\Setting\WebSettingController::class, 'lists'])->name('web_setting_lists');
... ... @@ -182,6 +173,14 @@ Route::middleware(['bloginauth'])->group(function () {
Route::get('/info', [\App\Http\Controllers\Bside\User\DeptController::class, 'info'])->name('dept_info');
Route::post('/save', [\App\Http\Controllers\Bside\User\DeptController::class, 'save'])->name('dept_save');
Route::any('/delete', [\App\Http\Controllers\Bside\User\DeptController::class, 'delete'])->name('dept_delete');
//成员管理
//组织架构
Route::prefix('user')->group(function () {
Route::any('/save', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'save'])->name('dept_user_add');
Route::any('/info', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'info'])->name('dept_user_info');
Route::any('/set_admin', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'set_admin'])->name('dept_user_set_admin');
Route::any('/set_role', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'set_role'])->name('dept_user_set_role');
});
});
//文件操作
... ... @@ -270,5 +269,5 @@ Route::group([], function () {
// Route::any('/', [\App\Http\Controllers\Bside\ComController::class, 'get_country'])->name('get_country');
Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download');
Route::any('/image/{hash}/{w?}/{h?}', [\App\Http\Controllers\File\ImageController::class,'index'])->name('image_show');
Route::any('/file_hash/{hash}/', [\App\Http\Controllers\File\FileController::class,'index'])->name('file_show');
Route::any('/file_hash/{hash}', [\App\Http\Controllers\File\FileController::class,'index'])->name('file_show');
});
... ...
<?php
/**
* C端用户路由文件
*/
use Illuminate\Support\Facades\Route;
//必须登录验证的路由组
Route::middleware([])->group(function () {
//添加询盘信息
Route::post('/inquiry/save', [\App\Http\Controllers\Cside\InquiryController::class, 'save'])->name('inquiry_save');
});