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 网站上。

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

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
贡献者: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