From 7967447f6a79965b6f0938a034039a761ff8b507 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 29 Apr 2024 17:28:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8D=AF=E5=93=81=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=8D=B7=E5=8F=8A=E8=8D=AF=E5=93=81=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Model/UserCoupon.php | 27 +++++++++++++++++++++++++ app/Services/PatientOrderService.php | 30 ++++++++++++++++++---------- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/app/Model/UserCoupon.php b/app/Model/UserCoupon.php index 220e43d..216f3a7 100644 --- a/app/Model/UserCoupon.php +++ b/app/Model/UserCoupon.php @@ -184,6 +184,33 @@ class UserCoupon extends Model ->get($fields); } + /** + * 获取患者某一类型下的全部优惠卷 + * @param string|int $user_id + * @param int $distribution_object + * @param array $fields + * @return Collection|array + */ + public static function getUserAllObjectTypeCoupon(string|int $user_id,int $distribution_object,array $fields = ['*']): Collection|array + { + $params = array(); + $params[] = ['user_id', '=', $user_id]; + $params[] = ['valid_start_time', '<', date('Y-m-d H:i:s', time())]; // 有效使用时间 + $params[] = ['valid_end_time', '>', date('Y-m-d H:i:s', time())]; // 过期使用时间 + + return self::with(['Coupon']) + ->whereHas('Coupon', function ($query) use ($distribution_object) { + $query->where("coupon_client",1) + ->where("coupon_status",1) + ->where(function ($query) use ($distribution_object) { + $query->orwhere("distribution_object",$distribution_object); + }); + }) + ->where($params) + ->groupBy("coupon_id") + ->get($fields); + } + /** * 获取患者今日过期优惠卷 * @param array $params diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index 07565e4..38bf76b 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -1720,16 +1720,24 @@ class PatientOrderService extends BaseService ProductPlatformAmount::dec($params, 'stock', $product_data['product_num']); // 处理健康包数据,增加使用数量 - if (!empty($order_service_package)){ - $data = array(); - $data['order_service_id'] = $order_service_package['order_service_id']; - $data['order_product_id'] = $order_product['order_product_id']; - $data['order_product_no'] = $order_product['order_product_no']; - $data['product_item_id'] = $order_product_item['product_item_id']; - $data['product_id'] = $product_data['product_id']; - $data['used_quantity'] = $product_data['used_quantity']; + if (!empty($order_service_package) && !empty($order_service_package_detail)){ + // 获取服务包内所有药品 + $health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']); + foreach ($health_package_products as $health_package_product) { + if ($health_package_product['product_id'] == $product_data['product_id']){ + $data = array(); + $data['order_service_id'] = $order_service_package['order_service_id']; + $data['order_product_id'] = $order_product['order_product_id']; + $data['order_product_no'] = $order_product['order_product_no']; + $data['product_item_id'] = $order_product_item['product_item_id']; + $data['product_id'] = $product_data['product_id']; + $data['used_quantity'] = $product_data['used_quantity']; - OrderServicePackageProduct::addOrderServicePackageProduct($data); + OrderServicePackageProduct::addOrderServicePackageProduct($data); + + break; + } + } } } @@ -3170,8 +3178,8 @@ class PatientOrderService extends BaseService // 健康包关联优惠卷数据 if (in_array($order_service_package['order_service_status'],[3,4,5])){ // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消) - // 获取用户优惠卷 - $coupon = UserCoupon::getUserObjectTypeCoupon($order_service_package['user_id'],7); + // 获取患者某一类型下的全部优惠卷 + $coupon = UserCoupon::getUserAllObjectTypeCoupon($order_service_package['user_id'],7); if (!empty($coupon)){ $result['order_service_package_coupon'] = $coupon->toArray(); }