消息推送
This commit is contained in:
@@ -92,9 +92,11 @@ class FollowController extends BaseController
|
|||||||
if (Util::isEmpty($type)) {
|
if (Util::isEmpty($type)) {
|
||||||
return $this->error('type' . trans('not_null'));
|
return $this->error('type' . trans('not_null'));
|
||||||
}
|
}
|
||||||
|
$audio_text = Util::getParam($request, 'audio_text', '');
|
||||||
$picture = Util::getParam($request, 'picture');
|
$picture = Util::getParam($request, 'picture');
|
||||||
if (Util::isEmpty($picture)) {
|
$remark = Util::getParam($request,'remark');
|
||||||
return $this->error(trans('picture_not_null'));
|
if(Util::isEmpty($picture) && Util::isEmpty($audio_text) && Util::isEmpty($remark)){
|
||||||
|
return $this->error(trans('follow_not_null'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$corpInfo = Corp::where('abbr', $request->basic_data['corp_abbr'])->first();
|
$corpInfo = Corp::where('abbr', $request->basic_data['corp_abbr'])->first();
|
||||||
@@ -107,7 +109,7 @@ class FollowController extends BaseController
|
|||||||
'picture' => $picture,
|
'picture' => $picture,
|
||||||
'remark' => Util::getParam($request, 'remark', ''),
|
'remark' => Util::getParam($request, 'remark', ''),
|
||||||
'audio' => Util::getParam($request, 'audio', ''),
|
'audio' => Util::getParam($request, 'audio', ''),
|
||||||
'audio_text' => Util::getParam($request, 'audio_text', ''),
|
'audio_text' => $audio_text,
|
||||||
'lat' => Util::getParam($request, 'lat', 0),
|
'lat' => Util::getParam($request, 'lat', 0),
|
||||||
'lng' => Util::getParam($request, 'lng', 0),
|
'lng' => Util::getParam($request, 'lng', 0),
|
||||||
'address' => Util::getParam($request, 'address'),
|
'address' => Util::getParam($request, 'address'),
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\process;
|
||||||
|
|
||||||
|
use app\crm\model\Customer;
|
||||||
|
use support\Log;
|
||||||
|
use Workerman\Crontab\Crontab;
|
||||||
|
|
||||||
|
class Task
|
||||||
|
{
|
||||||
|
|
||||||
|
public function onWorkerStart()
|
||||||
|
{
|
||||||
|
// 每半小时执行一次
|
||||||
|
new Crontab('0 */30 * * * *', function(){
|
||||||
|
echo date('Y-m-d H:i:s') . "\n";
|
||||||
|
Log::info('send follow start',[time()]);
|
||||||
|
|
||||||
|
$where = [
|
||||||
|
['follow_next', '<=', time() + 3600],
|
||||||
|
['follow_next', '>', time()],
|
||||||
|
['warn', '<', 1]
|
||||||
|
];
|
||||||
|
$customer = Customer::where($where)->get();
|
||||||
|
foreach ($customer as $item) {
|
||||||
|
$res =[
|
||||||
|
'id'=>$item->id,
|
||||||
|
'category'=>'crm',
|
||||||
|
'scene'=>'crm-person-follow-up',
|
||||||
|
'receive type'=>'person'
|
||||||
|
];
|
||||||
|
\Webman\RedisQueue\Redis::send("feishu-message",$res);
|
||||||
|
}
|
||||||
|
|
||||||
|
Log::info('send follow start',[time()]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+2
-1
@@ -42,7 +42,8 @@
|
|||||||
"shopwwi/filesystem-oss": "^1.0",
|
"shopwwi/filesystem-oss": "^1.0",
|
||||||
"webman/redis-queue": "^2.1",
|
"webman/redis-queue": "^2.1",
|
||||||
"symfony/translation": "^7.3",
|
"symfony/translation": "^7.3",
|
||||||
"symfony/filesystem": "^7.3"
|
"symfony/filesystem": "^7.3",
|
||||||
|
"workerman/crontab": "^1.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-event": "For better performance. "
|
"ext-event": "For better performance. "
|
||||||
|
|||||||
Generated
+51
-1
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "6c03076d4c7c86514f6b2d0073545bea",
|
"content-hash": "8ef9d9a07b2be477345002a7623ea951",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "aliyuncs/oss-sdk-php",
|
"name": "aliyuncs/oss-sdk-php",
|
||||||
@@ -6292,6 +6292,56 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-02-17T03:34:21+00:00"
|
"time": "2025-02-17T03:34:21+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "workerman/crontab",
|
||||||
|
"version": "v1.0.7",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/walkor/crontab.git",
|
||||||
|
"reference": "74f51ca8204e8eb628e57bc0e640561d570da2cb"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/walkor/crontab/zipball/74f51ca8204e8eb628e57bc0e640561d570da2cb",
|
||||||
|
"reference": "74f51ca8204e8eb628e57bc0e640561d570da2cb",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0",
|
||||||
|
"workerman/workerman": ">=4.0.20"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Workerman\\Crontab\\": "./src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "walkor",
|
||||||
|
"email": "walkor@workerman.net",
|
||||||
|
"homepage": "http://www.workerman.net",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A crontab written in PHP based on workerman",
|
||||||
|
"homepage": "http://www.workerman.net",
|
||||||
|
"keywords": [
|
||||||
|
"crontab"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"email": "walkor@workerman.net",
|
||||||
|
"forum": "http://wenda.workerman.net/",
|
||||||
|
"issues": "https://github.com/walkor/workerman/issues",
|
||||||
|
"source": "https://github.com/walkor/crontab",
|
||||||
|
"wiki": "http://doc.workerman.net/"
|
||||||
|
},
|
||||||
|
"time": "2025-01-15T07:20:50+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "workerman/redis",
|
"name": "workerman/redis",
|
||||||
"version": "v2.0.4",
|
"version": "v2.0.4",
|
||||||
|
|||||||
+4
-1
@@ -59,5 +59,8 @@ return [
|
|||||||
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
|
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
'task' => [
|
||||||
|
'handler' => app\process\Task::class
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ return [
|
|||||||
'param_error' => ' خطأ في المعلمات',
|
'param_error' => ' خطأ في المعلمات',
|
||||||
'required_not_null' => ' الحقول المطلوبة لا يمكن أن تكون فارغة',
|
'required_not_null' => ' الحقول المطلوبة لا يمكن أن تكون فارغة',
|
||||||
'picture_not_null' => ' لا يمكن أن تكون الصورة فارغة',
|
'picture_not_null' => ' لا يمكن أن تكون الصورة فارغة',
|
||||||
|
'follow_not_null' => ' الصورة و متابعة المحتوى لا يمكن أن تكون فارغة في نفس الوقت',
|
||||||
'contacts_not_null' => ' لا يمكن أن يكون جهة الاتصال أو البريد الإلكتروني أو الهاتف فارغين جميعًا في نفس الوقت',
|
'contacts_not_null' => ' لا يمكن أن يكون جهة الاتصال أو البريد الإلكتروني أو الهاتف فارغين جميعًا في نفس الوقت',
|
||||||
'car_type_not_null' => ' لا يمكن أن تكون التفضيلات فارغة',
|
'car_type_not_null' => ' لا يمكن أن تكون التفضيلات فارغة',
|
||||||
'channel_not_null' => ' لا يمكن أن تكون القناة فارغة',
|
'channel_not_null' => ' لا يمكن أن تكون القناة فارغة',
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ return [
|
|||||||
'param_error' => ' param error',
|
'param_error' => ' param error',
|
||||||
'required_not_null' => ' required not_ ull',
|
'required_not_null' => ' required not_ ull',
|
||||||
'picture_not_null' => ' picture not null',
|
'picture_not_null' => ' picture not null',
|
||||||
|
'follow_not_null' => ' The image and follow-up content cannot be empty at the same time',
|
||||||
'contacts_not_null' => ' Contact person, email, and phone cannot be empty at the same time',
|
'contacts_not_null' => ' Contact person, email, and phone cannot be empty at the same time',
|
||||||
'car_type_not_null' => ' preference_not_null',
|
'car_type_not_null' => ' preference_not_null',
|
||||||
'channel_not_null' => ' channel not null',
|
'channel_not_null' => ' channel not null',
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ return [
|
|||||||
'param_error' => ' Ошибка параметра',
|
'param_error' => ' Ошибка параметра',
|
||||||
'required_not_null' => ' Обязательное заполнение не может быть пустым.',
|
'required_not_null' => ' Обязательное заполнение не может быть пустым.',
|
||||||
'picture_not_null' => ' Фотографии не могут быть пустыми',
|
'picture_not_null' => ' Фотографии не могут быть пустыми',
|
||||||
|
'follow_not_null' => ' Изображение и последующий контент не могут быть пустыми одновременно.X',
|
||||||
'contacts_not_null' => ' Контакты, почтовый ящик, телефон не может быть одновременно пустым',
|
'contacts_not_null' => ' Контакты, почтовый ящик, телефон не может быть одновременно пустым',
|
||||||
'car_type_not_null' => ' Предпочтения не могут быть пустыми',
|
'car_type_not_null' => ' Предпочтения не могут быть пустыми',
|
||||||
'channel_not_null' => ' Каналы не могут быть пустыми',
|
'channel_not_null' => ' Каналы не могут быть пустыми',
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ return [
|
|||||||
'param_error' => ' 参数错误',
|
'param_error' => ' 参数错误',
|
||||||
'required_not_null' => ' 必填项不能为空',
|
'required_not_null' => ' 必填项不能为空',
|
||||||
'picture_not_null' => ' 图片不能为空',
|
'picture_not_null' => ' 图片不能为空',
|
||||||
|
'follow_not_null' => ' 图片与跟进内容不能同时为空',
|
||||||
'contacts_not_null' => ' 联系人,邮箱,电话不能同时为空',
|
'contacts_not_null' => ' 联系人,邮箱,电话不能同时为空',
|
||||||
'car_type_not_null' => ' 偏好不能为空',
|
'car_type_not_null' => ' 偏好不能为空',
|
||||||
'channel_not_null' => ' 渠道不能为空',
|
'channel_not_null' => ' 渠道不能为空',
|
||||||
|
|||||||
Reference in New Issue
Block a user