新增药品订单支付成功再次发放优惠卷
This commit is contained in:
parent
8482b50544
commit
ab8db606ef
57
app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php
Normal file
57
app/Amqp/Consumer/GrantUserCouponDelayDirectConsumer.php
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Amqp\Consumer;
|
||||||
|
|
||||||
|
use App\Model\Coupon;
|
||||||
|
use App\Model\OrderInquiry;
|
||||||
|
use App\Services\CouponService;
|
||||||
|
use App\Utils\Log;
|
||||||
|
use Hyperf\Amqp\Result;
|
||||||
|
use Hyperf\Amqp\Annotation\Consumer;
|
||||||
|
use Hyperf\Amqp\Message\ConsumerMessage;
|
||||||
|
use Hyperf\DbConnection\Db;
|
||||||
|
use PhpAmqpLib\Message\AMQPMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 延迟发放用户优惠卷
|
||||||
|
*/
|
||||||
|
#[Consumer(exchange: 'amqp.direct', routingKey: 'GrantUserCoupon', queue: 'grant.user.coupon.queue', nums: 1)]
|
||||||
|
class GrantUserCouponDelayDirectConsumer extends ConsumerMessage
|
||||||
|
{
|
||||||
|
public function consumeMessage($data, AMQPMessage $message): string
|
||||||
|
{
|
||||||
|
Log::getInstance("queue-GrantUserCoupon")->info("开始执行 延迟发放用户优惠卷 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE));
|
||||||
|
|
||||||
|
// 获取优惠卷数据
|
||||||
|
$params = array();
|
||||||
|
$params['coupon_id'] = $data["coupon_id"];
|
||||||
|
$coupon = Coupon::getOne($params);
|
||||||
|
if (empty($coupon)){
|
||||||
|
Log::getInstance("queue-GrantUserCoupon")->error("无优惠卷数据");
|
||||||
|
return Result::DROP;
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::beginTransaction();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$couponService = new CouponService();
|
||||||
|
$res = $couponService->GrantUserCoupon($data["coupon_id"],$data['user_id']);
|
||||||
|
if (!$res){
|
||||||
|
// 发放失败
|
||||||
|
Db::rollBack();
|
||||||
|
Log::getInstance("queue-GrantUserCoupon")->error("发放优惠卷失败");
|
||||||
|
return Result::DROP;
|
||||||
|
}
|
||||||
|
}catch (\Throwable $e){
|
||||||
|
Db::rollBack();
|
||||||
|
Log::getInstance("queue-GrantUserCoupon")->error($e->getMessage());
|
||||||
|
return Result::DROP;
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::commit();
|
||||||
|
|
||||||
|
return Result::ACK;
|
||||||
|
}
|
||||||
|
}
|
||||||
37
app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php
Normal file
37
app/Amqp/Producer/GrantUserCouponDelayDirectProducer.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Amqp\Producer;
|
||||||
|
|
||||||
|
use Hyperf\Amqp\Annotation\Producer;
|
||||||
|
use Hyperf\Amqp\Message\ProducerDelayedMessageTrait;
|
||||||
|
use Hyperf\Amqp\Message\ProducerMessage;
|
||||||
|
use Hyperf\Amqp\Message\Type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 延迟发放用户优惠卷
|
||||||
|
*/
|
||||||
|
#[Producer]
|
||||||
|
class GrantUserCouponDelayDirectProducer extends ProducerMessage
|
||||||
|
{
|
||||||
|
use ProducerDelayedMessageTrait;
|
||||||
|
|
||||||
|
protected string $exchange = 'amqp.delay.direct';
|
||||||
|
|
||||||
|
protected string $type = Type::DIRECT;
|
||||||
|
|
||||||
|
protected string|array $routingKey = 'GrantUserCoupon';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $data
|
||||||
|
* [
|
||||||
|
* "coupon_id":优惠卷id
|
||||||
|
* "user_id":用户id
|
||||||
|
* ]
|
||||||
|
*/
|
||||||
|
public function __construct($data)
|
||||||
|
{
|
||||||
|
$this->payload = $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,11 +6,13 @@ use App\Amqp\Producer\AssignDoctorDelayDirectProducer;
|
|||||||
use App\Amqp\Producer\AutoCompleteInquiryDelayDirectProducer;
|
use App\Amqp\Producer\AutoCompleteInquiryDelayDirectProducer;
|
||||||
use App\Amqp\Producer\DetectionCompleteDelayDirectProducer;
|
use App\Amqp\Producer\DetectionCompleteDelayDirectProducer;
|
||||||
use App\Amqp\Producer\DoctorNotYetInquiryDelayDirectProducer;
|
use App\Amqp\Producer\DoctorNotYetInquiryDelayDirectProducer;
|
||||||
|
use App\Amqp\Producer\GrantUserCouponDelayDirectProducer;
|
||||||
use App\Constants\DoctorTitleCode;
|
use App\Constants\DoctorTitleCode;
|
||||||
use App\Constants\HttpEnumCode;
|
use App\Constants\HttpEnumCode;
|
||||||
use App\Exception\BusinessException;
|
use App\Exception\BusinessException;
|
||||||
use App\Model\BasicDetectionOrgan;
|
use App\Model\BasicDetectionOrgan;
|
||||||
use App\Model\BasicLogisticsCompany;
|
use App\Model\BasicLogisticsCompany;
|
||||||
|
use App\Model\Coupon;
|
||||||
use App\Model\DetectionProject;
|
use App\Model\DetectionProject;
|
||||||
use App\Model\Hospital;
|
use App\Model\Hospital;
|
||||||
use App\Model\MessageIm;
|
use App\Model\MessageIm;
|
||||||
@ -483,6 +485,53 @@ class CallBackController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
Log::getInstance()->error("药品微信支付回调数据处理成功");
|
Log::getInstance()->error("药品微信支付回调数据处理成功");
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 再次发放优惠卷数据
|
||||||
|
if ($order_product['coupon_amount_total'] > 0){
|
||||||
|
// 获取药品订单优惠卷数据
|
||||||
|
$params = array();
|
||||||
|
$params['order_product_id'] = $order_product['order_product_id'];
|
||||||
|
$order_product_coupons = OrderProductCoupon::getList($params);
|
||||||
|
if (!empty($order_product_coupons)){
|
||||||
|
foreach ($order_product_coupons as $order_product_coupon){
|
||||||
|
// 获取用户优惠卷数据
|
||||||
|
$params = array();
|
||||||
|
$params['user_coupon_id'] = $order_product_coupon['user_coupon_id'];
|
||||||
|
$user_coupon = UserCoupon::getOne($params);
|
||||||
|
if (!empty($user_coupon)){
|
||||||
|
// 获取优惠卷数据
|
||||||
|
$params = array();
|
||||||
|
$params['coupon_id'] = $user_coupon['coupon_id'];
|
||||||
|
$coupon = Coupon::getOne($params);
|
||||||
|
if (!empty($coupon)){
|
||||||
|
if ($coupon['reissue_interval_days'] > 0){
|
||||||
|
$data = array();
|
||||||
|
$data['coupon_id'] = $coupon['coupon_id'];
|
||||||
|
$data['user_id'] = $user_coupon['user_id'];
|
||||||
|
|
||||||
|
$time = $coupon['reissue_interval_days'] * 24 * 60 * 60 * 1000;
|
||||||
|
|
||||||
|
$message = new GrantUserCouponDelayDirectProducer($data);
|
||||||
|
$message->setDelayMs($time);
|
||||||
|
$producer = $this->container->get(Producer::class);
|
||||||
|
$res = $producer->produce($message);
|
||||||
|
if (!$res) {
|
||||||
|
Log::getInstance()->error("再次发放优惠卷失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}catch (\Throwable $e){
|
||||||
|
Log::getInstance()->error("药品微信支付回调数据处理失败:" . $e->getMessage());
|
||||||
|
}
|
||||||
return $server->serve();
|
return $server->serve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,9 @@ class CouponService extends BaseService
|
|||||||
$params['coupon_id'] = $coupon['coupon_id'];
|
$params['coupon_id'] = $coupon['coupon_id'];
|
||||||
$user_coupon = UserCoupon::getOne($params);
|
$user_coupon = UserCoupon::getOne($params);
|
||||||
if (!empty($user_coupon)){
|
if (!empty($user_coupon)){
|
||||||
return true;
|
if ($user_coupon['user_coupon_status'] == 0){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user