听书项目 Day 02|专辑新增与列表管理
记录专辑标签查询、添加专辑、列表检索、删除与修改流程,重点整理关联数据的保存及接口分层。 本篇要点 按分类查询专辑属性与标签 保存专辑及关联信息 完成列表、删除和修改接口 内容回顾1、搭建项目环境 软件环境 项目工程 docker start spzx_rabbitmq 搭建前端环境 2、专辑管理 添加专辑需求 查询所有分类接口(三级分类) 上传文件接口 – 在配置文件里面有数据 yaml 或者 properties 今天内容1、添加专辑功能 根据一级分类Id获取专辑标签对应数据接口效果 表关系123456789101112131415# base_attribute:标签(属性)名称,有一级分类idselect ba.attribute_name from base_attribute ba where ba.category1_id=2;# base_attribute_value: 属性名称下面哪些值,attribute_id关联属性名称# 获取属性名称和对应值,两张表关联查询select ba.category1_id,ba.attribute_na...
听书项目 Day 01|项目搭建与专辑管理
从听书项目概览和技术栈入手,记录开发环境、Maven 工程、分类接口、专辑管理及前端环境搭建的学习过程。 本篇要点 认识项目模块与技术栈 准备环境并搭建工程 梳理分类和专辑管理入口 内容回顾1、JVM 2、JUC 线程池 – 自定义线程池 ThreadPoolExecutor,传递7个参数 – 核心线程数规则 : IO密集型 2N +1 ,CPU密集型 N+1 – 为什么不使用Executors工具类创建?而是自定义创建线程池 3、MySQL高级 索引底层结构 SQL优化 – 单表 – 多表(关联查询) 今天内容1、项目概述总体概述 谷粒随享,阅读类听书项目,类似于喜马拉雅 我们项目运行在微信小程序中 技术栈 SpringBoot:简化Spring应用的初始搭建以及开发过程 SpringBoot+SpringCloudAlibaba(Nacos)+OpenFeign+Gateway MyBatis-Plus:持久层框架,也依赖mybatis Redis:内存做缓存 MongoDB: 分布式文件存储的数据库 Rabbitmq:消息中间件;大型分布式项...
部署
这篇最初记录的是登录拦截器与 ThreadLocal,并非完整部署流水账。下面保留原笔记,在文末补充课程文档中的本地部署方案;方案笔记不等于已经完成线上部署。 TreadLocal保存当前用户信息1.1 ThreadLocal概述 ThreadLocal是Java中用于实现线程局部变量的工具类,它为每个线程提供独立的变量副本,解决多线程环境下的数据隔离问题。其核心原理是通过ThreadLocalMap存储线程专属数据,避免同步开销,适用于数据库连接管理、用户会话存储等场景,但需注意内存泄露风险 ThreadLocal和当前线程绑定到一起,当前线程结束了,ThreadLocal就没有了 ThreadLoca没有了具体指的是 当前对象 没有了,值还存在 map.set(this, value); this 没有了,value还在内存中 手动清除value值,remove方法,不然造成内存泄露 1.2 使用场景接口:获取登录用户个人信息 登录成功后,跳转到主页面中,在主页面里面调用接口,获取当前登录成功的用户信息(用户名或者头像等) 分析过程 浏览器发送请求,首先到拦截器,拦...
后台登录验证码管理
本文保留了两段不同的学习记录:前半是后台管理的图形验证码,后半是移动端的短信验证码登录。两者面对的用户和校验方式不同,阅读时不要将后台登录接口与移动端手机号登录接口混用。 后台管理登录生成图片验证码接口1. 在common中引入EasyCaptcha依赖1234<dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId></dependency> 2. 在common中引入redis依赖1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> 3. 在web-admin配置文件中配置redis信息...
用户和登录模块
平台用户管理数据表user_info 先区分两类用户user_info 对应移动端租房用户;后台员工信息由系统用户相关数据维护。两类用户的使用场景不同,阅读或设计接口时不要把“平台用户管理”和“后台系统用户管理”混为一谈。 结合用户与登录篇,平台用户管理先围绕两件事展开:按手机号和状态进行条件分页,以及根据用户 ID 修改账号状态。列表返回时还要注意密码等敏感字段,不应直接作为普通用户资料展示。 后台系统管理的接口范围 岗位管理:分页、保存或更新、删除、查询与状态调整。 后台用户管理:按姓名或手机号查询,查看详情,保存或更新用户,并处理用户名可用性与账号状态。 登录管理:获取图形验证码、登录、获取当前登录用户信息,以及对受保护接口校验令牌。 这几个部分的调用关系是“维护后台账号与岗位 → 登录校验 → 后续请求携带令牌访问接口”,不是单独完成某个登录接口就结束。 登录链路的阅读顺序 获取图形验证码,服务端保存验证码及对应 key。 登录时先核对验证码,再查询后台账号、检查账号状态和密码,成功后签发 JWT。 前端在后续请求的 Header 中携带令牌;拦截器统一解析和校验,放行...
租赁管理模块
模块导读租赁管理不只有到期任务。参考项目笔记,后台先管理看房预约,再管理租约:预约侧包括条件分页与状态更新;租约侧包括保存或更新、条件分页、详情、删除和状态更新,最后由定时任务处理到期状态。本文原先重点记录的定时任务代码保留在下方。 阅读租约相关接口时,建议同时关注房间、公寓、租期和支付方式之间的关系。笔记中的租约详情会在查询租约后,再组装对应的公寓、房间、支付方式与租期信息,避免列表字段和详情字段混淆。 状态更新也要区分人工操作与到期任务:笔记里的通用状态更新接口是教学写法,实际业务不能让请求任意跳转状态;下方定时任务只筛选到期且处于指定状态的租约,再批量更新为已过期。 租约过期修改状态功能定时任务 SpringBoot定时任务 在SpringBoot启动类上增加@EnableScheduling注解 12345678@SpringBootApplication@EnableSchedulingpublic class AdminWebApplication { public static void main(String[] args) { ...
房间管理模块
房间管理模块接口一:保存或更新房间信息根据项目笔记,后台房间管理围绕六个接口展开:保存或更新、条件分页、详情、删除、修改发布状态,以及按公寓查询房间。下面先补充保存或更新接口的数据关系,便于后续对照实际代码。 请求数据与关联关系RoomSubmitVo 在房间基本信息之外,还携带图片列表、属性值 ID、配套 ID、标签 ID、支付方式 ID 和可选租期 ID。房间本体与这些信息不是同一张表;保存房间后,需要用房间 ID 维护对应的图片记录和关联记录。 更新时,项目笔记采用“清理原关联数据,再写入本次提交的关联数据”的方式。理解这一步时要把主表和关联表一起看:只更新 room_info,页面详情中看到的图片、配套或租期仍可能是旧数据。多表写入也应作为一个整体考虑,避免执行到一半留下不一致的关系。 其余五个接口怎么读 接口 重点核对 条件分页 RoomQueryVo 按省、市、区和公寓筛选;列表结果还包含所属公寓与入住信息。 房间详情 在房间基本信息上组装公寓、图片、属性、配套、标签、支付方式和租期。 删除房间 除房间本体外,还需处理图片及各类关联记录。 修改发...
房间租期管理+标签管理+配套管理
本文不仅记录租期、标签和配套,还延伸到基本属性、杂费、地区、图片上传与公寓信息管理。内容较长,可先按下列脉络定位,再阅读原始接口和代码笔记。 阅读脉络 基础资料:租期、标签、配套、房间基本属性和公寓杂费,先确认各自的数据表与查询/维护接口。 地区与图片:地区接口为公寓地址选择提供数据;上传接口使用 MinIO 保存图片,数据库中记录的是后续展示需要的关联信息。 公寓信息:保存或更新时处理公寓本体及其图片、标签、配套等关联信息;分页列表与详情页再按不同需要组装结果。 状态与关联查询:删除、发布状态修改、按区县查询公寓各有不同用途,不要把下架等同于删除。 下面保留原有的接口实现记录。由于文章跨越多个模块,调试时建议先验证基础资料,再验证公寓保存和详情,最后检查删除与发布状态的影响。 房间租期管理1. 找到对应的数据库 房间租期数据库表lease_term 2. 设计接口接口1:查询全部租期列表123456@GetMapping("list")@Operation(summary = "查询全部租期列表")public Resu...
房间支付方式管理
本文记录尚庭公寓项目中 房间支付方式管理 模块的开发过程,主要包括接口分析、Controller 编写、Knife4j 测试、逻辑删除配置以及统一返回结果封装。 一、开发前准备在正式开发接口之前,首先要确认是否有完整的接口文档。 1. 有接口文档如果项目已经提供接口文档,需要先阅读接口说明,明确以下内容: 接口路径 请求方式 请求参数 返回结果 对接人或负责人 拿到接口文档后,最好提前和负责人确认:如果开发过程中遇到问题,应该找谁沟通。 2. 没有接口文档如果没有接口文档,不要直接凭感觉开发,而是要进一步询问需求细节。 例如: 这个接口给谁使用? 前端需要哪些字段? 是否需要分页? 是否需要逻辑删除? 返回格式是否统一? 这样可以避免后期返工。 二、开发步骤1. 找到对应的数据表本模块对应的数据表为: 1payment_type 该表主要用于保存房间支持的支付方式信息,例如月付、季付、半年付等。 2. 设计接口房间支付方式管理主要包含以下接口: 接口功能 请求方式 接口路径 说明 查询全部支付方式 GET /list 查询所有未删除的支付方式 ...
搭建后端环境
今天开始“尚庭公寓”,这是搭建后端环境所需要注意的内容 1. 创建数据库、表create database lease; use lease; 执行sql语句 2. 导入核心代码模版解压后打开 注意修改maven地址 3. 熟悉3.1 工程类型:maven聚合工程3.2 每个模块的作用3.3 项目使用技术 – pom.xml 项目使用技术SpringBoot、MyBatisPlus、MinIO、Knife4j、MySQL(引入的依赖可以看到) 4. 结合项目笔记补全搭建顺序上面是我开始项目时记录的操作要点。结合项目搭建篇,准备工作可以按下面的顺序核对: 创建 lease 数据库并导入项目提供的 lease.sql。建库时使用 utf8mb4 字符集,避免后续中文或特殊字符写入时出现编码问题。 确认这是 Maven 聚合工程:根模块负责统一依赖和版本,model 放实体与枚举,common 放公共配置和工具,web-admin 与 web-app 分别承载后台和移动端接口。 检查 JDK、Maven 与项目 pom.xml 的版本是否匹配,再启动后台模块。不要...
