diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsDao.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsDao.java index 06533dcce..4f79e7db0 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsDao.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsDao.java @@ -24,6 +24,7 @@ import com.elink.esua.epdc.dto.epdc.result.EpdcNewsDetailResultDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcNewsListResultDTO; import com.elink.esua.epdc.entity.NewsEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -69,4 +70,16 @@ public interface NewsDao extends BaseDao { * @date 2019/9/25 14:51 */ int updateNewsById(NewsEntity entity); + + /** + * 根据字段,更新字段数值 + * + * @param field 更新字段 likeNum,unLikeNum,readingAmount + * @param amount 更新之 1,-1 + * @param newsId 新闻ID + * @return void + * @author work@yujt.net.cn + * @date 2019/9/29 16:37 + */ + int updateStatementAmount(@Param("newsId") String newsId, @Param("field") String field, @Param("amount") int amount); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsUserAttitudeDao.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsUserAttitudeDao.java index 9f136fa02..3c0b4875e 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsUserAttitudeDao.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsUserAttitudeDao.java @@ -20,6 +20,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.entity.NewsUserAttitudeEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 新闻点赞点踩表 @@ -29,5 +30,16 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface NewsUserAttitudeDao extends BaseDao { + + + /** + * 物理删除用户新闻表态 + * + * @param id + * @return void + * @author work@yujt.net.cn + * @date 2019/9/29 17:05 + */ + int deletePhysicalById(@Param("id") String id); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/NewsUserAttitudeService.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/NewsUserAttitudeService.java index 9075631f5..34d138377 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/NewsUserAttitudeService.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/NewsUserAttitudeService.java @@ -95,15 +95,23 @@ public interface NewsUserAttitudeService extends BaseService implem @Override @Transactional(rollbackFor = Exception.class) public void saveToDrafts(NewsDTO newsDto) { - saveOrUpdateNews(newsDto, YesOrNoEnum.YES.value(),YesOrNoEnum.NO.value()); + saveOrUpdateNews(newsDto, YesOrNoEnum.YES.value(), YesOrNoEnum.NO.value()); } @Override @@ -149,7 +149,7 @@ public class NewsServiceImpl extends BaseServiceImpl implem wrapper.eq(FieldConstant.ID, dto.getId()) .select("NEWS_RELEASE_STATE"); NewsEntity entity = this.baseDao.selectOne(wrapper); - this.saveOrUpdateNews(dto, entity.getNewsReleaseState(),YesOrNoEnum.NO.value()); + this.saveOrUpdateNews(dto, entity.getNewsReleaseState(), YesOrNoEnum.NO.value()); } @Override @@ -184,25 +184,25 @@ public class NewsServiceImpl extends BaseServiceImpl implem @Override public void savePublishNews(NewsDTO newsDTO) { - saveOrUpdateNews(newsDTO, YesOrNoEnum.NO.value(),YesOrNoEnum.NO.value()); + saveOrUpdateNews(newsDTO, YesOrNoEnum.NO.value(), YesOrNoEnum.NO.value()); } @Override public void modifyDraftsPublic(String id) { - saveOrUpdateNews(this.get(id), YesOrNoEnum.NO.value(),YesOrNoEnum.YES.value()); + saveOrUpdateNews(this.get(id), YesOrNoEnum.NO.value(), YesOrNoEnum.YES.value()); } /** * 新闻的数据库操作 * - * @param newsDto 新闻数据传输对象 - * @param newsReleaseState 是否是草稿箱操作(存草稿或草稿箱中修改操作) + * @param newsDto 新闻数据传输对象 + * @param newsReleaseState 是否是草稿箱操作(存草稿或草稿箱中修改操作) * @param isDraftsPublishNews 判断是是修改还是从草稿箱里面发布(修改不更新createdTime 从草稿箱里面发布更新createdTime 为了列表排序) * @return void * @author qushutong * @date */ - private void saveOrUpdateNews(NewsDTO newsDto, String newsReleaseState,String isDraftsPublishNews) { + private void saveOrUpdateNews(NewsDTO newsDto, String newsReleaseState, String isDraftsPublishNews) { NewsEntity entity = ConvertUtils.sourceToTarget(newsDto, NewsEntity.class); UserDetail user = SecurityUser.getUser(); //是不是草稿箱 @@ -259,7 +259,7 @@ public class NewsServiceImpl extends BaseServiceImpl implem } else { entity.setUpdatedBy(user.getRealName()); entity.setUpdatedTime(new Date()); - if(YesOrNoEnum.YES.value().equals(isDraftsPublishNews)){ + if (YesOrNoEnum.YES.value().equals(isDraftsPublishNews)) { entity.setCreatedTime(new Date()); } this.baseDao.updateNewsById(entity); @@ -290,26 +290,27 @@ public class NewsServiceImpl extends BaseServiceImpl implem @Override @Transactional(rollbackFor = Exception.class) public Result modifyStatement(EpdcNewsStatementFromDTO statementFromDto) { - NewsDTO newsDto = get(statementFromDto.getNewsId()); - // 已表态 + // 获取新表态的类型 0赞;1踩;2取消赞;3取消踩 + String newAttitudeFlag = statementFromDto.getAttitude(); + AppNewsLikeEnum newAttitude = AppNewsLikeEnum.getEnumByValue(newAttitudeFlag); + if (null == newAttitude) { + return new Result().error("表态类型非法"); + } + + // 旧的表态 String oldAttitudeFlag = null; NewsUserAttitudeEntity userBehavior = newsUserAttitudeService.getUserBehavior(statementFromDto); - NewsUserAttitudeDTO newsUserAttitudeDto = new NewsUserAttitudeDTO(); if (null != userBehavior) { oldAttitudeFlag = userBehavior.getAttitudeFlag(); - } else { - newsUserAttitudeDto.setEpdcNewsId(newsDto.getId()); - newsUserAttitudeDto.setUserId(statementFromDto.getUserId()); - } - // 新表态(本次提交) - String newAttitudeFlag = statementFromDto.getAttitude(); - AppNewsLikeEnum newAttitude = AppNewsLikeEnum.getEnumByValue(newAttitudeFlag); - if (null == newAttitude) { - return new Result().error("表态值非法"); } - NewsEntity newsEntity = new NewsEntity(); - //表态 0赞;1踩;2取消赞;3取消踩 + + // 组装新的表态,待插入 + String newsId = statementFromDto.getNewsId(); + NewsUserAttitudeDTO newsUserAttitudeDto = new NewsUserAttitudeDTO(); + newsUserAttitudeDto.setEpdcNewsId(newsId); + newsUserAttitudeDto.setUserId(statementFromDto.getUserId()); + switch (newAttitude) { case LIKE: if (StringUtils.isNotBlank(oldAttitudeFlag)) { @@ -320,13 +321,13 @@ public class NewsServiceImpl extends BaseServiceImpl implem // 之前踩过 userBehavior.setAttitudeFlag(AppNewsLikeEnum.LIKE.value()); newsUserAttitudeService.updateById(userBehavior); - newsEntity.setUnLikeNumber(newsDto.getUnLikeNumber() - NumConstant.ONE); + this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.UN_LIKE_NUM.value(), NumConstant.ONE_NEG); } } else { newsUserAttitudeDto.setAttitudeFlag(AppNewsLikeEnum.LIKE.value()); newsUserAttitudeService.save(newsUserAttitudeDto); } - newsEntity.setLikeNumber(newsDto.getLikeNumber() + NumConstant.ONE); + this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.LIKE_NUM.value(), NumConstant.ONE); break; case UNLIKE: if (StringUtils.isNotBlank(oldAttitudeFlag)) { @@ -337,42 +338,37 @@ public class NewsServiceImpl extends BaseServiceImpl implem // 之前赞过 userBehavior.setAttitudeFlag(AppNewsLikeEnum.UNLIKE.value()); newsUserAttitudeService.updateById(userBehavior); - newsEntity.setLikeNumber(newsDto.getLikeNumber() - NumConstant.ONE); + this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.LIKE_NUM.value(), NumConstant.ONE_NEG); } } else { newsUserAttitudeDto.setAttitudeFlag(AppNewsLikeEnum.UNLIKE.value()); newsUserAttitudeService.save(newsUserAttitudeDto); } - newsEntity.setUnLikeNumber(newsDto.getUnLikeNumber() + NumConstant.ONE); + this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.UN_LIKE_NUM.value(), NumConstant.ONE); break; case LIKE_CANCEL: if (StringUtils.isBlank(oldAttitudeFlag) || AppNewsLikeEnum.UNLIKE.value().equals(oldAttitudeFlag)) { return new Result().error("没有赞过,无法取消"); } - newsUserAttitudeService.deleteById(userBehavior.getId()); - newsEntity.setLikeNumber(newsDto.getLikeNumber() - NumConstant.ONE); + this.newsUserAttitudeService.deletePhysicalById(userBehavior.getId()); + this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.LIKE_NUM.value(), NumConstant.ONE_NEG); break; case UNLIKE_CANCEL: if (StringUtils.isBlank(oldAttitudeFlag) || AppNewsLikeEnum.LIKE.value().equals(oldAttitudeFlag)) { return new Result().error("没有踩过,无法取消"); } - newsUserAttitudeService.deleteById(userBehavior.getId()); - newsEntity.setUnLikeNumber(newsDto.getUnLikeNumber() - NumConstant.ONE); + this.newsUserAttitudeService.deletePhysicalById(userBehavior.getId()); + this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.UN_LIKE_NUM.value(), NumConstant.ONE_NEG); break; default: return new Result().error(); } - newsEntity.setId(newsDto.getId()); - baseDao.updateById(newsEntity); return new Result(); } @Override - public Result modifyNewsBrowse(EpdcNewsBrowseFromDTO newsBrowseFromDTO) { - NewsDTO newsDTO = get(newsBrowseFromDTO.getNewsId()); - NewsEntity newsEntity = ConvertUtils.sourceToTarget(newsDTO, NewsEntity.class); - newsEntity.setReadingAmount(newsDTO.getReadingAmount() + NumConstant.ONE); - baseDao.updateById(newsEntity); + public Result modifyNewsBrowse(EpdcNewsBrowseFromDTO newsDto) { + this.baseDao.updateStatementAmount(newsDto.getNewsId(), StatementTypeEnum.READING_AMOUNT.value(), NumConstant.ONE); return new Result(); } @@ -415,4 +411,35 @@ public class NewsServiceImpl extends BaseServiceImpl implem return new Result(); } + + /** + * 用户新闻参与类型 + * + * @author work@yujt.net.cn + * @date 2019/9/29 16:41 + */ + enum StatementTypeEnum { + /** + * 阅读数 + */ + READING_AMOUNT("readingAmount"), + /** + * 点赞数 + */ + LIKE_NUM("likeNum"), + /** + * 踩数 + */ + UN_LIKE_NUM("unLikeNum"); + + private String value; + + StatementTypeEnum(String value) { + this.value = value; + } + + public String value() { + return value; + } + } } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsUserAttitudeServiceImpl.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsUserAttitudeServiceImpl.java index 43c10dd53..23ebaca3e 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsUserAttitudeServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsUserAttitudeServiceImpl.java @@ -66,8 +66,8 @@ public class NewsUserAttitudeServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -103,13 +103,18 @@ public class NewsUserAttitudeServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper(); + queryWrapper.eq("USER_ID", userId) + .eq("EPDC_NEWS_ID", newsId); return baseDao.selectOne(queryWrapper); } + + @Override + public void deletePhysicalById(String id) { + this.baseDao.deletePhysicalById(id); + } } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsDao.xml b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsDao.xml index 22168af5b..ccea0e4db 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsDao.xml +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsDao.xml @@ -85,4 +85,16 @@ created_time = #{createdTime} WHERE id = #{id} AND del_flag = '0'; + + + UPDATE epdc_news + + + READING_AMOUNT = READING_AMOUNT + #{amount} + LIKE_NUMBER = LIKE_NUMBER + #{amount} + UN_LIKE_NUMBER = UN_LIKE_NUMBER + #{amount} + + + WHERE id = #{newsId} + \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsUserAttitudeDao.xml b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsUserAttitudeDao.xml index 1793b5186..590605c57 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsUserAttitudeDao.xml +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsUserAttitudeDao.xml @@ -3,18 +3,8 @@ - - - - - - - - - - - - - + + delete from epdc_news_user_attitude where id = #{id} + \ No newline at end of file