新增医生设置视频预约时间 及延迟通知队列
This commit is contained in:
@@ -5,6 +5,8 @@ namespace App\Services;
|
||||
use App\Amqp\Producer\AutoFinishInquiryDelayDirectProducer;
|
||||
use App\Amqp\Producer\CancelUnInquiryOrdersDelayDirectProducer;
|
||||
use App\Amqp\Producer\CancelUnpayOrdersDelayDirectProducer;
|
||||
use App\Amqp\Producer\SendSmsMessageProducer;
|
||||
use App\Amqp\Producer\SendVideoNoticeDelayDirectProducer;
|
||||
use App\Constants\DoctorTitleCode;
|
||||
use App\Constants\HttpEnumCode;
|
||||
use App\Exception\BusinessException;
|
||||
@@ -41,6 +43,7 @@ use App\Utils\PcreMatch;
|
||||
use Extend\Wechat\WechatPay;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use Hyperf\Amqp\Producer;
|
||||
use Hyperf\Context\ApplicationContext;
|
||||
use Hyperf\DbConnection\Db;
|
||||
use Hyperf\Redis\Redis;
|
||||
use Hyperf\Snowflake\IdGeneratorInterface;
|
||||
@@ -1314,8 +1317,6 @@ class InquiryService extends BaseService
|
||||
/**
|
||||
* 医生设置视频预约时间
|
||||
* @return array
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function addVideoReservationDate(): array
|
||||
{
|
||||
@@ -1391,8 +1392,6 @@ class InquiryService extends BaseService
|
||||
// 创建订单
|
||||
Db::beginTransaction();
|
||||
|
||||
$generator = $this->container->get(IdGeneratorInterface::class);
|
||||
|
||||
try {
|
||||
if (empty($order_inquiry_video)){
|
||||
// 创建视频预约数据
|
||||
@@ -1433,7 +1432,15 @@ class InquiryService extends BaseService
|
||||
$params['doctor_id'] = $order_inquiry['doctor_id'];
|
||||
$user_doctor = UserDoctor::getOne($params);
|
||||
if (empty($user_doctor)) {
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "赠送失败");
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "设置失败");
|
||||
}
|
||||
|
||||
// 获取订单用户数据
|
||||
$params = array();
|
||||
$params['user_id'] = $order_inquiry['user_id'];
|
||||
$user = User::getOne($params);
|
||||
if (empty($user)){
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "设置失败");
|
||||
}
|
||||
|
||||
// 发送im消息
|
||||
@@ -1441,23 +1448,33 @@ class InquiryService extends BaseService
|
||||
|
||||
if ($is_reservation){
|
||||
// 修改
|
||||
// 已成功预约视频问诊时间-医生
|
||||
$imService->addVideoReservationTimeToDoctor($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$reservation_time);
|
||||
|
||||
// 已成功预约视频问诊时间-患者
|
||||
$imService->addVideoReservationTimeToPatient($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$reservation_time);
|
||||
}else{
|
||||
// 新增
|
||||
// 已成功修改视频问诊时间-医生
|
||||
$imService->modifyVideoReservationTimeToDoctor($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$reservation_time);
|
||||
|
||||
// 已成功修改视频问诊时间-患者
|
||||
$imService->modifyVideoReservationTimeToPatient($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$reservation_time);
|
||||
}
|
||||
// 发送短信-患者-视频预约成功
|
||||
|
||||
// 患者-通知患者视频时间
|
||||
$sendSmsService = new SendSmsService($user['mobile']);
|
||||
$sendSmsService->noticePatientVideoTime($user_doctor['user_name'],$reservation_time);
|
||||
|
||||
|
||||
// 成功预约视频问诊时间
|
||||
// 成功修改视频问诊时间
|
||||
|
||||
|
||||
// 赠送回合数消息
|
||||
$imService->giveFreeRounds($order_inquiry, $user_doctor['user_id'], $order_inquiry['user_id'],$times_number,$give_expiration_time);
|
||||
|
||||
// 发送站内、订阅失败发送短信消息-患者-赠送回合数
|
||||
$MessagePush = new MessagePush($order_inquiry['user_id'], $order_inquiry['order_inquiry_id']);
|
||||
$MessagePush->doctorGiveFreeRounds($times_number,$give_expiration_time);
|
||||
// 增加延迟队列通知-视频问诊即将开始
|
||||
$time = strtotime($reservation_time) - 4*60;
|
||||
$message = new SendVideoNoticeDelayDirectProducer($data);
|
||||
$message->setDelayMs(1000 * $time);
|
||||
$producer = $this->container->get(Producer::class);
|
||||
$res = $producer->produce($message);
|
||||
if (!$res) {
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "设置失败");
|
||||
}
|
||||
}catch (\Throwable $e){
|
||||
Log::getInstance("InquiryService-addDoctorGiveInquiryOrder")->error($e->getMessage());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user