新增患者取消问诊-医生接诊并发锁

This commit is contained in:
2023-04-23 14:47:21 +08:00
parent 7aaafbb282
commit 0e43cf5c19
2 changed files with 25 additions and 2 deletions
+13 -1
View File
@@ -28,6 +28,7 @@ use Extend\Wechat\WechatPay;
use GuzzleHttp\Exception\GuzzleException;
use Hyperf\Amqp\Producer;
use Hyperf\DbConnection\Db;
use Hyperf\Redis\Redis;
use Hyperf\Snowflake\IdGeneratorInterface;
use Hyperf\Utils\ApplicationContext;
use Psr\Container\ContainerExceptionInterface;
@@ -280,7 +281,15 @@ class PatientOrderService extends BaseService
return fail();
}
$redis = $this->container->get(Redis::class);
$redis_key = "order_inquiry_lock_" . $order_inquiry_id;
$redis_lock = $redis->setnx($redis_key,1);
// 设置过期时间
$redis->expire($redis_key,2);
if (!$redis_lock){
// 设置失败,表示已经设置该值
return fail(HttpEnumCode::HTTP_SUCCESS,"请您稍后重试");
}
// 检测订单状态
if (!in_array($order_inquiry['inquiry_status'], [1, 2, 3])) {
@@ -336,6 +345,9 @@ class PatientOrderService extends BaseService
$MessagePush->patientCancelInquiryToDoctor();
}
// 删除锁
$redis->del($redis_key);
Db::commit();
} catch (\Exception $e) {
Db::rollBack();