新增退款充实次数

This commit is contained in:
wucongxing 2023-03-08 13:27:04 +08:00
parent cf9d3ff424
commit b65f822618

View File

@ -8,11 +8,13 @@ use App\Model\OrderInquiry;
use App\Services\InquiryService; use App\Services\InquiryService;
use App\Services\UserDoctorService; use App\Services\UserDoctorService;
use App\Utils\Log; use App\Utils\Log;
use Extend\Wechat\WechatPay;
use Hyperf\Amqp\Result; use Hyperf\Amqp\Result;
use Hyperf\Amqp\Annotation\Consumer; use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Message\ConsumerMessage; use Hyperf\Amqp\Message\ConsumerMessage;
use Hyperf\DbConnection\Db; use Hyperf\DbConnection\Db;
use Hyperf\Redis\Redis; use Hyperf\Redis\Redis;
use Hyperf\Snowflake\IdGeneratorInterface;
use PhpAmqpLib\Message\AMQPMessage; use PhpAmqpLib\Message\AMQPMessage;
use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface; use Psr\Container\NotFoundExceptionInterface;
@ -92,37 +94,49 @@ class AssignDoctorConsumer extends ConsumerMessage
return Result::DROP;// 销毁 return Result::DROP;// 销毁
} }
$redis = $this->container->get(Redis::class);
if ($diff_time > 300){ if ($diff_time > 300){
try {
// 超出5分钟执行退款 // 超出5分钟执行退款
Log::getInstance()->info("超出5分钟执行退款"); Log::getInstance()->info("超出5分钟执行退款");
$redis_key = "inquiryRefund" . $order_inquiry['order_inquiry_id'];
$redis_value = $redis->get($redis_key);
if (!empty($redis_value)){
// 判断退款次数
if ($redis_value >= 3){
Log::getInstance()->info("退款取消,退款失败次数过多");
// 加入短信队列
return Result::DROP;// 销毁
}
$redis_value = $redis_value + 1;
}else{
$redis_value = 1;
}
try {
$InquiryService = new InquiryService(); $InquiryService = new InquiryService();
$InquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"分配医生失败"); $InquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"暂无医生接诊");
// 退款成功 $redis->set($redis_key,$redis_value);
Db::commit();
Log::getInstance()->info("订单已退款");
// 加入消息通知队列
return Result::ACK;
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollBack(); Db::rollBack();
Log::getInstance()->error("队列执行失败原因:" . "执行退款失败" . $e->getMessage()); Log::getInstance()->error("队列执行失败原因:退款失败,原因:" . $e->getMessage());
return Result::REQUEUE; // 重回队列 return Result::REQUEUE; // 重回队列
} }
} }
$redis = $this->container->get(Redis::class);
$redis_key = $order_inquiry['order_inquiry_id'];
// 分配医生 // 分配医生
$UserDoctorService = new UserDoctorService(); $UserDoctorService = new UserDoctorService();
$doctor_id = $UserDoctorService->getInquiryAssignDoctor($order_inquiry['inquiry_type']); $doctor_id = $UserDoctorService->getInquiryAssignDoctor($order_inquiry['inquiry_type']);
if (empty($doctor_id)){ if (empty($doctor_id)){
Db::rollBack(); Db::rollBack();
Log::getInstance()->error("重回队列,目前没有合适医生"); Log::getInstance()->error("重回队列,目前没有合适医生");
$redis_key = "AssignDoctor" . $order_inquiry['order_inquiry_id'];
$redis_value = $redis->get($redis_key); $redis_value = $redis->get($redis_key);
if (!empty($redis_value)){ if (!empty($redis_value)){
$redis_value = $redis_value + 1; $redis_value = $redis_value + 1;