|
|
@@ -0,0 +1,114 @@
|
|
|
+package com.platform.service.upms.impl;
|
|
|
+
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
|
+import com.platform.common.bean.AbstractPageResultBean;
|
|
|
+import com.platform.common.util.StringUtils;
|
|
|
+import com.platform.dao.bean.MyPage;
|
|
|
+import com.platform.dao.dto.upms.AnnouncementDTO;
|
|
|
+import com.platform.dao.entity.upms.Announcement;
|
|
|
+import com.platform.dao.mapper.upms.AnnouncementMapper;
|
|
|
+import com.platform.service.base.impl.BaseServiceImpl;
|
|
|
+import com.platform.service.upms.AnnouncementService;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import tk.mybatis.mapper.weekend.Weekend;
|
|
|
+import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description 公告 service 实现类
|
|
|
+ * @Author sunzhongwei
|
|
|
+ * @Date 2026-10-22
|
|
|
+ * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
|
|
|
+ */
|
|
|
+@AllArgsConstructor
|
|
|
+@Service("announcementService")
|
|
|
+public class AnnouncementServiceImpl extends BaseServiceImpl<AnnouncementMapper, Announcement, AnnouncementDTO> implements AnnouncementService {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 状态:草稿
|
|
|
+ */
|
|
|
+ private static final int STATUS_DRAFT = 0;
|
|
|
+ /**
|
|
|
+ * 状态:已发布
|
|
|
+ */
|
|
|
+ private static final int STATUS_PUBLISHED = 1;
|
|
|
+ /**
|
|
|
+ * 状态:已下架
|
|
|
+ */
|
|
|
+ private static final int STATUS_HIDDEN = 2;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int batchDelete(List<String> ids) {
|
|
|
+ Weekend<Announcement> weekend = new Weekend<>(Announcement.class);
|
|
|
+ WeekendCriteria<Announcement, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
+ weekendCriteria.andIn(Announcement::getId, ids);
|
|
|
+ mapper.deleteByExample(weekend);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int publish(String id) {
|
|
|
+ Announcement update = new Announcement();
|
|
|
+ update.setId(id);
|
|
|
+ update.setStatus(STATUS_PUBLISHED);
|
|
|
+ update.setPublishTime(LocalDateTime.now());
|
|
|
+ update.setUpdateTime(LocalDateTime.now());
|
|
|
+ return mapper.updateByPrimaryKeySelective(update);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int hide(String id) {
|
|
|
+ Announcement update = new Announcement();
|
|
|
+ update.setId(id);
|
|
|
+ update.setStatus(STATUS_HIDDEN);
|
|
|
+ update.setUpdateTime(LocalDateTime.now());
|
|
|
+ return mapper.updateByPrimaryKeySelective(update);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int show(String id) {
|
|
|
+ // 恢复显示,不改发布时间
|
|
|
+ Announcement update = new Announcement();
|
|
|
+ update.setId(id);
|
|
|
+ update.setStatus(STATUS_PUBLISHED);
|
|
|
+ update.setUpdateTime(LocalDateTime.now());
|
|
|
+ return mapper.updateByPrimaryKeySelective(update);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Announcement> getPublishedList(int limit) {
|
|
|
+ Weekend<Announcement> weekend = new Weekend<>(Announcement.class);
|
|
|
+ // status=1 且 (expire_time is null 或 expire_time > now)
|
|
|
+ WeekendCriteria<Announcement, Object> criteria = weekend.weekendCriteria();
|
|
|
+ criteria.andEqualTo(Announcement::getStatus, STATUS_PUBLISHED);
|
|
|
+ criteria.andCondition("(expire_time is null or expire_time > now())");
|
|
|
+
|
|
|
+ weekend.setOrderByClause("top_flag desc, publish_time desc");
|
|
|
+ if (limit > 0) {
|
|
|
+ PageHelper.startPage(1, limit);
|
|
|
+ }
|
|
|
+ return mapper.selectByExample(weekend);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AbstractPageResultBean<Announcement> selectPageInfo(AnnouncementDTO record, int pageNum, int pageSize) {
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
+ Weekend<Announcement> weekend = new Weekend<>(Announcement.class);
|
|
|
+ WeekendCriteria<Announcement, Object> criteria = weekend.weekendCriteria();
|
|
|
+ String title = record.getTitle();
|
|
|
+ if (StringUtils.isNotEmpty(title)) {
|
|
|
+ criteria.andLike(Announcement::getTitle, "%" + title + "%");
|
|
|
+ }
|
|
|
+ if (record.getType() != null) {
|
|
|
+ criteria.andEqualTo(Announcement::getType, record.getType());
|
|
|
+ }
|
|
|
+ if (record.getStatus() != null) {
|
|
|
+ criteria.andEqualTo(Announcement::getStatus, record.getStatus());
|
|
|
+ }
|
|
|
+ weekend.setOrderByClause("top_flag desc, publish_time desc, created_time desc");
|
|
|
+ return new MyPage<>(mapper.selectByExample(weekend));
|
|
|
+ }
|
|
|
+}
|