From cb95bde20cb1cdeb7f41ef24dc953b7a7640df44 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 12 Apr 2024 19:12:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=8C=85=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F=E5=9B=9E=E8=B0=83=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=8F=91=E6=94=BE=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/CallBackController.php | 10 +++++++++ app/Model/Coupon.php | 17 ++++++++++++-- app/Model/UserCoupon.php | 1 - app/Services/CouponService.php | 25 +++++++++++++++++++++ app/Services/OrderServicePackageService.php | 2 +- app/Services/PatientOrderService.php | 24 +++++++++++++++++++- 6 files changed, 74 insertions(+), 5 deletions(-) diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index ce37e97..db1c192 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -50,6 +50,7 @@ use App\Model\UserSystem; use App\Model\VideoRecord; use App\Model\VideoReservation; use App\Services\BaseService; +use App\Services\CouponService; use App\Services\ImService; use App\Services\InquiryService; use App\Services\MessagePush; @@ -2736,6 +2737,15 @@ class CallBackController extends AbstractController return $server->serve(); } + // 发放优惠卷 + $CouponService = new CouponService(); + $res = $CouponService->GrantBuyOrderServicePackageCoupon($order_service_package['user_id']); + if (!$res) { + Db::rollBack(); + Log::getInstance("CallBack-wxPayServiceSuccess")->error("订单创建失败"); + return $server->serve(); + } + // 加入未接诊取消订单延迟队列 $time = 60 * 60 * 24; if (\Hyperf\Config\config('app_env') == "dev"){ diff --git a/app/Model/Coupon.php b/app/Model/Coupon.php index f7d18ca..9c308f6 100644 --- a/app/Model/Coupon.php +++ b/app/Model/Coupon.php @@ -6,6 +6,7 @@ namespace App\Model; +use Carbon\Carbon; use Hyperf\Database\Model\Collection; use Hyperf\Snowflake\Concern\Snowflake; @@ -37,8 +38,8 @@ use Hyperf\Snowflake\Concern\Snowflake; * @property int $reissue_interval_days 确认收货后的再次发放间隔天数(如果设置为 0,则表示不再次发放。当适用范围为商品时生效) * @property int $is_reissuable_after_expire 过期之后是否允许再次发放(0:否 1:是) * @property int $is_popup 是否首页弹窗(0:否 1:是) - * @property \Carbon\Carbon $created_at 创建时间 - * @property \Carbon\Carbon $updated_at 修改时间 + * @property Carbon $created_at 创建时间 + * @property Carbon $updated_at 修改时间 */ class Coupon extends Model { @@ -110,4 +111,16 @@ class Coupon extends Model ->whereIn("distribution_object",[1,2]) ->get(); } + + /** + * 获取购买服务包的用户可领取的优惠卷列表 + * @return Collection|array + */ + public static function getOrderServicePackageCouponList(): Collection|array + { + return self::where("coupon_client",1) + ->where("coupon_status",1) + ->whereIn("distribution_object",[7]) + ->get(); + } } diff --git a/app/Model/UserCoupon.php b/app/Model/UserCoupon.php index 4fcd438..7c1cb8d 100644 --- a/app/Model/UserCoupon.php +++ b/app/Model/UserCoupon.php @@ -61,7 +61,6 @@ class UserCoupon extends Model /** * 获取优惠卷信息-多条 * @param array $params - * @param array $coupon_params * @param array $fields * @return Collection|array */ diff --git a/app/Services/CouponService.php b/app/Services/CouponService.php index e2d6dcb..22d7e69 100644 --- a/app/Services/CouponService.php +++ b/app/Services/CouponService.php @@ -198,4 +198,29 @@ class CouponService extends BaseService return true; } + + /** + * 发放购买服务包的关联优惠卷 + * @param string $user_id 用户id + * @return bool + */ + public function GrantBuyOrderServicePackageCoupon(string $user_id): bool + { + // 获取购买服务包的用户可领取的优惠卷列表 + $coupon = Coupon::getOrderServicePackageCouponList(); + if (empty($coupon)) { + return true; + } + + foreach ($coupon as $value){ + // 发放优惠卷 + $res = $this->GrantUserCoupon($value['coupon_id'],$user_id); + if (!$res){ + // 发放失败 + return false; + } + } + + return true; + } } \ No newline at end of file diff --git a/app/Services/OrderServicePackageService.php b/app/Services/OrderServicePackageService.php index 9ba0452..151fbb8 100644 --- a/app/Services/OrderServicePackageService.php +++ b/app/Services/OrderServicePackageService.php @@ -533,7 +533,7 @@ class OrderServicePackageService extends BaseService return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); } - // 增加健康包订单关联商品 + // 处理健康包数据 if ($request_params['service_type'] == 1){ // 获取医生健康包配置 $params = array(); diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index 93e877f..75ddb62 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -32,6 +32,7 @@ use App\Model\OrderProductLogistic; use App\Model\OrderServicePackage; use App\Model\OrderServicePackageCase; use App\Model\OrderServicePackageDetail; +use App\Model\OrderServicePackageProduct; use App\Model\OrderServicePackageRefund; use App\Model\PatientFamily; use App\Model\PatientFamilyHealth; @@ -2711,6 +2712,7 @@ class PatientOrderService extends BaseService return fail(HttpEnumCode::HTTP_ERROR,"非法订单"); } + // 获取订单详情数据 $params = array(); $params['order_service_id'] = $order_service_package['order_service_id']; $order_service_package_detail = OrderServicePackageDetail::getOne($params); @@ -2718,10 +2720,30 @@ class PatientOrderService extends BaseService return fail(HttpEnumCode::HTTP_ERROR,"非法订单"); } - // 健康报 + // 定义返回数据 + $result = array(); + $result['order_service_package_detail'] = $order_service_package_detail->toArray(); // 订单详情数据 + $result['order_service_package_product'] = []; // 健康包商品数据 + $result['order_service_package_coupon'] = []; // 健康包关联优惠卷数据 + $result['order_inquiry'] = []; // 健康包问诊订单数据 + $result['order_product'] = []; // 健康包药品订单数据 + + + // 健康包商品数据 if ($order_service_package['order_service_type'] == 1){ $params = array(); $params['order_service_id'] = $order_service_package['order_service_id']; + $order_service_package_product = OrderServicePackageProduct::getList($params); + if (empty($order_service_package_product)){ + return fail(); + } + } + + // 健康包关联优惠卷数据 + if (in_array($order_service_package['order_service_status'],[3,4,5])){ + // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消) + // 获取用户优惠卷 + } return success($order_service_package_detail->toArray());