|
|
@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
|
|
|
/**
|
|
|
* 公告
|
|
|
@@ -75,7 +76,13 @@ public class ProclamationController {
|
|
|
@PostMapping
|
|
|
@ApiOperation(value = "新增公告")
|
|
|
public RT<Boolean> add(@RequestBody AddProclamationDto addProclamationDto) {
|
|
|
- return RT.ok(newsService.addProclamation(addProclamationDto));
|
|
|
+ Long newsId = newsService.addProclamation(addProclamationDto);
|
|
|
+ if(newsId != null){
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
+ newsService.SendMessage(newsId);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return RT.ok(true);
|
|
|
}
|
|
|
|
|
|
@GetMapping(value = "/info")
|
|
|
@@ -107,9 +114,11 @@ public class ProclamationController {
|
|
|
@ApiOperation(value = "发布或下架公告")
|
|
|
public RT<Boolean> changeStatus(@RequestBody ChangeNewsDto changeNewsDto){
|
|
|
if(newsService.changeStatus(changeNewsDto)){
|
|
|
- return RT.ok(newsService.SendMessage(changeNewsDto.getId()));
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
+ newsService.SendMessage(changeNewsDto.getId());
|
|
|
+ });
|
|
|
}
|
|
|
- return RT.ok("操作失败",null);
|
|
|
+ return RT.ok(true);
|
|
|
}
|
|
|
|
|
|
@PutMapping("/read")
|
|
|
@@ -185,18 +194,6 @@ public class ProclamationController {
|
|
|
return RT.ok(pageOutput);
|
|
|
}
|
|
|
|
|
|
- @GetMapping("/count-relation")
|
|
|
- @ApiOperation(value = "公告阅读权限统计")
|
|
|
- public RT<Long[]> countRelation(@RequestParam Long id) {
|
|
|
- Long total = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id));
|
|
|
- Long notRead = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).eq(NewsRelation::getReadMark, 0));
|
|
|
- Long isRead = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).eq(NewsRelation::getReadMark, 1));
|
|
|
- Long isReply = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).isNull(NewsRelation::getReplyContent));
|
|
|
- Long notReply = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).isNotNull(NewsRelation::getReplyContent));
|
|
|
- Long[] arrayRefVar = {total, notRead, isRead, isReply, notReply};
|
|
|
- return RT.ok(arrayRefVar);
|
|
|
- }
|
|
|
-
|
|
|
@PutMapping("/update-relation")
|
|
|
@ApiOperation(value = "设置公告阅读权限")
|
|
|
public RT<Boolean> updateRelation(@RequestBody UpdateNewsRelationDto updateRelationDto) {
|
|
|
@@ -209,13 +206,25 @@ public class ProclamationController {
|
|
|
return RT.ok(newsService.deleteRelation(deleteNewsRelationDto));
|
|
|
}
|
|
|
|
|
|
+ @GetMapping("/count-relation")
|
|
|
+ @ApiOperation(value = "公告阅读权限统计")
|
|
|
+ public RT<Long[]> countRelation(@RequestParam Long id) {
|
|
|
+ Long total = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id));
|
|
|
+ Long notRead = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).eq(NewsRelation::getReadMark, 0));
|
|
|
+ Long isRead = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).eq(NewsRelation::getReadMark, 1));
|
|
|
+ Long isReply = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).isNotNull(NewsRelation::getReplyContent));
|
|
|
+ Long notReply = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getNewsId, id).isNull(NewsRelation::getReplyContent));
|
|
|
+ Long[] arrayRefVar = {total, notRead, isRead, isReply, notReply};
|
|
|
+ return RT.ok(arrayRefVar);
|
|
|
+ }
|
|
|
+
|
|
|
@GetMapping("/count-type")
|
|
|
@ApiOperation(value = "未读类型统计")
|
|
|
public RT<List<NewsCountTypeVo>> countType() {
|
|
|
List<NewsCountTypeVo> newsCountTypeVoList = new ArrayList<>();
|
|
|
Integer typeIds[] = {1, 2, 3};
|
|
|
for (Integer typeId : typeIds) {
|
|
|
- Long totalType = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong()).eq(NewsRelation::getReadMark, 0).in(NewsRelation::getNewsId, "SELECT id from xjr_oa_news where type_id=" + typeId));
|
|
|
+ Long totalType = newsRelationService.count(Wrappers.<NewsRelation>query().lambda().eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong()).eq(NewsRelation::getReadMark, 0).in(NewsRelation::getNewsId, "SELECT id from xjr_oa_news where delete_mark = 0 and type_id=" + typeId));
|
|
|
NewsCountTypeVo newsCountTypeVo = new NewsCountTypeVo();
|
|
|
newsCountTypeVo.setTypeId(typeId);
|
|
|
newsCountTypeVo.setTotal(totalType);
|
|
|
@@ -224,7 +233,8 @@ public class ProclamationController {
|
|
|
news = newsService.getOne(Wrappers.<News>query().lambda().eq(News::getTypeId, typeId).orderByDesc(News::getReleaseTime).last("limit 1"));
|
|
|
}
|
|
|
if(typeId == 2){
|
|
|
- news = newsService.selectJoinOne(News.class,
|
|
|
+ //找到和该登录用户有关系的最后一条公告
|
|
|
+ News newsRelation = newsService.selectJoinOne(News.class,
|
|
|
new MPJLambdaWrapper<News>()
|
|
|
.disableSubLogicDel()
|
|
|
.eq(News::getTypeId, typeId)
|
|
|
@@ -232,6 +242,16 @@ public class ProclamationController {
|
|
|
.orderByDesc(News::getReleaseTime)
|
|
|
.last("limit 1")
|
|
|
.innerJoin(NewsRelation.class, NewsRelation::getNewsId, News::getId));
|
|
|
+
|
|
|
+ news = newsRelation;
|
|
|
+ //找到晚于和该登录用户有关系的所有公告
|
|
|
+ List<News> newsList = newsService.list(Wrappers.<News>query().lambda().eq(News::getTypeId, typeId).lt(News::getReleaseTime, newsRelation.getReleaseTime()).orderByDesc(News::getReleaseTime));
|
|
|
+ for (News n : newsList) {
|
|
|
+ if(n.getSendRange() == 1){//是发给所有人的
|
|
|
+ news = n;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
if (news != null) {
|
|
|
newsCountTypeVo.setTime(news.getReleaseTime());
|