diff --git a/.idea/misc.xml b/.idea/misc.xml index d2ae99c6..c3a21329 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,9 +8,4 @@ - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7f..3f7fff95 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/back/src/main/java/com/SpringbootSchemaApplication.java b/back/src/main/java/com/SpringbootSchemaApplication.java index bc07f40d..f0d4da2e 100644 --- a/back/src/main/java/com/SpringbootSchemaApplication.java +++ b/back/src/main/java/com/SpringbootSchemaApplication.java @@ -1,21 +1,54 @@ package com; +// 导入 MyBatis-Spring 框架提供的注解,用于扫描指定包下的 Mapper 接口 +// 扫描后 Spring 会自动为这些接口创建代理对象,从而实现数据库操作 import org.mybatis.spring.annotation.MapperScan; +// 导入 Spring Boot 应用启动相关的类,该类可用于启动 Spring Boot 应用 import org.springframework.boot.SpringApplication; +// 导入 Spring Boot 自动配置注解,启用 Spring Boot 的自动配置功能 +// 它会根据项目依赖自动配置 Spring 应用的各种组件 import org.springframework.boot.autoconfigure.SpringBootApplication; +// 导入 Spring Boot 应用构建器类,用于构建 Spring Boot 应用实例 import org.springframework.boot.builder.SpringApplicationBuilder; +// 导入 Spring Boot 支持 Servlet 容器部署的初始化器类 +// 继承该类可使 Spring Boot 应用以 WAR 包形式部署到外部 Servlet 容器 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +/** + * Spring Boot 应用的主类,作为整个应用的启动入口。 + * 它整合了 Spring Boot 的自动配置功能和 MyBatis 的 Mapper 扫描功能, + * 并且支持将应用打包成 WAR 包部署到外部 Servlet 容器中。 + */ @SpringBootApplication +// 此注解用于指定 MyBatis 要扫描的 Mapper 接口所在的包路径 +// 这里指定扫描 "com.dao" 包,Spring 会为该包下的 Mapper 接口生成代理实现 @MapperScan(basePackages = {"com.dao"}) -public class SpringbootSchemaApplication extends SpringBootServletInitializer{ +public class SpringbootSchemaApplication extends SpringBootServletInitializer { + /** + * 应用的主方法,是 Java 程序的入口点。 + * 当启动 Spring Boot 应用时,会调用此方法, + * 通过 SpringApplication.run 方法启动 Spring Boot 应用上下文。 + * + * @param args 命令行参数,可用于传递启动应用时的配置信息 + */ public static void main(String[] args) { + // 调用 SpringApplication 的 run 方法来启动 Spring Boot 应用 + // 传入当前类的 Class 对象和命令行参数 SpringApplication.run(SpringbootSchemaApplication.class, args); } - + + /** + * 重写 SpringBootServletInitializer 类的 configure 方法, + * 该方法用于配置 Spring Boot 应用在外部 Servlet 容器中运行时的启动行为。 + * 当将应用打包成 WAR 包部署到外部 Servlet 容器(如 Tomcat)时会调用此方法。 + * + * @param applicationBuilder SpringApplicationBuilder 对象,用于构建 Spring Boot 应用 + * @return 配置好的 SpringApplicationBuilder 对象,指定应用的主类为当前类 + */ @Override - protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) { - return applicationBuilder.sources(SpringbootSchemaApplication.class); - } -} + protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) { + // 设置 Spring Boot 应用的主类为当前类,确保在外部 Servlet 容器中正确启动 + return applicationBuilder.sources(SpringbootSchemaApplication.class); + } +} \ No newline at end of file diff --git a/back/src/main/java/com/service/CommonService.java b/back/src/main/java/com/service/CommonService.java index 1201b2a8..94e729d1 100644 --- a/back/src/main/java/com/service/CommonService.java +++ b/back/src/main/java/com/service/CommonService.java @@ -1,22 +1,35 @@ -package com.service; +package com.service; // 声明该类所属的包为com.service +// 导入List接口,用于表示有序的集合 import java.util.List; +// 导入Map接口,用于表示键值对的集合 import java.util.Map; +/** + * 通用服务接口,定义了一系列通用的数据操作方法 + */ public interface CommonService { + // 根据传入的参数Map查询选项列表,返回一个包含字符串的列表 List getOption(Map params); - + + // 根据传入的参数Map查询关联信息,返回一个包含键值对的Map Map getFollowByOption(Map params); - + + // 根据传入的参数Map执行更新操作,没有返回值 void sh(Map params); - + + // 根据传入的参数Map统计提醒数量,返回一个整数 int remindCount(Map params); - + + // 根据传入的参数Map进行统计计算,返回一个包含统计结果的Map Map selectCal(Map params); - + + // 根据传入的参数Map进行分组查询,返回一个包含多个键值对Map的列表 List> selectGroup(Map params); - + + // 根据传入的参数Map查询值列表,返回一个包含多个键值对Map的列表 List> selectValue(Map params); + // 根据传入的参数Map进行时间统计查询,返回一个包含多个键值对Map的列表 List> selectTimeStatValue(Map params); -} +} \ No newline at end of file diff --git a/back/src/main/java/com/service/ConfigService.java b/back/src/main/java/com/service/ConfigService.java index 5692bdf3..7d417c0b 100644 --- a/back/src/main/java/com/service/ConfigService.java +++ b/back/src/main/java/com/service/ConfigService.java @@ -1,17 +1,24 @@ +package com.service; // 声明该类所在的包为com.service -package com.service; - +// 导入Map接口,用于存储键值对,常作为方法的参数传递参数集合 import java.util.Map; +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,这是MyBatis-Plus提供的通用服务接口 import com.baomidou.mybatisplus.service.IService; +// 导入实体类ConfigEntity,代表系统配置的实体对象 import com.entity.ConfigEntity; +// 导入自定义的分页工具类PageUtils,用于处理分页相关操作 import com.utils.PageUtils; - /** * 系统用户 */ public interface ConfigService extends IService { - PageUtils queryPage(Map params,Wrapper wrapper); -} + // 定义一个查询分页数据的方法 + // 参数params是一个Map,用于传递查询所需的参数,如页码、每页数量等 + // 参数wrapper是一个Wrapper对象,用于构建对ConfigEntity实体的查询条件 + // 该方法返回一个PageUtils对象,包含了分页查询的结果信息 + PageUtils queryPage(Map params, Wrapper wrapper); +} \ No newline at end of file diff --git a/back/src/main/java/com/service/DiscussjiudianjianjieService.java b/back/src/main/java/com/service/DiscussjiudianjianjieService.java index db5b01e2..e5292869 100644 --- a/back/src/main/java/com/service/DiscussjiudianjianjieService.java +++ b/back/src/main/java/com/service/DiscussjiudianjianjieService.java @@ -1,37 +1,47 @@ -package com.service; +package com.service; // 声明该类所在的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,这是MyBatis-Plus提供的通用服务接口 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类PageUtils,用于处理分页相关操作 import com.utils.PageUtils; +// 导入酒店简介评论表的实体类 import com.entity.DiscussjiudianjianjieEntity; +// 导入List接口,用于存储多个元素 import java.util.List; +// 导入Map接口,用于存储键值对 import java.util.Map; +// 导入酒店简介评论表的VO(视图对象)类,用于封装特定视图所需的数据 import com.entity.vo.DiscussjiudianjianjieVO; +// 导入MyBatis的Param注解,用于指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入酒店简介评论表的View(视图类),用于封装特定视图所需的数据 import com.entity.view.DiscussjiudianjianjieView; - /** * 酒店简介评论表 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:05 */ public interface DiscussjiudianjianjieService extends IService { + // 根据传入的参数进行分页查询,返回一个包含分页信息的PageUtils对象 + PageUtils queryPage(Map params); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - DiscussjiudianjianjieVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - DiscussjiudianjianjieView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询出符合条件的酒店简介评论VO列表 + List selectListVO(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询出符合条件的单个酒店简介评论VO对象 + DiscussjiudianjianjieVO selectVO(@Param("ew") Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询出符合条件的酒店简介评论视图列表 + List selectListView(Wrapper wrapper); + // 根据传入的查询条件Wrapper,查询出符合条件的单个酒店简介评论视图对象 + DiscussjiudianjianjieView selectView(@Param("ew") Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询,返回一个包含分页信息的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} diff --git a/back/src/main/java/com/service/DiscussjiudiankefangService.java b/back/src/main/java/com/service/DiscussjiudiankefangService.java index 0f990fca..4c6115e3 100644 --- a/back/src/main/java/com/service/DiscussjiudiankefangService.java +++ b/back/src/main/java/com/service/DiscussjiudiankefangService.java @@ -1,37 +1,48 @@ -package com.service; +package com.service; // 声明该Java类所在的包为com.service +// 导入MyBatis-Plus框架中的Wrapper类,用于构建动态查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus框架提供的通用IService接口,该接口包含了常见的增删改查等操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类,用于处理分页查询的相关逻辑 import com.utils.PageUtils; +// 导入酒店客房评论表对应的实体类,代表数据库中的酒店客房评论表记录 import com.entity.DiscussjiudiankefangEntity; +// 导入List接口,用于存储多个对象的集合 import java.util.List; +// 导入Map接口,用于存储键值对,通常用于传递查询参数等 import java.util.Map; +// 导入酒店客房评论表对应的VO(View Object)类,用于封装特定视图展示所需的数据 import com.entity.vo.DiscussjiudiankefangVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入酒店客房评论表对应的View类,用于封装特定视图展示所需的数据 import com.entity.view.DiscussjiudiankefangView; - /** * 酒店客房评论表 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:05 */ +// 定义一个服务接口,继承自MyBatis-Plus的IService接口,泛型指定为酒店客房评论表实体类 public interface DiscussjiudiankefangService extends IService { + // 根据传入的参数进行分页查询酒店客房评论记录,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - DiscussjiudiankefangVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - DiscussjiudiankefangView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询出符合条件的酒店客房评论VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询出符合条件的单个酒店客房评论VO对象,@Param注解指定参数名称为"ew" + DiscussjiudiankefangVO selectVO(@Param("ew") Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询出符合条件的酒店客房评论View列表,返回一个List集合 + List selectListView(Wrapper wrapper); + // 根据传入的查询条件Wrapper,查询出符合条件的单个酒店客房评论View对象,@Param注解指定参数名称为"ew" + DiscussjiudiankefangView selectView(@Param("ew") Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询酒店客房评论记录,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} diff --git a/back/src/main/java/com/service/JiudianjianjieService.java b/back/src/main/java/com/service/JiudianjianjieService.java index 622e1b16..0d82cf75 100644 --- a/back/src/main/java/com/service/JiudianjianjieService.java +++ b/back/src/main/java/com/service/JiudianjianjieService.java @@ -1,37 +1,48 @@ -package com.service; +package com.service; // 声明该类属于com.service包 +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的CRUD操作 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类 import com.utils.PageUtils; +// 导入酒店简介实体类 import com.entity.JiudianjianjieEntity; +// 导入List接口,用于存储多个元素 import java.util.List; +// 导入Map接口,用于存储键值对 import java.util.Map; +// 导入酒店简介的VO类,用于封装特定视图的数据 import com.entity.vo.JiudianjianjieVO; +// 导入MyBatis的@Param注解,用于指定参数名 import org.apache.ibatis.annotations.Param; +// 导入酒店简介的View类,用于封装特定视图的数据 import com.entity.view.JiudianjianjieView; - /** * 酒店简介 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义一个服务接口,继承自IService,具备对酒店简介实体的通用操作能力 public interface JiudianjianjieService extends IService { + // 根据传入的参数进行分页查询,返回分页结果 + PageUtils queryPage(Map params); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - JiudianjianjieVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - JiudianjianjieView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询符合条件的酒店简介VO列表 + List selectListVO(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询符合条件的单个酒店简介VO对象 + JiudianjianjieVO selectVO(@Param("ew") Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询符合条件的酒店简介View列表 + List selectListView(Wrapper wrapper); + // 根据传入的查询条件Wrapper,查询符合条件的单个酒店简介View对象 + JiudianjianjieView selectView(@Param("ew") Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询,返回分页结果 + PageUtils queryPage(Map params, Wrapper wrapper); +} diff --git a/back/src/main/java/com/service/JiudiankefangService.java b/back/src/main/java/com/service/JiudiankefangService.java index dbdbc65f..3caad657 100644 --- a/back/src/main/java/com/service/JiudiankefangService.java +++ b/back/src/main/java/com/service/JiudiankefangService.java @@ -1,37 +1,48 @@ -package com.service; +package com.service; // 声明该类所在的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的CRUD服务方法 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类,用于处理分页查询结果 import com.utils.PageUtils; +// 导入酒店客房实体类,代表数据库中的酒店客房表记录 import com.entity.JiudiankefangEntity; +// 导入List接口,用于存储多个对象 import java.util.List; +// 导入Map接口,用于存储键值对,可作为查询参数 import java.util.Map; +// 导入酒店客房值对象类,用于封装特定视图展示所需的数据 import com.entity.vo.JiudiankefangVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入酒店客房视图类,用于封装特定视图展示所需的数据 import com.entity.view.JiudiankefangView; - /** * 酒店客房 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义一个服务接口,继承自IService,具备对酒店客房实体的基本CRUD操作能力 public interface JiudiankefangService extends IService { + // 根据传入的参数进行分页查询,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); + + // 根据传入的查询条件Wrapper,查询符合条件的酒店客房VO列表,返回List集合 + List selectListVO(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询符合条件的单个酒店客房VO对象,@Param注解指定参数名称为"ew" + JiudiankefangVO selectVO(@Param("ew") Wrapper wrapper); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - JiudiankefangVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - JiudiankefangView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询符合条件的酒店客房View列表,返回List集合 + List selectListView(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询符合条件的单个酒店客房View对象,@Param注解指定参数名称为"ew" + JiudiankefangView selectView(@Param("ew") Wrapper wrapper); + // 根据传入的参数和查询条件Wrapper进行分页查询,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} \ No newline at end of file diff --git a/back/src/main/java/com/service/KefangleixingService.java b/back/src/main/java/com/service/KefangleixingService.java index e852fb01..30481345 100644 --- a/back/src/main/java/com/service/KefangleixingService.java +++ b/back/src/main/java/com/service/KefangleixingService.java @@ -1,37 +1,49 @@ -package com.service; +package com.service; // 声明该类所属的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建动态查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的服务层基础方法(如增删改查) import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类,用于处理分页查询结果 import com.utils.PageUtils; +// 导入客房类型实体类,代表数据库中客房类型表的记录 import com.entity.KefangleixingEntity; +// 导入List接口,用于存储多个对象的集合 import java.util.List; +// 导入Map接口,用于存储键值对,可作为查询参数传递 import java.util.Map; +// 导入客房类型的值对象类,通常用于封装特定视图展示所需的数据 import com.entity.vo.KefangleixingVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入客房类型的视图类,用于封装特定视图展示所需的数据 import com.entity.view.KefangleixingView; - /** * 客房类型 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义客房类型服务接口,继承自IService,意味着具备对客房类型实体的基本CRUD操作能力 public interface KefangleixingService extends IService { - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - KefangleixingVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - KefangleixingView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - - -} + // 根据传入的参数进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); + + // 根据传入的查询条件Wrapper,查询出符合条件的客房类型VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询出符合条件的单个客房类型VO对象,@Param注解指定参数名为"ew" + KefangleixingVO selectVO(@Param("ew") Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询出符合条件的客房类型View列表,返回一个List集合 + List selectListView(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询出符合条件的单个客房类型View对象,@Param注解指定参数名为"ew" + KefangleixingView selectView(@Param("ew") Wrapper wrapper); + // 根据传入的参数和查询条件Wrapper进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} \ No newline at end of file diff --git a/back/src/main/java/com/service/KefangyudingService.java b/back/src/main/java/com/service/KefangyudingService.java index d77b2869..4e8b7eb8 100644 --- a/back/src/main/java/com/service/KefangyudingService.java +++ b/back/src/main/java/com/service/KefangyudingService.java @@ -1,37 +1,49 @@ -package com.service; +package com.service; // 声明该Java类所在的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建动态查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,它提供了通用的CRUD(创建、读取、更新、删除)操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类PageUtils,用于处理分页查询结果 import com.utils.PageUtils; +// 导入客房预定实体类,代表数据库中客房预定表的记录 import com.entity.KefangyudingEntity; +// 导入List接口,用于存储多个对象的集合 import java.util.List; +// 导入Map接口,用于存储键值对,通常用于传递查询参数 import java.util.Map; +// 导入客房预定的值对象类,用于封装特定视图展示所需的数据 import com.entity.vo.KefangyudingVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入客房预定的视图类,用于封装特定视图展示所需的数据 import com.entity.view.KefangyudingView; - /** * 客房预定 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义客房预定服务接口,继承自IService,意味着它拥有对KefangyudingEntity实体的基本CRUD操作能力 public interface KefangyudingService extends IService { - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - KefangyudingVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - KefangyudingView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的参数进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); -} + // 根据传入的查询条件Wrapper,查询符合条件的客房预定VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询符合条件的单个客房预定VO对象,@Param注解指定参数名称为"ew" + KefangyudingVO selectVO(@Param("ew") Wrapper wrapper); + // 根据传入的查询条件Wrapper,查询符合条件的客房预定View列表,返回一个List集合 + List selectListView(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询符合条件的单个客房预定View对象,@Param注解指定参数名称为"ew" + KefangyudingView selectView(@Param("ew") Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} diff --git a/back/src/main/java/com/service/NewsService.java b/back/src/main/java/com/service/NewsService.java index c25ef523..a17559cd 100644 --- a/back/src/main/java/com/service/NewsService.java +++ b/back/src/main/java/com/service/NewsService.java @@ -1,37 +1,48 @@ -package com.service; +package com.service; // 声明该类所属的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,为通用的服务层接口,提供了基本的CRUD操作 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类,用于处理分页查询的结果 import com.utils.PageUtils; +// 导入酒店公告实体类,对应数据库中的酒店公告表 import com.entity.NewsEntity; +// 导入List接口,用于存储多个元素的集合 import java.util.List; +// 导入Map接口,用于存储键值对,通常作为查询参数 import java.util.Map; +// 导入酒店公告的值对象类,用于封装特定视图展示所需的数据 import com.entity.vo.NewsVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入酒店公告的视图类,用于封装特定视图展示所需的数据 import com.entity.view.NewsView; - /** * 酒店公告 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义酒店公告服务接口,继承自IService,具备对酒店公告实体的基本CRUD操作能力 public interface NewsService extends IService { + // 根据传入的参数进行分页查询酒店公告数据,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); + + // 根据传入的查询条件Wrapper,查询符合条件的酒店公告VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询符合条件的单个酒店公告VO对象,@Param注解指定参数名为"ew" + NewsVO selectVO(@Param("ew") Wrapper wrapper); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - NewsVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - NewsView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询符合条件的酒店公告View列表,返回一个List集合 + List selectListView(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询符合条件的单个酒店公告View对象,@Param注解指定参数名为"ew" + NewsView selectView(@Param("ew") Wrapper wrapper); + // 根据传入的参数和查询条件Wrapper进行分页查询酒店公告数据,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} \ No newline at end of file diff --git a/back/src/main/java/com/service/RuzhuanpaiService.java b/back/src/main/java/com/service/RuzhuanpaiService.java index 161062c0..87d5ce15 100644 --- a/back/src/main/java/com/service/RuzhuanpaiService.java +++ b/back/src/main/java/com/service/RuzhuanpaiService.java @@ -1,37 +1,51 @@ package com.service; +// 声明当前接口所属的包为com.service,用于组织和管理相关的类和接口 +// 导入MyBatis-Plus的Wrapper类,用于构建复杂的查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的CRUD(增删改查)操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类PageUtils,用于处理分页查询结果 import com.utils.PageUtils; +// 导入入住安排的实体类RuzhuanpaiEntity,对应数据库中的表记录 import com.entity.RuzhuanpaiEntity; +// 导入List接口,用于存储多个对象的集合 import java.util.List; +// 导入Map接口,用于存储键值对,通常用于传递查询参数 import java.util.Map; +// 导入入住安排的值对象类RuzhuanpaiVO,用于封装特定视图展示所需的数据 import com.entity.vo.RuzhuanpaiVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入入住安排的视图类RuzhuanpaiView,用于封装特定视图展示所需的数据 import com.entity.view.RuzhuanpaiView; - /** * 入住安排 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义一个名为RuzhuanpaiService的接口,继承自IService +// 表示该接口具备对RuzhuanpaiEntity实体的基本CRUD操作能力,并且可以扩展自定义的业务方法 public interface RuzhuanpaiService extends IService { - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - RuzhuanpaiVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - RuzhuanpaiView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的参数进行分页查询入住安排数据,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); -} + // 根据传入的查询条件Wrapper,查询符合条件的入住安排VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); + + // 根据传入的查询条件Wrapper(参数名为"ew"),查询符合条件的单个入住安排VO对象 + RuzhuanpaiVO selectVO(@Param("ew") Wrapper wrapper); + // 根据传入的查询条件Wrapper,查询符合条件的入住安排View列表,返回一个List集合 + List selectListView(Wrapper wrapper); + + // 根据传入的查询条件Wrapper(参数名为"ew"),查询符合条件的单个入住安排View对象 + RuzhuanpaiView selectView(@Param("ew") Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询入住安排数据,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} diff --git a/back/src/main/java/com/service/StoreupService.java b/back/src/main/java/com/service/StoreupService.java index b8a48afd..901a364a 100644 --- a/back/src/main/java/com/service/StoreupService.java +++ b/back/src/main/java/com/service/StoreupService.java @@ -1,37 +1,48 @@ -package com.service; +package com.service; // 声明该类所属的包为com.service,方便对代码进行模块化管理 +// 导入MyBatis-Plus中的Wrapper类,用于构建动态的查询条件,可灵活定制查询逻辑 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus提供的IService接口,它封装了常见的增删改查等通用操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类,用于处理分页查询的结果,方便展示数据 import com.utils.PageUtils; +// 导入收藏表对应的实体类,该实体类与数据库中的收藏表结构相对应 import com.entity.StoreupEntity; +// 导入List接口,用于存储多个对象,可用于存放查询结果集 import java.util.List; +// 导入Map接口,用于存储键值对,常作为查询参数的容器 import java.util.Map; +// 导入收藏表的值对象类,通常用于封装特定业务场景下需要展示的数据 import com.entity.vo.StoreupVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称,增强代码的可读性和可维护性 import org.apache.ibatis.annotations.Param; +// 导入收藏表的视图类,用于封装特定视图展示所需的数据 import com.entity.view.StoreupView; - /** * 收藏表 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义一个服务接口,继承自IService,表明该接口具备对收藏表实体的基本操作能力 public interface StoreupService extends IService { + // 根据传入的参数进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - StoreupVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - StoreupView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询出符合条件的收藏表VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询出符合条件的单个收藏表VO对象,@Param注解指定参数名称为"ew" + StoreupVO selectVO(@Param("ew") Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询出符合条件的收藏表View列表,返回一个List集合 + List selectListView(Wrapper wrapper); + // 根据传入的查询条件Wrapper,查询出符合条件的单个收藏表View对象,@Param注解指定参数名称为"ew" + StoreupView selectView(@Param("ew") Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} diff --git a/back/src/main/java/com/service/TokenService.java b/back/src/main/java/com/service/TokenService.java index 74e60f16..4f66af4f 100644 --- a/back/src/main/java/com/service/TokenService.java +++ b/back/src/main/java/com/service/TokenService.java @@ -1,26 +1,43 @@ +package com.service; // 声明该类所属的包为com.service -package com.service; - +// 导入List接口,用于存储多个对象的集合 import java.util.List; +// 导入Map接口,用于存储键值对,通常用于传递参数 import java.util.Map; +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的CRUD操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入Token实体类,对应数据库中的token表 import com.entity.TokenEntity; +// 导入自定义的分页工具类,用于处理分页查询结果 import com.utils.PageUtils; - /** * token */ +// 定义TokenService接口,继承自IService,具备对TokenEntity的基本CRUD操作能力 public interface TokenService extends IService { - PageUtils queryPage(Map params); - - List selectListView(Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - - String generateToken(Long userid,String username,String tableName, String role); - - TokenEntity getTokenEntity(String token); -} + // 根据传入的参数进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); + + // 根据传入的查询条件Wrapper,查询符合条件的Token实体列表,返回一个List集合 + List selectListView(Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); + + // 根据用户ID、用户名、表名和角色生成一个token字符串 + // 参数userid为用户的ID + // 参数username为用户的名称 + // 参数tableName为相关表的名称 + // 参数role为用户的角色 + // 返回生成的token字符串 + String generateToken(Long userid, String username, String tableName, String role); + + // 根据传入的token字符串,查询对应的Token实体对象 + // 参数token为要查询的token字符串 + // 返回查询到的Token实体对象,如果未找到则可能返回null + TokenEntity getTokenEntity(String token); +} \ No newline at end of file diff --git a/back/src/main/java/com/service/UserService.java b/back/src/main/java/com/service/UserService.java index 37429aaf..1536250a 100644 --- a/back/src/main/java/com/service/UserService.java +++ b/back/src/main/java/com/service/UserService.java @@ -1,25 +1,35 @@ -package com.service; +package com.service; // 声明该Java类所属的包为com.service +// 导入List接口,用于存储多个对象的集合,后续会用于存储查询结果 import java.util.List; +// 导入Map接口,用于存储键值对,通常用于传递查询参数等 import java.util.Map; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称,增强代码可读性 import org.apache.ibatis.annotations.Param; +// 导入MyBatis-Plus的Wrapper类,用于构建动态查询条件,可灵活定制查询逻辑 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,它提供了通用的CRUD(创建、读取、更新、删除)操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入系统用户实体类,代表数据库中系统用户表的记录 import com.entity.UserEntity; +// 导入自定义的分页工具类,用于处理分页查询结果,方便实现分页展示数据 import com.utils.PageUtils; - /** * 系统用户 */ +// 定义一个名为UserService的接口,继承自IService +// 这意味着该接口具备了IService提供的对UserEntity实体的基本CRUD操作能力 public interface UserService extends IService { - PageUtils queryPage(Map params); - - List selectListView(Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - -} + // 根据传入的参数进行分页查询系统用户数据,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); + + // 根据传入的查询条件Wrapper,查询符合条件的系统用户实体列表,返回一个List集合 + List selectListView(Wrapper wrapper); + + // 根据传入的参数和查询条件Wrapper进行分页查询系统用户数据,返回一个包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} \ No newline at end of file diff --git a/back/src/main/java/com/service/YonghuService.java b/back/src/main/java/com/service/YonghuService.java index b7a51789..88fa4172 100644 --- a/back/src/main/java/com/service/YonghuService.java +++ b/back/src/main/java/com/service/YonghuService.java @@ -1,13 +1,22 @@ -package com.service; +package com.service; // 声明该类所属的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的CRUD操作 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类 import com.utils.PageUtils; +// 导入用户实体类 import com.entity.YonghuEntity; +// 导入List接口,用于存储多个对象 import java.util.List; +// 导入Map接口,用于存储键值对 import java.util.Map; +// 导入用户值对象类 import com.entity.vo.YonghuVO; +// 导入MyBatis的@Param注解,用于指定参数名 import org.apache.ibatis.annotations.Param; +// 导入用户视图对象类 import com.entity.view.YonghuView; /** @@ -17,6 +26,7 @@ import com.entity.view.YonghuView; * @email * @date 2022-04-04 00:20:04 */ +// 定义用户服务接口,继承IService,具备基本CRUD能力 public interface YonghuService extends IService { /** @@ -25,6 +35,7 @@ public interface YonghuService extends IService { * @param params 包含分页信息的参数映射,例如当前页码、每页记录数等。 * @return 返回一个 PageUtils 对象,其中封装了分页查询的结果,方便前端进行分页展示。 */ + // 根据参数进行分页查询用户数据 PageUtils queryPage(Map params); /** @@ -34,6 +45,7 @@ public interface YonghuService extends IService { * @param wrapper 包含具体查询条件的包装器,用于构建数据库查询语句的 WHERE 部分。 * @return 满足条件的用户 YonghuVO 对象的列表,如果没有符合条件的数据,则返回空列表。 */ + // 根据查询条件查询用户VO列表 List selectListVO(Wrapper wrapper); /** @@ -43,6 +55,7 @@ public interface YonghuService extends IService { * @param wrapper 包含查询条件的包装器,用于精确筛选出符合条件的记录。 * @return 满足条件的单个用户 YonghuVO 对象,如果没有符合条件的数据,则返回 null。 */ + // 根据查询条件查询单个用户VO对象 YonghuVO selectVO(@Param("ew") Wrapper wrapper); /** @@ -52,6 +65,7 @@ public interface YonghuService extends IService { * @param wrapper 包含查询条件的包装器,用于筛选出符合要求的用户视图数据。 * @return 满足条件的用户 YonghuView 对象的列表,如果没有符合条件的数据,则返回空列表。 */ + // 根据查询条件查询用户View列表 List selectListView(Wrapper wrapper); /** @@ -61,6 +75,7 @@ public interface YonghuService extends IService { * @param wrapper 包含查询条件的包装器,用于精确筛选出符合条件的记录。 * @return 满足条件的单个用户 YonghuView 对象,如果没有符合条件的数据,则返回 null。 */ + // 根据查询条件查询单个用户View对象 YonghuView selectView(@Param("ew") Wrapper wrapper); /** @@ -70,6 +85,6 @@ public interface YonghuService extends IService { * @param wrapper 包含具体查询条件的包装器,用于构建数据库查询语句的 WHERE 部分。 * @return 返回一个 PageUtils 对象,其中封装了分页查询的结果,方便前端进行分页展示。 */ + // 根据参数和查询条件进行分页查询用户数据 PageUtils queryPage(Map params, Wrapper wrapper); -} - +} \ No newline at end of file diff --git a/back/src/main/java/com/service/YuangongService.java b/back/src/main/java/com/service/YuangongService.java index 2b60f1c4..19af4b2f 100644 --- a/back/src/main/java/com/service/YuangongService.java +++ b/back/src/main/java/com/service/YuangongService.java @@ -1,37 +1,48 @@ -package com.service; +package com.service; // 声明该类所在的包为com.service +// 导入MyBatis-Plus的Wrapper类,用于构建查询条件 import com.baomidou.mybatisplus.mapper.Wrapper; +// 导入MyBatis-Plus的IService接口,提供通用的CRUD操作方法 import com.baomidou.mybatisplus.service.IService; +// 导入自定义的分页工具类,用于处理分页查询结果 import com.utils.PageUtils; +// 导入员工实体类,对应数据库中的员工表 import com.entity.YuangongEntity; +// 导入List接口,用于存储多个元素的集合 import java.util.List; +// 导入Map接口,用于存储键值对,可作为查询参数 import java.util.Map; +// 导入员工值对象类,通常用于封装特定业务场景下需要展示的数据 import com.entity.vo.YuangongVO; +// 导入MyBatis的@Param注解,用于在Mapper方法中指定参数名称 import org.apache.ibatis.annotations.Param; +// 导入员工视图类,用于封装特定视图展示所需的数据 import com.entity.view.YuangongView; - /** * 员工 * - * @author - * @email + * @author + * @email * @date 2022-04-04 00:20:04 */ +// 定义员工服务接口,继承自IService,具备对员工实体的基本CRUD操作能力 public interface YuangongService extends IService { + // 根据传入的参数进行分页查询员工数据,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params); + + // 根据传入的查询条件Wrapper,查询符合条件的员工VO列表,返回一个List集合 + List selectListVO(Wrapper wrapper); + + // 根据传入的查询条件Wrapper,查询符合条件的单个员工VO对象,@Param注解指定参数名为"ew" + YuangongVO selectVO(@Param("ew") Wrapper wrapper); - PageUtils queryPage(Map params); - - List selectListVO(Wrapper wrapper); - - YuangongVO selectVO(@Param("ew") Wrapper wrapper); - - List selectListView(Wrapper wrapper); - - YuangongView selectView(@Param("ew") Wrapper wrapper); - - PageUtils queryPage(Map params,Wrapper wrapper); - + // 根据传入的查询条件Wrapper,查询符合条件的员工View列表,返回一个List集合 + List selectListView(Wrapper wrapper); -} + // 根据传入的查询条件Wrapper,查询符合条件的单个员工View对象,@Param注解指定参数名为"ew" + YuangongView selectView(@Param("ew") Wrapper wrapper); + // 根据传入的参数和查询条件Wrapper进行分页查询员工数据,返回包含分页信息和查询结果的PageUtils对象 + PageUtils queryPage(Map params, Wrapper wrapper); +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/BaiduUtil.java b/back/src/main/java/com/utils/BaiduUtil.java index 3c4e0ae6..b371c846 100644 --- a/back/src/main/java/com/utils/BaiduUtil.java +++ b/back/src/main/java/com/utils/BaiduUtil.java @@ -10,72 +10,85 @@ import java.util.Map; import org.json.JSONObject; - /** -* 类说明 : -*/ - + * 类说明 : 该类是一个工具类,提供了与百度地图相关的工具方法,如根据经纬度获取省市区信息、获取百度 API 访问 token 等。 + */ public class BaiduUtil { - + /** * 根据经纬度获得省市区信息 - * @param lon 纬度 - * @param lat 经度 - * @param coordtype 经纬度坐标系 - * @return + * + * @param key 百度地图 API 的访问密钥(ak) + * @param lng 经度 + * @param lat 纬度 + * @return 包含省、市、区、街道信息的 Map,如果获取失败则返回 null */ public static Map getCityByLonLat(String key, String lng, String lat) { + // 将纬度和经度拼接成百度地图 API 所需的 location 格式 String location = lat + "," + lng; try { - //拼装url - String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak="+key+"&output=json&coordtype=wgs84ll&location="+location; + // 拼装请求 URL,包含 API 密钥、输出格式、经纬度坐标系和经纬度信息 + String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key + "&output=json&coordtype=wgs84ll&location=" + location; + // 发送 GET 请求并获取结果 String result = HttpClientUtils.doGet(url); + // 将结果解析为 JSONObject 对象 JSONObject o = new JSONObject(result); + // 创建一个 Map 用于存储省市区街道信息 Map area = new HashMap<>(); - area.put("province", o.getJSONObject("result").getJSONObject("addressComponent").getString("province")); - area.put("city", o.getJSONObject("result").getJSONObject("addressComponent").getString("city")); - area.put("district", o.getJSONObject("result").getJSONObject("addressComponent").getString("district")); - area.put("street", o.getJSONObject("result").getJSONObject("addressComponent").getString("street")); + // 从 JSONObject 中提取省份信息并放入 Map + area.put("province", o.getJSONObject("result").getJSONObject("addressComponent").getString("province")); + // 从 JSONObject 中提取城市信息并放入 Map + area.put("city", o.getJSONObject("result").getJSONObject("addressComponent").getString("city")); + // 从 JSONObject 中提取区信息并放入 Map + area.put("district", o.getJSONObject("result").getJSONObject("addressComponent").getString("district")); + // 从 JSONObject 中提取街道信息并放入 Map + area.put("street", o.getJSONObject("result").getJSONObject("addressComponent").getString("street")); return area; - }catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); } return null; } /** - * 获取API访问token - * 该token有一定的有效期,需要自行管理,当失效时需重新获取. - * @param ak - 百度云官网获取的 API Key - * @param sk - 百度云官网获取的 Securet Key - * @return assess_token - */ + * 获取 API 访问 token + * 该 token 有一定的有效期,需要自行管理,当失效时需重新获取. + * + * @param ak 百度云官网获取的 API Key + * @param sk 百度云官网获取的 Securet Key + * @return access_token,如果获取失败则返回 null + */ public static String getAuth(String ak, String sk) { - // 获取token地址 + // 获取 token 的地址 String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; + // 拼接完整的获取 token 的 URL,包含授权类型、API Key 和 Secret Key String getAccessTokenUrl = authHost - // 1. grant_type为固定参数 + // 1. grant_type 为固定参数 + "grant_type=client_credentials" // 2. 官网获取的 API Key + "&client_id=" + ak // 3. 官网获取的 Secret Key + "&client_secret=" + sk; try { + // 创建 URL 对象 URL realUrl = new URL(getAccessTokenUrl); - // 打开和URL之间的连接 + // 打开和 URL 之间的连接 HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); + // 设置请求方法为 GET connection.setRequestMethod("GET"); + // 建立连接 connection.connect(); // 获取所有响应头字段 Map> map = connection.getHeaderFields(); - // 遍历所有的响应头字段 + // 遍历所有的响应头字段并打印(调试用) for (String key : map.keySet()) { System.err.println(key + "--->" + map.get(key)); } - // 定义 BufferedReader输入流来读取URL的响应 + // 定义 BufferedReader 输入流来读取 URL 的响应 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String result = ""; String line; + // 逐行读取响应内容并拼接 while ((line = in.readLine()) != null) { result += line; } @@ -83,14 +96,15 @@ public class BaiduUtil { * 返回结果示例 */ System.err.println("result:" + result); + // 将响应结果解析为 JSONObject 对象 org.json.JSONObject jsonObject = new org.json.JSONObject(result); + // 从 JSONObject 中提取 access_token 并返回 String access_token = jsonObject.getString("access_token"); return access_token; } catch (Exception e) { - System.err.printf("获取token失败!"); + System.err.printf("获取 token 失败!"); e.printStackTrace(System.err); } return null; } - } diff --git a/back/src/main/java/com/utils/CommonUtil.java b/back/src/main/java/com/utils/CommonUtil.java index ad49e98c..de269e9b 100644 --- a/back/src/main/java/com/utils/CommonUtil.java +++ b/back/src/main/java/com/utils/CommonUtil.java @@ -7,69 +7,91 @@ import org.apache.poi.ss.usermodel.Cell; import java.text.DecimalFormat; import java.util.Objects; +// 使用 Spring 的 @Component 注解,将该类标记为一个组件,以便在 Spring 容器中进行管理 @Component public class CommonUtil { - /** + + /** * 获取随机字符串 * - * @param num - * @return + * @param num 生成的随机字符串的长度 + * @return 生成的指定长度的随机字符串 */ public static String getRandomString(Integer num) { + // 定义包含小写字母和数字的字符集 String base = "abcdefghijklmnopqrstuvwxyz0123456789"; + // 创建一个 Random 实例用于生成随机数 Random random = new Random(); + // 使用 StringBuffer 来构建随机字符串 StringBuffer sb = new StringBuffer(); + // 循环生成指定长度的随机字符串 for (int i = 0; i < num; i++) { + // 生成一个在字符集范围内的随机索引 int number = random.nextInt(base.length()); + // 将随机索引对应的字符添加到 StringBuffer 中 sb.append(base.charAt(number)); } + // 将 StringBuffer 转换为字符串并返回 return sb.toString(); } - /** - * 获取随机验证码 - * - * @param num - * @return - */ - public static String getRandomNumber(Integer num) { - String base = "0123456789"; - Random random = new Random(); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < num; i++) { - int number = random.nextInt(base.length()); - sb.append(base.charAt(number)); - } - return sb.toString(); - } + /** + * 获取随机验证码 + * + * @param num 生成的随机验证码的长度 + * @return 生成的指定长度的随机验证码(仅包含数字) + */ + public static String getRandomNumber(Integer num) { + // 定义仅包含数字的字符集 + String base = "0123456789"; + // 创建一个 Random 实例用于生成随机数 + Random random = new Random(); + // 使用 StringBuffer 来构建随机验证码 + StringBuffer sb = new StringBuffer(); + // 循环生成指定长度的随机验证码 + for (int i = 0; i < num; i++) { + // 生成一个在字符集范围内的随机索引 + int number = random.nextInt(base.length()); + // 将随机索引对应的字符添加到 StringBuffer 中 + sb.append(base.charAt(number)); + } + // 将 StringBuffer 转换为字符串并返回 + return sb.toString(); + } public static String getCellValue(Cell cell) { + // 初始化结果值为空字符串 String resultValue = ""; - // 判空 + // 检查单元格是否为空 if (Objects.isNull(cell)) { + // 如果单元格为空,直接返回空字符串 return resultValue; } - // 拿到单元格类型 + // 获取单元格的类型 int cellType = cell.getCellType(); + // 根据单元格类型进行处理 switch (cellType) { - // 字符串类型 + // 如果是字符串类型的单元格 case Cell.CELL_TYPE_STRING: - resultValue = StringUtils.isEmpty(cell.getStringCellValue()) ? "" : cell.getStringCellValue().trim(); + // 获取字符串值并去除两端空格,如果值为空则返回空字符串 + resultValue = StringUtils.isEmpty(cell.getStringCellValue())? "" : cell.getStringCellValue().trim(); break; - // 布尔类型 + // 如果是布尔类型的单元格 case Cell.CELL_TYPE_BOOLEAN: + // 将布尔值转换为字符串 resultValue = String.valueOf(cell.getBooleanCellValue()); break; - // 数值类型 + // 如果是数值类型的单元格 case Cell.CELL_TYPE_NUMERIC: + // 使用 DecimalFormat 格式化数值,保留六位小数 resultValue = new DecimalFormat("#.######").format(cell.getNumericCellValue()); break; - // 取空串 + // 其他情况(默认),不做处理,结果值仍为空字符串 default: break; } + // 返回处理后的单元格值 return resultValue; } - -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/FileUtil.java b/back/src/main/java/com/utils/FileUtil.java index d5813242..960809ca 100644 --- a/back/src/main/java/com/utils/FileUtil.java +++ b/back/src/main/java/com/utils/FileUtil.java @@ -7,21 +7,33 @@ import java.io.IOException; import java.io.InputStream; /** -* 类说明 : -*/ - + * 类说明 : 该类是一个文件处理工具类,提供了将文件转换为字节数组的方法。 + */ public class FileUtil { + + /** + * 将指定的文件转换为字节数组。 + * + * @param file 要转换的文件对象 + * @return 包含文件内容的字节数组 + * @throws IOException 如果在读取文件或处理流时发生 I/O 错误 + */ public static byte[] FileToByte(File file) throws IOException { - // 将数据转为流 + // 将文件数据转换为输入流,这里使用 FileInputStream 来读取文件内容 @SuppressWarnings("resource") InputStream content = new FileInputStream(file); + // 创建一个 ByteArrayOutputStream 用于存储从文件中读取的数据 ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); + // 创建一个字节缓冲区,用于每次从输入流中读取数据 byte[] buff = new byte[100]; + // 用于存储每次读取的字节数 int rc = 0; + // 循环读取文件内容,直到读取完所有数据(read 方法返回 -1 表示读取到文件末尾) while ((rc = content.read(buff, 0, 100)) > 0) { + // 将读取到的字节写入到 ByteArrayOutputStream 中 swapStream.write(buff, 0, rc); } - // 获得二进制数组 + // 将 ByteArrayOutputStream 中的数据转换为字节数组并返回 return swapStream.toByteArray(); } -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/HttpClientUtils.java b/back/src/main/java/com/utils/HttpClientUtils.java index fd6aae55..a4ff1355 100644 --- a/back/src/main/java/com/utils/HttpClientUtils.java +++ b/back/src/main/java/com/utils/HttpClientUtils.java @@ -5,38 +5,49 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; - /** * HttpClient工具类 + * 该类提供了执行HTTP GET请求的方法,用于从指定的URL获取数据。 */ public class HttpClientUtils { /** - * @param uri - * @return String - * @description get请求方式 + * 执行HTTP GET请求并获取响应结果。 + * + * @param uri 要请求的URL地址,是一个字符串形式的URI。 + * @return 返回从服务器获取的响应内容,如果请求失败或出现异常则返回null。 + * @description 该方法通过创建URL对象和HttpURLConnection连接, + * 然后从连接的输入流中读取服务器返回的数据,并将其拼接成字符串返回。 * @author: long.he01 */ public static String doGet(String uri) { - + // 使用StringBuilder来构建最终的响应结果字符串,因为频繁的字符串拼接操作使用StringBuilder效率更高 StringBuilder result = new StringBuilder(); try { + // 用于存储每一行读取到的响应数据 String res = ""; + // 根据传入的URI创建URL对象 URL url = new URL(uri); + // 打开与URL的连接,并将其强转为HttpURLConnection类型,以便进行HTTP相关的操作 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + // 创建一个BufferedReader,用于从连接的输入流中读取数据,指定字符编码为UTF-8 BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); + // 用于存储从输入流中读取的每一行数据 String line; + // 循环读取输入流中的数据,直到读取到文件末尾(readLine()返回null表示文件末尾) while ((line = in.readLine()) != null) { - res += line+"\n"; + // 将读取到的每一行数据拼接起来,并添加换行符 + res += line + "\n"; } + // 关闭BufferedReader,释放资源 in.close(); + // 返回拼接好的响应结果字符串 return res; - }catch (Exception e) { + } catch (Exception e) { + // 如果在请求过程中发生异常,打印异常堆栈信息 e.printStackTrace(); + // 请求失败,返回null return null; } - } - -} - +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/JQPageInfo.java b/back/src/main/java/com/utils/JQPageInfo.java index af075a46..698d475f 100644 --- a/back/src/main/java/com/utils/JQPageInfo.java +++ b/back/src/main/java/com/utils/JQPageInfo.java @@ -1,54 +1,98 @@ package com.utils; -public class JQPageInfo{ +/** + * JQPageInfo 类用于封装分页查询所需的参数信息,常与前端使用 jQuery 相关插件(如 jqGrid) + * 进行分页交互时使用,方便在前后端之间传递分页和排序信息。 + */ +public class JQPageInfo { + // 当前页码,通常从 1 开始,代表用户当前查看的页面 private Integer page; - + // 每页显示的记录数量,用于控制每页展示的数据量 private Integer limit; - + // 排序字段,指定按照数据库表中的哪个字段进行排序操作 private String sidx; - + // 排序顺序,一般取值为 "asc"(升序)或 "desc"(降序) private String order; - - private Integer offset; + // 偏移量,用于数据库查询时定位从哪条记录开始获取数据,通常由 (page - 1) * limit 计算得出 + private Integer offset; + /** + * 获取当前页码 + * @return 当前页码 + */ public Integer getPage() { return page; } + /** + * 设置当前页码 + * @param page 要设置的页码 + */ public void setPage(Integer page) { this.page = page; } + /** + * 获取每页显示的记录数量 + * @return 每页显示的记录数量 + */ public Integer getLimit() { return limit; } + /** + * 设置每页显示的记录数量 + * @param limit 要设置的每页记录数 + */ public void setLimit(Integer limit) { this.limit = limit; } + /** + * 获取排序字段 + * @return 排序字段 + */ public String getSidx() { return sidx; } + /** + * 设置排序字段 + * @param sidx 要设置的排序字段 + */ public void setSidx(String sidx) { this.sidx = sidx; } - + + /** + * 获取排序顺序 + * @return 排序顺序("asc" 或 "desc") + */ public String getOrder() { return order; } + /** + * 设置排序顺序 + * @param order 要设置的排序顺序 + */ public void setOrder(String order) { this.order = order; } + /** + * 获取偏移量 + * @return 偏移量 + */ public Integer getOffset() { return offset; } + /** + * 设置偏移量 + * @param offset 要设置的偏移量 + */ public void setOffset(Integer offset) { this.offset = offset; } - -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/MD5Util.java b/back/src/main/java/com/utils/MD5Util.java index 358a4b1f..a32d0fc2 100644 --- a/back/src/main/java/com/utils/MD5Util.java +++ b/back/src/main/java/com/utils/MD5Util.java @@ -1,19 +1,25 @@ package com.utils; +// 引入Hutool工具包中的DigestUtil类,该类提供了各种摘要算法工具,用于实现MD5加密 import cn.hutool.crypto.digest.DigestUtil; +/** + * MD5Util类用于实现MD5加密功能,借助Hutool工具包中的DigestUtil类完成。 + */ public class MD5Util { - + /** - * @param text明文 - * @param key密钥 - * @return 密文 + * 此方法用于对传入的明文进行MD5加密。 + * + * @param text 待加密的明文,是一个字符串类型的数据。 + * @return 返回经过MD5加密后的十六进制字符串形式的密文。 */ - // 带秘钥加密 + // 带秘钥加密,不过此方法当前未使用密钥,仅对文本进行MD5加密 public static String md5(String text) { + // 利用DigestUtil类的md5Hex方法对传入的明文进行MD5加密,并将加密结果以十六进制字符串形式存储 // 加密后的字符串 String md5str = DigestUtil.md5Hex(text); + // 返回加密后的十六进制字符串 return md5str; } - -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/MPUtil.java b/back/src/main/java/com/utils/MPUtil.java index e5d39160..bdc6577f 100644 --- a/back/src/main/java/com/utils/MPUtil.java +++ b/back/src/main/java/com/utils/MPUtil.java @@ -13,132 +13,218 @@ import com.baomidou.mybatisplus.mapper.Wrapper; /** * Mybatis-Plus工具类 + * 该类提供了一系列与MyBatis-Plus相关的工具方法,用于简化常见的数据库操作, + * 如构建查询条件、对象属性处理以及字符串格式转换等。 */ public class MPUtil { public static final char UNDERLINE = '_'; - - //mybatis plus allEQ 表达式转换 - public static Map allEQMapPre(Object bean,String pre) { - Map map =BeanUtil.beanToMap(bean); - return camelToUnderlineMap(map,pre); - } - - //mybatis plus allEQ 表达式转换 - public static Map allEQMap(Object bean) { - Map map =BeanUtil.beanToMap(bean); - return camelToUnderlineMap(map,""); - } - - public static Wrapper allLikePre(Wrapper wrapper,Object bean,String pre) { - Map map =BeanUtil.beanToMap(bean); - Map result = camelToUnderlineMap(map,pre); - - return genLike(wrapper,result); - } - - public static Wrapper allLike(Wrapper wrapper,Object bean) { - Map result = BeanUtil.beanToMap(bean, true, true); - return genLike(wrapper,result); + /** + * 将对象的属性转换为MyBatis-Plus的allEQ表达式形式,并为键添加指定前缀。 + * 先使用BeanUtil将对象转换为Map,然后将Map的键从驼峰格式转换为下划线格式, + * 最后返回带有前缀的新Map。 + * + * @param bean 要转换的对象 + * @param pre 要添加的前缀 + * @return 转换后的Map,键为下划线格式并带有前缀,值为对象属性值 + */ + public static Map allEQMapPre(Object bean, String pre) { + Map map = BeanUtil.beanToMap(bean); + return camelToUnderlineMap(map, pre); + } + + /** + * 将对象的属性转换为MyBatis-Plus的allEQ表达式形式,不添加前缀。 + * 先使用BeanUtil将对象转换为Map,然后将Map的键从驼峰格式转换为下划线格式, + * 最后返回转换后的新Map。 + * + * @param bean 要转换的对象 + * @return 转换后的Map,键为下划线格式,值为对象属性值 + */ + public static Map allEQMap(Object bean) { + Map map = BeanUtil.beanToMap(bean); + return camelToUnderlineMap(map, ""); + } + + /** + * 根据对象属性构建MyBatis-Plus的Wrapper的like条件,并为键添加指定前缀。 + * 先将对象转换为Map,再将Map的键转换为下划线格式并添加前缀, + * 然后使用转换后的Map生成like条件并返回Wrapper。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param bean 包含条件属性的对象 + * @param pre 要添加的前缀 + * @return 配置了like条件的Wrapper对象 + */ + public static Wrapper allLikePre(Wrapper wrapper, Object bean, String pre) { + Map map = BeanUtil.beanToMap(bean); + Map result = camelToUnderlineMap(map, pre); + return genLike(wrapper, result); + } + + /** + * 根据对象属性构建MyBatis-Plus的Wrapper的like条件,不添加前缀。 + * 直接将对象转换为Map,然后使用转换后的Map生成like条件并返回Wrapper。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param bean 包含条件属性的对象 + * @return 配置了like条件的Wrapper对象 + */ + public static Wrapper allLike(Wrapper wrapper, Object bean) { + Map result = BeanUtil.beanToMap(bean, true, true); + return genLike(wrapper, result); + } + + /** + * 根据Map参数构建MyBatis-Plus的Wrapper的like条件。 + * 遍历Map,对每个键值对设置like条件,多个条件之间使用and连接。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param param 包含条件键值对的Map + * @return 配置了like条件的Wrapper对象 + */ + public static Wrapper genLike(Wrapper wrapper, Map param) { + Iterator> it = param.entrySet().iterator(); + int i = 0; + while (it.hasNext()) { + if (i > 0) wrapper.and(); + Map.Entry entry = it.next(); + String key = entry.getKey(); + String value = (String) entry.getValue(); + wrapper.like(key, value); + i++; } - - - public static Wrapper genLike( Wrapper wrapper,Map param) { - Iterator> it = param.entrySet().iterator(); - int i=0; - while (it.hasNext()) { - if(i>0) wrapper.and(); - Map.Entry entry = it.next(); - String key = entry.getKey(); - String value = (String) entry.getValue(); - wrapper.like(key, value); - i++; + return wrapper; + } + + /** + * 根据对象属性构建MyBatis-Plus的Wrapper的like或eq条件。 + * 先将对象转换为Map,然后根据Map中值是否包含"%"来决定设置like或eq条件。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param bean 包含条件属性的对象 + * @return 配置了like或eq条件的Wrapper对象 + */ + public static Wrapper likeOrEq(Wrapper wrapper, Object bean) { + Map result = BeanUtil.beanToMap(bean, true, true); + return genLikeOrEq(wrapper, result); + } + + /** + * 根据Map参数构建MyBatis-Plus的Wrapper的like或eq条件。 + * 遍历Map,根据值中是否包含"%"来决定设置like或eq条件,多个条件之间使用and连接。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param param 包含条件键值对的Map + * @return 配置了like或eq条件的Wrapper对象 + */ + public static Wrapper genLikeOrEq(Wrapper wrapper, Map param) { + Iterator> it = param.entrySet().iterator(); + int i = 0; + while (it.hasNext()) { + if (i > 0) wrapper.and(); + Map.Entry entry = it.next(); + String key = entry.getKey(); + if (entry.getValue().toString().contains("%")) { + wrapper.like(key, entry.getValue().toString().replace("%", "")); + } else { + wrapper.eq(key, entry.getValue()); } - return wrapper; + i++; } - - public static Wrapper likeOrEq(Wrapper wrapper,Object bean) { - Map result = BeanUtil.beanToMap(bean, true, true); - return genLikeOrEq(wrapper,result); + return wrapper; + } + + /** + * 根据对象属性构建MyBatis-Plus的Wrapper的eq条件。 + * 先将对象转换为Map,然后使用转换后的Map生成eq条件并返回Wrapper。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param bean 包含条件属性的对象 + * @return 配置了eq条件的Wrapper对象 + */ + public static Wrapper allEq(Wrapper wrapper, Object bean) { + Map result = BeanUtil.beanToMap(bean, true, true); + return genEq(wrapper, result); + } + + /** + * 根据Map参数构建MyBatis-Plus的Wrapper的eq条件。 + * 遍历Map,对每个键值对设置eq条件,多个条件之间使用and连接。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param param 包含条件键值对的Map + * @return 配置了eq条件的Wrapper对象 + */ + public static Wrapper genEq(Wrapper wrapper, Map param) { + Iterator> it = param.entrySet().iterator(); + int i = 0; + while (it.hasNext()) { + if (i > 0) wrapper.and(); + Map.Entry entry = it.next(); + String key = entry.getKey(); + wrapper.eq(key, entry.getValue()); + i++; } - - public static Wrapper genLikeOrEq( Wrapper wrapper,Map param) { - Iterator> it = param.entrySet().iterator(); - int i=0; - while (it.hasNext()) { - if(i>0) wrapper.and(); - Map.Entry entry = it.next(); - String key = entry.getKey(); - if(entry.getValue().toString().contains("%")) { - wrapper.like(key, entry.getValue().toString().replace("%", "")); - } else { - wrapper.eq(key, entry.getValue()); + return wrapper; + } + + /** + * 根据Map参数构建MyBatis-Plus的Wrapper的between条件。 + * 遍历Map,根据键名是否以"_start"或"_end"结尾来决定设置ge(大于等于)或le(小于等于)条件。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param params 包含条件键值对的Map + * @return 配置了between条件的Wrapper对象 + */ + public static Wrapper between(Wrapper wrapper, Map params) { + for (String key : params.keySet()) { + String columnName = ""; + if (key.endsWith("_start")) { + columnName = key.substring(0, key.indexOf("_start")); + if (StringUtils.isNotBlank(params.get(key).toString())) { + wrapper.ge(columnName, params.get(key)); } - i++; } - return wrapper; - } - - public static Wrapper allEq(Wrapper wrapper,Object bean) { - Map result = BeanUtil.beanToMap(bean, true, true); - return genEq(wrapper,result); - } - - - public static Wrapper genEq( Wrapper wrapper,Map param) { - Iterator> it = param.entrySet().iterator(); - int i=0; - while (it.hasNext()) { - if(i>0) wrapper.and(); - Map.Entry entry = it.next(); - String key = entry.getKey(); - wrapper.eq(key, entry.getValue()); - i++; - } - return wrapper; - } - - - public static Wrapper between(Wrapper wrapper,Map params) { - for(String key : params.keySet()) { - String columnName = ""; - if(key.endsWith("_start")) { - columnName = key.substring(0, key.indexOf("_start")); - if(StringUtils.isNotBlank(params.get(key).toString())) { - wrapper.ge(columnName, params.get(key)); - } - } - if(key.endsWith("_end")) { - columnName = key.substring(0, key.indexOf("_end")); - if(StringUtils.isNotBlank(params.get(key).toString())) { - wrapper.le(columnName, params.get(key)); - } + if (key.endsWith("_end")) { + columnName = key.substring(0, key.indexOf("_end")); + if (StringUtils.isNotBlank(params.get(key).toString())) { + wrapper.le(columnName, params.get(key)); } } - return wrapper; } - - public static Wrapper sort(Wrapper wrapper,Map params) { - String order = ""; - if(params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) { - order = params.get("order").toString(); - } - if(params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) { - if(order.equalsIgnoreCase("desc")) { - wrapper.orderDesc(Arrays.asList(params.get("sort"))); - } else { - wrapper.orderAsc(Arrays.asList(params.get("sort"))); - } + return wrapper; + } + + /** + * 根据Map参数为MyBatis-Plus的Wrapper设置排序条件。 + * 根据"order"和"sort"参数的值设置升序或降序排序。 + * + * @param wrapper MyBatis-Plus的Wrapper对象 + * @param params 包含排序相关键值对的Map,如"order"(排序方向)和"sort"(排序字段) + * @return 配置了排序条件的Wrapper对象 + */ + public static Wrapper sort(Wrapper wrapper, Map params) { + String order = ""; + if (params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) { + order = params.get("order").toString(); + } + if (params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) { + if (order.equalsIgnoreCase("desc")) { + wrapper.orderDesc(Arrays.asList(params.get("sort"))); + } else { + wrapper.orderAsc(Arrays.asList(params.get("sort"))); } - return wrapper; } - - + return wrapper; + } + /** - * 驼峰格式字符串转换为下划线格式字符串 - * - * @param param - * @return + * 将驼峰格式字符串转换为下划线格式字符串。 + * 遍历字符串,若字符为大写,则在其前添加下划线并转换为小写,否则直接添加字符。 + * + * @param param 要转换的驼峰格式字符串 + * @return 转换后的下划线格式字符串 */ public static String camelToUnderline(String param) { if (param == null || "".equals(param.trim())) { @@ -161,9 +247,16 @@ public class MPUtil { public static void main(String[] ages) { System.out.println(camelToUnderline("ABCddfANM")); } - - public static Map camelToUnderlineMap(Map param, String pre) { + /** + * 将Map的键从驼峰格式转换为下划线格式,并根据前缀进行处理。 + * 遍历Map,将每个键转换为下划线格式,然后根据前缀的情况将键值对添加到新的Map中。 + * + * @param param 要转换的Map + * @param pre 前缀 + * @return 转换后的Map,键为下划线格式,根据前缀处理后的值 + */ + public static Map camelToUnderlineMap(Map param, String pre) { Map newMap = new HashMap(); Iterator> it = param.entrySet().iterator(); while (it.hasNext()) { @@ -175,10 +268,9 @@ public class MPUtil { } else if (StringUtils.isEmpty(pre)) { newMap.put(newKey, entry.getValue()); } else { - newMap.put(pre + "." + newKey, entry.getValue()); } } return newMap; } -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/PageUtils.java b/back/src/main/java/com/utils/PageUtils.java index f7356bf8..e8ee9509 100644 --- a/back/src/main/java/com/utils/PageUtils.java +++ b/back/src/main/java/com/utils/PageUtils.java @@ -1,4 +1,3 @@ - package com.utils; import java.io.Serializable; @@ -9,37 +8,45 @@ import com.baomidou.mybatisplus.plugins.Page; /** * 分页工具类 + * 该类用于封装分页相关的信息,方便在业务层和表现层之间传递分页数据。 */ public class PageUtils implements Serializable { + // 用于实现序列化版本控制,确保不同版本的类在反序列化时的兼容性 private static final long serialVersionUID = 1L; - //总记录数 + // 总记录数,即满足查询条件的所有记录的数量 private long total; - //每页记录数 + // 每页记录数,指定每一页显示的记录数量 private int pageSize; - //总页数 + // 总页数,根据总记录数和每页记录数计算得出的总页数 private long totalPage; - //当前页数 + // 当前页数,标识当前处于第几页 private int currPage; - //列表数据 + // 列表数据,存储当前页的具体数据记录 private List list; - + /** - * 分页 - * @param list 列表数据 - * @param totalCount 总记录数 - * @param pageSize 每页记录数 - * @param currPage 当前页数 + * 分页构造函数 + * 根据提供的列表数据、总记录数、每页记录数和当前页数来初始化分页工具类。 + * + * @param list 列表数据,包含当前页的具体记录 + * @param totalCount 总记录数,满足查询条件的所有记录的数量 + * @param pageSize 每页记录数,指定每一页显示的记录数量 + * @param currPage 当前页数,标识当前处于第几页 */ public PageUtils(List list, int totalCount, int pageSize, int currPage) { this.list = list; this.total = totalCount; this.pageSize = pageSize; this.currPage = currPage; - this.totalPage = (int)Math.ceil((double)totalCount/pageSize); + // 计算总页数,使用向上取整的方式确保所有记录都能被包含在某一页中 + this.totalPage = (int) Math.ceil((double) totalCount / pageSize); } /** - * 分页 + * 分页构造函数 + * 根据MyBatis-Plus的Page对象来初始化分页工具类,提取Page对象中的相关信息。 + * + * @param page MyBatis-Plus的Page对象,包含了分页相关的各种信息 */ public PageUtils(Page page) { this.list = page.getRecords(); @@ -48,54 +55,66 @@ public class PageUtils implements Serializable { this.currPage = page.getCurrent(); this.totalPage = page.getPages(); } - - /* - * 空数据的分页 + + /** + * 空数据的分页构造函数 + * 根据传入的参数Map来构建一个新的分页对象,这里使用了Query类来处理参数并获取Page对象。 + * + * @param params 包含分页相关参数的Map,例如当前页数、每页记录数等 */ public PageUtils(Map params) { - Page page =new Query(params).getPage(); + Page page = new Query(params).getPage(); + // 使用获取到的Page对象再次调用另一个构造函数来初始化分页工具类 new PageUtils(page); } - + // 获取每页记录数 public int getPageSize() { return pageSize; } + // 设置每页记录数 public void setPageSize(int pageSize) { this.pageSize = pageSize; } + // 获取当前页数 public int getCurrPage() { return currPage; } + // 设置当前页数 public void setCurrPage(int currPage) { this.currPage = currPage; } + // 获取列表数据 public List getList() { return list; } + // 设置列表数据 public void setList(List list) { this.list = list; } + // 获取总页数 public long getTotalPage() { return totalPage; } + // 设置总页数 public void setTotalPage(long totalPage) { this.totalPage = totalPage; } + // 获取总记录数 public long getTotal() { return total; } + // 设置总记录数 public void setTotal(long total) { this.total = total; } - -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/Query.java b/back/src/main/java/com/utils/Query.java index eb624a78..b6cd37fe 100644 --- a/back/src/main/java/com/utils/Query.java +++ b/back/src/main/java/com/utils/Query.java @@ -1,4 +1,3 @@ - package com.utils; import java.util.LinkedHashMap; @@ -9,90 +8,114 @@ import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.plugins.Page; /** - * 查询参数 + * 查询参数类,继承自LinkedHashMap,用于封装查询相关的参数信息, + * 并且处理分页和排序等操作,同时对可能存在SQL注入风险的参数进行过滤。 */ public class Query extends LinkedHashMap { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** - * mybatis-plus分页参数 + * mybatis-plus分页参数对象,用于进行分页查询操作。 */ private Page page; /** - * 当前页码 + * 当前页码,默认为1。 */ private int currPage = 1; /** - * 每页条数 + * 每页条数,默认为10。 */ private int limit = 10; + /** + * 构造函数,根据JQPageInfo对象来初始化查询参数。 + * + * @param pageInfo 包含分页和排序信息的JQPageInfo对象。 + */ public Query(JQPageInfo pageInfo) { - //分页参数 - if(pageInfo.getPage()!= null){ + // 处理分页参数 + if (pageInfo.getPage() != null) { currPage = pageInfo.getPage(); } - if(pageInfo.getLimit()!= null){ + if (pageInfo.getLimit() != null) { limit = pageInfo.getLimit(); } - - //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险) + // 防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险) String sidx = SQLFilter.sqlInject(pageInfo.getSidx()); String order = SQLFilter.sqlInject(pageInfo.getOrder()); - - //mybatis-plus分页 + // 创建mybatis-plus分页对象 this.page = new Page<>(currPage, limit); - //排序 - if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)){ + // 进行排序设置 + if (StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)) { this.page.setOrderByField(sidx); this.page.setAsc("ASC".equalsIgnoreCase(order)); } } - - - public Query(Map params){ + + /** + * 构造函数,根据Map类型的参数来初始化查询参数。 + * + * @param params 包含查询参数的Map,可能包含分页、排序等信息。 + */ + public Query(Map params) { + // 将传入的参数Map中的所有键值对放入当前对象中 this.putAll(params); - //分页参数 - if(params.get("page") != null){ - currPage = Integer.parseInt((String)params.get("page")); + // 处理分页参数 + if (params.get("page") != null) { + currPage = Integer.parseInt((String) params.get("page")); } - if(params.get("limit") != null){ - limit = Integer.parseInt((String)params.get("limit")); + if (params.get("limit") != null) { + limit = Integer.parseInt((String) params.get("limit")); } + // 计算偏移量,并将分页相关参数放入当前对象中 this.put("offset", (currPage - 1) * limit); this.put("page", currPage); this.put("limit", limit); - //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险) - String sidx = SQLFilter.sqlInject((String)params.get("sidx")); - String order = SQLFilter.sqlInject((String)params.get("order")); + // 防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险) + String sidx = SQLFilter.sqlInject((String) params.get("sidx")); + String order = SQLFilter.sqlInject((String) params.get("order")); this.put("sidx", sidx); this.put("order", order); - //mybatis-plus分页 + // 创建mybatis-plus分页对象 this.page = new Page<>(currPage, limit); - //排序 - if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)){ + // 进行排序设置 + if (StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)) { this.page.setOrderByField(sidx); this.page.setAsc("ASC".equalsIgnoreCase(order)); } - } + /** + * 获取mybatis-plus的分页对象。 + * + * @return mybatis-plus的Page对象。 + */ public Page getPage() { return page; } + /** + * 获取当前页码。 + * + * @return 当前页码。 + */ public int getCurrPage() { return currPage; } + /** + * 获取每页条数。 + * + * @return 每页条数。 + */ public int getLimit() { return limit; } -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/R.java b/back/src/main/java/com/utils/R.java index 680b3f86..67ca4ac4 100644 --- a/back/src/main/java/com/utils/R.java +++ b/back/src/main/java/com/utils/R.java @@ -4,23 +4,46 @@ import java.util.HashMap; import java.util.Map; /** - * 返回数据 + * 返回数据类,继承自HashMap,用于封装和返回各种类型的响应数据, + * 通常在Web应用中用于构建API的响应结果。 */ public class R extends HashMap { + // 用于实现序列化版本控制,确保不同版本的类在反序列化时的兼容性 private static final long serialVersionUID = 1L; - + + /** + * 构造函数,初始化一个默认的响应对象,设置默认的状态码为0(通常表示成功)。 + */ public R() { put("code", 0); } - + + /** + * 静态方法,返回一个表示错误的响应对象,默认状态码为500,错误信息为“未知异常,请联系管理员”。 + * + * @return 表示错误的R对象。 + */ public static R error() { return error(500, "未知异常,请联系管理员"); } - + + /** + * 静态方法,返回一个表示错误的响应对象,状态码为500,错误信息为传入的msg。 + * + * @param msg 错误信息。 + * @return 表示错误的R对象。 + */ public static R error(String msg) { return error(500, msg); } - + + /** + * 静态方法,返回一个表示错误的响应对象,状态码为传入的code,错误信息为传入的msg。 + * + * @param code 错误状态码。 + * @param msg 错误信息。 + * @return 表示错误的R对象。 + */ public static R error(int code, String msg) { R r = new R(); r.put("code", code); @@ -28,24 +51,49 @@ public class R extends HashMap { return r; } + /** + * 静态方法,返回一个表示成功的响应对象,包含传入的成功信息msg。 + * + * @param msg 成功信息。 + * @return 表示成功的R对象。 + */ public static R ok(String msg) { R r = new R(); r.put("msg", msg); return r; } - + + /** + * 静态方法,返回一个表示成功的响应对象,将传入的Map中的键值对添加到响应对象中。 + * + * @param map 包含响应数据的Map。 + * @return 表示成功的R对象。 + */ public static R ok(Map map) { R r = new R(); r.putAll(map); return r; } - + + /** + * 静态方法,返回一个表示成功的默认响应对象,只包含默认的状态码0。 + * + * @return 表示成功的R对象。 + */ public static R ok() { return new R(); } + /** + * 重写put方法,将键值对添加到响应对象中,并返回当前对象, + * 方便进行链式调用(例如r.put("key1", value1).put("key2", value2))。 + * + * @param key 键。 + * @param value 值。 + * @return 当前的R对象。 + */ public R put(String key, Object value) { super.put(key, value); return this; } -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/SQLFilter.java b/back/src/main/java/com/utils/SQLFilter.java index f6ce05d3..72e3b541 100644 --- a/back/src/main/java/com/utils/SQLFilter.java +++ b/back/src/main/java/com/utils/SQLFilter.java @@ -1,4 +1,3 @@ - package com.utils; import org.apache.commons.lang3.StringUtils; @@ -6,37 +5,45 @@ import org.apache.commons.lang3.StringUtils; import com.entity.EIException; /** - * SQL过滤 + * SQL过滤类,用于对输入的字符串进行SQL注入相关的过滤操作, + * 防止恶意的SQL注入攻击。 */ public class SQLFilter { /** - * SQL注入过滤 - * @param str 待验证的字符串 + * SQL注入过滤方法,对传入的字符串进行一系列的检查和处理, + * 以防止其中包含可能导致SQL注入的非法字符或关键字。 + * + * @param str 待验证和过滤的字符串,通常是用户输入的内容,可能会用于SQL语句中。 + * @return 经过过滤处理后的字符串,如果输入字符串为空则返回null; + * 如果字符串包含非法字符,则会抛出EIException异常。 */ - public static String sqlInject(String str){ - if(StringUtils.isBlank(str)){ + public static String sqlInject(String str) { + // 检查输入字符串是否为空或只包含空白字符 + if (StringUtils.isBlank(str)) { return null; } - //去掉'|"|;|\字符 + // 去掉字符串中的单引号、双引号、分号和反斜杠字符,这些字符在SQL中可能用于构造恶意语句 str = StringUtils.replace(str, "'", ""); str = StringUtils.replace(str, "\"", ""); str = StringUtils.replace(str, ";", ""); str = StringUtils.replace(str, "\\", ""); - //转换成小写 + // 将字符串转换为小写,方便统一检查非法关键字,不区分大小写 str = str.toLowerCase(); - //非法字符 + // 定义一个包含常见非法SQL关键字的数组,这些关键字可能被用于恶意的SQL操作 String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"}; - //判断是否包含非法字符 - for(String keyword : keywords){ - if(str.indexOf(keyword) != -1){ + // 遍历非法关键字数组,检查字符串中是否包含这些关键字 + for (String keyword : keywords) { + if (str.indexOf(keyword) != -1) { + // 如果包含非法关键字,则抛出EIException异常,提示包含非法字符 throw new EIException("包含非法字符"); } } + // 如果字符串不包含非法字符和关键字,则返回过滤后的字符串 return str; } -} +} \ No newline at end of file diff --git a/back/src/main/java/com/utils/SpringContextUtils.java b/back/src/main/java/com/utils/SpringContextUtils.java index fd3705b2..659af6ca 100644 --- a/back/src/main/java/com/utils/SpringContextUtils.java +++ b/back/src/main/java/com/utils/SpringContextUtils.java @@ -1,4 +1,3 @@ - package com.utils; import org.springframework.beans.BeansException; @@ -6,38 +5,78 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; - /** * Spring Context 工具类 + * 该类实现了 ApplicationContextAware 接口,用于在 Spring 应用中获取 ApplicationContext 实例, + * 从而可以在非 Spring 管理的类中方便地获取 Spring 容器中的 Bean。 */ @Component public class SpringContextUtils implements ApplicationContextAware { - public static ApplicationContext applicationContext; - + // 静态的 ApplicationContext 实例,用于存储 Spring 应用上下文 + public static ApplicationContext applicationContext; + + /** + * 实现 ApplicationContextAware 接口的方法,Spring 容器会在启动时自动调用该方法, + * 将 ApplicationContext 实例注入到本类中。 + * + * @param applicationContext Spring 应用上下文实例 + * @throws BeansException 如果在设置 ApplicationContext 时发生错误 + */ @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtils.applicationContext = applicationContext; } + /** + * 根据 Bean 的名称从 Spring 容器中获取 Bean 实例。 + * + * @param name Bean 的名称 + * @return 对应的 Bean 实例 + */ public static Object getBean(String name) { return applicationContext.getBean(name); } + /** + * 根据 Bean 的名称和类型从 Spring 容器中获取指定类型的 Bean 实例。 + * + * @param name Bean 的名称 + * @param requiredType Bean 的类型 + * @param Bean 的泛型类型 + * @return 对应的 Bean 实例 + */ public static T getBean(String name, Class requiredType) { return applicationContext.getBean(name, requiredType); } + /** + * 检查 Spring 容器中是否包含指定名称的 Bean。 + * + * @param name Bean 的名称 + * @return 如果包含返回 true,否则返回 false + */ public static boolean containsBean(String name) { return applicationContext.containsBean(name); } + /** + * 检查指定名称的 Bean 是否为单例模式。 + * + * @param name Bean 的名称 + * @return 如果是单例返回 true,否则返回 false + */ public static boolean isSingleton(String name) { return applicationContext.isSingleton(name); } + /** + * 获取指定名称的 Bean 的类型。 + * + * @param name Bean 的名称 + * @return Bean 的类型 + */ public static Class getType(String name) { return applicationContext.getType(name); } - } \ No newline at end of file diff --git a/back/src/main/java/com/utils/ValidatorUtils.java b/back/src/main/java/com/utils/ValidatorUtils.java index 06ed26c9..c9789ccd 100644 --- a/back/src/main/java/com/utils/ValidatorUtils.java +++ b/back/src/main/java/com/utils/ValidatorUtils.java @@ -1,7 +1,5 @@ - package com.utils; - import java.util.Set; import javax.validation.ConstraintViolation; @@ -12,28 +10,41 @@ import com.entity.EIException; /** * hibernate-validator校验工具类 + * 该类借助Hibernate Validator框架,为对象提供校验功能。 + * 当对象不符合预先定义的约束条件时,会抛出EIException异常。 */ public class ValidatorUtils { + // 静态的Validator对象,用于执行校验操作。 + // 由于Validator是线程安全的,使用静态变量可以在整个应用程序中共享同一个实例,提高性能。 private static Validator validator; + // 静态代码块,在类加载时执行,确保Validator对象只被初始化一次。 + // 通过Validation类构建默认的验证工厂,然后从工厂中获取Validator实例。 static { validator = Validation.buildDefaultValidatorFactory().getValidator(); } /** - * 校验对象 - * @param object 待校验对象 - * @param groups 待校验的组 - * @throws EIException 校验不通过,则报EIException异常 + * 校验对象的方法 + * + * @param object 待校验的对象,该对象需要使用Hibernate Validator的注解来定义约束条件。 + * @param groups 待校验的组,可用于指定在不同场景下应用不同的约束条件。 + * @throws EIException 若校验不通过,即对象存在违反约束的情况,会抛出EIException异常。 + * 异常信息为第一个违反约束的详细描述。 */ public static void validateEntity(Object object, Class... groups) throws EIException { + // 调用Validator的validate方法对对象进行校验,根据指定的组应用相应的约束条件。 + // 该方法会返回一个包含所有违反约束信息的Set集合。 Set> constraintViolations = validator.validate(object, groups); + + // 检查约束违反集合是否为空,若不为空则表示存在校验不通过的情况。 if (!constraintViolations.isEmpty()) { - ConstraintViolation constraint = (ConstraintViolation)constraintViolations.iterator().next(); + // 获取集合中的第一个违反约束的信息。 + // 这里仅取第一个违反约束的信息作为异常信息抛出,可能会忽略其他违反约束的情况。 + ConstraintViolation constraint = (ConstraintViolation)constraintViolations.iterator().next(); + // 抛出EIException异常,将违反约束的详细信息作为异常消息。 throw new EIException(constraint.getMessage()); } } - - } diff --git a/back/src/main/resources/front/front/index.html b/back/src/main/resources/front/front/index.html index 40221557..43b1de5e 100644 --- a/back/src/main/resources/front/front/index.html +++ b/back/src/main/resources/front/front/index.html @@ -1,329 +1,319 @@ - - - - 首页 - - - - - - - - - + /* 定义 id 为 header 下的.nav-top-tel 类元素样式,设置行高、字体大小、颜色、边框等 */ + #header .nav-top-tel { + line-height: 40px; + font-size: 16px; + color: #333; + padding: 0 10px; + margin: 0; + border-radius: 6px; + border-width: 0; + border-style: solid; + border-color: rgba(0, 0, 0,.3); + box-shadow: 0 0 6px rgba(0, 0, 0,.3); + } - + /* 定义 id 为 header 下的.navs 类元素样式,弹性布局,设置高度、背景、阴影等 */ + #header .navs { + display: flex; + padding: 0 20px; + align-items: center; + box-sizing: border-box; + height: 64px; + background: #F2F2F2; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0); + justify-content: center; + } + /* 定义 id 为 header 下的.navs1 类元素样式,设置宽度、高度、背景、定位等 */ + #header .navs1 { + width: 200px; + height: 100vh; + background: darkgoldenrod; + position: absolute; + top: 0; + display: block; + padding: 0; + overflow-y: scroll; + scrollbar-width: none; + -ms-overflow-style: none; + } - - - - + /* 隐藏 id 为 header 下的.navs1 类元素的滚动条(webkit 内核浏览器) */ + #header .navs.navs1::-webkit-scrollbar { + display: none; + } - + + + + + + - // 窗口变化时候iframe自适应 - // function changeFrameHeight() { - // var header = document.getElementById('header').scrollHeight; - // let isshow = false - // var tabbar = 0 - // if(isshow) { - // tabbar = document.getElementById('tabbar').scrollHeight - // } - // var ifm = document.getElementById("iframe"); - // ifm.height = document.documentElement.clientHeight - header - tabbar; - // ifm.width = document.documentElement.clientWidth; - // } + - - + } + }); + + // 加载 layui 的 element 和 layer 模块 + layui.use(['element', 'layer'], function () { + var element = layui.element; + var layer = layui.layer; + }); + + // 聊天点击事件处理函数,根据用户登录状态决定是打开聊天窗口还是跳转到登录页面 + function chatTap() { + var userTable = localStorage.getItem('userTable'); + if (userTable) { + layui.layer.open({ + type: 2, + title: '客服', + area: ['600px', '600px'], + content: './pages/chat/chat.html' + }); + } else { + window.location.href = './pages/login \ No newline at end of file diff --git a/back/src/main/resources/mapper/CommonDao.xml b/back/src/main/resources/mapper/CommonDao.xml index 309c3c9a..5d512745 100644 --- a/back/src/main/resources/mapper/CommonDao.xml +++ b/back/src/main/resources/mapper/CommonDao.xml @@ -1,70 +1,104 @@ + + + - + + - + + + UPDATE ${table} set sfsh=#{sfsh} where id=#{id} - + + - + + - + + - + + - - + + + + - + \ No newline at end of file diff --git a/back/src/main/resources/mapper/DiscussjiudianjianjieDao.xml b/back/src/main/resources/mapper/DiscussjiudianjianjieDao.xml index 43b53c9f..af3676b2 100644 --- a/back/src/main/resources/mapper/DiscussjiudianjianjieDao.xml +++ b/back/src/main/resources/mapper/DiscussjiudianjianjieDao.xml @@ -14,27 +14,27 @@ - + - + - + diff --git a/back/src/main/resources/mapper/DiscussjiudiankefangDao.xml b/back/src/main/resources/mapper/DiscussjiudiankefangDao.xml index 1852551a..da62a66d 100644 --- a/back/src/main/resources/mapper/DiscussjiudiankefangDao.xml +++ b/back/src/main/resources/mapper/DiscussjiudiankefangDao.xml @@ -14,27 +14,27 @@ - + - + - + diff --git a/back/src/main/resources/mapper/JiudianjianjieDao.xml b/back/src/main/resources/mapper/JiudianjianjieDao.xml index 2d432dd1..f3371c94 100644 --- a/back/src/main/resources/mapper/JiudianjianjieDao.xml +++ b/back/src/main/resources/mapper/JiudianjianjieDao.xml @@ -16,27 +16,27 @@ - + - + - + diff --git a/back/src/main/resources/mapper/KefangleixingDao.xml b/back/src/main/resources/mapper/KefangleixingDao.xml index 048e7622..71df1300 100644 --- a/back/src/main/resources/mapper/KefangleixingDao.xml +++ b/back/src/main/resources/mapper/KefangleixingDao.xml @@ -10,27 +10,27 @@ - + - + - + diff --git a/back/src/main/resources/mapper/KefangyudingDao.xml b/back/src/main/resources/mapper/KefangyudingDao.xml index 4f5d7bc7..9cd5c7ba 100644 --- a/back/src/main/resources/mapper/KefangyudingDao.xml +++ b/back/src/main/resources/mapper/KefangyudingDao.xml @@ -23,27 +23,27 @@ - + - + - + diff --git a/back/src/main/resources/mapper/NewsDao.xml b/back/src/main/resources/mapper/NewsDao.xml index 88ae12d9..8733f997 100644 --- a/back/src/main/resources/mapper/NewsDao.xml +++ b/back/src/main/resources/mapper/NewsDao.xml @@ -13,27 +13,27 @@ - + - + - + diff --git a/back/src/main/resources/mapper/RuzhuanpaiDao.xml b/back/src/main/resources/mapper/RuzhuanpaiDao.xml index 0245651e..2fddb016 100644 --- a/back/src/main/resources/mapper/RuzhuanpaiDao.xml +++ b/back/src/main/resources/mapper/RuzhuanpaiDao.xml @@ -20,27 +20,27 @@ - + - + - +