目录
文章末尾免费获取源码、软件和教程~
系统背景
最初的超市资料管理,都是靠人力来完成的。但近几年我国超市经营规模日趋扩大,销售额和门店数量大幅度增加,而且许多超市正在突破以食品为主的传统格局,向品种多样化发展。小型超市在业务上需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息,并对商品各种信息进行统计分析。因此,在超市管理中引进现代化的办公软件,实现超市庞大商品的控制和传输,从而方便销售行业的管理和决策,为超市和超市管理人员解除后顾之忧。
一款好的超市销售管理系统,应该是可以帮助销售部门提高工作效率,帮助超市工作人员利用计算机,极为方便的对超市的有关数据进行管理、输入、输出、查找等有关操作,使杂乱的超市数据能够具体化、直观化、合理化等。
系统总体设计
运行环境
-
Java 开发工具包:jdk v1.8
-
JavaScript运行环境:nodejs v14.15.0
-
Java依赖管理工具:maven v3.3.9
-
后端代码开发工具:idea
-
前端代码开发工具:WebStorm
-
数据库可视化工具:Navicat
-
数据库:MySQL
技术选型
-
SpringBoot
-
MybatisPlus
-
Vue
-
ElementUI
-
Echarts
-
JWT
系统架构
系统用例
不同的角色具有不同的功能
系统详细设计
系统功能截图
首页统计
通过图表直观查看当天统计数据
RBAC权限管理
分配不同的角色不同权限
商品管理
订单管理
销量统计
售后订单
收银系统
商品采购
供应商管理
采购统计
系统核心功能设计
RBAC权限设计
RBAC权限设计,用于给不同用户分配不同的角色,不同的角色分配不同的权限。从而实现不同的用户有自己界面。
核心代码如下:
@RestController @RequestMapping("/sys/role") public class SysRoleController extends AbstractController { @Autowired private SysRoleService sysRoleService; @Autowired private SysRoleMenuService sysRoleMenuService; /** * 角色列表 */ @GetMapping("/list") @RequiresPermissions("sys:role:list") public R list(@RequestParam Map<String, Object> params){ //如果不是超级管理员,则只查询自己创建的角色列表 if(getUserId() != Constant.SUPER_ADMIN){ params.put("createUserId", getUserId()); } PageUtils page = sysRoleService.queryPage(params); return R.ok().put("page", page); } /** * 角色列表 */ @GetMapping("/select") @RequiresPermissions("sys:role:select") public R select(){ Map<String, Object> map = new HashMap<>(); //如果不是超级管理员,则只查询自己所拥有的角色列表 if(getUserId() != Constant.SUPER_ADMIN){ map.put("create_user_id", getUserId()); } List<SysRoleEntity> list = (List<SysRoleEntity>) sysRoleService.listByMap(map); return R.ok().put("list", list); } /** * 角色信息 */ @GetMapping("/info/{roleId}") @RequiresPermissions("sys:role:info") public R info(@PathVariable("roleId") Long roleId){ SysRoleEntity role = sysRoleService.getById(roleId); //查询角色对应的菜单 List<Long> menuIdList = sysRoleMenuService.queryMenuIdList(roleId); role.setMenuIdList(menuIdList); return R.ok().put("role", role); } /** * 保存角色 */ @SysLog("保存角色") @PostMapping("/save") @RequiresPermissions("sys:role:save") public R save(@RequestBody SysRoleEntity role){ ValidatorUtils.validateEntity(role); role.setCreateUserId(getUserId()); sysRoleService.saveRole(role); return R.ok(); } /** * 修改角色 */ @SysLog("修改角色") @PostMapping("/update") @RequiresPermissions("sys:role:update") public R update(@RequestBody SysRoleEntity role){ ValidatorUtils.validateEntity(role); role.setCreateUserId(getUserId()); sysRoleService.update(role); return R.ok(); } /** * 删除角色 */ @SysLog("删除角色") @PostMapping("/delete") @RequiresPermissions("sys:role:delete") public R delete(@RequestBody Long[] roleIds){ sysRoleService.deleteBatch(roleIds); return R.ok(); } }
逻辑删除
表采用逻辑删除,企业应用都不会真实地从数据库删除数据,而是进行伪删除,极大地提高了系统安全性和可恢复性。每个实体类有添加@TableLogic
核心代码如下:
EXCEL数据导出功能
支持页面数据导出
EXCEL数据导入功能
支持下载excel模板,填入数据后,支持数据导入
SQL监控
引入SQL监控插件,可以查看每条sql的执行次数和执行时间等相关信息,从而方便进行系统优化
MD5加密
密码采用加密,就算是后台人员也无法直接查看和破解密码,极大保障用户数据安全
RESTful架构风格
采用这种架构风格,前后端对接能很好地进行交互
代码如下:
@RestController @RequestMapping("generator/mallgoods") public class MallGoodsController extends AbstractController { @Autowired private MallGoodsService mallGoodsService; /** * 列表 */ @RequestMapping("/list") @RequiresPermissions("generator:mallgoods:list") public R list(@RequestParam Map<String, Object> params){ PageUtils page = mallGoodsService.queryPage(params); return R.ok().put("page", page); } /** * 列表 */ @RequestMapping("/queryAll") @RequiresPermissions("generator:mallgoods:list") public R queryAll(){ List<MallGoodsEntity> all = mallGoodsService.list(); return R.ok().put("all", all); } /** * 信息 */ @RequestMapping("/info/{id}") @RequiresPermissions("generator:mallgoods:info") public R info(@PathVariable("id") Long id){ MallGoodsEntity mallGoods = mallGoodsService.getById(id); return R.ok().put("mallGoods", mallGoods); } /** * 保存 */ @RequestMapping("/save") @RequiresPermissions("generator:mallgoods:save") public R save(@RequestBody MallGoodsEntity mallGoods){ mallGoods.setSalesCount(0L); mallGoods.setStock(0L); mallGoods.setCreateUserId(getUserId()); mallGoods.setUpdateUserId(getUserId()); Date date = new Date(); mallGoods.setCreateTime(date); mallGoods.setUpdateTime(date); mallGoodsService.save(mallGoods); return R.ok(); } /** * 修改 */ @RequestMapping("/update") @RequiresPermissions("generator:mallgoods:update") public R update(@RequestBody MallGoodsEntity mallGoods){ mallGoods.setUpdateUserId(getUserId()); Date date = new Date(); mallGoods.setUpdateTime(date); mallGoodsService.updateById(mallGoods); return R.ok(); } /** * 删除 */ @RequestMapping("/delete") @RequiresPermissions("generator:mallgoods:delete") public R delete(@RequestBody Long[] ids){ mallGoodsService.removeByIds(Arrays.asList(ids)); return R.ok(); } }
数据存储设计
模型图
表结构
-
商品信息
-
商品分类
-
商品采购订单
-
商品采购单明细
-
供应商
-
订单
-
订单明细
-
售后订单
-
售后订单明细
获取源码
觉得不错就点赞、收藏、关注、评论 吧。致力于将企业开发模式运用于项目学习中,在项目的学习中,同时了解企业开发模式和业务设计。系统包含源码、全套安装软件和视频安装教程。详情私聊我吧。