通知公告增加过期时间
This commit is contained in:
1 parent
94e6a9428d
commit
ca6f5e2801
3 files changed
+44
No files matched your search
@@ -46,11 +46,13 @@ X-App-Secret: 550e8400-e29b-41d4-a716-446655440001
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "系统维护通知",
|
||||
"createTime": "2025-01-27 10:00:00",
|
||||
"description": "系统将于今晚进行维护升级"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "新功能上线",
|
||||
"createTime": "2025-01-26 15:30:00",
|
||||
"description": "新增用户管理功能模块"
|
||||
@@ -68,6 +70,16 @@ X-App-Secret: 550e8400-e29b-41d4-a716-446655440001
|
||||
}
|
||||
```
|
||||
|
||||
## ⏰ 过期时间功能
|
||||
|
||||
系统支持为公告设置过期时间,到期后公告将自动下架不再显示:
|
||||
|
||||
- **过期时间字段**: `expireTime`
|
||||
- **自动处理**: 每天凌晨2点自动检查并处理过期公告
|
||||
- **处理逻辑**: 过期公告状态自动更新为"已下架"
|
||||
- **查询过滤**: 所有查询接口自动过滤已过期公告
|
||||
- **灵活设置**: 支持设置具体过期时间,也支持永不过期(不设置过期时间)
|
||||
|
||||
## 💻 集成示例
|
||||
|
||||
### JavaScript 调用示例
|
||||
|
||||
+26
@@ -27,6 +27,7 @@ import com.bsd.pjcloud.integrated.config.ExternalAppConfig;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知公告
|
||||
@@ -56,6 +57,11 @@ public class NoticeController {
|
||||
public R getNoticePage(@ParameterObject Page page, @ParameterObject NoticeEntity notice) {
|
||||
LambdaQueryWrapper<NoticeEntity> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.like(StrUtil.isNotBlank(notice.getTitle()),NoticeEntity::getTitle,notice.getTitle());
|
||||
// 过滤已过期和已下架的公告
|
||||
wrapper.and(w -> w.eq(NoticeEntity::getStatus, "0")
|
||||
.and(inner -> inner.isNull(NoticeEntity::getExpireTime)
|
||||
.or()
|
||||
.gt(NoticeEntity::getExpireTime, LocalDateTime.now())));
|
||||
return R.ok(noticeService.pageScope(page, wrapper));
|
||||
}
|
||||
|
||||
@@ -138,6 +144,10 @@ public class NoticeController {
|
||||
LambdaQueryWrapper<NoticeEntity> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(NoticeEntity::getStatus, "0"); // 只查已发布
|
||||
wrapper.like(StrUtil.isNotBlank(title), NoticeEntity::getTitle, title);
|
||||
// 过滤已过期的公告
|
||||
wrapper.and(w -> w.isNull(NoticeEntity::getExpireTime)
|
||||
.or()
|
||||
.gt(NoticeEntity::getExpireTime, LocalDateTime.now()));
|
||||
wrapper.orderByDesc(NoticeEntity::getIsTop, NoticeEntity::getCreateTime); // 置顶优先,时间倒序
|
||||
return R.ok(noticeService.page(page, wrapper));
|
||||
}
|
||||
@@ -154,6 +164,10 @@ public class NoticeController {
|
||||
if (notice == null || !"0".equals(notice.getStatus())) {
|
||||
return R.failed("公告不存在或已下架");
|
||||
}
|
||||
// 检查是否已过期
|
||||
if (notice.getExpireTime() != null && notice.getExpireTime().isBefore(LocalDateTime.now())) {
|
||||
return R.failed("公告已过期");
|
||||
}
|
||||
return R.ok(notice);
|
||||
}
|
||||
|
||||
@@ -169,6 +183,10 @@ public class NoticeController {
|
||||
if (notice == null || !"0".equals(notice.getStatus())) {
|
||||
return R.failed("公告不存在或已下架");
|
||||
}
|
||||
// 检查是否已过期
|
||||
if (notice.getExpireTime() != null && notice.getExpireTime().isBefore(LocalDateTime.now())) {
|
||||
return R.failed("公告已过期");
|
||||
}
|
||||
notice.setViewCount((notice.getViewCount() == null ? 0 : notice.getViewCount()) + 1);
|
||||
noticeService.updateById(notice);
|
||||
return R.ok();
|
||||
@@ -183,6 +201,10 @@ public class NoticeController {
|
||||
public R<List<NoticeScreenVo>> getScreenNoticeList() {
|
||||
LambdaQueryWrapper<NoticeEntity> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(NoticeEntity::getStatus, "0");
|
||||
// 过滤已过期的公告
|
||||
wrapper.and(w -> w.isNull(NoticeEntity::getExpireTime)
|
||||
.or()
|
||||
.gt(NoticeEntity::getExpireTime, LocalDateTime.now()));
|
||||
wrapper.orderByDesc(NoticeEntity::getCreateTime);
|
||||
wrapper.last("limit 10");
|
||||
List<NoticeEntity> list = noticeService.list(wrapper);
|
||||
@@ -224,6 +246,10 @@ public class NoticeController {
|
||||
|
||||
LambdaQueryWrapper<NoticeEntity> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(NoticeEntity::getStatus, "0"); // 只查询已发布的公告
|
||||
// 过滤已过期的公告
|
||||
wrapper.and(w -> w.isNull(NoticeEntity::getExpireTime)
|
||||
.or()
|
||||
.gt(NoticeEntity::getExpireTime, LocalDateTime.now()));
|
||||
wrapper.orderByDesc(NoticeEntity::getIsTop, NoticeEntity::getCreateTime); // 置顶优先,时间倒序
|
||||
wrapper.last("limit " + limit);
|
||||
|
||||
|
||||
+6
@@ -71,6 +71,12 @@ public class NoticeEntity extends Model<NoticeEntity> {
|
||||
@Schema(description="浏览次数")
|
||||
private Integer viewCount;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
@Schema(description="过期时间,到期后公告自动下架")
|
||||
private LocalDateTime expireTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
|
||||
Reference in new issue
Block a user