|
@@ -7,32 +7,27 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
-import com.github.yulichang.interfaces.MPJBaseJoin;
|
|
|
import com.github.yulichang.toolkit.MPJWrappers;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
-import com.xjrsoft.common.annotation.XjrLog;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
|
import com.xjrsoft.common.model.result.R;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.page.PageOutput;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
-import com.xjrsoft.module.authority.entity.DataAuth;
|
|
|
-import com.xjrsoft.module.oa.dto.AddNewsDto;
|
|
|
-import com.xjrsoft.module.oa.dto.NewsPageDto;
|
|
|
-import com.xjrsoft.module.oa.dto.NewsReplyDto;
|
|
|
-import com.xjrsoft.module.oa.dto.UpdateNewsDto;
|
|
|
-import com.xjrsoft.module.oa.entity.Message;
|
|
|
+import com.xjrsoft.module.oa.dto.*;
|
|
|
import com.xjrsoft.module.oa.entity.News;
|
|
|
import com.xjrsoft.module.oa.entity.NewsAppendix;
|
|
|
import com.xjrsoft.module.oa.entity.NewsRelation;
|
|
|
-import com.xjrsoft.module.oa.service.IMessageService;
|
|
|
import com.xjrsoft.module.oa.service.INewsAppendixService;
|
|
|
import com.xjrsoft.module.oa.service.INewsRelationService;
|
|
|
import com.xjrsoft.module.oa.service.INewsService;
|
|
|
-import com.xjrsoft.module.oa.vo.*;
|
|
|
-import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
|
|
|
-import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
+import com.xjrsoft.module.oa.vo.NewsAppendixVo;
|
|
|
+import com.xjrsoft.module.oa.vo.NewsPageVo;
|
|
|
+import com.xjrsoft.module.oa.vo.NewsRelationVo;
|
|
|
+import com.xjrsoft.module.oa.vo.NewsVo;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudentUser;
|
|
|
import com.xjrsoft.module.system.entity.File;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import io.swagger.annotations.Api;
|
|
@@ -42,7 +37,6 @@ import org.apache.commons.lang3.BooleanUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -83,9 +77,9 @@ public class NewsController {
|
|
|
MPJLambdaWrapper<News> wrapper = MPJWrappers.<News>lambdaJoin()
|
|
|
.distinct()
|
|
|
.eq(ObjectUtil.isNotEmpty(dto.getType()) && dto.getType() > 0, News::getTypeId, dto.getType())
|
|
|
- .and(wq->wq.eq(News::getLevel,1).or().eq(News::getLevel,2).eq(News::getClassId, dto.getClassId()))
|
|
|
+ .and(wq -> wq.eq(News::getLevel, 1).or().eq(News::getLevel, 2).eq(News::getClassId, dto.getClassId()))
|
|
|
.eq(ObjectUtil.isNotEmpty(dto.getLevel()) && dto.getLevel() > 0, News::getLevel, dto.getLevel())
|
|
|
- .and(wq->wq.eq(News::getSendRange,1).or().eq(News::getSendRange,2).in(News::getId,"select id from xjr_oa_news_relation where news_id=t.id and user_id="+StpUtil.getLoginIdAsLong()))
|
|
|
+ .and(wq -> wq.eq(News::getSendRange, 1).or().eq(News::getSendRange, 2).in(News::getId, "select id from xjr_oa_news_relation where news_id=t.id and user_id=" + StpUtil.getLoginIdAsLong()))
|
|
|
.like(StrUtil.isNotBlank(dto.getKeyword()), News::getFullHead, dto.getKeyword())
|
|
|
// .leftJoin(NewsRelation.class, onWrapper -> onWrapper.eq(NewsRelation::getNewsId, News::getId).eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong()))
|
|
|
// .selectAs(NewsRelation::getId, NewsPageVo::getReadId)
|
|
@@ -123,23 +117,23 @@ public class NewsController {
|
|
|
|
|
|
NewsVo newsVo = BeanUtil.toBean(news, NewsVo.class);
|
|
|
|
|
|
- List<NewsRelationVo> newsRelationVoList = newsRelationService.selectJoinList(NewsRelationVo.class,
|
|
|
- new MPJLambdaWrapper<NewsRelation>()
|
|
|
- .eq(NewsRelation::getNewsId, id)
|
|
|
- .select(NewsRelation::getId)
|
|
|
- .select(NewsRelation.class, x -> VoToColumnUtil.fieldsToColumns(NewsRelationVo.class).contains(x.getProperty()))
|
|
|
- .leftJoin(XjrUser.class, XjrUser::getId, NewsRelation::getUserId, ext -> ext.selectAs(XjrUser::getName, NewsRelationVo::getUserName)));
|
|
|
- if (newsRelationVoList.size() > 0) {
|
|
|
- newsVo.setRelationList(newsRelationVoList);
|
|
|
- }
|
|
|
+// List<NewsRelationVo> newsRelationVoList = newsRelationService.selectJoinList(NewsRelationVo.class,
|
|
|
+// new MPJLambdaWrapper<NewsRelation>()
|
|
|
+// .eq(NewsRelation::getNewsId, id)
|
|
|
+// .select(NewsRelation::getId)
|
|
|
+// .select(NewsRelation.class, x -> VoToColumnUtil.fieldsToColumns(NewsRelationVo.class).contains(x.getProperty()))
|
|
|
+// .leftJoin(XjrUser.class, XjrUser::getId, NewsRelation::getUserId, ext -> ext.selectAs(XjrUser::getName, NewsRelationVo::getUserName)));
|
|
|
+// if (newsRelationVoList.size() > 0) {
|
|
|
+// newsVo.setRelationList(newsRelationVoList);
|
|
|
+// }
|
|
|
|
|
|
List<NewsAppendixVo> newsAppendixVoList = newsAppendixService.selectJoinList(NewsAppendixVo.class,
|
|
|
new MPJLambdaWrapper<NewsAppendix>().eq(NewsAppendix::getNewsId, id)
|
|
|
.select(NewsRelation::getId)
|
|
|
.select(NewsAppendix.class, x -> VoToColumnUtil.fieldsToColumns(NewsAppendixVo.class).contains(x.getProperty()))
|
|
|
.leftJoin(File.class, File::getId, NewsAppendix::getFileId, ext -> ext.selectAs(File::getFileName, NewsAppendixVo::getFileName)
|
|
|
- .selectAs(File::getFolderId,NewsAppendixVo::getFolderId)
|
|
|
- .selectAs(File::getFileUrl,NewsAppendixVo::getFileUrl))
|
|
|
+ .selectAs(File::getFolderId, NewsAppendixVo::getFolderId)
|
|
|
+ .selectAs(File::getFileUrl, NewsAppendixVo::getFileUrl))
|
|
|
);
|
|
|
|
|
|
if (newsAppendixVoList.size() > 0) {
|
|
@@ -200,11 +194,11 @@ public class NewsController {
|
|
|
|
|
|
@PutMapping("/reply")
|
|
|
@ApiOperation(value = "新闻回复")
|
|
|
- public R reply(@RequestBody NewsReplyDto newsReplyDto) throws Exception {
|
|
|
+ public R reply(@RequestBody NewsReplyDto newsReplyDto) {
|
|
|
NewsRelation newsRelation = newsRelationService.getOne(
|
|
|
Wrappers.<NewsRelation>query().lambda()
|
|
|
- .eq(NewsRelation::getNewsId,newsReplyDto.getId())
|
|
|
- .eq(NewsRelation::getUserId,StpUtil.getLoginIdAsLong()));
|
|
|
+ .eq(NewsRelation::getNewsId, newsReplyDto.getId())
|
|
|
+ .eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong()));
|
|
|
if (newsRelation == null) {
|
|
|
newsRelation = new NewsRelation();
|
|
|
newsRelation.setNewsId(newsReplyDto.getId());
|
|
@@ -215,11 +209,48 @@ public class NewsController {
|
|
|
return R.ok(newsRelationService.save(newsRelation));
|
|
|
}
|
|
|
|
|
|
- if (newsRelation.getReadMark()==null || newsRelation.getReadMark() == 0) {
|
|
|
+ if (newsRelation.getReadMark() == null || newsRelation.getReadMark() == 0) {
|
|
|
newsRelation.setReadMark(1);
|
|
|
newsRelation.setReadDate(LocalDateTime.now());
|
|
|
}
|
|
|
newsRelation.setReplyContent(newsReplyDto.getReplyContent());
|
|
|
return R.ok(newsRelationService.updateById(newsRelation));
|
|
|
}
|
|
|
+
|
|
|
+ @GetMapping("/page-relation")
|
|
|
+ @ApiOperation(value = "获取新闻阅读权限分页")
|
|
|
+ public R pageRelation(NewsRelationPageDto dto) {
|
|
|
+ MPJLambdaWrapper<NewsRelation> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapper.disableSubLogicDel()
|
|
|
+ .eq(NewsRelation::getNewsId, dto.getNewsId())
|
|
|
+ .eq(ObjectUtil.isNotEmpty(dto.getReadMark()) && dto.getReadMark() > 0, NewsRelation::getReadMark, dto.getReadMark() == 1 ? 0 : 1)
|
|
|
+ .select(NewsRelation::getId)
|
|
|
+ .select(NewsRelation.class, x -> VoToColumnUtil.fieldsToColumns(NewsRelationVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, NewsRelation::getUserId);
|
|
|
+
|
|
|
+ IPage<NewsRelation> page = newsRelationService.page(ConventPage.getPage(dto), queryWrapper);
|
|
|
+ PageOutput<NewsRelationVo> pageOutput = ConventPage.getPageOutput(page, NewsRelationVo.class);
|
|
|
+ return R.ok(pageOutput);
|
|
|
+ }
|
|
|
+ @GetMapping("/count-relation")
|
|
|
+ @ApiOperation(value = "新闻阅读权限统计")
|
|
|
+ public R 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[] arrayRefVar = {total, notRead, isRead};
|
|
|
+ return R.ok(arrayRefVar);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PutMapping("/update-relation")
|
|
|
+ @ApiOperation(value = "设置新闻阅读权限")
|
|
|
+ public R updateRelation(@RequestBody UpdateNewsRelationDto updateRelationDto) {
|
|
|
+ return R.ok(newsService.updateRelation(updateRelationDto));
|
|
|
+ }
|
|
|
+
|
|
|
+ @DeleteMapping("/delete-relation")
|
|
|
+ @ApiOperation(value = "删除新闻阅读权限")
|
|
|
+ public R deleteRelation(@RequestBody DeleteNewsRelationDto deleteNewsRelationDto) {
|
|
|
+ return R.ok(newsService.deleteRelation(deleteNewsRelationDto));
|
|
|
+ }
|
|
|
}
|