## Laravel Shop

> Laravel Shop 是课程 [《L05 Laravel 教程 - 电商实战》](https://laravel-china.org/topics/13206/laravel-shop-course) 的源代码。

## 功能

Laravel Shop 功能如下：

![_big](https://user-images.githubusercontent.com/324764/41384789-6fa309c6-6faa-11e8-93e0-eeb8d36fe7f7.jpg)

## 关于教程

<p align="center">
<a href="https://laravel-china.org/topics/13206/laravel-shop-course">
<img src="https://user-images.githubusercontent.com/324764/41385516-bb14c184-6fae-11e8-9be1-250950d8732d.jpg" alt="《L05 Laravel 教程 - 电商实战》" width='420'>
</a>
</p>


课程沿用 [Laravel 实战课程系列](https://laravel-china.org/courses) 的教学方法，利用线索式的行文方式，带你熟悉项目需求分析、开发计划、项目创建、支付接口调试等电商项目的开发流程。

[Laravel 实战课程系列](https://laravel-china.org/courses)  的定位是最专业的商业项目开发课程，课程中所教授的技术方案，都是作者在实战中不断积累而来，所以你学到不是一个简单的『玩具项目』，而是一个经受过实战考验的商业解决方案，可以在你的商业项目中大胆使用。

## 项目知识点


-   Composer autoload 功能的使用姿势；
-   Laravel Mix 的基本用法；
-   使用 Laravel 快速构建用户登录、注册功能；
-   使用 MailHog 调试邮件发送功能；
-   使用 Laravel 的 Notification 模块发送邮件；
-   优雅地处理 Laravel 项目中的异常；
-   事件与监听器的使用；
-   使用授权策略来控制权限；
-   使用 overtrue/laravel-lang 来汉化错误信息；
-   laravel-admin 扩展包的安装与配置；
-   使用 laravel-admin 快速构建对模型的增删改查功能；
-   使用 laravel-admin 配置后台用户角色、权限；
-   商品 SKU 的概念；
-   使用查询构造器根据用户输入来动态构建查询 SQL；
-   设置 Laravel 路由顺序的正确姿势；
-   购物车的设计与实现；
-   使用闭包来校验用户输入；
-   自定义 Laravel 验证器；
-   订单流水号的生成；
-   创建订单时保存用户收货地址信息的正确姿势；
-   代表状态的值应使用常量；
-   在 Laravel 中使用数据库事务的正确姿势；
-   高并发下减商品库存的正确姿势；
-   延迟任务的使用；
-   使用预加载与延迟预加载解决数据库 N + 1 问题；
-   通过对业务代码的封装来提高代码的复用性；
-  yansongda/pay 扩展包的安装与配置；
-  支付宝沙箱账号的申请与配置；
-  微信扫码支付的开通与配置；
-  拉起支付宝、微信支付；
-  支付的前端回调与后端回调的概念；
-  在本地开发环境处理支付宝、微信支付后端回调的正确姿势；
-  二维码的生成；
-  管理员收到支付订单开始发货；
-  用户收到商品后确认收货；
-  用户确认收货后选择退款；
-  管理员接到退款请求后的拒绝退款；
-  支付宝、微信支付的退款处理；
-  优惠券的设计与实现；

## 截图


![0](https://user-images.githubusercontent.com/324764/41385028-c1329666-6fab-11e8-8052-eb8d863cb766.png)


![1](https://user-images.githubusercontent.com/324764/41385029-c1a58dba-6fab-11e8-9c15-5cdf85f848b6.gif)


![2](https://user-images.githubusercontent.com/324764/41385030-c2034504-6fab-11e8-8b7a-04797afa6b28.png)


![3](https://user-images.githubusercontent.com/324764/41385031-c267b3ae-6fab-11e8-815c-5a027ca34318.png)


![5](https://user-images.githubusercontent.com/324764/41385032-c2c82de2-6fab-11e8-9aa6-0d88cc486dfe.png)


![6](https://user-images.githubusercontent.com/324764/41385033-c32a3140-6fab-11e8-8deb-fb23fe3ae8a6.png)


![7](https://user-images.githubusercontent.com/324764/41385034-c39c59c8-6fab-11e8-899a-5f042fa0bd1d.png)


![8](https://user-images.githubusercontent.com/324764/41385035-c414fc84-6fab-11e8-82f6-ff50246a4853.png)
