【立项背景和目标】
针对建材行业线上线下融合趋势,构建一个连接建材商家与消费者的B2B2C多端电商平台。目标是为建材商家提供便捷的线上开店与经营工具,为消费者提供优质的建材商品选购体验,同时为平台运营方提供完善的管理与抽成盈利体系。
【软件功能与核心模块】
项目包含三端:超级管理平台、商家管理平台、微信小程序商城。
1. 超级管理平台(12+功能模块):数据统计概览、商户管理(含抽成比例设置)、营销活动管理、折扣规则管理(支持百分比/固定金额/满减,5种作用范围)、用户管理、订单管理、商品审核(通过/驳回)、评价管理、轮播图与公告管理、商品类目管理(二级分类树形结构)、商户提现审核、平台通知设置、客服聊天。
2. 商家管理平台(8+功能模块):商品管理(最多7张图片+1个视频)、订单管理(发货填写快递信息)、评价管理(回复与追评)、经营数据报表、账户余额与提现申请、店铺信息设置、活动参与管理、客服聊天、消息通知。
3. 小程序商城(18个页面):首页(轮播图+公告+热销商品)、商品分类浏览、商品搜索、商品详情(图文+视频+评价)、购物车、订单确认与下单、订单列表与详情(支付/取消/确认收货)、商品评价与追评、收货地址管理、微信登录、营销活动列表、实时客服聊天、系统通知。
【业务流程】
商品流程:商家创建商品→管理员审核→上架销售→用户浏览下单→支付→商家发货→用户确认收货→评价。
资金流程:用户支付→平台按抽成比例扣除→商家余额入账→商家申请提现→管理员审核打款。
库存流程:下单扣减库存,取消订单恢复库存,库存低于预警值触发商家通知。
【整体架构和设计思路】
采用前后端分离+多端统一后端的架构。后端使用NestJS+TypeScript框架,按模块化组织,分为common公共层(实体、装饰器、守卫、过滤器、公共服务)和modules业务模块层(auth认证、admin超管、merchant商家、miniprogram小程序、chat客服聊天、upload文件上传)。数据层使用TypeORM+MySQL,共18张数据表。管理端使用EJS服务端渲染,小程序端使用微信原生开发。
【技术栈分布】
- 后端:NestJS 10 + TypeScript 5 + TypeORM 0.3 + MySQL + Passport JWT认证 + Socket.IO实时通信 + EJS模板引擎 + multer文件上传 + exceljs数据导出
- 管理端:EJS服务端渲染 + 原生JavaScript + Fetch API
- 小程序端:微信原生开发(WXML+WXSS+JS)+ Socket.IO客户端
【我的负责模块和结果】
负责全栈开发,完成70+个API接口、18张数据表、30+个功能模块、18个小程序页面。实现三级角色权限体系(超管/商家/用户),通过@Public()和@Roles()装饰器+JWT守卫控制接口权限。实现订单6种状态流转、商品审核流程、抽成计算与提现流程、库存预警机制。客服聊天支持文字与图片消息,三方(用户/商家/管理员)实时通信。通知系统支持SSE实时推送+断线重连补偿。
【难点与解决方案】
1. 多端权限统一:通过全局JWT守卫+角色守卫+自定义装饰器,一套认证体系服务三端,不同角色访问不同接口集。
2. 实时通信多端兼容:客服聊天使用Socket.IO WebSocket,通知系统使用SSE,并实现断线重连补偿机制确保消息不丢失。
3. 订单数据一致性:采用数据库事务保证下单扣库存、取消恢复库存的原子性,订单项使用快照模式保存商品信息防止商品修改影响历史订单。
4. 折扣规则灵活配置:设计5种作用范围(全体用户/个别用户/全体商户/个别商户/活动关联),通过关联表实现灵活的折扣适用范围配置。