ufutx.dma/app/Console/Commands/DmaQuestionNotice.php
2026-03-10 16:08:28 +08:00

157 lines
7.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Console\Commands;
use App\Facades\TaskService;
use App\Models\DmaProcessLog;
use App\Models\Order;
use App\Facades\CommonService;
use App\Models\ServerQuestion;
use App\Models\ServiceRole;
use cccdl\yunxin_sdk\Im\Msg;
use Illuminate\Console\Command;
use App\Services\ChatService;
use Log;
class DmaQuestionNotice extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'order:finished {notice}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$notice = $this->argument("notice");
if ($notice == "quesiotn_notice") {// 方案后问卷调查提醒
$this->sendQuestionNotice();
} elseif ($notice == "clean_notice") { // 方案后清洁提醒
$this->sendCleanNotice();
} elseif ($notice == "after_body_image") {// 方案后身体照提醒
$this->sendAfterBodyImageNotice();
} elseif ($notice == "after_body_image_task") {// 方案后身体照任务
$this->sendAfterBodyImageTask();
} elseif ($notice == "server_question_3") {// 方案结束后教练评估
$this->sendServerQuestionTask3();
} elseif ($notice == "server_question_60") {// 方案结束后教练评估表
$this->sendServerQuestionTask60();
}
return Command::SUCCESS;
}
public function sendServerQuestionTask3()
{
$start_time = date("Y-m-d ", strtotime("-4 day"));
$end_time = date("Y-m-d ", strtotime("-3 day"));
$orders = Order::with("user")->whereHas("group")->whereHas("user")->where("status", "FINISHED")->whereBetween("end_time", [$start_time, $end_time])->get();
foreach ($orders as $order) {
// $theme = "请填写「用户" . $order->name . "」的【方案后第3天】评估表";
$theme = "" . $order->name . "】方案已结束3天请所有教练填写用户第一次评价表";
$user_ids = ServerQuestion::where('order_id', $order->id)->where('type', 1)->pluck("user_id")->toArray();
TaskService::AddTask(0, 0, $theme, [1, 2, 3], $order->id, "", "", "", "", $user_ids);
$chatService = new ChatService();
$chatService->sendImMsgUserToUser($order->id, '系统通知', $theme, '', '', [ServiceRole::MAIN_COACH, ServiceRole::COACH, ServiceRole::CUSTOMER], [], $user_ids);
DmaProcessLog::addUserProcessLog(0, $order->id, 1, "system_send_server_question_3_msg", $theme, 5);
}
}
public function sendServerQuestionTask60()
{
$start_time = date("Y-m-d ", strtotime("-61 day"));
$end_time = date("Y-m-d ", strtotime("-60 day"));
$orders = Order::whereHas("group")->whereHas("user")->where("status", "FINISHED")->whereBetween("end_time", [$start_time, $end_time])->get();
foreach ($orders as $order) {
// $theme = "请填写「用户" . $order->name . "」的【方案后第60天】评估表";
$theme = "" . $order->name . "】方案已结束60天请所有教练填写用户第二次评价表";
$user_ids = ServerQuestion::where('order_id', $order->id)->where('type', 2)->pluck("user_id")->toArray();
TaskService::AddTask(0, 0, $theme, [1, 2, 3], $order->id, "", "", "", "", $user_ids);
$chatService = new ChatService();
$chatService->sendImMsgUserToUser($order->id, '系统通知', $theme, '', '', [ServiceRole::MAIN_COACH, ServiceRole::COACH, ServiceRole::CUSTOMER], [], $user_ids);
DmaProcessLog::addUserProcessLog(0, $order->id, 1, "system_send_server_question_60_msg", $theme, 5);
}
}
public function sendAfterBodyImageNotice()
{
$start_time = date("Y-m-d", strtotime("-1 day"));
$end_time = date("Y-m-d");
$orders = Order::whereHas("group")->whereHas("user")->where("status", "FINISHED")->whereBetween("end_time", [$start_time, $end_time])->get();
foreach ($orders as $order) {
if (empty($order->user->after_body_image))
continue;
$chatService = new ChatService();
$chatService->sendGroupMsg($order->user_id, '方案后身体照片', '请点击上传方案后身体照片', 'https://images.health.ufutx.com/202412/12/abc84f7b2b5dc2b94d6d27ca4eeb09ab.png', "yfheal://app/push/UpdateHealthBodyPhotoAfter", []);
}
}
public function sendAfterBodyImageTask()
{
$start_time = date("Y-m-d ", strtotime("-4 day"));
$end_time = date("Y-m-d ", strtotime("-3 day"));
$orders = Order::whereHas("group")->whereHas("user")->where("status", "FINISHED")->whereBetween("end_time", [$start_time, $end_time])->get();
foreach ($orders as $order) {
if (empty($order->user->after_body_image))
continue;
$theme = "请跟进【" . $order->name . "】上传【方案后照片】";
TaskService::AddTask(0, 0, $theme, [1, 2, 3], $order->id);
}
}
public function sendCleanNotice()
{
$start_time = date("Y-m-d H:i:s", strtotime("-3 month"));
$orders = Order::whereHas("group")->where("status", "FINISHED")->where("end_time", ">", $start_time)->get();
foreach ($orders as $order) {
// $msg = "😊亲爱的【{$order->name}】,一份温馨小建议轻轻来送达!每周抽出 1 天做清洁保养巩固,有助于维持良好的身体状态,能让您的健康生活持续向好,更加精彩。";
// $imMsg = new Msg(config('chat.im.app_id'), config('chat.im.app_secret'));
// $imMsg->sendMsg(make_wangyiyun_accid($order->group->owner_id), 1, $order->group->im_chat_id, 0, json_encode(['msg' => $msg]));
// 改为通知教练
$chatService = new ChatService();
$msg = "请提醒用户【{$order->name}】每周抽出1天做清洁保养巩固有助于维持良好的身体状态。";
$chatService->sendImMsgUserToUser($order->id, '系统通知', $msg, '', '', [ServiceRole::MAIN_COACH, ServiceRole::COACH, ServiceRole::CUSTOMER], [], []);
}
}
public function sendQuestionNotice()
{
Log::info("方案后服务问卷提醒");
$nowDate = date("Y-m-d");
$orders = Order::whereDoesntHave("afterDmaQuestion")->whereDoesntHave("orderSurveys")->where("service_status", "FINISHED")->get();
foreach ($orders as $order) {
$log_at = DmaProcessLog::where("order_id", $order->id)->where("key_name", "mark_order_finish")->orderBy("id", "desc")->value("created_at");
if ($log_at) {
$log_at = $log_at->toDateString();
}
$day = CommonService::diffDays($nowDate, $log_at);
Log::info("订单id:" . $order->id . " day=" . $day);
if ($day >= 60 && $day <= 70 && $day % 3 == 0 && $order->group && $order->group->im_chat_id) {
$imMsg = new Msg(config('chat.im.app_id'), config('chat.im.app_secret'));
$imMsg->sendMsg(make_wangyiyun_accid($order->group->owner_id), 1, $order->group->im_chat_id, 0, json_encode(['msg' => "{$order->name}】请抽空完成方案后服务问卷,您的反馈非常重要,可以帮助我们了解您方案中的感受,感谢您的支持!"]));
}
}
}
}