Browse Source

新闻点赞踩相关修改

dev
yujintao 6 years ago
parent
commit
476cd38650
  1. 13
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsDao.java
  2. 12
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/dao/NewsUserAttitudeDao.java
  3. 22
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/NewsUserAttitudeService.java
  4. 101
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java
  5. 21
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsUserAttitudeServiceImpl.java
  6. 12
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsDao.xml
  7. 16
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsUserAttitudeDao.xml

13
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.dto.epdc.result.EpdcNewsListResultDTO;
import com.elink.esua.epdc.entity.NewsEntity; import com.elink.esua.epdc.entity.NewsEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -69,4 +70,16 @@ public interface NewsDao extends BaseDao<NewsEntity> {
* @date 2019/9/25 14:51 * @date 2019/9/25 14:51
*/ */
int updateNewsById(NewsEntity entity); 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);
} }

12
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.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.entity.NewsUserAttitudeEntity; import com.elink.esua.epdc.entity.NewsUserAttitudeEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 新闻点赞点踩表 * 新闻点赞点踩表
@ -30,4 +31,15 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface NewsUserAttitudeDao extends BaseDao<NewsUserAttitudeEntity> { public interface NewsUserAttitudeDao extends BaseDao<NewsUserAttitudeEntity> {
/**
* 物理删除用户新闻表态
*
* @param id
* @return void
* @author work@yujt.net.cn
* @date 2019/9/29 17:05
*/
int deletePhysicalById(@Param("id") String id);
} }

22
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<NewsUserAttitudeEnt
void delete(String[] ids); void delete(String[] ids);
/*** /**
* @Description 查询用户点赞踩行为 根据userid newsid * 查询用户点赞踩行为 根据userid newsid
* @Author qushutong
* @Date 2019/9/9 15:35
* @Param [id]
* @Return com.elink.esua.epdc.dto.NewsUserAttitudeDTO
* @Exception
* *
* @param newsStatementFromDTO
* @return com.elink.esua.epdc.entity.NewsUserAttitudeEntity
* @author qushutong
* @date 2019/9/9 15:35
*/ */
NewsUserAttitudeEntity getUserBehavior(EpdcNewsStatementFromDTO newsStatementFromDTO); NewsUserAttitudeEntity getUserBehavior(EpdcNewsStatementFromDTO newsStatementFromDTO);
/**
* 物理删除用户新闻表态
*
* @param id
* @return void
* @author work@yujt.net.cn
* @date 2019/9/29 17:05
*/
void deletePhysicalById(String id);
} }

101
esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java

