From 65fa627568b232d0c9c7882296febdcf0bec08e1 Mon Sep 17 00:00:00 2001
From: pbvfus8to <480171784@qq.com>
Date: Wed, 18 Dec 2024 10:15:56 +0800
Subject: [PATCH] Update AreaController.java
---
.../shop/admin/controller/AreaController.java | 75 +++++++++++++++----
1 file changed, 59 insertions(+), 16 deletions(-)
diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AreaController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AreaController.java
index 1a4659b..ee00e14 100644
--- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AreaController.java
+++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AreaController.java
@@ -27,38 +27,55 @@ import java.util.List;
import java.util.Objects;
/**
+ * AreaController类,用于处理与地区(Area)相关的后台管理接口请求
+ * 包含地区信息的分页查询、获取列表、根据父级ID获取列表、获取单个地区信息、保存、修改以及删除等操作
* @author lgh on 2018/10/26.
*/
@RestController
@RequestMapping("/admin/area")
public class AreaController {
+ // 自动注入AreaService,用于调用与地区相关的业务逻辑方法
@Autowired
private AreaService areaService;
/**
- * 分页获取
+ * 分页获取地区信息的接口方法
+ * 通过接收Area对象(可能包含查询条件)以及PageParam对象(用于分页参数设置),
+ * 调用AreaService的page方法进行分页查询,并返回包含查询结果的ServerResponseEntity对象
+ * @param area 可能包含查询条件的地区对象,比如按地区名称等条件查询
+ * @param page 分页参数对象,包含页码、每页数量等信息
+ * @return 返回包含分页地区信息的ServerResponseEntity,成功时其数据部分为IPage类型
*/
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('admin:area:page')")
- public ServerResponseEntity> page(Area area,PageParam page) {
+ public ServerResponseEntity> page(Area area, PageParam page) {
IPage sysUserPage = areaService.page(page, new LambdaQueryWrapper());
return ServerResponseEntity.success(sysUserPage);
}
/**
- * 获取省市
+ * 获取省市地区信息的接口方法
+ * 根据传入的Area对象(可能包含地区名称等模糊查询条件),
+ * 调用AreaService的list方法,使用LambdaQueryWrapper进行条件查询,获取符合条件的地区列表,
+ * 最后返回包含地区列表信息的ServerResponseEntity对象
+ * @param area 可能包含查询条件的地区对象,如按地区名称模糊查询
+ * @return 返回包含查询到的地区列表信息的ServerResponseEntity,成功时其数据部分为List类型
*/
@GetMapping("/list")
@PreAuthorize("@pms.hasPermission('admin:area:list')")
public ServerResponseEntity> list(Area area) {
List areas = areaService.list(new LambdaQueryWrapper()
- .like(area.getAreaName() != null, Area::getAreaName, area.getAreaName()));
+ .like(area.getAreaName()!= null, Area::getAreaName, area.getAreaName()));
return ServerResponseEntity.success(areas);
}
/**
- * 通过父级id获取区域列表
+ * 通过父级id获取区域列表的接口方法
+ * 直接调用AreaService的listByPid方法,传入父级ID,获取对应父级下的区域列表,
+ * 然后返回包含该区域列表信息的ServerResponseEntity对象
+ * @param pid 父级地区的ID
+ * @return 返回包含对应父级下区域列表信息的ServerResponseEntity,成功时其数据部分为List类型
*/
@GetMapping("/listByPid")
public ServerResponseEntity> listByPid(Long pid) {
@@ -67,7 +84,11 @@ public class AreaController {
}
/**
- * 获取信息
+ * 获取指定ID地区详细信息的接口方法
+ * 通过路径变量获取地区的ID,调用AreaService的getById方法获取对应的地区对象,
+ * 最后返回包含该地区对象信息的ServerResponseEntity对象
+ * @param id 要获取信息的地区的ID
+ * @return 返回包含指定地区详细信息的ServerResponseEntity,成功时其数据部分为Area类型
*/
@GetMapping("/info/{id}")
@PreAuthorize("@pms.hasPermission('admin:area:info')")
@@ -77,12 +98,17 @@ public class AreaController {
}
/**
- * 保存
+ * 保存地区信息的接口方法
+ * 首先判断传入的地区对象是否有父级ID,如果有,则根据父级地区的级别来设置当前地区的级别,
+ * 同时调用AreaService的removeAreaCacheByParentId方法清除对应父级ID的地区缓存,
+ * 最后调用AreaService的save方法保存地区信息,并返回表示成功的ServerResponseEntity对象
+ * @param area 要保存的地区对象,通过请求体传入,且经过了数据校验(@Valid注解)
+ * @return 返回表示保存成功的ServerResponseEntity,无数据内容(Void类型)
*/
@PostMapping
@PreAuthorize("@pms.hasPermission('admin:area:save')")
public ServerResponseEntity save(@Valid @RequestBody Area area) {
- if (area.getParentId() != null) {
+ if (area.getParentId()!= null) {
Area parentArea = areaService.getById(area.getParentId());
area.setLevel(parentArea.getLevel() + 1);
areaService.removeAreaCacheByParentId(area.getParentId());
@@ -92,17 +118,23 @@ public class AreaController {
}
/**
- * 修改
+ * 修改地区信息的接口方法
+ * 先根据传入地区对象的ID获取数据库中已存在的对应地区对象(areaDb),
+ * 然后判断当前地区的级别是否允许修改(一级、二级行政地区有相应限制),如果不允许则抛出异常,
+ * 接着调用hasSameName方法检查地区名称是否重复,
+ * 最后调用AreaService的updateById方法更新地区信息,并清除对应父级ID的地区缓存,返回表示成功的ServerResponseEntity对象
+ * @param area 要修改的地区对象,通过请求体传入,且经过了数据校验(@Valid注解)
+ * @return 返回表示修改成功的ServerResponseEntity,无数据内容(Void类型)
*/
@PutMapping
@PreAuthorize("@pms.hasPermission('admin:area:update')")
public ServerResponseEntity update(@Valid @RequestBody Area area) {
Area areaDb = areaService.getById(area.getAreaId());
// 判断当前省市区级别,如果是1级、2级则不能修改级别,不能修改成别人的下级
- if(Objects.equals(areaDb.getLevel(), AreaLevelEnum.FIRST_LEVEL.value()) && !Objects.equals(area.getLevel(),AreaLevelEnum.FIRST_LEVEL.value())){
+ if (Objects.equals(areaDb.getLevel(), AreaLevelEnum.FIRST_LEVEL.value()) &&!Objects.equals(area.getLevel(), AreaLevelEnum.FIRST_LEVEL.value())) {
throw new YamiShopBindException("不能改变一级行政地区的级别");
}
- if(Objects.equals(areaDb.getLevel(),AreaLevelEnum.SECOND_LEVEL.value()) && !Objects.equals(area.getLevel(),AreaLevelEnum.SECOND_LEVEL.value())){
+ if (Objects.equals(areaDb.getLevel(), AreaLevelEnum.SECOND_LEVEL.value()) &&!Objects.equals(area.getLevel(), AreaLevelEnum.SECOND_LEVEL.value())) {
throw new YamiShopBindException("不能改变二级行政地区的级别");
}
hasSameName(area);
@@ -112,7 +144,12 @@ public class AreaController {
}
/**
- * 删除
+ * 删除地区信息的接口方法
+ * 根据路径变量获取要删除地区的ID,先调用AreaService的getById方法获取对应的地区对象,
+ * 然后调用AreaService的removeById方法删除地区信息,同时清除对应父级ID的地区缓存,
+ * 最后返回表示成功的ServerResponseEntity对象
+ * @param id 要删除的地区的ID
+ * @return 返回表示删除成功的ServerResponseEntity,无数据内容(Void类型)
*/
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('admin:area:delete')")
@@ -123,14 +160,20 @@ public class AreaController {
return ServerResponseEntity.success();
}
+ /**
+ * 私有方法,用于检查要保存或修改的地区名称是否已存在(在同一父级下)
+ * 通过构建LambdaQueryWrapper,设置查询条件(父级ID相同、地区名称相同、排除自身ID等),
+ * 调用AreaService的count方法统计符合条件的记录数量,如果数量大于0则表示名称已存在,抛出异常
+ * @param area 要检查名称是否重复的地区对象
+ */
private void hasSameName(Area area) {
long count = areaService.count(new LambdaQueryWrapper()
- .eq(Area::getParentId, area.getParentId())
- .eq(Area::getAreaName, area.getAreaName())
- .ne(Objects.nonNull(area.getAreaId()) && !Objects.equals(area.getAreaId(), 0L), Area::getAreaId, area.getAreaId())
+ .eq(Area::getParentId, area.getParentId())
+ .eq(Area::getAreaName, area.getAreaName())
+ .ne(Objects.nonNull(area.getAreaId()) &&!Objects.equals(area.getAreaId(), 0L), Area::getAreaId, area.getAreaId())
);
if (count > 0) {
throw new YamiShopBindException("该地区已存在");
}
}
-}
+}
\ No newline at end of file