ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

litemall 版本演进全记录:从 V 0.1.0 到 V 1.8.0 的功能迭代与架构变迁

2026/9/20 16:23:41 拓冰建站 浏览量
litemall 版本演进全记录:从 V 0.1.0 到 V 1.8.0 的功能迭代与架构变迁 电商后端前端【免费下载链接】litemall又一个小商城。litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端项目地址https://gitcode.com/gh_mirrors/li/litemall点击查看免费下载本文以 CHANGELOG.md 为线索梳理 litemallSpring Boot 后端 Vue 管理后台 微信小程序 Vue 移动端的开源商城从 2018 年 3 月到 2021 年 1 月的完整版本迭代史。你将看到项目如何从架构基本完成的雏形成长为支持 Docker 部署、售后管理、通知中心、JWT 鉴权与配置管理的成熟商城以及每个关键特性背后的源码实现细节为理解 litemall 的设计演进和二次开发提供一张可检索的地图。一、版本总览三年二十余版的演进脉络CHANGELOG 记录了从V 0.1.02018-03-24到V 1.8.02021-01-10共 20 余个版本横跨约三年时间。按主题可以划分为几个清晰阶段阶段版本区间时间核心主题架构奠基V 0.1.0 ~ V 0.3.02018-03 ~ 2018-04多模块 Maven 结构、逻辑删除、富文本业务成形V 0.4.0 ~ V 0.6.02018-04 ~ 2018-06新增 core/all 模块、微信支付、统计、docker生态扩展V 0.7.0 ~ V 0.10.22018-07 ~ 2018-11短信/邮件/对象存储、团购、renard-wx、Spring Boot 2.x能力完备V 1.0.0 ~ V 1.3.02018-11 ~ 2019-03权限管理、配置管理、优惠券、JWT终端扩展V 1.4.0 ~ V 1.5.02019-05 ~ 2019-11轻商城、阿里云短信、延迟队列、H5 支付运维增强V 1.6.0 ~ V 1.8.02019-12 ~ 2021-01docker 正式支持、售后、通知、数据库备份值得注意的是V 1.8.0 的标注是一些完善。。。并未像早期版本那样列出细目但 V 1.7.0 集中交付了 docker 部署、售后管理、通知管理和数据库七天备份四项重量级能力可以看作项目在运维与客服侧的收官之作。二、架构奠基期V 0.1.0 ~ V 0.3.0模块化与逻辑删除2.1 多模块 Maven 结构的确立V 0.1.0 宣告项目架构基本完成。V 0.5.0 对多模块 Maven 结构重新设计V 0.4.0 进一步明确分工并新增两个模块。结合仓库顶层目录根目录 pom.xml可以看到最终的模块布局litemall-core综合litemall-os-api、litemall-wx-api、litemall-admin-api的共性代码V 0.4.0 引入litemall-db数据库实体、Mapper 与业务 Service是全局数据访问层litemall-wx-api微信小程序后端接口litemall-admin-api管理后台后端接口litemall-all / litemall-all-war包裹模块将三个后端服务和静态文件打包成一个可执行 Jar 或 WarV 0.4.0 引入。V 0.8.0 删除了 os 模块对象存储相关功能迁移至 wx-api 与 admin-api并将部署方案从默认单机多服务调整至默认单机单服务这一调整直接奠定了后续 docker 单容器部署的基础。V 0.5.0 同时整理了部署方案和上线方案文档见 doc/project.md并补充了更新日志、贡献指南与 FAQ。2.2 物理删除 → 逻辑删除V 0.3.0V 0.3.0 是一个数据安全层面的重要转折除 regions 表外所有业务表都添加了add_time和deleted字段litemall-db 模块不再支持物理删除——删除即设置deleted查询则过滤deleted。这一设计在源码中随处可见。以 litemall-db/src/main/java/org/linlinjava/litemall/db/domain 下的实体类为例LitemallAd、LitemallAddress、LitemallAdmin、LitemallAftersale、LitemallBrand等全部实体都包含deleted字段对应的 Example 类也提供按deleted过滤的查询条件。这意味着所有订单、商品、用户数据都可通过软删除实现可追溯、可恢复是商城业务审计与误删保护的基础设施。2.3 早期的账号安全与富文本V 0.2.0 ~ V 0.3.0密码加密V 0.3.0 起小商城后端加密用户账号密码管理后台加密管理员密码富文本编辑V 0.3.0 支持管理后台商品详情使用 tinymce 富文本编辑V 0.4.0 扩展到专题内容V 0.6.0 改为基于官方 tinymce-vue 实现前端静态资源见 litemall-admin/public/tinymce4.7.5订单编号V 0.2.0 采用日期 6 位随机数生成订单号自动脚本V 0.2.0 引入 deploy/util/lazy.sh 与 upload.sh这是后来 docker 一键部署脚本的前身。CHANGELOG 在 V 0.2.0 明确提示手机验证码当时不支持账号登录、注册、找回密码只是完成基本功能但是存在安全风险。这是文档诚实披露局限性的典型例子直到 V 0.8.0 短信验证码才正式落地。三、业务成形期V 0.4.0 ~ V 0.6.0微信支付、统计与早期 docker微信支付V 0.5.0小商城与管理后台同时接入微信支付V 1.0.0.rc1 进一步接入微信退款 API并将错误码从 magic number 重构为常量。统计与上架V 0.6.0管理后台支持简单统计与商品上架V 0.7.0 完善商品编辑效果V 0.8.0 页面查询默认按创建时间排序。多终端登录V 0.4.0管理后台支持同一账户多终端登录方便演示。早期 dockerV 0.6.0项目首次支持 docker 部署但 V 0.8.0 又暂时取消 docker 支持和 .gitlab-ci.yml 支持直到 V 1.7.0 才正式回归。这个反复说明运维方案在演进中经历了先探索、后收敛、再成熟的路径。四、生态扩展期V 0.7.0 ~ V 0.10.2外部服务与第二套小程序4.1 短信、邮件与对象存储V 0.7.0 集中引入了三类外部服务腾讯云短信提醒与邮件提醒PR #23腾讯对象存储PR #24V 0.8.0 增加阿里云存储支持。V 1.5.0 再增加阿里云短信V 1.6.0 中邮件通知改用ssl 方式发送PR #307。这些能力让验证码、订单通知、图片存储不再依赖本地实现为生产部署提供了灵活性。4.2 团购、renard-wx 与 Spring Boot 2.xV 0.9.0小商城支持团购开源第二套小商城renard-wx仓库根目录下 renard-wx 即该项目支持意见反馈组件管理后台采用乐观锁更新并升级Spring Boot 到 2.x。V 0.10.0乐观锁收敛为仅用于订单表管理后台校验 POST 参数。V 0.10.2支持团购专区列表页面关闭默认内置缓存功能修复富文本导致的小程序端文本对齐问题。乐观锁在订单场景的落地可在 litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java 与 OrderMapper.java 中看到updateWithOptimisticLocker的实现——通过版本号比较避免并发下单时数据覆盖这也是订单状态机可靠性的关键保障。4.3 其他体验类能力V 0.8.0 还交付了一批面向用户体验的能力商品分享、物流显示、客服与关于页面、手机绑定、账号注册与密码找回的短信验证码、物流追踪快递鸟 APIV 1.1.0 调整。V 0.10.2 则把富文本编辑调整为修复小程序端文本对齐问题。五、能力完备期V 1.0.0 ~ V 1.3.0权限、配置与优惠券5.1 权限管理V 1.2.0管理后台支持权限管理小商城取消编程式事务管理改用注解式事务管理并采用多线程进行数据库查询操作。权限体系对应的角色管理接口可查看 litemall-admin/src/api/role.js其前端资源在 litemall-admin/src/views/sys。5.2 配置管理与订单超时的已知局限V 1.3.0V 1.3.0 支持配置管理对应数据库litemall_system表V 0.8.0 引入管理后台可通过配置管理页调整订单超时等参数。CHANGELOG 特别给出了一个重要的工程提示虽然配置管理中可以设置订单超时时间但是由于目前采用定时查询方式会产生延时因此最终订单超时时间需要额外加上这些延迟才能更新状态。以后会解决这个问题例如使用 redis。这个已知局限在源码中得到印证订单超时检测由 OrderJob.java 的定时任务驱动——每天凌晨 3 点自动确认超期订单checkOrderUnconfirm超时阈值取SystemConfig.getOrderUnconfirm()、凌晨 4 点取消超期未评价商品的可评价状态checkOrderComment。代码注释明确写着因为是相隔一天检查因此导致订单真正超时时间是 [LITEMALL_ORDER_UNCONFIRM, 1 LITEMALL_ORDER_UNCONFIRM]也就是说配置的超时时间只是下限实际生效时间存在最多一天的检查粒度误差。理解这一点对排查订单状态更新延迟问题至关重要。5.3 优惠券V 1.1.0与 JWT 登录V 1.4.0优惠券V 1.1.0 管理后台支持优惠券管理小商城支持优惠券列表与个人优惠券功能定时任务被调整到 job 子包litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job含 CouponJob、OrderJob、DbJob为后续迁移至独立模块留出空间。JWT 登录V 1.4.0 小商城后端登录验证方式改用 JWTPR #167。源码实现为 JwtHelper.java UserTokenManager.java采用HMAC256算法签名秘钥X-Litemall-Token签发者LITEMALL受众MINIAPPToken 载荷携带userId过期时间 2 小时generateToken负责签发getUserId通过verifyTokenAndGetUserId校验并还原用户身份。5.4 轻商城V 1.4.0与 API 文档V 1.4.0 支持移动端轻商城即仓库中的 litemall-vueVue 用户移动端轻商场基本结构完成PR #157同时文档支持 API 文档管理后台新增操作日志管理、帮助中心页面并修复管理员不能删除自己账号此约束在 V 1.0.0.rc1 已有禁止超级管理员修改密码的前置铺垫。六、终端扩展期V 1.5.0延迟队列与多渠道支付V 1.5.0 的关键词是持续优化轻商城模块延迟队列实现支付超时取消订单参考 PR #275小商城从定时轮询转向延迟队列。仓库中 litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/task/OrderUnpaidTask.java 与 TaskStartupRunner.java 即延迟任务实现应用启动时注册超时未支付订单任务到期自动取消订单。相比定时扫描延迟队列让每个订单的超时时间更精确。微信支付 H5 支付PR #291轻商城接入 H5 支付补齐了移动端浏览器的支付场景。其他分享按钮可选配置PR #239、团购拼团超期取消PR #284、订单详情新增打印PR #274、优惠券绑定 ID 与取消订单接口的 Bug 修复。七、运维增强期V 1.6.0 ~ V 1.8.0docker、售后、通知与备份7.1 Docker 部署正式落地V 1.7.0V 1.7.0 支持 docker 部署参考 PR #321。仓库中的 docker/README.md 给出了完整流程打包将litemall_schema.sql、litemall_table.sql、litemall_data.sql合并到docker/db/init-sql/litemall.sql在 litemall-admin 下npm install并npm run build:depmvn clean package后将litemall-all/target/litemall-all-*-exec.jar复制为docker/litemall/litemall.jar配置修改 docker/litemall/application.yml 外部配置文件如远程服务器 IP启动时外部配置会覆盖 jar 内默认配置部署服务器仅需安装 docker 与 docker-composeMySQL 与 JDK 由镜像自动提供运行sudo docker-compose up -d即可。docker/docker-compose.yml 定义了完整的编排version: 3 services: mysql57: image: mysql:5.7 container_name: mysql ports: - 3306:3306 command: --character-set-serverutf8 --collation-serverutf8_general_ci --default-authentication-pluginmysql_native_password volumes: - ./db/conf.d:/etc/mysql/conf.d - ./db/data:/var/lib/mysql - ./db/init-sql:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: litemall123456 restart: always litemall: build: context: litemall dockerfile: Dockerfile container_name: litemall ports: - 8080:8080 volumes: - ./litemall/storage:/storage - ./litemall/logs:/logs - ./litemall/backup:/backup - /etc/localtime:/etc/localtime environment: - TZAsia/Shanghai depends_on: - mysql57 restart: always其中litemall容器挂载了backup目录——这正是数据库定时备份的落盘位置/storage目录承载上传文件保证容器重建后数据不丢失。一键脚本docker/util/lazy.sh 将本地打包 → scp 上传云服务器 → 远程执行 reset 脚本三步串成一条命令并处理了 CRLF 换行符兼容问题cat deploy.sh | tr -d \r。docker/README 同时给出安全建议脚本中会涉及服务器登录账号、SSH 私钥、MySQL root 密码等敏感信息强烈建议参考 docker 文件夹自行实现妥善处置敏感信息。部署完成后可通过以下 URL 验证http://xxx.xxx.xxx.xxx:8080/wx/index/index # 小商城接口 http://xxx.xxx.xxx.xxx:8080/admin/index/index # 管理后台接口 http://xxx.xxx.xxx.xxx:8080/#/login # 管理后台前端7.2 数据库七天自动备份V 1.7.0V 1.7.0 新增自动备份 7 天数据到 backup 文件夹实现位于 DbJob.java通过Scheduled(cron 0 0 5 * * ?)每天凌晨 5 点触发从spring.datasource.druid.url解析数据库名调用DbUtil.backup生成以日期命名的YYYY-MM-DD.sql文件到backup目录同时删除 7 天前的备份文件实现滚动保留最近七天的策略。7.3 售后管理与通知中心V 1.7.0售后管理后台新增售后管理小商城新增订单售后列表、售后详情、申请售后。数据层对应LitemallAftersale实体litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAftersale.java小商城售后页面见 litemall-wx/pages/ucenter/aftersale。通知管理后台新增通知中心和通知管理登录页增加版权内容。轻商城实现账号注册功能PR #324。7.4 V 1.7.0 安全与回归修复本版本修复了小商城后端接口部分水平越权漏洞——这类漏洞通常源于仅校验登录态而未校验资源归属V 1.4.0 的收货地址采用 userId 和 id 联合查询正是同一思路的早期实践。其他修复包括验证码未超时仍发送、管理员/小商城评论回复显示问题、轻商城添加收货地址返回不正确。V 1.6.1 则修复了删除不必要的 Bean 注解导致不必要的实例化的性能问题V 1.6.0 重构团购实现、删除微信模板、更新 vue-element-admin 至 4.2.1。八、贯穿全程的安全与健壮性脉络如果把 CHANGELOG 纵向串联可以提炼出一条清晰的安全与健壮性主线版本措施目的V 0.2.0订单编号日期 随机数订单号不可猜测V 0.3.0密码加密、逻辑删除凭据安全、数据可恢复V 1.0.0.rc1微信退款、禁止超管改密资金安全、权限边界V 1.1.0优惠券防刷营销资产保护V 1.4.0JWT 登录、userIdid 联合查询、管理员禁删自己认证升级、越权防护V 1.7.0修复水平越权、验证码重复发送权限与接口安全收敛尤其水平越权的修复说明 litemall 在后端接口设计中逐步强化资源归属校验意识——这也是二次开发时应当保持的底线。九、给开发者的版本参考建议选择稳定基线若需要 docker 一键部署 售后/通知/备份全套能力以 V 1.7.0 / V 1.8.0 为基线最省事对应本文档记录的最终状态理解订单超时语义订单自动确认依赖每日定时任务OrderJob存在最多一天的延迟涉及超时业务需在配置与产品预期间留出余量定制外部服务短信腾讯云/阿里云、邮件、对象存储腾讯/阿里云都是可插拔配置按 deploy/litemall/application.yml 调整即可安全基线无论基于哪个版本二次开发都应保留 JWT 鉴权、逻辑删除、乐观锁与越权校验这四类机制并参考 V 1.7.0 的越权修复思路复查所有按 id 操作的接口。CHANGELOG 既是发布记录也是理解 litemall 架构决策的第一手资料从单机多服务到单机单服务、从物理删除到逻辑删除、从定时扫描到延迟队列、从裸部署到 docker 编排——每一次演进都对应了明确的问题与取舍。基于它再结合 README.md 与 doc 下的部署、API、数据库文档即可完整还原这个开源商城三年的成长史。赞分享电商后端前端【免费下载链接】litemall又一个小商城。litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端项目地址https://gitcode.com/gh_mirrors/li/litemall点击查看免费下载相关推荐superfile 版本演进全览从 0.1.0 Beta 到 v1.6.0 的功能迭代、修复与架构变迁superfile 版本演进全览从 0.1.0 Beta 到 v1.6.0 的功能迭代、修复与架构变迁 superfile 是一款用 Go 编写的现代终端文件CLI开发工具F3D 版本演进全览从 0.1.0 到 3.5.0 的功能迭代、破坏性变更与架构演进解析F3D 版本演进全览从 0.1.0 到 3.5.0 的功能迭代、破坏性变更与架构演进解析 F3DFast and Minimalist 3D Viewer3D渲染图形学桌面应用OpenDesign 版本演进全解析从 0.1.0 到 0.9.0 的架构与能力变迁OpenDesign 版本演进全解析从 0.1.0 到 0.9.0 的架构与能力变迁 本文以开源仓库根目录的 CHANGELOG.md https://linAI 应用人工智能AI 技能设计系统媒体生成上一篇解决HTMX中document.evaluate参数兼容性问题从根源到修复下一篇轻量级部署新范式Memos项目Docker镜像托管完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考