@ -139,7 +139,7 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveToDrafts(NewsDTO newsDto) { public void saveToDrafts(NewsDTO newsDto) {
saveOrUpdateNews(newsDto, YesOrNoEnum.YES.value(),YesOrNoEnum.NO.value()); saveOrUpdateNews(newsDto, YesOrNoEnum.YES.value(), YesOrNoEnum.NO.value());
} }
@Override @Override
@ -149,7 +149,7 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
wrapper.eq(FieldConstant.ID, dto.getId()) wrapper.eq(FieldConstant.ID, dto.getId())
.select("NEWS_RELEASE_STATE"); .select("NEWS_RELEASE_STATE");
NewsEntity entity = this.baseDao.selectOne(wrapper); NewsEntity entity = this.baseDao.selectOne(wrapper);
this.saveOrUpdateNews(dto, entity.getNewsReleaseState(),YesOrNoEnum.NO.value()); this.saveOrUpdateNews(dto, entity.getNewsReleaseState(), YesOrNoEnum.NO.value());
} }
@Override @Override
@ -184,25 +184,25 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
@Override @Override
public void savePublishNews(NewsDTO newsDTO) { public void savePublishNews(NewsDTO newsDTO) {
saveOrUpdateNews(newsDTO, YesOrNoEnum.NO.value(),YesOrNoEnum.NO.value()); saveOrUpdateNews(newsDTO, YesOrNoEnum.NO.value(), YesOrNoEnum.NO.value());
} }
@Override @Override
public void modifyDraftsPublic(String id) { 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 newsDto 新闻数据传输对象
* @param newsReleaseState 是否是草稿箱操作存草稿或草稿箱中修改操作 * @param newsReleaseState 是否是草稿箱操作存草稿或草稿箱中修改操作
* @param isDraftsPublishNews 判断是是修改还是从草稿箱里面发布修改不更新createdTime 从草稿箱里面发布更新createdTime 为了列表排序 * @param isDraftsPublishNews 判断是是修改还是从草稿箱里面发布修改不更新createdTime 从草稿箱里面发布更新createdTime 为了列表排序
* @return void * @return void
* @author qushutong * @author qushutong
* @date * @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); NewsEntity entity = ConvertUtils.sourceToTarget(newsDto, NewsEntity.class);
UserDetail user = SecurityUser.getUser(); UserDetail user = SecurityUser.getUser();
//是不是草稿箱 //是不是草稿箱
@ -259,7 +259,7 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
} else { } else {
entity.setUpdatedBy(user.getRealName()); entity.setUpdatedBy(user.getRealName());
entity.setUpdatedTime(new Date()); entity.setUpdatedTime(new Date());
if(YesOrNoEnum.YES.value().equals(isDraftsPublishNews)){ if (YesOrNoEnum.YES.value().equals(isDraftsPublishNews)) {
entity.setCreatedTime(new Date()); entity.setCreatedTime(new Date());
} }
this.baseDao.updateNewsById(entity); this.baseDao.updateNewsById(entity);
@ -290,26 +290,27 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result modifyStatement(EpdcNewsStatementFromDTO statementFromDto) { 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; String oldAttitudeFlag = null;
NewsUserAttitudeEntity userBehavior = newsUserAttitudeService.getUserBehavior(statementFromDto); NewsUserAttitudeEntity userBehavior = newsUserAttitudeService.getUserBehavior(statementFromDto);
NewsUserAttitudeDTO newsUserAttitudeDto = new NewsUserAttitudeDTO();
if (null != userBehavior) { if (null != userBehavior) {
oldAttitudeFlag = userBehavior.getAttitudeFlag(); 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) { switch (newAttitude) {
case LIKE: case LIKE:
if (StringUtils.isNotBlank(oldAttitudeFlag)) { if (StringUtils.isNotBlank(oldAttitudeFlag)) {
@ -320,13 +321,13 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
// 之前踩过 // 之前踩过
userBehavior.setAttitudeFlag(AppNewsLikeEnum.LIKE.value()); userBehavior.setAttitudeFlag(AppNewsLikeEnum.LIKE.value());
newsUserAttitudeService.updateById(userBehavior); newsUserAttitudeService.updateById(userBehavior);
newsEntity.setUnLikeNumber(newsDto.getUnLikeNumber() - NumConstant.ONE); this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.UN_LIKE_NUM.value(), NumConstant.ONE_NEG);
} }
} else { } else {
newsUserAttitudeDto.setAttitudeFlag(AppNewsLikeEnum.LIKE.value()); newsUserAttitudeDto.setAttitudeFlag(AppNewsLikeEnum.LIKE.value());
newsUserAttitudeService.save(newsUserAttitudeDto); newsUserAttitudeService.save(newsUserAttitudeDto);
} }
newsEntity.setLikeNumber(newsDto.getLikeNumber() + NumConstant.ONE); this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.LIKE_NUM.value(), NumConstant.ONE);
break; break;
case UNLIKE: case UNLIKE:
if (StringUtils.isNotBlank(oldAttitudeFlag)) { if (StringUtils.isNotBlank(oldAttitudeFlag)) {
@ -337,42 +338,37 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
// 之前赞过 // 之前赞过
userBehavior.setAttitudeFlag(AppNewsLikeEnum.UNLIKE.value()); userBehavior.setAttitudeFlag(AppNewsLikeEnum.UNLIKE.value());
newsUserAttitudeService.updateById(userBehavior); newsUserAttitudeService.updateById(userBehavior);
newsEntity.setLikeNumber(newsDto.getLikeNumber() - NumConstant.ONE); this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.LIKE_NUM.value(), NumConstant.ONE_NEG);
} }
} else { } else {
newsUserAttitudeDto.setAttitudeFlag(AppNewsLikeEnum.UNLIKE.value()); newsUserAttitudeDto.setAttitudeFlag(AppNewsLikeEnum.UNLIKE.value());
newsUserAttitudeService.save(newsUserAttitudeDto); newsUserAttitudeService.save(newsUserAttitudeDto);
} }
newsEntity.setUnLikeNumber(newsDto.getUnLikeNumber() + NumConstant.ONE); this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.UN_LIKE_NUM.value(), NumConstant.ONE);
break; break;
case LIKE_CANCEL: case LIKE_CANCEL:
if (StringUtils.isBlank(oldAttitudeFlag) || AppNewsLikeEnum.UNLIKE.value().equals(oldAttitudeFlag)) { if (StringUtils.isBlank(oldAttitudeFlag) || AppNewsLikeEnum.UNLIKE.value().equals(oldAttitudeFlag)) {
return new Result().error("没有赞过,无法取消"); return new Result().error("没有赞过,无法取消");
} }
newsUserAttitudeService.deleteById(userBehavior.getId()); this.newsUserAttitudeService.deletePhysicalById(userBehavior.getId());
newsEntity.setLikeNumber(newsDto.getLikeNumber() - NumConstant.ONE); this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.LIKE_NUM.value(), NumConstant.ONE_NEG);
break; break;
case UNLIKE_CANCEL: case UNLIKE_CANCEL:
if (StringUtils.isBlank(oldAttitudeFlag) || AppNewsLikeEnum.LIKE.value().equals(oldAttitudeFlag)) { if (StringUtils.isBlank(oldAttitudeFlag) || AppNewsLikeEnum.LIKE.value().equals(oldAttitudeFlag)) {
return new Result().error("没有踩过,无法取消"); return new Result().error("没有踩过,无法取消");
} }
newsUserAttitudeService.deleteById(userBehavior.getId()); this.newsUserAttitudeService.deletePhysicalById(userBehavior.getId());
newsEntity.setUnLikeNumber(newsDto.getUnLikeNumber() - NumConstant.ONE); this.baseDao.updateStatementAmount(newsId, StatementTypeEnum.UN_LIKE_NUM.value(), NumConstant.ONE_NEG);
break; break;
default: default:
return new Result().error(); return new Result().error();
} }
newsEntity.setId(newsDto.getId());
baseDao.updateById(newsEntity);
return new Result(); return new Result();
} }
@Override @Override
public Result modifyNewsBrowse(EpdcNewsBrowseFromDTO newsBrowseFromDTO) { public Result modifyNewsBrowse(EpdcNewsBrowseFromDTO newsDto) {
NewsDTO newsDTO = get(newsBrowseFromDTO.getNewsId()); this.baseDao.updateStatementAmount(newsDto.getNewsId(), StatementTypeEnum.READING_AMOUNT.value(), NumConstant.ONE);
NewsEntity newsEntity = ConvertUtils.sourceToTarget(newsDTO, NewsEntity.class);
newsEntity.setReadingAmount(newsDTO.getReadingAmount() + NumConstant.ONE);
baseDao.updateById(newsEntity);
return new Result(); return new Result();
} }
@ -415,4 +411,35 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
return new Result(); 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;
}
}
} }

