- 博客(30)
- 收藏
- 关注
原创 【烘焙坊项目】后端搭建(14) - 工作台&导出数据报表
本文介绍了商家工作台系统开发及数据报表导出功能的实现。工作台模块包含今日运营数据、订单管理、菜品/套餐总览等功能,通过Controller、Service、DAO三层架构实现数据查询。使用Apache POI实现了30天运营数据Excel报表导出功能,包括模板设计、数据填充和文件下载。开发过程中优化了业务逻辑,实现了日期范围查询复用。项目总结部分提出了待解决的3个问题(员工密码、订单状态、实时刷新)和未来改进方向(AI助手、小程序优化)。整个开发历时17天,显著提升了编码能力和问题解决能力。
2026-03-20 20:10:34
307
原创 【烘焙坊项目】后端搭建(13)- 数据统计--图形报表
本文介绍了基于Apache ECharts实现的数据可视化报表系统开发过程。系统主要包含五个功能模块:营业额统计(计算已完成订单金额)、用户统计(新增/总用户量)、订单统计(有效订单数及完成率)、销量排名Top10(菜品/套餐销量)。各模块均采用三层架构开发,核心逻辑包括:1)处理日期区间数据;2)通过SQL聚合函数统计指标;3)将结果封装为前端所需的逗号分隔字符串格式。开发中需注意sum()与count()的区别,订单统计业务逻辑相对复杂,销量排名SQL语句需考虑多表关联。
2026-03-19 19:26:28
302
原创 【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
本文介绍了SpringTask任务调度和WebSocket实时通信的应用。SpringTask部分讲解了cron表达式定义任务触发时间,并以订单状态定时处理为例,演示了如何自动取消超时订单和完成派送订单。WebSocket部分通过入门案例展示了全双工通信实现,并应用于外卖系统的来单提醒和客户催单功能,实现服务端向管理端实时推送消息。系统采用JSON格式传输数据,包含消息类型、订单ID和内容等字段,通过语音播报和弹窗提示商家及时处理订单。开发过程中解决了前端调试和拦截器等问题,最终实现了预期的实时通知功能。
2026-03-19 08:48:53
305
原创 【烘焙坊项目】后端搭建(11)- 用户&商家订单板块
本文介绍了用户端和商户端的订单管理模块实现。用户端包括历史订单查询、详情查看、订单取消和再来一单功能,采用分页查询和订单状态校验机制。商户端实现订单搜索、状态统计、详情查看及订单状态管理(接单/拒单/取消/派送/完成),其中订单搜索支持多条件查询并返回菜品信息。最后文章总结了相关开发经验
2026-03-18 13:21:35
350
原创 【烘焙坊项目】后端搭建(10) - 地址簿功能&用户下单&微信支付
微信支付产品:付款码支付,JSAPI支付,小程序支付,Native支付,App支付,刷脸支付,掌纹支付参考:https://pay.weixin.qq.com/static/product/product_index.shtml微信小程序支付时序图:JSAPI下单:商户系统调用该接口在微信支付服务后台生成的预支付订单适用对象:直连商户请求方式:POST返回参数参数名变量类型[长度限制]必填描述预支付交易会话标识prepay_id是预支付交易会话标识。
2026-03-16 19:20:29
360
原创 【烘焙坊项目】后端搭建(9)- 缓存实现及购物车相关功能开发
用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。结果:系统响应慢,用户体验差。
2026-03-15 13:24:27
403
原创 【烘焙坊项目】后端搭建(8)- 微信小程序登录及商品浏览
本文介绍了HttpClient工具的使用和微信小程序开发流程。HttpClient是Apache提供的HTTP客户端工具包,支持GET/POST请求,文章详细说明了其核心API和使用步骤,并提供了封装工具类。微信小程序开发部分介绍了注册流程、目录结构和登录功能实现,重点讲解了通过wx.login()获取code并换取openid的登录机制。最后总结了开发注意事项:数据库语句编写需注意空格细节,微信登录流程较复杂需要理清思路,Controller层不同包下同名文件要注意注解,开发时可复用已有代码提高效率。
2026-03-14 14:37:23
374
原创 【烘焙坊项目】后端搭建(7)- 套餐管理界面
本文介绍了餐饮管理系统中套餐功能模块的开发过程,主要包括新增套餐、分页查询、删除、修改以及起售/停售等功能。详细说明了每个功能的需求分析、接口设计、代码实现和测试流程,重点阐述了套餐与菜品关联关系的处理逻辑。开发过程中遇到SQL语句编写和多表查询等问题,通过调试得到解决。系统实现了套餐名称唯一性校验、分类归属、菜品关联等业务规则,并对起售状态进行严格管控。
2026-03-13 09:39:56
356
原创 【烘焙坊项目】后端搭建(6)- 店铺状态设置
摘要:本文介绍了Redis在Java中的常用客户端(Jedis、Lettuce、SpringDataRedis),重点讲解了SpringDataRedis的使用步骤。详细对比了Redis命令与Java方法的对应关系,包括String、Hash、List、Set等数据类型操作。最后以店铺营业状态为例,设计了基于Redis的状态存储方案,约定1表示营业、0表示打烊,并提供了管理端和用户端的查询接口规范,包括请求路径、参数和返回数据结构。
2026-03-12 12:04:49
351
原创 【Redis】学习(3)Redis的Java客户端
摘要:本文介绍了两种Java操作Redis的客户端工具。Jedis客户端使用步骤包括引入依赖、创建连接、执行命令和释放资源,推荐使用Jedis连接池提高性能。SpringDataRedis是Spring整合Redis的模块,提供RedisTemplate统一API,支持多种数据结构和序列化方式。通过配置类可自定义序列化方案,将Key设为String类型,Value设为JSON格式,解决了JDK默认序列化可读性差的问题。文章详细说明了两种客户件的快速入门方法和关键配置要点。
2026-03-11 19:01:09
358
原创 【Redis】学习(2)Redis常见命令
Redis是一个支持多种数据结构的键值数据库,包括String(字符串)、Hash(哈希)、List(列表)、Set(集合)、SortedSet(有序集合)等基本类型,以及GEO(地理位置)、BitMap(位图)、HyperLog(基数统计)等特殊类型。每种类型都有对应的操作命令,如String的SET/GET、Hash的HSET/HGET、List的LPUSH/LPOP等。
2026-03-11 16:01:03
487
原创 【Redis】学习(1)初识Redis
Redis是一种基于内存的键值型NoSQL数据库,具有高性能、支持多种数据结构、单线程原子性操作等特点。与SQL数据库相比,Redis采用非结构化数据存储,无关联性查询,适用于对一致性要求不高但性能要求高的场景。安装Redis需在Linux环境下配置gcc依赖,通过修改redis.conf文件可实现后台运行、密码保护等配置。Redis提供命令行客户端redis-cli和图形化客户端工具,支持多种启动方式(前台/后台/系统服务)。主要配置包括端口、内存限制、日志文件等,可通过systemctl实现服务管理。
2026-03-10 18:48:38
297
原创 【烘焙坊项目】后端搭建(5)- 菜品管理页面
本文介绍了菜品管理系统的开发过程,主要包括新增菜品、分页查询、删除和修改菜品等功能模块。在新增菜品时需遵循名称唯一、必须关联分类等业务规则,并实现了文件上传和菜品口味关联功能。分页查询采用多表连接方式获取菜品和分类信息。删除功能需考虑菜品状态和关联关系,并优化了批量操作性能。修改菜品时需同步更新口味数据。开发过程中发现并修复了新增菜品状态未设置的问题,通过优化SQL查询和参数传递提升了系统性能和可维护性。
2026-03-10 13:57:19
319
原创 【烘焙坊项目】后端搭建(4) - 公共字段自动填充
本文提出通过AOP技术实现公共字段自动填充的解决方案。针对开发中频繁处理创建时间、修改人等公共字段导致的代码冗余问题,采用三步实现:1)定义AutoFill注解标识需填充的方法;2)编写切面类拦截注解方法,利用反射自动赋值;3)在Mapper方法添加注解。该方法有效提升代码复用性和可维护性,符合"高内聚低耦合"原则。实施过程中通过分解切面类开发步骤(获取数据类型、实体对象、操作类型并赋值),解决了AOP应用不熟练的问题。测试表明该方案运行正常,为后续开发提供了高效的技术支持。
2026-03-08 11:52:05
230
原创 【烘焙坊项目】后端搭建 (3)- 分类管理页面
本文详细介绍了餐饮管理系统分类管理模块的开发过程,主要包括分类分页查询、新增分类、启用/禁用分类、编辑分类、删除分类以及按类型查询分类等功能。开发过程遵循需求分析、接口设计、代码实现(Controller、Service、DAO层)和功能测试的标准流程。作者在开发过程中总结了经验教训:需要加强PageHelper分页查询的熟练度,注意前后端数据传递细节,合理安排接口开发顺序,并特别强调删除分类时要考虑与菜品/套餐的关联关系。
2026-03-07 17:36:28
359
原创 【烘焙坊项目】后端搭建(2) - 员工管理页面
本文总结了员工管理系统的开发过程,主要包括新增员工、分页查询、启用禁用账号和编辑员工四大功能模块。开发采用三层架构设计,使用DTO进行数据传输,通过PageHelper实现分页查询。针对日期格式化问题,采用统一的消息转换器处理。在开发过程中遇到前后端对接异常(token格式不一致)、用户名重复校验等问题,通过修改请求头格式、使用ThreadLocal获取用户信息等方式解决。作者反思了项目开发中的经验教训,包括问题排查方法、代码版本管理的重要性,以及需要提高前后端协同开发能力,整体实现了员工管理的基本功能。
2026-03-07 08:07:17
377
原创 【测试】Swagger
本文介绍了Knife4j接口文档工具的集成步骤:1)在pom.xml中添加依赖;2)在WebMvcConfiguration配置类中设置Knife4j相关配置;3)配置静态资源映射路径,包括/doc.html和/webjars/**的访问路径;4)重启项目后即可通过控制台访问接口文档页面进行调试。全文重点说明了Knife4j的配置方法和静态资源映射的必要性。
2026-03-05 08:34:24
33
原创 【SpringBoot】原理
摘要:本文介绍了SpringBoot的核心配置与原理。配置方面,详细说明了.properties、.yml和.yaml三种配置文件的优先级顺序,以及命令行参数、系统属性和环境变量的优先级规则。在Bean管理部分,阐述了三种获取bean的方式、五种bean作用域及其配置方法,以及第三方bean的声明方式。最后深入解析了SpringBoot的起步依赖原理和自动配置机制,包括@ComponentScan、@Import等注解的使用方式,以及@SpringBootApplication注解的组成结构和实现原理。
2026-01-04 08:39:50
1019
原创 Tomcat 端口被占用问题
摘要:在测试一个项目的jar包后,另一个项目因端口占用无法启动。即使终端终止程序,IDEA仍运行失败,删除jar包文件也提示正在运行。最终通过终端定位进程PID并强制终止(使用管理员权限执行Stop-Process命令)。完成后IDEA成功运行。问题由残留进程占用导致,需强制终止才能解决。
2026-01-03 16:39:25
163
原创 【Spring】AOP
摘要:本文系统介绍了Spring AOP(面向切面编程)的核心概念与应用。主要内容包括:1)AOP基础概念,如连接点、通知、切入点等;2)五种通知类型(环绕、前置、后置等)及其使用场景;3)切入点表达式的两种主要写法(execution和@annotation);4)通过实际案例演示如何记录操作日志,包括自定义注解、切面类实现及数据库存储。文章还详细说明了通知执行顺序控制、连接点信息获取等进阶内容,并提供了完整的代码示例。AOP能有效实现日志记录、权限控制等横切关注点,具有代码无侵入、提高开发效率等优势。
2026-01-03 13:28:28
837
原创 aop导包失败问题
摘要:本文记录了解决SpringBoot项目中"spring-boot-starter-aop"依赖报错问题的过程。先后排查了版本兼容性、Maven仓库配置、依赖书写错误等问题,尝试修改settings.xml配置、调整源码目录标记、切换SpringBoot和JDK版本均未解决。最终通过从Maven中央仓库直接导入正确依赖的方式成功解决问题。整个调试过程涉及多次配置修改与回退,展现了典型依赖管理问题的解决思路。
2026-01-02 16:24:49
171
原创 【Spring】事务管理
摘要:本文介绍了Spring事务管理的基本概念和使用方法。通过@Transactional注解实现事务控制,包括事务的开启、提交和回滚操作。重点讲解了事务传播行为(propagation)的不同属性值及其应用场景,并以部门解散操作为例,展示了如何通过REQUIRES_NEW传播行为确保日志记录不受主事务回滚影响。同时说明了rollbackFor属性的作用,以及如何通过Lombok简化实体类开发。该示例完整演示了事务管理的实际应用,包括Service层实现、异常处理和日志记录的全过程。
2026-01-02 10:18:06
1009
原创 logging的level节点报错问题
一开始以为是缩进问题(yml配置文件缩进需要2/4个空格),尝试后仍然报错。最后发现是未在键值对后空格(即光标位置)!debug前要空格!然后想到是不是不小心打成中文冒号了,改动后仍然报错。询问豆老师提到可能是插件问题,多番尝试仍旧报错。
2026-01-01 13:39:13
152
原创 【Spring】jwt令牌&拦截器Interceptor—登陆认证
本文介绍了基于JWT令牌的登录认证及拦截器实现方案。主要内容包括:1. JWT令牌的结构和登录实现流程;2. 拦截器Interceptor的实现步骤,通过preHandle方法进行请求验证,包括URL检查、令牌校验等;3. 全局异常处理机制,统一捕获并返回JSON格式错误信息。系统采用JWT进行身份认证,登录成功后下发令牌,后续请求需携带令牌进行验证。拦截器对非登录请求进行令牌验证,为Web应用提供了可靠的身份验证解决方案。
2026-01-01 12:48:49
910
原创 JAVA入门2(1):基础语法
(3)在计算机中,数据通常以字节为单位进行存贮和传输,而比特则是用来表示数据的最小单位。*(3)int:占用四字节的常用整数,默认值为0,范围为-2147483648~2147483647。(1)boolean:占用一字节的用于逻辑判断的数据类型,默认值为false(true/false)(2)short:占用二字节的中等大小整数,默认值为0,范围为-32768~23767。(1)byte:占用一字节的小整数,默认值为0,范围为-128~127。(3)二进制位最高位称符号位,0为正数,1为负数。
2025-09-13 19:54:32
250
1
原创 Java入门1:常用键位与环境(含windows)
classpath是负责给classloader(类加载器)指路的,java 命令执行后,先启动JVM,JVM启动classloader,classloader通过classpath找class文件。若classpath有配置的话,则classloader只会跟从classpath设置的路径找class文件,不经过当下路径找。使用DOS命令后windows会先从当下路径查找该命令,再从PATH路径下寻找,找到则执行,找不到则报错。ps:Java EE和Java ME皆是基于Java SE的进阶版。
2025-09-07 18:21:55
961
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