|
@@ -2,6 +2,7 @@ package org.dromara.system.service.impl.info;
|
|
|
|
|
|
import com.google.api.client.util.SecurityUtils;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.dromara.common.core.utils.DateUtils;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
@@ -12,19 +13,20 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.dromara.common.redis.utils.RedisUtils;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
+import org.dromara.system.domain.info.InfoPingLun;
|
|
|
import org.dromara.system.domain.info.XiaoyuanInfo;
|
|
|
import org.dromara.system.domain.info.bo.InfoPingLunBo;
|
|
|
+import org.dromara.system.domain.info.vo.InfoPingLunVo;
|
|
|
import org.dromara.system.domain.info.vo.XiaoyuanInfoVo;
|
|
|
+import org.dromara.system.domain.score.ScoreDataMf;
|
|
|
import org.dromara.system.mapper.info.InfoPingLunMapper;
|
|
|
import org.dromara.system.mapper.info.XiaoyuanInfoMapper;
|
|
|
import org.dromara.system.service.info.IXiaoyuanInfoService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.dromara.system.domain.bo.XiaoyuanInfoBo;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Collection;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static org.dromara.common.core.constant.CacheConstants.*;
|
|
|
|
|
@@ -46,7 +48,53 @@ public class XiaoyuanInfoServiceImpl implements IXiaoyuanInfoService {
|
|
|
*/
|
|
|
@Override
|
|
|
public XiaoyuanInfoVo queryById(Long infoId){
|
|
|
- return baseMapper.selectVoById(infoId);
|
|
|
+ //已读数量+1
|
|
|
+ XiaoyuanInfoVo xiaoyuanInfo = baseMapper.selectXiaoyuanInfoByInfoId(infoId);
|
|
|
+ String infoYiDu = xiaoyuanInfo.getInfoYiDu();
|
|
|
+ int result = Integer.parseInt(infoYiDu) + 1;
|
|
|
+ xiaoyuanInfo.setInfoYiDu(String.valueOf(result));
|
|
|
+
|
|
|
+ //组装评论
|
|
|
+ List<InfoPingLunVo> infoPingLunList = xiaoyuanInfo.getInfoPingLunList();
|
|
|
+ if (infoPingLunList != null && infoPingLunList.size() > 0){
|
|
|
+ //根据评论类型进行分组评论类型 1:评论 2:回复
|
|
|
+ Map<String, List<InfoPingLunVo>> collect = infoPingLunList.stream().sorted(Comparator.comparing(InfoPingLunVo::getPingLunTime, Comparator.reverseOrder())).collect(Collectors.groupingBy(InfoPingLunVo::getInfoPingLunType));
|
|
|
+ if (collect != null && collect.size() > 0){
|
|
|
+ //所有评论类型的数据
|
|
|
+ List<InfoPingLunVo> infoPingLunListFather = collect.get("1");
|
|
|
+ //给他们找自己的回复类型的数据
|
|
|
+ if (infoPingLunListFather != null && infoPingLunListFather.size() > 0){
|
|
|
+ for (InfoPingLunVo infoPinglun : infoPingLunListFather) {
|
|
|
+ List<InfoPingLunVo> infoPinglunList = collect.get("2");
|
|
|
+ //回复不是空
|
|
|
+ if(infoPinglunList != null && infoPinglunList.size() > 0){
|
|
|
+ Map<Long, List<InfoPingLunVo>> infoPingLunListParen = infoPinglunList.stream().collect(Collectors.groupingBy(InfoPingLunVo::getInfoPingLunParent));
|
|
|
+ List<InfoPingLunVo> infoPinglunListCh = infoPingLunListParen.get(infoPinglun.getInfoPingLunId());
|
|
|
+ if (infoPinglunListCh != null && infoPinglunListCh.size() > 0){
|
|
|
+ infoPinglun.setInfoPingLunList(infoPinglunListCh.stream().sorted(Comparator.comparing(InfoPingLunVo::getPingLunTime, Comparator.reverseOrder())).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ xiaoyuanInfo.setInfoPingLunList(infoPingLunListFather);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取点赞/分享/这个人是否点赞信息
|
|
|
+ Object dianZan = RedisUtils.getCacheObject(XIAOYUAN_INFO_DIANZAN + xiaoyuanInfo.getInfoId());
|
|
|
+ if (ObjectUtils.isNotEmpty(dianZan)){
|
|
|
+ xiaoyuanInfo.setInfoDianZan(String.valueOf(dianZan));
|
|
|
+ }
|
|
|
+ Object zhuanFa = RedisUtils.getCacheObject(XIAOYUAN_INFO_ZHUANFA+ xiaoyuanInfo.getInfoId());
|
|
|
+ if (ObjectUtils.isNotEmpty(zhuanFa)){
|
|
|
+ xiaoyuanInfo.setInfoZhuanFa(String.valueOf(zhuanFa));
|
|
|
+ }
|
|
|
+ Object dianZanUser = RedisUtils.getCacheObject(XIAOYUAN_INFO_DIANZAN_USER + xiaoyuanInfo.getInfoId());
|
|
|
+ xiaoyuanInfo.setIsDianZan("N");
|
|
|
+ if (ObjectUtils.isNotEmpty(dianZanUser)){
|
|
|
+ xiaoyuanInfo.setIsDianZan("Y");
|
|
|
+ }
|
|
|
+ baseMapper.updateById(MapstructUtils.convert(xiaoyuanInfo, XiaoyuanInfo.class));
|
|
|
+ return xiaoyuanInfo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -79,12 +127,12 @@ public class XiaoyuanInfoServiceImpl implements IXiaoyuanInfoService {
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getInfoTypeZi()), XiaoyuanInfo::getInfoTypeZi, bo.getInfoTypeZi());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getInfoContent()), XiaoyuanInfo::getInfoContent, bo.getInfoContent());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XiaoyuanInfo::getStatus, bo.getStatus());
|
|
|
- lqw.eq(bo.getFabuTime() != null, XiaoyuanInfo::getFabuTime, bo.getFabuTime());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getInfoYidu()), XiaoyuanInfo::getInfoYidu, bo.getInfoYidu());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getInfoDianzan()), XiaoyuanInfo::getInfoDianzan, bo.getInfoDianzan());
|
|
|
- lqw.eq(bo.getInfoDianzanId() != null, XiaoyuanInfo::getInfoDianzanId, bo.getInfoDianzanId());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getInfoZhuanfa()), XiaoyuanInfo::getInfoZhuanfa, bo.getInfoZhuanfa());
|
|
|
- lqw.eq(bo.getInfoPinglunId() != null, XiaoyuanInfo::getInfoPinglunId, bo.getInfoPinglunId());
|
|
|
+ lqw.eq(bo.getFaBuTime() != null, XiaoyuanInfo::getFaBuTime, bo.getFaBuTime());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getInfoYiDu()), XiaoyuanInfo::getInfoYiDu, bo.getInfoYiDu());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getInfoDianZan()), XiaoyuanInfo::getInfoDianZan, bo.getInfoDianZan());
|
|
|
+ lqw.eq(bo.getInfoDianZanId() != null, XiaoyuanInfo::getInfoDianZanId, bo.getInfoDianZanId());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getInfoZhuanFa()), XiaoyuanInfo::getInfoZhuanFa, bo.getInfoZhuanFa());
|
|
|
+ lqw.eq(bo.getInfoPingLunId() != null, XiaoyuanInfo::getInfoPingLunId, bo.getInfoPingLunId());
|
|
|
return lqw;
|
|
|
}
|
|
|
|
|
@@ -94,6 +142,9 @@ public class XiaoyuanInfoServiceImpl implements IXiaoyuanInfoService {
|
|
|
@Override
|
|
|
public Boolean insertByBo(XiaoyuanInfoBo bo) {
|
|
|
XiaoyuanInfo add = MapstructUtils.convert(bo, XiaoyuanInfo.class);
|
|
|
+ bo.setSchoolId(String.valueOf(LoginHelper.getDeptId()));
|
|
|
+ bo.setCreateBy(LoginHelper.getUserId());
|
|
|
+ bo.setCreateTime(DateUtils.getNowDate());
|
|
|
validEntityBeforeSave(add);
|
|
|
boolean flag = baseMapper.insert(add) > 0;
|
|
|
if (flag) {
|
|
@@ -134,10 +185,13 @@ public class XiaoyuanInfoServiceImpl implements IXiaoyuanInfoService {
|
|
|
* 新增校园安全信息评论
|
|
|
*/
|
|
|
@Override
|
|
|
- public int insertInfoPingLun(InfoPingLunBo bo) {
|
|
|
+ public Boolean insertInfoPingLun(InfoPingLunBo bo) {
|
|
|
List<InfoPingLunBo> infoPingLunList = new ArrayList<>();
|
|
|
infoPingLunList.add(bo);
|
|
|
- return infoPingLunMapper.batchInfoPingLun(infoPingLunList);
|
|
|
+ List<InfoPingLun> convert = MapstructUtils.convert(infoPingLunList, InfoPingLun.class);
|
|
|
+ return infoPingLunMapper.insertBatch(convert);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|