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.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<NewsEntity> {
* @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);
}

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.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<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);
/***
* @Description 查询用户点赞踩行为 根据userid newsid
* @Author qushutong
* @Date 2019/9/9 15:35
* @Param [id]
* @Return com.elink.esua.epdc.dto.NewsUserAttitudeDTO
* @Exception
/**
* 查询用户点赞踩行为 根据userid newsid
*
* @param newsStatementFromDTO
* @return com.elink.esua.epdc.entity.NewsUserAttitudeEntity
* @author qushutong
* @date 2019/9/9 15:35
*/
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
@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<NewsDao, NewsEntity> 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<NewsDao, NewsEntity> 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<NewsDao, NewsEntity> 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<NewsDao, NewsEntity> 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<NewsDao, NewsEntity> 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<NewsDao, NewsEntity> 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<NewsDao, NewsEntity> 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;
}
}
}

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

12
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>
<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>

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">
<resultMap type="com.elink.esua.epdc.entity.NewsUserAttitudeEntity" id="newsUserAttitudeMap">
<result property="id" column="ID"/>
<result property="epdcNewsId" column="EPDC_NEWS_ID"/>
<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>
<delete id="deletePhysicalById">
delete from epdc_news_user_attitude where id = #{id}
</delete>
</mapper>
Loading…
Cancel
Save