This commit is contained in:
dzc committed 2025-08-13 11:47:14 +08:00
commit 702949a3a9
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 调用示例
@@ -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);
@@ -71,6 +71,12 @@ public class NoticeEntity extends Model<NoticeEntity> {
@Schema(description="浏览次数")
private Integer viewCount;
/**
* 过期时间
*/
@Schema(description="过期时间,到期后公告自动下架")
private LocalDateTime expireTime;
/**
* 创建者
*/