基于Java+SpringBoot+Vue+ElementUI的超市管理系统

目录

系统背景

系统总体设计

运行环境

技术选型

系统架构

系统用例

系统详细设计

系统功能截图

首页统计

RBAC权限管理

商品管理

订单管理

销量统计

售后订单

收银系统

商品采购

供应商管理

采购统计

系统核心功能设计

RBAC权限设计

逻辑删除

EXCEL数据导出功能

EXCEL数据导入功能

SQL监控

MD5加密

RESTful架构风格

数据存储设计

模型图

表结构

获取源码


文章末尾免费获取源码、软件和教程~

系统背景

最初的超市资料管理,都是靠人力来完成的。但近几年我国超市经营规模日趋扩大,销售额和门店数量大幅度增加,而且许多超市正在突破以食品为主的传统格局,向品种多样化发展。小型超市在业务上需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息,并对商品各种信息进行统计分析。因此,在超市管理中引进现代化的办公软件,实现超市庞大商品的控制和传输,从而方便销售行业的管理和决策,为超市和超市管理人员解除后顾之忧。

一款好的超市销售管理系统,应该是可以帮助销售部门提高工作效率,帮助超市工作人员利用计算机,极为方便的对超市的有关数据进行管理、输入、输出、查找等有关操作,使杂乱的超市数据能够具体化、直观化、合理化等。

系统总体设计

运行环境

  • 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();
    }
​
}

数据存储设计

模型图

表结构

  • 商品信息

  • 商品分类

  • 商品采购订单

  • 商品采购单明细

  • 供应商

  • 订单

  • 订单明细

  • 售后订单

  • 售后订单明细

获取源码

觉得不错就点赞、收藏、关注、评论 吧。致力于将企业开发模式运用于项目学习中,在项目的学习中,同时了解企业开发模式和业务设计。系统包含源码、全套安装软件和视频安装教程。详情私聊我吧。

这是一个基于SSM(Spring+Spring MVC+MyBatis)技术的学校小卖部收银系统毕业设计项目。本项目旨在为学校小卖部提供一个便捷、高效的收银管理系统,实现商品销售、库存管理、统计分析等功能。以下是关于这个项目的详细介绍: 1. 项目背景: 学校小卖部是一个重要的校园服务设施,为学生提供了方便快捷的购物体验。然而,目前许多学校小卖部的收银管理仍然依赖于人工操作,存在效率低下、易出错等问题。因此,开发一个基于SSM技术的学校小卖部收银系统具有很大的现实意义。 2. 项目功能: 本项目的主要功能如下: * 商品管理:管理员可以添加、编辑、删除商品信息,包括商品名称、价格、库存等信息。 * 订单管理:用户可以选择商品进行购买,生成订单并进行支付。管理员可以查看订单详情和处理异常订单。 * 用户管理:用户可以注册成为平台用户,登录后进行商品浏览、下单、支付等操作。 * 收银管理:系统提供了多种收银方式,包括现金、支付宝、微信等,方便商家进行结算。 * 统计分析:系统提供了丰富的统计分析功能,包括销售额、利润、客流量等报表,方便商家进行数据分析和管理决策。 3. 技术架构: 本项目采用SSM(Spring+Spring MVC+MyBatis)技术进行开发。其中,Spring负责控制反转和依赖注入;Spring MVC用于处理Web请求和响应;MyBatis用于实现数据库操作。此外,还使用了Eclipse和IntelliJ IDEA等开发工具进行代码编写和调试。 4. 部署说明: 本项目的部署说明包括以下步骤: * 将源码导入到Eclipse或IntelliJ IDEA中。 * 在MySQL数据库中创建相应的数据表(如用户表、商品表、订单表等)。 * 在Tomcat或Jetty等服务器上部署项目,配置相关参数(如端口号、数据库连接信息等)。 5. 演示视频: 本项目提供了一段演示视频,展示了平台的基本功能和使用方法。观看视频可以帮助用户更直观地了解项目的实现细节和操作流程。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值