这是一款专为零售业态(如中小型超市、便利店)设计的进销存管理系统,旨在解决传统人工记账效率低、库存数据不准及财务核算困难等痛点。系统通过数字化手段实现商品全生命周期管理,目标是帮助商家降本增效,实现经营数据的实时监控与决策支持。
系统核心功能模块包括:基础管理(客户、供应商、商品及分类维护)、进货退货管理(采购入库、退货查询)、销售管理(商品销售、销售退货)、系统管理(用户、角色、权限分配)以及其他管理(操作日志、统计报表)。
业务流程上,用户可通过左侧导航栏进入相应模块。例如,管理员可进入“系统管理”下的“权限管理”,对“客户查询”、“商品添加”等具体操作权限进行细粒度配置;采购人员则可通过“进货退货管理”完成商品入库流程。
本项目采用前后端分离的架构模式,后端基于Java语言开发,使用Spring Boot框架构建RESTful API,整合MyBatis-Plus实现数据持久化,数据库选用MySQL 8.0存储业务数据,Redis用于缓存热点数据(如商品信息、权限配置)以提升响应速度。前端采用Vue.js框架结合Element UI组件库实现界面渲染,通过Axios进行前后端数据交互。整体设计遵循RBAC(基于角色的访问控制)权限模型,将系统划分为基础管理、进货管理、销售管理、系统管理四大核心模块,各模块通过统一网关进行路由分发,确保业务逻辑解耦。
我主要负责系统管理模块中的权限管理子模块开发,该模块需实现角色权限的动态配置与用户权限的实时生效。通过设计“角色-权限”多对多关联表,结合Spring Security框架的注解式权限控制,完成了28项细粒度权限(如客户查询、商品添加、供应商修改等)的动态分配功能。在开发过程中,我独立完成了权限树形结构的前端渲染逻辑,实现了权限编码(如customer:view、provider:update)与后端接口的自动映射,最终使权限配置效率提升40%,用户权限变更后可在5秒内实时生效,支撑了系统内50+用户的并发操作需求。
开发过程中遇到的主要难点是权限缓存一致性问题:当管理员修改角色权限后,已登录用户的权限未及时更新,导致部分用户仍能访问被撤销的权限接口。最初尝试通过Redis的Key失效机制解决,但因缓存穿透导致数据库压力骤增。最终采用“双写一致性”方案:在权限变更时,同步更新数据库与Redis缓存,并通过Spring Event发布权限更新事件,由监听器主动清除对应用户的权限缓存。同时引入Guava Cache作为本地缓存,设置30秒过期时间,既避免了缓存穿透,又保证了权限变更的最终一致性,使系统权限控制的准确率从85%提升至99.8%。