@ -1,4 +1,4 @@
# 编写的原因
# 编写原因
写在前面,很多加入我们群里的人,都会问我们源码在哪里,现在仔细回答一下
@ -1,6 +1,6 @@
## 商品分组
#### 商城应用
####商城应用
在mall4j精选商城首页中,可以看到有`每日上新`、`商城热卖`、`更多商品`等标签栏,在每一栏位中用来展示特定的商品列表,如下图:。
@ -2,7 +2,7 @@
在看具体的数据库实体设计之前,我们先一起了解下**电商的名词定义**
## 1.1 名词定义
##1.1 名词定义
参考 [《产品 SKU 是什么意思?与之相关的还有哪些?》](https://www.zhihu.com/question/19841574) 整理。
## PageAdapter
##PageAdapter
使用分页时,前端传入的数据统一格式为`current`当前页,`size`每页大小。而我们在数据库中要将这两个数据变更为从第几行到第几行,所以我们需要简单的适配一下:
在小程序登陆的时候,在`MiniAppAuthenticationProvider`中我们看到这样一行代码
```java
``java
yamiUserDetailsService.insertUserIfNecessary(appConnect);
```
网上有很多说解决xss攻击的方法,有很多都是和前端有关,而实际上,在后台这最后一个防御当中,是最为重要的。
在mall4j这个项目里面,使用了一个过滤器 `XssFilter`
在mall4这个项目里面,使用了一个过滤器 `XssFilter`
public class XssFilter implements Filter {
@ -7,7 +7,7 @@
- 多图片上传:`src\components\mul-pic-upload`
- 文件上传:`src\components\file-upload`
上述这些文件上传,都是基于`el-upload`进行封装
上述这些文件上传,都是基于`el-upload`进封装
## 权限控制
#### 前端权限控制
### 前端权限控制
在商城运营时,我们可能是多个人员共同操作我们的系统,但是每个操作人员所具备的权限应该不同,权限的不同主要表现在两个部分,即导航菜单的查看权限和页面增删改操作按钮的操作权限。我们的把页面导航菜单查看权限和页面操作按钮统一存储在菜单数据库表中,菜单类型页面资源的类型。类型包括目录 、菜单 、按钮。
## 后台异常处理
# 后台异常处理
在开发过程中,不可避免的是需要处理各种异常,异常处理方法随处可见,所以代码中就会出现大量的`try {...} catch {...} finally {...}` 代码块,不仅会造成大量的冗余代码,而且还影响代码的可读性,所以对异常统一处理非常有必要。为此,我们定义了一个统一的异常类`YamiShopBindException` 与异常管理类 `DefaultExceptionHandlerConfig`。
利用`spring`框架中`aop`,我们可以实现业务代码与系统级服务进行解耦,例如日志记录、事务及其他安全业务等,可以使得我们的工程更加容易维护、优雅。如何在系统中添加相应的日志呢?
##### 添加依赖
#### 添加依赖
<dependency>
我们后台使用`spring` 为我们提供好的统一校验的工具`spring-boot-starter-validation`对请求进行校验。
我们后使用`spring` 为我们提供好的统一校验的工具`spring-boot-starter-validation`对请求进行校验。
```xml
## 通用分页表格实现
# 通用分页表格实现
前端基于VUE的轻量级表格插件 `avue`
后端分页组件使用Mybatis分页插件 `MybatisPlus`
~~~
yami-shops
├── mall4m -- 小程序代码
├──mall4m -- 小程序代码
├── mall4v -- 后台vue代码
├── yami-shop-admin -- 后台(vue)接口工程[8085]
├── yami-shop-api -- 前端(小程序)接口工程[8086]
这里整理了一些经常会被问到的问题:
里整理了一些经常会被问到的问题:
1. 为什么vue打包之后,或者修改url之后,无法登录?
答:你用chrome按f12看看console提示的信息如:`Access-Control-Allow-Origin` 那就是跨域了,再看看network的请求方法是不是`options`,但是返回不是200,这也是跨域了。
@ -13,7 +13,7 @@
我们先来看下是如何获取商品信息的
@PostMapping("/info")
@Operation(summary = "获取用户购物车信息" , description = "获取用户购物车信息,参数为用户选中的活动项数组,以购物车id为key")
public ServerResponseEntity<List<ShopCartDto>> info(@RequestBody Map<Long, ShopCartParam> basketIdShopCartParamMap) {
## 第一步:
# 第一步:
1. 用户点击“立即购买”或“购物车-结算”进入到“确认订单”页面,相关url`/p/order/confirm`
@ -8,7 +8,7 @@
我们返回确认订单的接口,看到这样一行代码:
@Operation(summary = "结算,生成订单信息" , description = "传入下单所需要的参数进行下单")
public ServerResponseEntity<ShopCartOrderMergerDto> confirm(@Valid @RequestBody OrderParam orderParam) {
orderService.putConfirmOrderCache(userId,shopCartOrderMergerDto);
> 我们的支付时不允许在订单的支付接口传订单金额的,所以我们采用了订单号进行支付的形式
## 支付
# 支付
我们来到`PayController` ,这里就是统一支付的接口,当然这里的统一支付采用的是模拟支付。
@ -1,3 +1,3 @@
这里只有几点说明:
1. 这里写的是接口设计,如果你整个接口的接口文档,只需要启动api这个项目,然后访问 http://localhost:8086/doc.html
1 这里写的是接口设计,如果你整个接口的接口文档,只需要启动api这个项目,然后访问 http://localhost:8086/doc.html
@ -3,6 +3,6 @@
安装JDK,如果没有java-17-openjdk-devel就没有javac命令
```bash
yum install java-17-openjdk java-17-openjdk-devel
yu install java-17-openjdk java-17-openjdk-devel
@ -14,7 +14,7 @@ docker-compose version 1.17.1, build 6d101fb
Linux 系统请使用以下介绍的方法安装。
## 安装方法一:二进制包
# 安装方法一:二进制包
在 Linux 上的也安装十分简单,从 [官方 GitHub Release](https://github.com/docker/compose/releases) 处直接下载编译好的二进制文件即可。
## 安装 Docker
# 安装 Docker
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
@ -9,7 +9,7 @@ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。
体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。
- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
- 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
@ -4,7 +4,7 @@
从 Docker 镜像仓库获取镜像的命令是 `docker pull`。其命令格式为:
# docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
**如果无法理解我们所编写的 `Dockerfile`强烈的不推荐使用docker进行生产环境部署!!!**
*如果无法理解我们所编写的 `Dockerfile`强烈的不推荐使用docker进行生产环境部署!!!**
0. 将整个项目上传到centos中,进入到项目根目录
1. 安装 `docker` (参考《docker centos 安装》)
安装maven的前提是安装jdk,参考《linux jdk安装》
``bash
// 使用配置工具配置第三方epel源仓库
yum-config-manager --add-repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
yum-config-manager --enable epel-apache-maven
Nginx官方提供了Yum源
## 1、安装nginx
# 1、安装nginx
```shell
yum install -y nginx
本文为大家介绍了*CentOS* 7 64位 安装 *MySQL5.7* 的详细步骤
## 1、配置YUM源
# 1、配置YUM源
在[MySQL]官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/
@ -1,7 +1,7 @@
## 安装redis
#安装tcl redis需要
安装tcl redis需要
wget http://downloads.sourceforge.net/tcl/tcl8.6.8-src.tar.gz
tar xzvf tcl8.6.8-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.8/unix/
## 安装jdk
安JDK,如果没有java-17-openjdk-devel就没有javac命令