|
|
@@ -5,15 +5,23 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
|
+import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.utils.LocalDateTimeUtil;
|
|
|
+import com.xjrsoft.common.utils.TreeUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
+import com.xjrsoft.module.base.entity.BaseGrade;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseClassMapper;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseGradeMapper;
|
|
|
import com.xjrsoft.module.oa.dto.*;
|
|
|
import com.xjrsoft.module.oa.entity.News;
|
|
|
import com.xjrsoft.module.oa.entity.NewsAppendix;
|
|
|
@@ -23,25 +31,29 @@ import com.xjrsoft.module.oa.mapper.NewsAppendixMapper;
|
|
|
import com.xjrsoft.module.oa.mapper.NewsMapper;
|
|
|
import com.xjrsoft.module.oa.mapper.NewsRelationConfigMapper;
|
|
|
import com.xjrsoft.module.oa.mapper.NewsRelationMapper;
|
|
|
+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.NewsPageVo;
|
|
|
-import com.xjrsoft.module.oa.vo.NewsRelationVo;
|
|
|
+import com.xjrsoft.module.oa.vo.*;
|
|
|
import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
|
|
|
-import com.xjrsoft.module.organization.entity.Department;
|
|
|
-import com.xjrsoft.module.organization.entity.User;
|
|
|
-import com.xjrsoft.module.organization.entity.UserDeptRelation;
|
|
|
+import com.xjrsoft.module.organization.entity.*;
|
|
|
+import com.xjrsoft.module.organization.mapper.DepartmentMapper;
|
|
|
import com.xjrsoft.module.organization.mapper.UserDeptRelationMapper;
|
|
|
import com.xjrsoft.module.organization.mapper.UserMapper;
|
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
|
|
|
+import com.xjrsoft.module.system.entity.File;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -74,10 +86,416 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
|
|
|
private final UserMapper userMapper;
|
|
|
|
|
|
+ private final BaseGradeMapper baseGradeMapper;
|
|
|
+
|
|
|
+ private final DepartmentMapper departmentMapper;
|
|
|
+
|
|
|
+ private final BaseClassMapper baseClassMapper;
|
|
|
+
|
|
|
private final XjrUserMapper xjrUserMapper;
|
|
|
|
|
|
private final CommonPropertiesConfig commonPropertiesConfig;
|
|
|
|
|
|
+ private INewsRelationService newsRelationService;
|
|
|
+ private INewsAppendixService newsAppendixService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<NewsGradeClassTreeVo> getGradeClassTree() {
|
|
|
+ List<NewsGradeClassTreeVo> treeVoList = new ArrayList<NewsGradeClassTreeVo>();
|
|
|
+
|
|
|
+ //虚拟父级
|
|
|
+ treeVoList.add(new NewsGradeClassTreeVo(){{
|
|
|
+ setId(666666L);
|
|
|
+ setName("班级");
|
|
|
+ }});
|
|
|
+
|
|
|
+ //获取所有班级的年级作为树的父级
|
|
|
+ MPJLambdaWrapper<BaseClass> queryGrade = new MPJLambdaWrapper<>();
|
|
|
+ queryGrade
|
|
|
+ .distinct()
|
|
|
+ .selectAs(BaseGrade::getId, BaseGrade::getId)
|
|
|
+ .selectAs(BaseGrade::getName, BaseGrade::getName)
|
|
|
+ .leftJoin(BaseGrade.class, BaseGrade::getId, BaseClass::getGradeId);
|
|
|
+ List<BaseGrade> gradeList = baseClassMapper.selectJoinList(BaseGrade.class, queryGrade);
|
|
|
+ gradeList.forEach((node) -> {
|
|
|
+ treeVoList.add(new NewsGradeClassTreeVo(){{
|
|
|
+ setId(node.getId());
|
|
|
+ setName(node.getName());
|
|
|
+ setParentId(666666L);
|
|
|
+ }});
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ List<BaseClass> classList = baseClassMapper.selectList(new QueryWrapper<BaseClass>());
|
|
|
+ //获取班级荣誉中出现的学期下的所有班级作为树的子级
|
|
|
+ classList.forEach((node) -> {
|
|
|
+ treeVoList.add(new NewsGradeClassTreeVo(){{
|
|
|
+ setId(node.getId());
|
|
|
+ setName(node.getName());
|
|
|
+ setParentId(node.getGradeId());
|
|
|
+ }});
|
|
|
+ });
|
|
|
+
|
|
|
+ List<NewsGradeClassTreeVo> resultTreeVoList = TreeUtil.build(treeVoList);
|
|
|
+ return resultTreeVoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean addProclamation(AddProclamationDto addProclamationDto) {
|
|
|
+ News news = BeanUtil.toBean(addProclamationDto, News.class);
|
|
|
+ news.setTypeId(2);
|
|
|
+ news.setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
+ LambdaQueryWrapper<News> queryWrapperSortcode = new LambdaQueryWrapper<>();
|
|
|
+ //queryWrapperSortcode.select("SELECT IFNULL(MAX(sort_code),1)");
|
|
|
+ newsMapper.insert(news);
|
|
|
+
|
|
|
+ //添加附件子表
|
|
|
+ if (addProclamationDto.getAppendixList() != null) {
|
|
|
+ for (AddNewsAppendixDto appendixDto : addProclamationDto.getAppendixList()) {
|
|
|
+ NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
|
|
|
+ newsAppendix.setNewsId(news.getId());
|
|
|
+ newsAppendixMapper.insert(newsAppendix);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //公告需要添加阅读关系,关系类型 1=部门 2=人员 3=班级
|
|
|
+ if (addProclamationDto.getSendRange() == 3 && addProclamationDto.getRelationList() != null) {
|
|
|
+ for (AddNewsRelationDto relationDto : addProclamationDto.getRelationList()) {
|
|
|
+ if (relationDto.getRelationType() == 1) {
|
|
|
+ Department department = departmentMapper.selectById(relationDto.getRelationId());
|
|
|
+ newsRelationConfigMapper.insert(new NewsRelationConfig(){{
|
|
|
+ setNewsId(news.getId());
|
|
|
+ setRelationId(relationDto.getRelationId());
|
|
|
+ setRelationType(relationDto.getRelationType());
|
|
|
+ if(department != null){
|
|
|
+ setRelationName(department.getName());
|
|
|
+ }
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ if (relationDto.getRelationType() == 2) {
|
|
|
+ XjrUser xjrUser = xjrUserMapper.selectById(relationDto.getRelationId());
|
|
|
+ newsRelationConfigMapper.insert(new NewsRelationConfig(){{
|
|
|
+ setNewsId(news.getId());
|
|
|
+ setRelationId(relationDto.getRelationId());
|
|
|
+ setRelationType(relationDto.getRelationType());
|
|
|
+ if(xjrUser != null){
|
|
|
+ setRelationName(xjrUser.getName());
|
|
|
+ }
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ if (relationDto.getRelationType() == 3) {
|
|
|
+ BaseClass baseClass = baseClassMapper.selectById(relationDto.getRelationId());
|
|
|
+ BaseGrade baseGrade = null;
|
|
|
+ if(baseClass == null){
|
|
|
+ baseGrade = baseGradeMapper.selectById(relationDto.getRelationId());
|
|
|
+ }
|
|
|
+ BaseGrade finalBaseGrade = baseGrade;
|
|
|
+ newsRelationConfigMapper.insert(new NewsRelationConfig(){{
|
|
|
+ setNewsId(news.getId());
|
|
|
+ setRelationId(relationDto.getRelationId());
|
|
|
+ setRelationType(relationDto.getRelationType());
|
|
|
+ if(baseClass != null){
|
|
|
+ setRelationName(baseClass.getName());
|
|
|
+ }
|
|
|
+ if(finalBaseGrade != null){
|
|
|
+ setRelationName(finalBaseGrade.getName());
|
|
|
+ }
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ProclamationVo getProclamationById(Long id) {
|
|
|
+ MPJLambdaWrapper<News> queryWrapperNews = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapperNews
|
|
|
+ .select(News::getId)
|
|
|
+ .selectAs(Department::getName, ProclamationVo::getSendDeptIdCN)
|
|
|
+ .select(News.class, x -> VoToColumnUtil.fieldsToColumns(ProclamationVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(Department.class, Department::getId, News::getSendDeptId)
|
|
|
+ .eq(News::getId , id);
|
|
|
+ ProclamationVo proclamationVo = this.selectJoinOne(ProclamationVo.class, queryWrapperNews);
|
|
|
+ if (proclamationVo == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ //添加阅读关系集合
|
|
|
+ List<NewsRelationConfigVo> newsRelationConfigVoList = new ArrayList<>();
|
|
|
+ //公告在草稿状态还没有阅读状态,只有阅读关系
|
|
|
+ if(proclamationVo.getStatus() == 1){
|
|
|
+ MPJLambdaWrapper<NewsRelationConfig> queryWrapperNewsRelationConfig = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapperNewsRelationConfig
|
|
|
+ .select(NewsRelationConfig.class, x -> VoToColumnUtil.fieldsToColumns(NewsRelationConfigVo.class).contains(x.getProperty()))
|
|
|
+ .eq(NewsRelationConfig::getNewsId , proclamationVo.getId());
|
|
|
+ newsRelationConfigVoList = newsRelationConfigMapper.selectJoinList(NewsRelationConfigVo.class, queryWrapperNewsRelationConfig);
|
|
|
+ }
|
|
|
+ proclamationVo.setNewsRelationConfigVoList(newsRelationConfigVoList);
|
|
|
+
|
|
|
+ //添加阅读状态集合
|
|
|
+ List<NewsRelationVo> newsRelationVoList = new ArrayList<>();
|
|
|
+ //公告在发布状态或下架状态
|
|
|
+ if(proclamationVo.getStatus() == 2 || proclamationVo.getStatus() == 3){
|
|
|
+ MPJLambdaWrapper<NewsRelation> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ queryWrapper
|
|
|
+ .select(NewsRelation::getId)
|
|
|
+ .selectAs(XjrUser::getName,NewsRelationVo::getUserName)
|
|
|
+ .select(NewsRelation.class, x -> VoToColumnUtil.fieldsToColumns(NewsRelationVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(XjrUser.class,XjrUser::getId,NewsRelation::getUserId)
|
|
|
+ .eq(NewsRelation::getNewsId , proclamationVo.getId())
|
|
|
+ .disableSubLogicDel();
|
|
|
+ //当是发布人点击了该公告可以看到其下所有人的回复
|
|
|
+ if(ObjectUtil.isNotNull(proclamationVo.getCreateUserId()) && StpUtil.getLoginIdAsLong() == proclamationVo.getCreateUserId()) {
|
|
|
+ newsRelationVoList = newsRelationService.selectJoinList(NewsRelationVo.class, queryWrapper);
|
|
|
+ }else {//当不是发布人点击了该公告只能看到自己的回复
|
|
|
+ queryWrapper.eq(NewsRelation::getUserId , StpUtil.getLoginIdAsLong());
|
|
|
+ NewsRelationVo newsRelationVo = newsRelationService.selectJoinOne(NewsRelationVo.class, queryWrapper);
|
|
|
+ if(ObjectUtil.isNotNull(newsRelationVo)){
|
|
|
+ newsRelationVoList.add(newsRelationVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ proclamationVo.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))
|
|
|
+ );
|
|
|
+ if (newsAppendixVoList.size() > 0) {
|
|
|
+ proclamationVo.setAppendixList(newsAppendixVoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return proclamationVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<ProclamationPageVo> proclamationManageBox(ProclamationPageDto dto) {
|
|
|
+ MPJLambdaWrapper<News> queryNews = new MPJLambdaWrapper<>();
|
|
|
+ queryNews
|
|
|
+ .select(News::getId)
|
|
|
+ .selectAs(Department::getName, ProclamationPageVo::getSendDeptIdCN)
|
|
|
+ .select(News.class, x -> VoToColumnUtil.fieldsToColumns(ProclamationPageVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(Department.class, Department::getId, News::getSendDeptId)
|
|
|
+ .eq(News::getCreateUserId, StpUtil.getLoginIdAsLong())
|
|
|
+ .eq(News::getTypeId, 2)
|
|
|
+ .like(dto.getFullHead() != null, News::getFullHead, dto.getFullHead())
|
|
|
+ .like(dto.getKeyword() != null, News::getNewsContent, dto.getKeyword())
|
|
|
+ .orderByDesc(News::getReleaseTime)
|
|
|
+ .disableSubLogicDel();
|
|
|
+ IPage<ProclamationPageVo> page = this.selectJoinListPage(ConventPage.getPage(dto), ProclamationPageVo.class, queryNews);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<ProclamationPageVo> proclamationReceiptBox(ProclamationPageDto dto) {
|
|
|
+ MPJLambdaWrapper<News> queryNews = new MPJLambdaWrapper<>();
|
|
|
+ queryNews
|
|
|
+ .select(News::getId)
|
|
|
+ .selectAs(Department::getName, ProclamationPageVo::getSendDeptIdCN)
|
|
|
+ .select(News.class, x -> VoToColumnUtil.fieldsToColumns(ProclamationPageVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(Department.class, Department::getId, News::getSendDeptId)
|
|
|
+ .leftJoin(NewsRelation.class, NewsRelation::getNewsId, News::getId)
|
|
|
+ .eq(News::getTypeId, 2)
|
|
|
+ .eq(News::getStatus, 2)
|
|
|
+ .gt(News::getSendEndDate, new Date())
|
|
|
+ .eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong())
|
|
|
+ .or()
|
|
|
+ .eq(News::getSendRange, 2)
|
|
|
+ .orderByDesc(News::getReleaseTime)
|
|
|
+ .disableSubLogicDel();;
|
|
|
+ IPage<ProclamationPageVo> page = this.selectJoinListPage(ConventPage.getPage(dto), ProclamationPageVo.class, queryNews);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean changeStatus(ChangeNewsDto changeNewsDto) {
|
|
|
+ News xjrNews = this.getById(changeNewsDto.getId());
|
|
|
+ if (changeNewsDto.getStatus() == null || xjrNews == null) {
|
|
|
+ throw new MyException("参数异常");
|
|
|
+ }
|
|
|
+ if (changeNewsDto.getStatus().equals(xjrNews.getStatus())) {
|
|
|
+ if (changeNewsDto.getStatus() == 2) {
|
|
|
+ throw new MyException("公告已发布!!!");
|
|
|
+ } else if (changeNewsDto.getStatus() == 3) {
|
|
|
+ throw new MyException("公告已下架!!!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xjrNews.setStatus(changeNewsDto.getStatus());
|
|
|
+ //发布公告,将阅读关系中选择的阅读人添加到关系表
|
|
|
+ if(xjrNews.getStatus() == 2){
|
|
|
+ //将发布时间改为当前时间
|
|
|
+ xjrNews.setReleaseTime(LocalDateTime.now());
|
|
|
+ //将张贴时间改为当前时间
|
|
|
+ xjrNews.setSendStartDate(LocalDateTime.now());
|
|
|
+ xjrNews.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ xjrNews.setModifyDate(LocalDateTime.now());
|
|
|
+
|
|
|
+ LambdaQueryWrapper<NewsRelationConfig> queryConfig = new LambdaQueryWrapper<>();
|
|
|
+ queryConfig
|
|
|
+ .eq(NewsRelationConfig::getNewsId, xjrNews.getId());
|
|
|
+ List<NewsRelationConfig> newsRelationConfigList = newsRelationConfigMapper.selectList(queryConfig);
|
|
|
+
|
|
|
+ HashMap<Long, XjrUser> userMap = new HashMap<>();
|
|
|
+ if(xjrNews.getSendRange() == 3){
|
|
|
+ //遍历所有关系配置
|
|
|
+ for (NewsRelationConfig newsRelationConfig : newsRelationConfigList) {
|
|
|
+ //阅读关系是部门
|
|
|
+ if(newsRelationConfig.getRelationType() == 1){
|
|
|
+ // 获取部门下的人员添加
|
|
|
+ Long deptId = newsRelationConfig.getRelationId();
|
|
|
+ MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
|
|
|
+ queryUser
|
|
|
+ .leftJoin(UserDeptRelation.class,UserDeptRelation::getUserId,XjrUser::getId)
|
|
|
+ .leftJoin(Department.class,Department::getId,UserDeptRelation::getDeptId)
|
|
|
+ .eq(Department::getId,deptId);
|
|
|
+ List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
|
|
|
+ for (XjrUser user: userList) {
|
|
|
+ if(!userMap.containsKey(user.getId())){
|
|
|
+ userMap.put(user.getId(),user);
|
|
|
+ newsRelationMapper.insert(new NewsRelation(){{
|
|
|
+ setNewsId(xjrNews.getId());
|
|
|
+ setUserId(user.getId());
|
|
|
+ setReadMark(0);
|
|
|
+ setCreateDate(LocalDateTime.now());
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //阅读关系是人员
|
|
|
+ if(newsRelationConfig.getRelationType() == 2){
|
|
|
+ if(!userMap.containsKey(newsRelationConfig.getRelationId())){
|
|
|
+ userMap.put(newsRelationConfig.getRelationId(),new XjrUser(){{
|
|
|
+ setId(newsRelationConfig.getRelationId());
|
|
|
+ }});
|
|
|
+ newsRelationMapper.insert(new NewsRelation(){{
|
|
|
+ setNewsId(xjrNews.getId());
|
|
|
+ setUserId(newsRelationConfig.getRelationId());
|
|
|
+ setReadMark(0);
|
|
|
+ setCreateDate(LocalDateTime.now());
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //阅读关系是班级
|
|
|
+ if(newsRelationConfig.getRelationType() == 3){
|
|
|
+ // 获取班级下的人员添加
|
|
|
+ Long classId = newsRelationConfig.getRelationId();
|
|
|
+ MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
|
|
|
+ queryUser
|
|
|
+ .leftJoin(BaseStudentSchoolRoll.class,BaseStudentSchoolRoll::getUserId,XjrUser::getId)
|
|
|
+ .eq(BaseStudentSchoolRoll::getClassId,classId);
|
|
|
+ List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
|
|
|
+ for (XjrUser user: userList) {
|
|
|
+ if(!userMap.containsKey(user.getId())){
|
|
|
+ userMap.put(user.getId(),user);
|
|
|
+ newsRelationMapper.insert(new NewsRelation(){{
|
|
|
+ setNewsId(xjrNews.getId());
|
|
|
+ setUserId(user.getId());
|
|
|
+ setReadMark(0);
|
|
|
+ setCreateDate(LocalDateTime.now());
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(xjrNews.getSendRange() == 1){
|
|
|
+ MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
|
|
|
+ queryUser
|
|
|
+ .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
+ .leftJoin(Role.class, Role::getId, UserRoleRelation::getRoleId)
|
|
|
+ .eq(Role::getId,2);
|
|
|
+ List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
|
|
|
+ for (XjrUser user: userList) {
|
|
|
+ if(!userMap.containsKey(user.getId())){
|
|
|
+ userMap.put(user.getId(),user);
|
|
|
+ newsRelationMapper.insert(new NewsRelation(){{
|
|
|
+ setNewsId(xjrNews.getId());
|
|
|
+ setUserId(user.getId());
|
|
|
+ setReadMark(0);
|
|
|
+ setCreateDate(LocalDateTime.now());
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(xjrNews.getStatus() == 3){
|
|
|
+ //应该将关系配置表和关系表的数据设置为删除
|
|
|
+ }
|
|
|
+ return this.updateById(xjrNews);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean updateProclamation(UpdateProclamationDto updateProclamationDto) {
|
|
|
+ News news = BeanUtil.toBean(updateProclamationDto, News.class);
|
|
|
+ news.setModifyDate(LocalDateTime.now());
|
|
|
+ news.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ newsMapper.updateById(news);
|
|
|
+
|
|
|
+ newsAppendixMapper.delete(Wrappers.lambdaQuery(NewsAppendix.class).eq(NewsAppendix::getNewsId, news.getId()));
|
|
|
+ if (updateProclamationDto.getAppendixList() != null) {
|
|
|
+ for (AddNewsAppendixDto appendixDto : updateProclamationDto.getAppendixList()) {
|
|
|
+ NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
|
|
|
+ newsAppendix.setNewsId(news.getId());
|
|
|
+ newsAppendixMapper.insert(newsAppendix);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (updateProclamationDto.getSendRange() == 3 && updateProclamationDto.getRelationList() != null) {
|
|
|
+ newsRelationMapper.delete(Wrappers.lambdaQuery(NewsRelation.class).eq(NewsRelation::getNewsId, news.getId()));
|
|
|
+ newsRelationConfigMapper.delete(Wrappers.lambdaQuery(NewsRelationConfig.class).eq(NewsRelationConfig::getNewsId, news.getId()));
|
|
|
+
|
|
|
+ for (AddNewsRelationDto relationDto : updateProclamationDto.getRelationList()) {
|
|
|
+ if (relationDto.getRelationType() == 1) {
|
|
|
+ Department department = departmentMapper.selectById(relationDto.getRelationId());
|
|
|
+
|
|
|
+ newsRelationConfigMapper.insert(new NewsRelationConfig(){{
|
|
|
+ setNewsId(news.getId());
|
|
|
+ setRelationId(relationDto.getRelationId());
|
|
|
+ setRelationType(relationDto.getRelationType());
|
|
|
+ if(department != null){
|
|
|
+ setRelationName(department.getName());
|
|
|
+ }
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ if (relationDto.getRelationType() == 2) {
|
|
|
+ XjrUser xjrUser = xjrUserMapper.selectById(relationDto.getRelationId());
|
|
|
+
|
|
|
+ newsRelationConfigMapper.insert(new NewsRelationConfig(){{
|
|
|
+ setNewsId(news.getId());
|
|
|
+ setRelationId(relationDto.getRelationId());
|
|
|
+ setRelationType(relationDto.getRelationType());
|
|
|
+ if(xjrUser != null){
|
|
|
+ setRelationName(xjrUser.getName());
|
|
|
+ }
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ if (relationDto.getRelationType() == 3) {
|
|
|
+ BaseClass baseClass = baseClassMapper.selectById(relationDto.getRelationId());
|
|
|
+
|
|
|
+ newsRelationConfigMapper.insert(new NewsRelationConfig(){{
|
|
|
+ setNewsId(news.getId());
|
|
|
+ setRelationId(relationDto.getRelationId());
|
|
|
+ setRelationType(relationDto.getRelationType());
|
|
|
+ if(baseClass != null){
|
|
|
+ setRelationName(baseClass.getName());
|
|
|
+ }
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(AddNewsDto addNewsDto) {
|
|
|
@@ -85,7 +503,6 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
News news = BeanUtil.toBean(addNewsDto, News.class);
|
|
|
news.setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
|
|
|
-
|
|
|
newsMapper.insert(news);
|
|
|
//添加附件子表
|
|
|
if (addNewsDto.getAppendixList() != null) {
|
|
|
@@ -96,8 +513,23 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //公告需要添加阅读关系
|
|
|
- if (addNewsDto.getRelationList() != null) {
|
|
|
+ //公告需要添加阅读关系,发送范围 1=全校教职工 2=全校师生 3=指定人员
|
|
|
+ //1=全校教职工,添加全校教职工到关系表
|
|
|
+// if(addNewsDto.getTypeId() == 2 && addNewsDto.getSendRange() == 1){
|
|
|
+// MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
|
|
|
+// queryUser
|
|
|
+// .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
+// .leftJoin(Role.class, Role::getId, UserRoleRelation::getRoleId)
|
|
|
+// .eq(Role::getId, 2);
|
|
|
+// List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
|
|
|
+// for (XjrUser user: userList) {
|
|
|
+// newsRelation.setUserId(user.getId());
|
|
|
+// newsRelationMapper.insert(newsRelation);
|
|
|
+// }
|
|
|
+
|
|
|
+// }
|
|
|
+
|
|
|
+ if (addNewsDto.getTypeId() == 2 && addNewsDto.getSendRange() == 1) {
|
|
|
for (AddNewsRelationDto relationDto : addNewsDto.getRelationList()) {
|
|
|
|
|
|
NewsRelationConfig newsRelationConfig = BeanUtil.toBean(relationDto, NewsRelationConfig.class);
|
|
|
@@ -116,6 +548,24 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
.leftJoin(Department.class,Department::getId,UserDeptRelation::getDeptId)
|
|
|
.eq(Department::getId,deptId);
|
|
|
List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
|
|
|
+ for (XjrUser user: userList) {
|
|
|
+ newsRelation.setUserId(user.getId());
|
|
|
+ newsRelationMapper.insert(newsRelation);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (relationDto.getRelationType() == 2) {
|
|
|
+ newsRelation.setUserId(relationDto.getRelationId());
|
|
|
+ newsRelationMapper.insert(newsRelation);
|
|
|
+ }
|
|
|
+ if (relationDto.getRelationType() == 3) {
|
|
|
+ // 获取班级下的人员添加
|
|
|
+ Long deptId = relationDto.getRelationId();
|
|
|
+ MPJLambdaWrapper<XjrUser> queryUser = new MPJLambdaWrapper<>();
|
|
|
+ queryUser
|
|
|
+ .leftJoin(UserDeptRelation.class,UserDeptRelation::getUserId,XjrUser::getId)
|
|
|
+ .leftJoin(Department.class,Department::getId,UserDeptRelation::getDeptId)
|
|
|
+ .eq(Department::getId,deptId);
|
|
|
+ List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class,queryUser);
|
|
|
List<Long> userIdList = new ArrayList<>();
|
|
|
for (XjrUser user: userList) {
|
|
|
userIdList.add(user.getId());
|
|
|
@@ -124,9 +574,6 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
newsRelation.setUserId(userId);
|
|
|
newsRelationMapper.insert(newsRelation);
|
|
|
}
|
|
|
- } else {
|
|
|
- newsRelation.setUserId(relationDto.getRelationId());
|
|
|
- newsRelationMapper.insert(newsRelation);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -312,7 +759,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
public boolean SendMessage(Long id) {
|
|
|
try {
|
|
|
News news = newsMapper.selectById(id);
|
|
|
- if (news.getSendRange() == 1) {
|
|
|
+ if (news.getSendRange() == 2) {
|
|
|
List<User> userList = userMapper.selectList(Wrappers.<User>query().lambda().isNotNull(User::getOpenId).ne(User::getOpenId, ""));
|
|
|
if (userList.size() > 0) {
|
|
|
for (User user : userList) {
|
|
|
@@ -373,7 +820,6 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
|
|
|
}
|
|
|
} catch (Exception ex) {
|
|
|
}
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
}
|