目录
文章末尾免费获取源码、软件和教程~
系统背景
最初的超市资料管理,都是靠人力来完成的。但近几年我国超市经营规模日趋扩大,销售额和门店数量大幅度增加,而且许多超市正在突破以食品为主的传统格局,向品种多样化发展。小型超市在业务上需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息,并对商品各种信息进行统计分析。因此,在超市管理中引进现代化的办公软件,实现超市庞大商品的控制和传输,从而方便销售行业的管理和决策,为超市和超市管理人员解除后顾之忧。
一款好的超市销售管理系统,应该是可以帮助销售部门提高工作效率,帮助超市工作人员利用计算机,极为方便的对超市的有关数据进行管理、输入、输出、查找等有关操作,使杂乱的超市数据能够具体化、直观化、合理化等。
系统总体设计
运行环境
-
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();
}
}
数据存储设计
模型图

表结构
-
商品信息

-
商品分类

-
商品采购订单

-
商品采购单明细

-
供应商

-
订单

-
订单明细

-
售后订单

-
售后订单明细

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

被折叠的 条评论
为什么被折叠?



