123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- package com.xjrsoft.module.oa.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.github.yulichang.base.MPJBaseServiceImpl;
- import com.github.yulichang.toolkit.MPJWrappers;
- import com.github.yulichang.wrapper.MPJLambdaWrapper;
- import com.xjrsoft.common.enums.EnabledMark;
- import com.xjrsoft.common.utils.LocalDateTimeUtil;
- import com.xjrsoft.common.utils.VoToColumnUtil;
- import com.xjrsoft.module.authority.entity.DataAuthConfig;
- 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.entity.NewsRelationConfig;
- 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.INewsService;
- import com.xjrsoft.module.oa.vo.NewsAppendixVo;
- import com.xjrsoft.module.oa.vo.NewsRelationVo;
- import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
- import com.xjrsoft.module.organization.entity.User;
- import com.xjrsoft.module.organization.entity.UserDeptRelation;
- import com.xjrsoft.module.organization.entity.UserRoleRelation;
- import com.xjrsoft.module.organization.mapper.UserDeptRelationMapper;
- import com.xjrsoft.module.organization.mapper.UserMapper;
- import com.xjrsoft.module.organization.service.WeChatService;
- import com.xjrsoft.module.student.entity.BaseStudentContact;
- import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
- import com.xjrsoft.module.student.entity.BaseStudentUser;
- import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
- import lombok.AllArgsConstructor;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 新闻中心表 服务实现类
- * </p>
- *
- * @author zlf
- * @since 2022-06-16
- */
- @Service
- @AllArgsConstructor
- public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implements INewsService {
- private final NewsMapper newsMapper;
- private final NewsAppendixMapper newsAppendixMapper;
- private final NewsRelationMapper newsRelationMapper;
- private final NewsRelationConfigMapper newsRelationConfigMapper;
- private final UserDeptRelationMapper userDeptRelationMapper;
- private final BaseStudentSchoolRollMapper baseStudentSchoolRollMapper;
- private final com.xjrsoft.module.organization.service.WeChatService weChatService;
- private final UserMapper userMapper;
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Long add(AddNewsDto addNewsDto) {
- News news = BeanUtil.toBean(addNewsDto, News.class);
- news.setEnabledMark(EnabledMark.ENABLED.getCode());
- newsMapper.insert(news);
- if (addNewsDto.getAppendixList() != null) {
- for (AddNewsAppendixDto appendixDto : addNewsDto.getAppendixList()) {
- NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
- newsAppendix.setNewsId(news.getId());
- newsAppendixMapper.insert(newsAppendix);
- }
- }
- if (addNewsDto.getRelationList() != null) {
- for (AddNewsRelationDto relationDto : addNewsDto.getRelationList()) {
- NewsRelationConfig newsRelationConfig = BeanUtil.toBean(relationDto, NewsRelationConfig.class);
- newsRelationConfig.setNewsId(news.getId());
- newsRelationConfigMapper.insert(newsRelationConfig);
- NewsRelation newsRelation = BeanUtil.toBean(relationDto, NewsRelation.class);
- newsRelation.setNewsId(news.getId());
- newsRelation.setReadMark(0);
- if (relationDto.getRelationType() == 1) {
- // 获取部门下的人员添加
- } else {
- newsRelation.setUserId(relationDto.getRelationId());
- newsRelationMapper.insert(newsRelation);
- }
- }
- }
- SendMessage(news.getId());
- return news.getId();
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean update(UpdateNewsDto updateNewsDto) {
- News news = BeanUtil.toBean(updateNewsDto, News.class);
- newsMapper.updateById(news);
- newsAppendixMapper.delete(Wrappers.lambdaQuery(NewsAppendix.class).eq(NewsAppendix::getNewsId,news.getId()));
- if (updateNewsDto.getAppendixList() != null) {
- for (AddNewsAppendixDto appendixDto : updateNewsDto.getAppendixList()) {
- NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
- newsAppendix.setNewsId(news.getId());
- newsAppendixMapper.insert(newsAppendix);
- }
- }
- if(updateNewsDto.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 : updateNewsDto.getRelationList()) {
- NewsRelationConfig newsRelationConfig = BeanUtil.toBean(relationDto, NewsRelationConfig.class);
- newsRelationConfig.setNewsId(news.getId());
- newsRelationConfigMapper.insert(newsRelationConfig);
- NewsRelation newsRelation = BeanUtil.toBean(relationDto, NewsRelation.class);
- newsRelation.setNewsId(news.getId());
- newsRelation.setReadMark(0);
- if (relationDto.getRelationType() == 1) {
- // 获取部门下的人员添加
- } else {
- newsRelation.setUserId(relationDto.getRelationId());
- newsRelationMapper.insert(newsRelation);
- }
- }
- }
- return true;
- }
- /**
- * 设置新闻阅读权限
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean updateRelation(UpdateNewsRelationDto updateRelationDto) {
- if (updateRelationDto.getRelationList() != null) {
- for (NewsRelationConfigDto newsRelationConfigDto : updateRelationDto.getRelationList()) {
- NewsRelationConfig newsRelationConfig = new NewsRelationConfig();
- newsRelationConfig.setNewsId(updateRelationDto.getId());
- newsRelationConfig.setRelationId(newsRelationConfigDto.getRelationId());
- newsRelationConfig.setRelationName(newsRelationConfigDto.getRelationName());
- newsRelationConfig.setRelationType(updateRelationDto.getRelationType());
- newsRelationConfigMapper.insert(newsRelationConfig);
- // 部门
- if (updateRelationDto.getRelationType() == 1) {
- List<UserDeptRelation> userDeptRelationList = userDeptRelationMapper.selectList(Wrappers.<UserDeptRelation>query().lambda()
- .eq(UserDeptRelation::getDeptId, newsRelationConfigDto.getRelationId()));
- for (UserDeptRelation userDeptRelation : userDeptRelationList) {
- NewsRelation newsRelation = new NewsRelation();
- newsRelation.setUserId(userDeptRelation.getUserId());
- newsRelation.setNewsId(updateRelationDto.getId());
- newsRelation.setReadMark(0);
- newsRelationMapper.insert(newsRelation);
- }
- }
- // 人员
- if (updateRelationDto.getRelationType() == 2) {
- NewsRelation newsRelation = new NewsRelation();
- newsRelation.setUserId(newsRelationConfigDto.getRelationId());
- newsRelation.setNewsId(updateRelationDto.getId());
- newsRelation.setReadMark(0);
- newsRelationMapper.insert(newsRelation);
- }
- // 班级
- if (updateRelationDto.getRelationType() == 3) {
- List<BaseStudentSchoolRoll> baseStudentSchoolRollList = baseStudentSchoolRollMapper.selectList(Wrappers.<BaseStudentSchoolRoll>query().lambda()
- .eq(BaseStudentSchoolRoll::getClassId, newsRelationConfigDto.getRelationId()));
- for (BaseStudentSchoolRoll baseStudentSchoolRoll : baseStudentSchoolRollList) {
- NewsRelation newsRelation = new NewsRelation();
- newsRelation.setUserId(baseStudentSchoolRoll.getUserId());
- newsRelation.setNewsId(updateRelationDto.getId());
- newsRelation.setReadMark(0);
- newsRelationMapper.insert(newsRelation);
- }
- }
- }
- }
- return true;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean deleteRelation(DeleteNewsRelationDto deleteNewsRelationDto) {
- if (deleteNewsRelationDto.getRelationId() != null) {
- List<NewsRelationConfig> newsRelationConfigList = newsRelationConfigMapper.selectList(Wrappers.<NewsRelationConfig>query().lambda()
- .eq(NewsRelationConfig::getNewsId, deleteNewsRelationDto.getNewsId())
- .in(NewsRelationConfig::getId, deleteNewsRelationDto.getRelationId())
- );
- for (NewsRelationConfig newsRelationConfig : newsRelationConfigList) {
- // 部门
- if (newsRelationConfig.getRelationType() == 1) {
- List<UserDeptRelation> userDeptRelationList = userDeptRelationMapper.selectList(Wrappers.<UserDeptRelation>query().lambda()
- .eq(UserDeptRelation::getDeptId, newsRelationConfig.getRelationId()));
- List<Long> userIdList = userDeptRelationList.stream().map(UserDeptRelation::getUserId).collect(Collectors.toList());
- newsRelationMapper.delete(Wrappers.<NewsRelation>query().lambda()
- .eq(NewsRelation::getNewsId, deleteNewsRelationDto.getNewsId())
- .in(NewsRelation::getUserId, userIdList));
- }
- // 人员
- if (newsRelationConfig.getRelationType() == 2) {
- newsRelationMapper.delete(Wrappers.<NewsRelation>query().lambda()
- .eq(NewsRelation::getNewsId, deleteNewsRelationDto.getNewsId())
- .eq(NewsRelation::getUserId, newsRelationConfig.getRelationId()));
- }
- // 班级
- if (newsRelationConfig.getRelationType() == 3) {
- List<BaseStudentSchoolRoll> baseStudentSchoolRollList = baseStudentSchoolRollMapper.selectList(Wrappers.<BaseStudentSchoolRoll>query().lambda()
- .eq(BaseStudentSchoolRoll::getClassId, newsRelationConfig.getRelationId()));
- List<Long> userIdList = baseStudentSchoolRollList.stream().map(BaseStudentSchoolRoll::getUserId).collect(Collectors.toList());
- newsRelationMapper.delete(Wrappers.<NewsRelation>query().lambda()
- .eq(NewsRelation::getNewsId, deleteNewsRelationDto.getNewsId())
- .in(NewsRelation::getUserId, userIdList));
- }
- }
- newsRelationConfigMapper.deleteBatchIds(deleteNewsRelationDto.getRelationId());
- }
- return true;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean delete(List<Long> ids) {
- newsMapper.deleteBatchIds(ids);
- return true;
- }
- @Override
- public boolean SendMessage(Long id) {
- News news = newsMapper.selectById(id);
- if (news.getSendRange() == 1) {
- List<User> userList = userMapper.selectList(Wrappers.<User>query().lambda().isNotNull(User::getOpenId).ne(User::getOpenId,""));
- if(userList.size()>0) {
- for (User user : userList) {
- WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
- weChatSendMessageDto.setUserId(user.getOpenId());
- weChatSendMessageDto.setTemplateId("sHsmz7LRj7HLd7GSTS3r2uKMhE2f1iDAW15RqSK_6KM");
- weChatSendMessageDto.setUrl("https://zhxy.cqtlzjzx.com/app/#/pages/message/notice/detail?id="+id);
- weChatSendMessageDto.setMsgId(id.toString());
- JSONObject data = new JSONObject();
- JSONObject data1 = new JSONObject();
- data1.put("value", news.getFullHead());
- data.put("thing2", data1);
- JSONObject data2 = new JSONObject();
- data2.put("value", news.getAuthorName());
- data.put("phrase5", data2);
- JSONObject data3 = new JSONObject();
- data3.put("value", LocalDateTimeUtil.format(news.getReleaseTime(),"yyyy-MM-dd HH:mm:ss") );
- data.put("time3", data3);
- weChatSendMessageDto.setContent(data);
- weChatService.sendTemplateMessage(weChatSendMessageDto);
- }
- }
- } else {
- List<NewsRelationVo> newsRelationVoList = newsRelationMapper.selectJoinList(NewsRelationVo.class,
- new MPJLambdaWrapper<NewsRelation>().distinct()
- .eq(NewsRelation::getNewsId, id)
- .select(NewsRelation.class, x -> VoToColumnUtil.fieldsToColumns(NewsRelationVo.class).contains(x.getProperty()))
- .innerJoin(User.class, onWrapper -> onWrapper.eq(NewsRelation::getUserId, User::getId).isNotNull(User::getOpenId).ne(User::getOpenId,""))
- .selectAs(User::getOpenId, NewsRelationVo::getUserName)
- );
- if (newsRelationVoList.size() > 0) {
- for (NewsRelationVo newsRelationVo : newsRelationVoList) {
- WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
- weChatSendMessageDto.setUserId(newsRelationVo.getUserName());
- weChatSendMessageDto.setTemplateId("sHsmz7LRj7HLd7GSTS3r2uKMhE2f1iDAW15RqSK_6KM");
- weChatSendMessageDto.setUrl("https://zhxy.cqtlzjzx.com/app/#/pages/message/notice/detail?id="+id);
- weChatSendMessageDto.setMsgId(id.toString());
- JSONObject data = new JSONObject();
- JSONObject data1 = new JSONObject();
- data1.put("value", news.getFullHead());
- data.put("thing2", data1);
- JSONObject data2 = new JSONObject();
- data2.put("value", news.getAuthorName());
- data.put("phrase5", data2);
- JSONObject data3 = new JSONObject();
- data3.put("value", LocalDateTimeUtil.format(news.getReleaseTime(),"yyyy-MM-dd HH:mm:ss") );
- data.put("time3", data3);
- weChatSendMessageDto.setContent(data);
- weChatService.sendTemplateMessage(weChatSendMessageDto);
- }
- }
- }
- return true;
- }
- }
|