商城项目总结技术点

本文详细总结了一个商城项目的各项技术点,包括微服务划分、容器化(Docker、Kubernetes)、SpringBoot、Vue、MVVM、Mybatis-Plus等。还涉及Nacos配置中心、SpringCloud Gateway、OSS存储、ElasticSearch、Nginx反向代理、Redis缓存、分布式锁Redisson、SpringCache、异步编排、短信验证码、OAuth2.0、分布式Session、ThreadLocal、RabbitMQ、接口幂等性、分布式事务处理以及支付等功能。项目业务部分涵盖了三级分类、商品检索、合并购物项等。此外,还讨论了集群、数据库(MySQL、Redis)以及Elasticsearch的集群创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

1. 项目基本介绍

1.1 微服务划分
核心
  • 商品:

    序号 Entity 描述
    1 CategoryEntity 三级分类表
    2 BrandEntity 品牌表
    3 CategoryBrandRelationEntity 1和2的关联表,多对多关系
    4 SpuInfoEntity spu信息表,不显示属性信息
    5 SpuImagesEntity spu对应的多张商品图片
    6 SpuInfoDescEntity spu的商品详情长图
    7 SkuInfoEntity ku具体信息,不显示属性信息
    8 SkuImagesEntity sku对应的多张商品图片
    7 AttrEntity 属性表,如:手机机身颜色
    10 AttrGroupEntity 属性分组表,如:手机中主体,基本信息…
    11 AttrAttrgroupRelationEntity 属性表和属性分组表的关联表
    12 ProductAttrValueEntity spu的基本属性值表,不同sku共同属性,如入网型号…
    13 SkuSaleAttrValueEntity sku销售属性表,如机身颜色,+12=sku全部属性

在这里插入图片描述

  • 库存

    序号 Entity 描述
    1 WareInfoEntity 仓库信息,如:上海,北京
    2 WareSkuEntity sku库存表
    3 PurchaseDetailEntity 采购单详情,如:7号sku采购100到2号仓库
    4 PurchaseEntity 采购单,把采购单详情合并到采购单,每个人领多个采购单
    5 WareOrderTaskEntity 包含订单的唯一标识order_sn
    6 WareOrderTaskDetailEntity 订单对应的订单详情,如7号sku购买2件
  • 优惠券

    序号 Entity 描述
    1 SpuBoundsEntity 购买spu的成长积分,购物积分
    2 MemberPriceEntity 上级sku不同会员等级不同价格
    3 SkuLadderEntity 商品sku阶梯价格表,满几件打几折
    4 SkuFullReductionEntity 商品sku满减信息表,满多少减多少
  • 会员

    序号 Entity 描述
    1 MemberEntity 会员表(第三方登录会返回唯一uid)
    2 MemberLevelEntity 会员等级表,默认普通会员
    3 MemberReceiveAddressEntity 会员收获地址表
  • 认证登录

  • 第三方工具

    ​ Oss存储

    ​ 短信

  • 检索

    ​ ElasticSearch,商品上架时存储到Es索引,页面从Es取数据

  • 购物车

    ​ 存储在redis

  • 订单

    序号 Entity 描述
    1 OrderEntity 订单表
    2 OrderItemEntity 订单项表
    3 PaymentInfoEntity 支付信息表,关联支付宝,对应流水号
  • 秒杀

    序号 Entity 描述
    1 SeckillSessionEntity 秒杀场次表,开始结束时间
    2 SeckillSkuRelationEntity 秒杀商品关联表(关联场次),秒杀价
外围
  • common

  • 网关

    ​ Nginx+SpringCloud Gateway

  • renren-fast

    ​ 和前端renren-fast-vue前端,构成基本商城管理系统

  • renren-generate

    ​ 逆向工程自动生成CRUD

1.2 容器
docker参数

​ 虚拟化容器技术,每一种容器都是一个完整的运行环境,容器之间互相隔离。Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境。

序号 命令 含义
1 -p 端口映射,如:3306:3306 对应 宿主机端口:虚拟机端口
2 –name 起名字
2 -v 文件挂载,如:/mydata/mysql/conf/:/etc/mysql/
3 -e 如:ES_JAVA_OPTS="-Xms300m -Xmx300m",MYSQL_ROOT_PASSWORD=123456
4 -d 后台运行
常用指令
#awk是文本分析工具,tail -n +2 取从第二行开始到结尾
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker stop $(docker ps -a |grep elasticsearch-node | awk '{ print $1}')
docker exec -it redis /bin/bash	
docker update 序列号 --restart=always
docker logs name
#显示网络状态 查看端口占用
netstat -ano
#lsof(list open files)是一个列出当前系统打开文件的工具 -i用以显示符合条件的进程情况 查看端口占用
lsof -i:port

docker参考文档

项目用到的容器
  • mysql
  • redis
  • nginx
  • elasticsearch
  • kibana
  • rabbitmq
  • zipkin
dockerfile

​ 先把总taomall用maven的命令install装到本地仓库,即jar包

​ 写dockerfile

​ docker build -f Dockerfile -t docker.io/tao/admin:v1.0 .

​ docker run -d --name test-admin -p 8080:8080 xxx

k8s和kubesphere

​ 自动部署,扩展和管理容器化应用程序的开源系统,具有自动恢复和水平伸缩特性

	k8s之上构建的分布式多租户容器管理平台(云原生)
1.3 环境
springboot

​ 参照springboot学习笔记

vue

​ Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,我们关注与 node.js 的 npm 功能就行

MVVM 思想
  • M:即 Model,模型,包括数据和一些基本操作

  • V:即 View,视图,页面渲染结果

  • VM:即 View-Model,模型与视图间的双向操作(无需开发人员干涉), VM 要做的事情就是把 DOM 操作完全封装起来

    ​ 在 vue 里,所有的 vue 实例都是组件,,vue 脚手架使用 webpack 模板初始化一个商城项目 项目

mybtis-plus

分页查询:

@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
   
    //
    PageUtils page = brandService.queryPage(params);

    return R.ok().put("page", page);
}

public class BrandServiceImpl extends ServiceImpl<BrandDao, BrandEntity> implements BrandService
// this就是BrandServiceImpl,而ServiceImpl里面有page方法
IPage<BrandEntity> page = this.page(
    new Query<BrandEntity>().getPage(params),
    queryWrapper
);

return new PageUtils(page);
public class Page<T> implements IPage<T>

public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T>
@Override
public IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper) {
   
    return baseMapper.selectPage(page, queryWrapper);
}

public IPage<T> getPage(Map<String, Object> params) {
   
    return this.getPage(params, null, false);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值