新增退款充实次数

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,30 +94,40 @@ 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分钟执行退款");
$InquiryService = new InquiryService();
$InquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"分配医生失败");
// 退款成功 $redis_key = "inquiryRefund" . $order_inquiry['order_inquiry_id'];
Db::commit(); $redis_value = $redis->get($redis_key);
Log::getInstance()->info("订单已退款"); if (!empty($redis_value)){
// 判断退款次数
if ($redis_value >= 3){
Log::getInstance()->info("退款取消,退款失败次数过多");
// 加入消息通知队列 // 加入短信队列
return Result::ACK; return Result::DROP;// 销毁
} catch (\Exception $e) { }
Db::rollBack();
Log::getInstance()->error("队列执行失败原因:" . "执行退款失败" . $e->getMessage()); $redis_value = $redis_value + 1;
return Result::REQUEUE; // 重回队列 }else{
$redis_value = 1;
} }
} try {
$InquiryService = new InquiryService();
$InquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"暂无医生接诊");
$redis = $this->container->get(Redis::class); $redis->set($redis_key,$redis_value);
$redis_key = $order_inquiry['order_inquiry_id']; } catch (\Exception $e) {
Db::rollBack();
Log::getInstance()->error("队列执行失败原因:退款失败,原因:" . $e->getMessage());
return Result::REQUEUE; // 重回队列
}
}
// 分配医生 // 分配医生
$UserDoctorService = new UserDoctorService(); $UserDoctorService = new UserDoctorService();
@ -123,6 +135,8 @@ class AssignDoctorConsumer extends ConsumerMessage
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;