|
|
|
@ -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<IPage<Notice>>类型的响应,成功时包含符合条件的公告分页数据
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/page")
|
|
|
|
|
public ServerResponseEntity<IPage<Notice>> getNoticePage(PageParam<Notice> page, Notice notice) {
|
|
|
|
|
// 使用MyBatis Plus的LambdaQueryWrapper构建查询条件,根据传入的公告对象中的非空字段进行筛选
|
|
|
|
|
// 例如根据状态、是否置顶、标题等进行筛选,并按照更新时间降序排列
|
|
|
|
|
IPage<Notice> noticePage = noticeService.page(page, new LambdaQueryWrapper<Notice>()
|
|
|
|
|
.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<Notice>类型的响应,成功时包含对应id的公告详情数据
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/info/{id}")
|
|
|
|
|
public ServerResponseEntity<Notice> getById(@PathVariable("id") Long id) {
|
|
|
|
@ -67,57 +68,65 @@ public class NoticeController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增公告管理
|
|
|
|
|
*
|
|
|
|
|
* @param notice 公告管理
|
|
|
|
|
* @return 是否新增成功
|
|
|
|
|
* 新增公告的方法
|
|
|
|
|
* 接收前端传入的公告信息,进行必要的属性设置后保存到数据库中,并记录操作日志
|
|
|
|
|
* @param notice 公告管理对象,包含要新增的公告的详细信息
|
|
|
|
|
* @return 返回一个ServerResponseEntity<Boolean>类型的响应,成功时表示新增操作是否成功(true为成功,false为失败)
|
|
|
|
|
*/
|
|
|
|
|
@SysLog("新增公告管理")
|
|
|
|
|
@PostMapping
|
|
|
|
|
@PreAuthorize("@pms.hasPermission('shop:notice:save')")
|
|
|
|
|
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'shop:notice:save'权限的用户才能访问该接口
|
|
|
|
|
public ServerResponseEntity<Boolean> 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<Boolean>类型的响应,成功时表示修改操作是否成功(true为成功,false为失败)
|
|
|
|
|
*/
|
|
|
|
|
@SysLog("修改公告管理")
|
|
|
|
|
@PutMapping
|
|
|
|
|
@PreAuthorize("@pms.hasPermission('shop:notice:update')")
|
|
|
|
|
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'shop:notice:update'权限的用户才能访问该接口
|
|
|
|
|
public ServerResponseEntity<Boolean> 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<Boolean>类型的响应,成功时表示删除操作是否成功(true为成功,false为失败)
|
|
|
|
|
*/
|
|
|
|
|
@SysLog("删除公告管理")
|
|
|
|
|
@DeleteMapping("/{id}")
|
|
|
|
|
@PreAuthorize("@pms.hasPermission('shop:notice:delete')")
|
|
|
|
|
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'shop:notice:delete'权限的用户才能访问该接口
|
|
|
|
|
public ServerResponseEntity<Boolean> removeById(@PathVariable Long id) {
|
|
|
|
|
noticeService.removeNoticeList();
|
|
|
|
|
noticeService.removeNoticeById(id);
|
|
|
|
|
return ServerResponseEntity.success(noticeService.removeById(id));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|