Menu

9.5. 优化优惠券模块

优化优惠券模块

上一节我们完成了使用优惠券来下单的基本功能,接下来我们要完善一些遗漏的功能。

一张优惠券一个用户只能使用一次

通常来说一张优惠券对每一个用户来说只能使用一次,这里我们对『使用』的定义是:有关联了此优惠券的未付款且未关闭订单或者已付款且未退款成功订单,根据这个规则我们来完善一下 CouponCode 模型中的 checkAvailable() 方法:

app/Models/CouponCode.php

.
.
.
    // 添加了一个 $user 参数
    public function checkAvailable(User $user, $orderAmount = null)
    {
        .
        .
        .
        $used = Order::where('user_id', $user->id)
            ->where('coupon_code_id', $this->id)
            ->where(function($query) {
                $query->where(function($query) {
                    $query->whereNull('paid_at')
                        ->where('closed', false);
                })->orWhere(function($query) {...

本文章首发在 Laravel China 社区

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
讨论数量: 5

zoang
修正 App/Services/OrderService.php
1 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
Jason2018
有个被忽略的小细节,直接提交订单,提示"系统错误"?
9 个点赞 | 0 个回复 | 分享 | 课程版本 5.5
theDog
检测一张优惠券一个用户只能使用一次的逻辑有漏洞
6 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
等车的猪
点击检查优惠券报错,上一章节是正常的。
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
刻意练习,每日精进。
2
点赞
244
浏览
5
讨论