diff --git a/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php b/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php index 677133e..50fb8f9 100644 --- a/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php +++ b/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php @@ -105,28 +105,6 @@ class CancelUnInquiryOrdersDelayDirectConsumer extends ConsumerMessage $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; OrderInquiry::edit($params, $save_data); - // 恢复优惠卷 - if (!empty($order_inquiry['coupon_amount_total']) && $order_inquiry['coupon_amount_total'] > 0) { - // 获取用户优惠卷信息 - $params = array(); - $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; - $order_inquiry_coupon = OrderInquiryCoupon::getOne($params); - if (!empty($order_inquiry_coupon)) { - // 恢复优惠卷 - $save_data = array(); - $save_data['user_coupon_status'] = 0; - $save_data['coupon_use_date'] = date('Y-m-d H:i:s', time()); - - $params = array(); - $params['user_coupon_id'] = $order_inquiry_coupon['user_coupon_id']; - UserCoupon::edit($params, $save_data); - - // 发送站内消息-优惠卷退还 - $MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['order_inquiry_id']); - $MessagePush->patientRefundCoupon(); - } - } - // 订单退款 if ($order_inquiry['inquiry_pay_status'] == 2) { // 检测问诊订单执行退款次数 diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index 685477c..ca7e841 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -22,6 +22,7 @@ use App\Model\UserDoctor; use App\Model\UserPatient; use App\Services\BaseService; use App\Services\ImService; +use App\Services\InquiryService; use App\Services\MessagePush; use App\Services\OrderPrescriptionService; use App\Utils\Log; @@ -282,6 +283,12 @@ class CallBackController extends AbstractController $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; OrderInquiryRefund::edit($params,$data); + // 恢复优惠卷 + if (!empty($order_inquiry['coupon_amount_total']) && $order_inquiry['coupon_amount_total'] > 0) { + $InquiryService = new InquiryService(); + $InquiryService->returnInquiryCoupon($order_inquiry['order_inquiry_id'],$order_inquiry['user_id']); + } + Db::commit(); } catch (\Exception $e) { // 验证失败 diff --git a/app/Model/PatientHistoryInquiry.php b/app/Model/PatientHistoryInquiry.php index 40b54cc..abdc181 100644 --- a/app/Model/PatientHistoryInquiry.php +++ b/app/Model/PatientHistoryInquiry.php @@ -145,6 +145,7 @@ class PatientHistoryInquiry extends Model "UserDoctor.Hospital:hospital_id,hospital_name" ]) ->where($params) + ->orderBy('created_at','desc') ->get($fields); } diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 2a14089..a824403 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -261,8 +261,6 @@ class InquiryService extends BaseService UserCoupon::edit($params, $data); } - - // 增加至未支付取消订单延迟队列 $data = array(); $data['order_no'] = $order_inquiry['inquiry_no']; @@ -1166,4 +1164,46 @@ class InquiryService extends BaseService return true; } + + /** + * 退还问诊订单优惠卷 + * @param string $order_inquiry_id 问诊订单id + * @param string $patient_user_id 患者用户id + * @return bool + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function returnInquiryCoupon(string $order_inquiry_id,string $patient_user_id): bool + { + try { + // 获取用户优惠卷信息 + $params = array(); + $params['order_inquiry_id'] = $order_inquiry_id; + $order_inquiry_coupon = OrderInquiryCoupon::getOne($params); + if (empty($order_inquiry_coupon)){ + // 订单未使用优惠卷,无需退还 + return true; + } + + if (!empty($order_inquiry_coupon)) { + // 恢复优惠卷 + $data = array(); + $data['user_coupon_status'] = 0; + $data['coupon_use_date'] = null; + + $params = array(); + $params['user_coupon_id'] = $order_inquiry_coupon['user_coupon_id']; + UserCoupon::edit($params, $data); + + // 发送站内消息-优惠卷退还 + $MessagePush = new MessagePush($patient_user_id,$order_inquiry_id); + $MessagePush->patientRefundCoupon(); + } + return true; + } catch(\Exception $e){ + Log::getInstance()->error("退还用户优惠卷失败" . $e->getMessage()); + return false; + } + } + } \ No newline at end of file