9.5. 优化优惠券模块

本教程最新版为 8.x,当前版本已放弃维护,请阅读最新版本!

优化优惠券模块

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

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

通常来说一张优惠券对每一个用户来说只能使用一次,这里我们对『使用』的定义是:有关联了此优惠券的未付款且未关闭订单或者已付款且未退款成功订单,根据这个规则我们来完善一下 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) {...

本文章首发在 LearnKu.com 网站上。

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

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
贡献者:1
讨论数量: 9

Jason2018
有个被忽略的小细节,直接提交订单,提示"系统错误"?
15 个点赞 | 0 个回复 | 分享 | 课程版本 5.5
theDog
检测一张优惠券一个用户只能使用一次的逻辑有漏洞
10 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
zoang
修正 App/Services/OrderService.php
1 个点赞 | 1 个回复 | 分享 | 课程版本 5.5
osang
查看 Model::Query () 对应的 sql
0 个点赞 | 3 个回复 | 问答 | 课程版本 6.x
断桥红颜V
既然关闭订单减少了优惠券用量,那么退款呢?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
_杭城浪子
点击检查优惠券报错,上一章节是正常的。
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Code_Er
关于优惠券拓展性的一个小想法
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.7