From 5e9728171e4ec479ba4acd70a37720a83de48b41 Mon Sep 17 00:00:00 2001 From: pbvfus8to <480171784@qq.com> Date: Wed, 18 Dec 2024 10:22:52 +0800 Subject: [PATCH] Update NoticeController.java --- .../admin/controller/NoticeController.java | 65 +++++++++++-------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/NoticeController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/NoticeController.java index fdb76fd..40ad765 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/NoticeController.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/NoticeController.java @@ -27,7 +27,7 @@ import java.util.Date; /** * 公告管理 - * + * 该类作为公告管理相关功能的控制器,提供了公告的分页查询、详情查询、新增、修改以及删除等操作的接口 * @author hzm * @date */ @@ -36,30 +36,31 @@ import java.util.Date; @RequestMapping("/shop/notice") public class NoticeController { + // 通过构造函数注入NoticeService,用于调用业务层方法来处理公告相关的业务逻辑 private final NoticeService noticeService; /** - * 分页查询 - * - * @param page 分页对象 - * @param notice 公告管理 - * @return 分页数据 + * 分页查询公告信息的方法 + * 根据传入的分页参数以及公告筛选条件,返回符合条件的公告分页数据 + * @param page 分页对象,包含分页相关的参数,如页码、每页数量等 + * @param notice 公告管理对象,用于传递筛选公告的条件,比如公告状态、是否置顶、标题等 + * @return 返回一个ServerResponseEntity>类型的响应,成功时包含符合条件的公告分页数据 */ @GetMapping("/page") public ServerResponseEntity> getNoticePage(PageParam page, Notice notice) { + // 使用MyBatis Plus的LambdaQueryWrapper构建查询条件,根据传入的公告对象中的非空字段进行筛选 + // 例如根据状态、是否置顶、标题等进行筛选,并按照更新时间降序排列 IPage noticePage = noticeService.page(page, new LambdaQueryWrapper() - .eq(notice.getStatus() != null, Notice::getStatus, notice.getStatus()) - .eq(notice.getIsTop()!=null,Notice::getIsTop,notice.getIsTop()) - .like(notice.getTitle() != null, Notice::getTitle, notice.getTitle()).orderByDesc(Notice::getUpdateTime)); + .eq(notice.getStatus()!= null, Notice::getStatus, notice.getStatus()) + .eq(notice.getIsTop()!= null, Notice::getIsTop, notice.getIsTop()) + .like(notice.getTitle()!= null, Notice::getTitle, notice.getTitle()).orderByDesc(Notice::getUpdateTime)); return ServerResponseEntity.success(noticePage); } - /** - * 通过id查询公告管理 - * - * @param id id - * @return 单个数据 + * 通过id查询单个公告信息的方法 + * @param id 要查询的公告的唯一标识(id) + * @return 返回一个ServerResponseEntity类型的响应,成功时包含对应id的公告详情数据 */ @GetMapping("/info/{id}") public ServerResponseEntity getById(@PathVariable("id") Long id) { @@ -67,57 +68,65 @@ public class NoticeController { } /** - * 新增公告管理 - * - * @param notice 公告管理 - * @return 是否新增成功 + * 新增公告的方法 + * 接收前端传入的公告信息,进行必要的属性设置后保存到数据库中,并记录操作日志 + * @param notice 公告管理对象,包含要新增的公告的详细信息 + * @return 返回一个ServerResponseEntity类型的响应,成功时表示新增操作是否成功(true为成功,false为失败) */ @SysLog("新增公告管理") @PostMapping @PreAuthorize("@pms.hasPermission('shop:notice:save')") + // 使用 @PreAuthorize 注解进行权限校验,只有拥有'shop:notice:save'权限的用户才能访问该接口 public ServerResponseEntity save(@RequestBody @Valid Notice notice) { + // 设置公告所属店铺的id,从当前登录用户信息中获取 notice.setShopId(SecurityUtils.getSysUser().getShopId()); if (notice.getStatus() == 1) { + // 如果公告状态为已发布(1表示已发布),则设置发布时间为当前时间 notice.setPublishTime(new Date()); } notice.setUpdateTime(new Date()); + // 调用业务层方法先移除相关的公告列表(具体逻辑由业务层的removeNoticeList方法决定) noticeService.removeNoticeList(); return ServerResponseEntity.success(noticeService.save(notice)); } /** - * 修改公告管理 - * - * @param notice 公告管理 - * @return 是否修改成功 + * 修改公告信息的方法 + * 根据传入的公告信息更新数据库中对应公告的数据,并记录操作日志,同时进行一些业务逻辑判断和相关数据处理 + * @param notice 公告管理对象,包含要修改的公告的详细信息 + * @return 返回一个ServerResponseEntity类型的响应,成功时表示修改操作是否成功(true为成功,false为失败) */ @SysLog("修改公告管理") @PutMapping @PreAuthorize("@pms.hasPermission('shop:notice:update')") + // 使用 @PreAuthorize 注解进行权限校验,只有拥有'shop:notice:update'权限的用户才能访问该接口 public ServerResponseEntity updateById(@RequestBody @Valid Notice notice) { Notice oldNotice = noticeService.getById(notice.getId()); if (oldNotice.getStatus() == 0 && notice.getStatus() == 1) { + // 如果原公告状态为未发布(0表示未发布),修改后变为已发布(1表示已发布),则设置发布时间为当前时间 notice.setPublishTime(new Date()); } notice.setUpdateTime(new Date()); + // 调用业务层方法先移除相关的公告列表(具体逻辑由业务层的removeNoticeList方法决定) noticeService.removeNoticeList(); + // 移除要修改的这条公告(具体逻辑由业务层的removeNoticeById方法决定,可能是缓存清除等相关操作) noticeService.removeNoticeById(notice.getId()); return ServerResponseEntity.success(noticeService.updateById(notice)); } /** - * 通过id删除公告管理 - * - * @param id id - * @return 是否删除成功 + * 通过id删除公告的方法 + * 根据传入的公告id删除数据库中对应的公告信息,并记录操作日志,同时进行相关数据处理 + * @param id 要删除的公告的唯一标识(id) + * @return 返回一个ServerResponseEntity类型的响应,成功时表示删除操作是否成功(true为成功,false为失败) */ @SysLog("删除公告管理") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('shop:notice:delete')") + // 使用 @PreAuthorize 注解进行权限校验,只有拥有'shop:notice:delete'权限的用户才能访问该接口 public ServerResponseEntity removeById(@PathVariable Long id) { noticeService.removeNoticeList(); noticeService.removeNoticeById(id); return ServerResponseEntity.success(noticeService.removeById(id)); } - -} +} \ No newline at end of file