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(); }