谷粒商城基础篇高级篇,跟着看,也敲了部分代码,但是感觉后续随着业务增加代码部分敲了也记不住,就想着应该重视解决问题的思路,理清思路比代码更重要,写这篇文章,是在看完后在从第一到高级篇,少部分集群篇总结一下思路。
参考文章:参考大哥文章
1.基础篇:管理员端并发量小业务
2.高级篇:客户端,高并发等复杂业务
3.集群篇:k8s部署
介绍基础概念:
1.微服务
2.集群,分布式,节点
3.远程调用:HTTP+JSON
4.负载均衡:轮询,最小连接数,散列
5.服务注册/发现&注册中心,Client注册到server,Client从server发现
6.配置中心
7.服务熔断降级
8.API网关
P4.微服务架构图
P5.微服务划分图
gitee搭建(希望大家适当支持国产,科技真的无国界?)
构建各个模块,复制一个pom建立父pom,聚合模块,添加总服务,设置忽略文件,idea安装gitee。
包db文件,生成数据库。
后台搭建,纳入项目管理,改配置。
前端vscode,配置前端
提取公共代码common中
(1).整合Mybatis-Plus
1).导入依赖
2).修改配置
①.配置数据源
A.导入数据库驱动
B.在application.yml文件中配置相关信息
②.配置MyBAties-Plus
A.主启动类@MapperScan注解,告诉Mybaties-Plus映射文件位置。
Nacos 注册中心
Nacos 配置中心
Ribbon 负载均衡
Feign 远程调用
Sentinel 服务容错(限流、降级、熔断)
Gateway API网关
Sleuth 链路监控
Seata 分布式事务解决方案
Server 下载,启动
Client:pom,yml(server地址,服务名称),主启动类@EnableDiscoveryClient,启动
引pom,调用者建feign包,开启主启动@EnableFeignClients(baesPackage=“feign包名”),远程调用@FeignClient(“接口名称”)
(1).引pom
(2).新建bootstrap.yml,注册中心配置:spring.cloud.nacos.config.server-addr=;spring.application.name=
(3).nacos上进行配置
(4).动态获取配置
@RefreshScope
@Value("${名称路径}")
(1)…命名空间:每个微服务之间相互隔离配置,每个微服务都创建自己的命名空间,只加载自己命名空间下的配置
(2).配置集,所有配置的集合
(3)配置集ID:类似文件名
(4)配置分组:
总结:每个微服务创建自己的命名空间,使用配置分组区分环境。
路由,断言,过滤器
客户端发请求给服务端。中间有网关。先交给映射器,如果能处理就交给handler处理,然后交给一系列filer,然后给指定的服务,再返回回来给客户端。
三个模板:方法模板,get、post请求模板
修改前端请求路径,改为网关请求地址
跨域:指浏览器不能执行其他网站的脚本。
同源策略:指协议,域名,端口都要相同,其中有一个不同就会产生跨域。
注解掉原有renrenFast跨域
前端:节点没有子节点才允许删除,三级分类允许添加子节点
(1).配置全局逻辑删除(可省略)
(2).配置逻辑删除组件Bean(可省略)
(3).给Bean上加逻辑删除注解@TableLogic
删除确认框,刷新新菜单后默认展开的菜单
前端添加框,表单提交
发送请求获取修改数据。
确定是修改框还是添加框,可以增加额外变量确定。
个人感觉没用就不看第二遍了
前端获取选中节点,获取id,后端假删除
(1).pom
(2).阿里云查找编写上传文件流, 地址、账户、密码,也可以写在yml文件中
创建第三方服务模块,改
阿里云找到代码复制到controller
修改列表自定义列获取图片。
前端表单校验器
JSR303校验
(1).给Bean添加注解
(2).controller具体方法前加标注校验注解,@Valid
(3)j校验的controller方法内加BindingResult,就可以获取到校验结果
(4).分组校验(多场景复杂校验)
1).给实体类加注解
2).controller上该@Valid注解为@Validated({AddGroup.class})
3).默认没有指定分组的校验,在分组校验情况下不生效
(1).编写一个自定义校验注解
(2).编写一个自定义校验器
(3).关联自定义的家欧安器和自定义校验注解
spu:标准化产品单元,商品信息聚合最小单位,一组可服用、医检所的表转化信息集合,该集合描述了一个产品的特征。个产品共享的属性。
SKU:库存量单位。库存进出计量的基本单元,可以以件、盒等为单位,现已引申为产品统一编号的简称,每个商品均对应一个sku。
基本属性【规格参数】与销售属性:每个分类下的商品共享规格参数,只是有些商品不一定要用这个分类下的全部商品。
一个品牌对应多个分类,一个分类可以有多个品牌
修改品牌name时注意其他关联name的修改关系,级联更新。
1.PO持久对象:Po就是对数据库中某个表中的一条记录,多个记录可以是用Po集合,po不包含对数据库的操作
2.DO领域对象:从现实世界中抽取出来的邮箱或无形的业务实体。
3.TO数据传输对象:不同应用程序之间传输的对象。
4.DTO数传输对象:泛指用于展示层与业务之间的传输对象
5.VO值对象:用于业务层之间的数据传递,但是应该是抽象出的业务对象,可与表对应也可以不用,根据业务取药。
视图对象,接收页面传来的数据,也可封装为完成业务逻辑,界面所需要的数据。
6.BO业务对象:把业务逻辑封装为一个对象。
7.POJO剪短无规则java对象:传统意义的java对象。
8.DAO数据访问对象:持久化层提供接口,用于访问数据库。
属性新增后,对应的关联品牌和属性关系表也要新增。
getway设置会员路由,设置会员等级接口
ware模块加入到注册中心
getway加入网关
加入模糊查询
获取采购单,先获取未领取的采购任务,将采购单合并后分配人员。
修改采购状态并添加库存(有加无新建)