超市管理系统项目分析
1. 项目结构(文件级别)
这是一个基于Spring Boot的超市管理系统项目,采用MVC架构设计。以下是项目的主要文件结构:
1.1 源代码结构(src/main/java/com/zfz/supermarket)
主应用程序
SpuermarketApplication.java
: 项目入口类,配置了Mapper扫描
配置类
config/ConstantsConfig.java
: 系统常量配置config/CorsConfig.java
: 跨域配置config/ShiroConfig.java
: Shiro安全框架配置
控制器层
controller/CashierController.java
: 收银管理controller/CodeController.java
: 编码相关controller/ExcelController.java
: Excel导出功能controller/FileUploadController.java
: 文件上传controller/GoodsCategoryController.java
: 商品分类管理controller/GoodsController.java
: 商品管理controller/IndexController.java
: 首页控制controller/LoginControlle.java
: 登录控制controller/OrderController.java
: 订单管理controller/ReceiptsController.java
: 收据管理controller/ReceiptsDetailsController.java
: 收据明细管理controller/RoleController.java
: 角色管理controller/StockInController.java
: 入库管理controller/StockOutController.java
: 出库管理controller/StockpileController.java
: 库存管理controller/UserController.java
: 用户管理
数据访问层
mapper/
: 包含所有数据库操作的Mapper接口
实体类
pojo/
: 包含所有数据库表对应的实体类
服务层
service/
: 包含所有业务逻辑接口service/impl/
: 包含所有业务逻辑实现
安全认证
shiro/CostomRealm.java
: 自定义Realm实现认证和授权
工具类
utils/CodeUtil.java
: 二维码生成工具utils/DateUtil.java
: 日期工具utils/FileUtil.java
: 文件处理工具utils/ImageUtil.java
: 图片处理工具utils/ReMap.java
: 响应数据封装utils/ReMapUtil.java
: 响应数据工具
1.2 资源文件结构(src/main/resources)
配置文件
application.yml
: 系统配置文件,包含数据库连接、日志级别等配置
静态资源
static/css/
: CSS样式文件static/js/
: JavaScript文件static/img/
: 图片资源static/fonts/
: 字体文件
视图模板
templates/
: Thymeleaf模板文件,包含所有前端页面
1.3 其他重要文件
pom.xml
: Maven项目依赖配置supermarket.sql
: 数据库脚本文件超市管理系统(ER图)-v1.0.vsdx
: 系统实体关系图超市管理系统(数据库模型图).vsdx
: 数据库模型图
2. 练习的知识点
这个项目练习了以下主要知识点:
- Spring Boot框架应用:项目整体基于Spring Boot构建,使用自动配置和依赖管理
- MyBatis ORM框架:使用MyBatis进行数据库操作,配置了Mapper扫描
- Shiro安全框架:实现了认证和授权功能,控制不同用户角色的权限
- Thymeleaf模板引擎:用于前端页面渲染
- POI Excel导出:实现了数据导出为Excel文件的功能
- 二维码生成:使用第三方库生成二维码
- 文件上传与管理:实现了文件上传、存储和访问功能
- 分页查询:使用PageHelper实现数据分页功能
- RESTful API设计:设计了符合REST风格的接口
- MySQL数据库操作:包含表设计、数据操作等
- Maven项目管理:使用Maven管理项目依赖
3. 核心文件功能分析
3.1 配置文件
application.yml
:配置了服务器端口、数据库连接信息、PageHelper分页插件和日志级别
3.2 控制器文件
GoodsController.java
:实现商品的增删改查功能,并包含二维码生成功能CashierController.java
:实现收银功能,包括商品添加、挂单、收银等操作OrderController.java
:实现订单创建、支付和查询功能ExcelController.java
:实现数据导出为Excel文件功能
3.3 工具类
CodeUtil.java
:实现二维码生成功能,使用第三方QRCode库FileUtil.java
:文件处理工具,包括文件加载、存储等功能ImageUtil.java
:图片处理工具,包括图片转换等功能
3.4 安全认证
ShiroConfig.java
:配置Shiro安全框架,设置过滤规则和认证跳转CostomRealm.java
:自定义Realm实现,负责用户认证和权限授权
4. 项目总结
这是一个功能完整的超市管理系统,主要实现了以下功能模块:
- 商品管理:商品的添加、修改、删除、查询,以及商品分类管理
- 收银管理:商品扫描、挂单、收银、订单创建等功能
- 库存管理:商品入库、出库、库存查询等功能
- 订单管理:订单查询、统计、支付记录等功能
- 用户与权限管理:用户管理、角色管理、权限分配等功能
- 数据导出:将系统数据导出为Excel文件
- 文件管理:文件上传、存储和访问
系统采用了Spring Boot + MyBatis + Shiro的技术栈,前端使用了Bootstrap等框架,实现了一个完整的企业级应用系统。
5. 除增删改查外的其他功能
除了基本的增删改查功能外,项目还包含以下特色功能:
5.1 二维码生成功能
// 二维码生成工具类,使用QRCode库生成二维码图片
public static String CreateQRCode(String content){
//计算二维码图片的高宽比
int v =12;
int width = 67 + 12 * (v - 1);
int height = 67 + 12 * (v - 1);
Qrcode x = new Qrcode();
x.setQrcodeErrorCorrect('L'); // 设置纠错等级
x.setQrcodeEncodeMode('B'); // 设置编码模式
x.setQrcodeVersion(v); // 设置版本号
// 生成二维码并转换为Base64字符串返回
// ...
return ImageUtil.bufferedImageToBase64(bufferedImage);
}
5.2 Excel导出功能
// Excel导出功能,将收据数据导出为Excel文件
@RequiresPermissions("excel:download")
@RequestMapping("downloadExcel")
public ResponseEntity<Resource> downloadExcel(Integer rid, HttpServletRequest request){
// 获取收据数据
Receipts receiptsByRID = receiptsService.findReceiptsByRID(rid);
List<CashierGoodsVo> cashierGoodsVos = detailsService.listCashierGoodVoByRID(rid);
// 使用模板生成Excel文件
ReceiptsExcelTemplate receiptsExcelTemplate = new ReceiptsExcelTemplate(receiptsByRID,cashierGoodsVos);
File file = receiptsExcelTemplate.getWorkbookFile();
// 设置响应头,返回文件下载
// ...
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"")
.body(resource);
}
5.3 收银挂单功能
// 收银挂单功能,实现商品临时保存和恢复
@RequiresPermissions("cashier:goods")
@PostMapping("cashier/goods")
@ResponseBody
public ReMap goods(@RequestParam(defaultValue = "cashier_1") String pageNum, HttpServletRequest request){
// 获取当前会话的商品数据
List<CashierGoodsVo> goods = cashierService.goods(request.getSession().getId(), pageNum);
Map map = new HashMap<>();
map.put("goods",goods);
// 获取挂单数据
Map map1 = ConstantsConfig.cashierMap.get(request.getSession().getId());
if (map1!=null){
map.put("hang_one_keys",map1.keySet());
}
return ReMapUtil.success(map);
}
5.4 安全认证与权限管理
项目使用Shiro框架实现了完整的安全认证和权限管理功能,包括:
- 用户登录认证
- 角色管理
- 权限控制
- 页面元素级别的权限控制
这些功能使得系统能够根据用户角色和权限限制不同用户对系统功能的访问,提高了系统的安全性。
5.5 文件上传与管理
系统实现了文件上传、存储和访问功能,支持各种类型文件的上传和管理,为商品图片、收据附件等提供了存储支持。
6. 总结
这个超市管理系统是一个功能完整的企业级应用系统,通过练习实现了Spring Boot、MyBatis、Shiro等主流框架的应用,同时包含了二维码生成、Excel导出、文件上传等实用功能,是一个很好的全栈开发练习项目。