21
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<NewsUserAttitud
return ConvertUtils.sourceToTarget(entityList, NewsUserAttitudeDTO.class); return ConvertUtils.sourceToTarget(entityList, NewsUserAttitudeDTO.class);
} }
private QueryWrapper<NewsUserAttitudeEntity> getWrapper(Map<String, Object> params){ private QueryWrapper<NewsUserAttitudeEntity> getWrapper(Map<String, Object> params) {
String id = (String)params.get(FieldConstant.ID_HUMP); String id = (String) params.get(FieldConstant.ID_HUMP);
QueryWrapper<NewsUserAttitudeEntity> wrapper = new QueryWrapper<>(); QueryWrapper<NewsUserAttitudeEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
@ -103,13 +103,18 @@ public class NewsUserAttitudeServiceImpl extends BaseServiceImpl<NewsUserAttitud
} }
@Override @Override
public NewsUserAttitudeEntity getUserBehavior(EpdcNewsStatementFromDTO newsStatementFromDTO) { public NewsUserAttitudeEntity getUserBehavior(EpdcNewsStatementFromDTO newsStatementFromDto) {
String userId=newsStatementFromDTO.getUserId(); String userId = newsStatementFromDto.getUserId();
String newsId=newsStatementFromDTO.getNewsId(); String newsId = newsStatementFromDto.getNewsId();
QueryWrapper queryWrapper=new QueryWrapper(); QueryWrapper<NewsUserAttitudeEntity> queryWrapper = new QueryWrapper();
queryWrapper.eq(StringUtils.isNotBlank(userId), "USER_ID", userId); queryWrapper.eq("USER_ID", userId)
queryWrapper.eq(StringUtils.isNotBlank(newsId), "EPDC_NEWS_ID", newsId); .eq("EPDC_NEWS_ID", newsId);
return baseDao.selectOne(queryWrapper); return baseDao.selectOne(queryWrapper);
} }
@Override
public void deletePhysicalById(String id) {
this.baseDao.deletePhysicalById(id);
}
} }

12
esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsDao.xml

@ -85,4 +85,16 @@
created_time = #{createdTime} created_time = #{createdTime}
WHERE id = #{id} AND del_flag = '0'; WHERE id = #{id} AND del_flag = '0';
</update> </update>
<update id="updateStatementAmount">
UPDATE epdc_news
<set>
<choose>
<when test="field == 'readingAmount'"> READING_AMOUNT = READING_AMOUNT + #{amount} </when>
<when test="field == 'likeNum'"> LIKE_NUMBER = LIKE_NUMBER + #{amount}</when>
<when test="field == 'unLikeNum'"> UN_LIKE_NUMBER = UN_LIKE_NUMBER + #{amount}</when>
</choose>
</set>
WHERE id = #{newsId}
</update>
</mapper> </mapper>

16
esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/resources/mapper/NewsUserAttitudeDao.xml

@ -3,18 +3,8 @@
<mapper namespace="com.elink.esua.epdc.dao.NewsUserAttitudeDao"> <mapper namespace="com.elink.esua.epdc.dao.NewsUserAttitudeDao">
<resultMap type="com.elink.esua.epdc.entity.NewsUserAttitudeEntity" id="newsUserAttitudeMap"> <delete id="deletePhysicalById">
<result property="id" column="ID"/> delete from epdc_news_user_attitude where id = #{id}
<result property="epdcNewsId" column="EPDC_NEWS_ID"/> </delete>
<result property="userId" column="USER_ID"/>
<result property="attitudeFlag" column="ATTITUDE_FLAG"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper> </mapper>
Loading…
Cancel
Save