658 lines
24 KiB
Java
658 lines
24 KiB
Java
package com.example.caseData.service;
|
||
|
||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||
import com.example.caseData.dao.*;
|
||
import com.example.caseData.exception.BusinessException;
|
||
import com.example.caseData.model.*;
|
||
import com.example.caseData.request.caseExchangeRequest.addCaseExchange;
|
||
import com.example.caseData.request.caseExchangeRequest.addCaseExchangeComment;
|
||
import com.example.caseData.utils.JwtUtil;
|
||
import com.example.caseData.utils.RegularUtil;
|
||
import com.example.caseData.utils.Replace;
|
||
import jakarta.annotation.Resource;
|
||
import org.springframework.stereotype.Service;
|
||
import org.springframework.transaction.annotation.Transactional;
|
||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||
|
||
import java.time.LocalDateTime;
|
||
import java.util.Date;
|
||
import java.util.List;
|
||
import java.util.Objects;
|
||
|
||
@Service
|
||
public class CaseExchangeService {
|
||
|
||
@Resource
|
||
private UserCollectExchangeDao userCollectExchangeDao;
|
||
|
||
@Resource
|
||
private BasicSensitiveWordService basicSensitiveWordService;
|
||
|
||
@Resource
|
||
private CaseExchangeDao caseExchangeDao;
|
||
|
||
@Resource
|
||
private CaseExchangeVoteDao caseExchangeVoteDao;
|
||
|
||
@Resource
|
||
private CaseExchangeVoteOptionDao caseExchangeVoteOptionDao;
|
||
|
||
@Resource
|
||
private StatsCaseExchangeDao statsCaseExchangeDao;
|
||
|
||
@Resource
|
||
private CaseExchangeLabelDao caseExchangeLabelDao;
|
||
|
||
@Resource
|
||
private StatsCaseExchangeUserDao statsCaseExchangeUserDao;
|
||
|
||
@Resource
|
||
private UserCommentExchangeDao userCommentExchangeDao;
|
||
|
||
@Resource
|
||
private UserDao userDao;
|
||
|
||
@Resource
|
||
private RegularUtil regularUtil;
|
||
|
||
@Resource
|
||
private UserVoteExchangeDao userVoteExchangeDao;
|
||
|
||
/**
|
||
* 新增-病例交流
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean AddCaseExchange(String userId, addCaseExchange r){
|
||
// 验证入参数据
|
||
if (r.getCaseExchangeVote() != null){
|
||
if (r.getCaseExchangeVote().getCaseExchangeVoteOption() == null){
|
||
throw new BusinessException("缺少选项");
|
||
}
|
||
|
||
if (r.getCaseExchangeVote().getCaseExchangeVoteOption().size() > 5){
|
||
throw new BusinessException("选项不可多余5项");
|
||
}
|
||
|
||
if (r.getCaseExchangeVote().getCaseExchangeVoteOption().size() < 2){
|
||
throw new BusinessException("选项不可少于2项");
|
||
}
|
||
|
||
if (r.getCaseExchangeVote().getVoteTitle() == null){
|
||
throw new BusinessException("请输入投票标题");
|
||
}
|
||
|
||
if (r.getCaseExchangeVote().getValidDay() < 1 || r.getCaseExchangeVote().getValidDay() > 20){
|
||
throw new BusinessException("投票有效期在1-20天内");
|
||
}
|
||
}
|
||
|
||
if (r.getCaseExchangeLabel() != null && !r.getCaseExchangeLabel().isEmpty()){
|
||
for (addCaseExchange.CaseExchangeLabelRequest caseExchangeLabelRequest : r.getCaseExchangeLabel()){
|
||
if (caseExchangeLabelRequest.getAppIden() == null){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
|
||
if (caseExchangeLabelRequest.getLabelName() == null){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
}
|
||
}
|
||
|
||
// 处理违法内容
|
||
BasicSensitiveWordService.FilterResult result = basicSensitiveWordService.filter(r.getExchangeContent());
|
||
if (result.hasSensitive == 1){
|
||
throw new BusinessException("内容中存在敏感词,请修改后提交");
|
||
}
|
||
|
||
if (r.getExchangeSummary() != null){
|
||
result = basicSensitiveWordService.filter(r.getExchangeSummary());
|
||
if (result.hasSensitive == 1){
|
||
throw new BusinessException("总结中存在敏感词,请修改后提交");
|
||
}
|
||
}
|
||
|
||
// 匹配预览视频
|
||
List<String> videoUrls = regularUtil.extractOssVideosUrls(r.getExchangeContent());
|
||
videoUrls.replaceAll(Replace::removeOssDomain);
|
||
String exchangeContentVideo = String.join(",", videoUrls);
|
||
|
||
String exchangeContentImage = "";
|
||
if (exchangeContentVideo.isEmpty()){
|
||
// 匹配预览图片
|
||
List<String> imageUrls = regularUtil.extractOssImageUrls(r.getExchangeContent());
|
||
imageUrls.replaceAll(Replace::removeOssDomain);
|
||
exchangeContentImage = String.join(",", imageUrls);
|
||
}else{
|
||
exchangeContentImage = "";
|
||
}
|
||
|
||
// 新增病例交流
|
||
CaseExchangeModel caseExchangeData = new CaseExchangeModel();
|
||
caseExchangeData.setUserId(Long.valueOf(userId));
|
||
caseExchangeData.setExchangeTitle(r.getExchangeTitle());
|
||
caseExchangeData.setExchangeStatus(1);
|
||
caseExchangeData.setPushDate(LocalDateTime.now());
|
||
caseExchangeData.setExchangeContent(r.getExchangeContent());
|
||
caseExchangeData.setExchangeSummary(r.getExchangeSummary());
|
||
caseExchangeData.setExchangeContentVideo(exchangeContentVideo);
|
||
caseExchangeData.setExchangeContentImage(exchangeContentImage);
|
||
int res = caseExchangeDao.insert(caseExchangeData);
|
||
if (res <= 0){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
|
||
// 新增投票
|
||
if (r.getCaseExchangeVote() != null){
|
||
// 投票结束时间
|
||
LocalDateTime endTime = LocalDateTime.now().plusDays(r.getCaseExchangeVote().getValidDay());
|
||
|
||
CaseExchangeVoteModel caseExchangeVoteData = new CaseExchangeVoteModel();
|
||
caseExchangeVoteData.setExchangeId(caseExchangeData.getExchangeId());
|
||
caseExchangeVoteData.setVoteTitle(r.getCaseExchangeVote().getVoteTitle());
|
||
caseExchangeVoteData.setEndTime(endTime);
|
||
res = caseExchangeVoteDao.insert(caseExchangeVoteData);
|
||
if (res <= 0){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
|
||
List<addCaseExchange.CaseExchangeVoteOptionRequest> caseExchangeVoteOption = r.getCaseExchangeVote().getCaseExchangeVoteOption();
|
||
for (addCaseExchange.CaseExchangeVoteOptionRequest option : caseExchangeVoteOption ){
|
||
CaseExchangeVoteOptionModel caseExchangeVoteOptionData = new CaseExchangeVoteOptionModel();
|
||
caseExchangeVoteOptionData.setVoteId(caseExchangeVoteData.getVoteId());
|
||
caseExchangeVoteOptionData.setOptionValue(option.getOptionValue());
|
||
caseExchangeVoteOptionData.setVoteNum(0);
|
||
res = caseExchangeVoteOptionDao.insert(caseExchangeVoteOptionData);
|
||
if (res <= 0){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
}
|
||
}
|
||
|
||
// 新增标签
|
||
if (r.getCaseExchangeLabel() != null && !r.getCaseExchangeLabel().isEmpty()){
|
||
// 验证标签数据-暂时无法验证,病例库不存标签库
|
||
List<addCaseExchange.CaseExchangeLabelRequest> caseExchangeLabel = r.getCaseExchangeLabel();
|
||
for (addCaseExchange.CaseExchangeLabelRequest label : caseExchangeLabel ){
|
||
CaseExchangeLabelModel caseExchangeLabelData = new CaseExchangeLabelModel();
|
||
caseExchangeLabelData.setExchangeId(caseExchangeData.getExchangeId());
|
||
caseExchangeLabelData.setAppIden(label.getAppIden());
|
||
caseExchangeLabelData.setLabelName(label.getLabelName());
|
||
res = caseExchangeLabelDao.insert(caseExchangeLabelData);
|
||
if (res <= 0){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
}
|
||
}
|
||
|
||
// 新增病例交流统计
|
||
if (!handleStatsCaseExchange()){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
|
||
// 新增病例交流统计-用户
|
||
if (!handleStatsCaseExchangeUser(userId)){
|
||
throw new BusinessException("操作失败");
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 新增收藏-病例交流
|
||
* @param exchangeId 病例交流id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean AddCaseExchangeCollect(String exchangeId,String userId){
|
||
// 获取病例交流数据
|
||
CaseExchangeModel article = caseExchangeDao.selectById(exchangeId);
|
||
if (article == null) {
|
||
return false;
|
||
}
|
||
|
||
// 检测用户是否已收藏过
|
||
UserCollectExchangeModel userCollectExchange = getUserCollectExchangeStatus(exchangeId,userId);
|
||
if (userCollectExchange != null) {
|
||
return true;
|
||
}
|
||
|
||
// 新增收藏
|
||
UserCollectExchangeModel userCollectExchangeData = new UserCollectExchangeModel();
|
||
userCollectExchangeData.setUserId(Long.valueOf(userId));
|
||
userCollectExchangeData.setExchangeId(Long.valueOf(exchangeId));
|
||
int res = userCollectExchangeDao.insert(userCollectExchangeData);
|
||
if (res <= 0){
|
||
return false;
|
||
}
|
||
|
||
// 新增统计字段
|
||
boolean r = IncCaseExchangeStats(exchangeId,userId,2);
|
||
if (!r){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 取消收藏-病例交流
|
||
* @param exchangeId 病例交流id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean DeleteCaseExchangeCollect(String exchangeId,String userId){
|
||
// 检测用户是否已收藏过
|
||
UserCollectExchangeModel userCollectExchange = getUserCollectExchangeStatus(exchangeId,userId);
|
||
if (userCollectExchange == null) {
|
||
return true;
|
||
}
|
||
|
||
// 删除收藏
|
||
int res = userCollectExchangeDao.deleteById(userCollectExchange.getCollectId());
|
||
if (res <= 0){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
// 减少文章的统计字段
|
||
boolean r = DecCaseExchangeStats(exchangeId,userId,2);
|
||
if (!r){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 新增评论-病例交流
|
||
* @param exchangeId 病例交流id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean AddCaseExchangeComment(String exchangeId, String userId, addCaseExchangeComment request){
|
||
// 获取病例交流数据
|
||
CaseExchangeModel article = caseExchangeDao.selectById(exchangeId);
|
||
if (article == null) {
|
||
throw new BusinessException("非法病例交流");
|
||
}
|
||
|
||
if (article.getExchangeStatus() != 1){
|
||
throw new BusinessException("非法病例交流");
|
||
}
|
||
|
||
// 处理评论内容
|
||
BasicSensitiveWordService.FilterResult result = basicSensitiveWordService.filter(request.getContent());
|
||
if (result.hasSensitive == 1){
|
||
throw new BusinessException("存在敏感词,请修改后提交");
|
||
}
|
||
|
||
// 新增评论
|
||
UserCommentExchangeModel userCommentExchangeData = new UserCommentExchangeModel();
|
||
userCommentExchangeData.setUserId(Long.valueOf(userId));
|
||
userCommentExchangeData.setExchangeId(Long.valueOf(exchangeId));
|
||
userCommentExchangeData.setStatus(1);
|
||
userCommentExchangeData.setIsSensitive(0);
|
||
userCommentExchangeData.setContent(request.getContent());
|
||
userCommentExchangeData.setCommentImage(Replace.removeOssDomain(request.getCommentImage()));
|
||
|
||
// 评论根id
|
||
if (request.getRootId() != null) {
|
||
userCommentExchangeData.setRootId(Long.valueOf(request.getRootId()));
|
||
}
|
||
|
||
// 评论父级id
|
||
if (request.getParentId() != null) {
|
||
userCommentExchangeData.setParentId(Long.valueOf(request.getParentId()));
|
||
}
|
||
|
||
int res = userCommentExchangeDao.insert(userCommentExchangeData);
|
||
if (res <= 0){
|
||
return false;
|
||
}
|
||
|
||
// 新增统计字段
|
||
boolean r = IncCaseExchangeStats(exchangeId,userId,2);
|
||
if (!r){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 删除评论-病例交流
|
||
* @param commentId 评论id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean DeleteCaseExchangeComment(String commentId, String userId){
|
||
// 获取评论数据
|
||
UserCommentExchangeModel comment = userCommentExchangeDao.selectById(commentId);
|
||
if (comment == null) {
|
||
return false;
|
||
}
|
||
|
||
// 获取病例交流数据
|
||
CaseExchangeModel article = caseExchangeDao.selectById(comment.getExchangeId());
|
||
if (article == null) {
|
||
return false;
|
||
}
|
||
|
||
if (article.getExchangeStatus() != 1){
|
||
return false;
|
||
}
|
||
|
||
// 检测用户是否病例交流作者
|
||
if (!Objects.equals(comment.getUserId(), Long.valueOf(userId))){
|
||
return false;
|
||
}
|
||
|
||
// 删除评论
|
||
int res = userCommentExchangeDao.deleteById(comment.getCommentId());
|
||
if (res <= 0){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
// 减少统计字段
|
||
boolean r = DecCaseExchangeStats(String.valueOf(comment.getExchangeId()),userId,2);
|
||
if (!r){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 置顶评论-病例交流
|
||
* @param commentId 评论id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean AddTopCaseExchangeComment(String commentId, String userId){
|
||
// 获取评论数据
|
||
UserCommentExchangeModel comment = userCommentExchangeDao.selectById(commentId);
|
||
if (comment == null) {
|
||
return false;
|
||
}
|
||
|
||
// 获取病例交流数据
|
||
CaseExchangeModel article = caseExchangeDao.selectById(comment.getExchangeId());
|
||
if (article == null) {
|
||
return false;
|
||
}
|
||
|
||
if (article.getExchangeStatus() != 1){
|
||
return false;
|
||
}
|
||
|
||
// 检测用户是否病例交流作者
|
||
if (!Objects.equals(comment.getUserId(), Long.valueOf(userId))){
|
||
return false;
|
||
}
|
||
|
||
if (comment.getIsTop() == 1){
|
||
return true;
|
||
}
|
||
|
||
// 置顶评论
|
||
comment.setIsTop(1);
|
||
userCommentExchangeDao.updateById(comment);
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 取消置顶评论-病例交流
|
||
* @param commentId 评论id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean deleteTopCaseExchangeComment(String commentId, String userId){
|
||
// 获取评论数据
|
||
UserCommentExchangeModel comment = userCommentExchangeDao.selectById(commentId);
|
||
if (comment == null) {
|
||
return false;
|
||
}
|
||
|
||
// 获取病例交流数据
|
||
CaseExchangeModel article = caseExchangeDao.selectById(comment.getExchangeId());
|
||
if (article == null) {
|
||
return false;
|
||
}
|
||
|
||
if (article.getExchangeStatus() != 1){
|
||
return false;
|
||
}
|
||
|
||
// 检测用户是否病例交流作者
|
||
if (!Objects.equals(comment.getUserId(), Long.valueOf(userId))){
|
||
return false;
|
||
}
|
||
|
||
// 取消置顶评论
|
||
if (comment.getIsTop() == 0){
|
||
return true;
|
||
}
|
||
|
||
// 置顶评论
|
||
comment.setIsTop(0);
|
||
userCommentExchangeDao.updateById(comment);
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 获取用户收藏数据
|
||
* @param exchangeId 病例交流id
|
||
* @param userId 用户id
|
||
* @return bool false:未收藏 true:已收藏
|
||
*/
|
||
public UserCollectExchangeModel getUserCollectExchangeStatus(String exchangeId, String userId){
|
||
// 检测用户是否已收藏过
|
||
LambdaQueryWrapper<UserCollectExchangeModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||
mapQueryWrapper.eq(UserCollectExchangeModel::getUserId, userId);
|
||
mapQueryWrapper.eq(UserCollectExchangeModel::getExchangeId, exchangeId);
|
||
|
||
return userCollectExchangeDao.selectOne(mapQueryWrapper);
|
||
}
|
||
|
||
/**
|
||
* 新增病例交流统计
|
||
* @return bool
|
||
*/
|
||
public boolean handleStatsCaseExchange(){
|
||
LambdaQueryWrapper<StatsCaseExchangeModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||
StatsCaseExchangeModel statsCaseExchange = statsCaseExchangeDao.selectOne(mapQueryWrapper);
|
||
if (statsCaseExchange == null){
|
||
// 新增
|
||
StatsCaseExchangeModel statsCaseExchangeData = new StatsCaseExchangeModel();
|
||
statsCaseExchangeData.setExchangeNum(1);
|
||
int res = statsCaseExchangeDao.insert(statsCaseExchangeData);
|
||
return res > 0;
|
||
}else{
|
||
// 增加数量
|
||
statsCaseExchangeDao.inc(statsCaseExchange.getStatsId(),"exchange_num",1);
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 新增病例交流统计-用户
|
||
* @return bool
|
||
*/
|
||
public boolean handleStatsCaseExchangeUser(String userId){
|
||
LambdaQueryWrapper<StatsCaseExchangeUserModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||
mapQueryWrapper.eq(StatsCaseExchangeUserModel::getUserId, userId);
|
||
StatsCaseExchangeUserModel statsCaseExchangeUser = statsCaseExchangeUserDao.selectOne(mapQueryWrapper);
|
||
if (statsCaseExchangeUser == null){
|
||
// 新增
|
||
StatsCaseExchangeUserModel statsCaseExchangeUserData = new StatsCaseExchangeUserModel();
|
||
statsCaseExchangeUserData.setUserId(Long.valueOf(userId));
|
||
statsCaseExchangeUserData.setExchangeNum(1);
|
||
int res = statsCaseExchangeUserDao.insert(statsCaseExchangeUserData);
|
||
return res > 0;
|
||
}else{
|
||
// 增加数量
|
||
statsCaseExchangeUserDao.inc(statsCaseExchangeUser.getStatsId(),"exchange_num",1);
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 新增投票-病例交流
|
||
* @param exchangeId 病例交流id
|
||
* @param userId 用户id
|
||
* @return bool
|
||
*/
|
||
@Transactional
|
||
public boolean AddCaseExchangeVote(String exchangeId,String userId,String optionId){
|
||
// 获取病例交流数据
|
||
CaseExchangeModel article = caseExchangeDao.selectById(exchangeId);
|
||
if (article == null) {
|
||
return false;
|
||
}
|
||
|
||
// 检测用户是否已投票
|
||
LambdaQueryWrapper<UserVoteExchangeModel> userVoteExchangeQueryWrapper = new LambdaQueryWrapper<>();
|
||
userVoteExchangeQueryWrapper.eq(UserVoteExchangeModel::getUserId, userId);
|
||
userVoteExchangeQueryWrapper.eq(UserVoteExchangeModel::getExchangeId, exchangeId);
|
||
UserVoteExchangeModel userVoteExchange = userVoteExchangeDao.selectOne(userVoteExchangeQueryWrapper);
|
||
if (userVoteExchange != null) {
|
||
return true;
|
||
}
|
||
|
||
// 获取病例交流对应投票数据
|
||
LambdaQueryWrapper<CaseExchangeVoteModel> caseExchangeVoteQueryWrapper = new LambdaQueryWrapper<>();
|
||
caseExchangeVoteQueryWrapper.eq(CaseExchangeVoteModel::getExchangeId, exchangeId);
|
||
CaseExchangeVoteModel caseExchangeVote = caseExchangeVoteDao.selectOne(caseExchangeVoteQueryWrapper);
|
||
if (caseExchangeVote == null) {
|
||
return true;
|
||
}
|
||
|
||
// 获取对应投票选项
|
||
LambdaQueryWrapper<CaseExchangeVoteOptionModel> caseExchangeVoteOptionQueryWrapper = new LambdaQueryWrapper<>();
|
||
caseExchangeVoteOptionQueryWrapper.eq(CaseExchangeVoteOptionModel::getOptionId, optionId);
|
||
caseExchangeVoteOptionQueryWrapper.eq(CaseExchangeVoteOptionModel::getVoteId, caseExchangeVote.getVoteId());
|
||
CaseExchangeVoteOptionModel caseExchangeVoteOption = caseExchangeVoteOptionDao.selectOne(caseExchangeVoteOptionQueryWrapper);
|
||
if (caseExchangeVoteOption == null) {
|
||
return false;
|
||
}
|
||
|
||
// 新增投票
|
||
UserVoteExchangeModel userVoteExchangedata = new UserVoteExchangeModel();
|
||
userVoteExchangedata.setUserId(Long.valueOf(userId));
|
||
userVoteExchangedata.setExchangeId(Long.valueOf(exchangeId));
|
||
userVoteExchangedata.setVoteId(caseExchangeVote.getVoteId());
|
||
userVoteExchangedata.setOptionId(Long.valueOf(optionId));
|
||
userVoteExchangedata.setVoteTime(LocalDateTime.now());
|
||
int res = userVoteExchangeDao.insert(userVoteExchangedata);
|
||
if (res <= 0){
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
|
||
// 处理投票数
|
||
caseExchangeVoteOptionDao.inc(Long.valueOf(optionId),"vote_num",1);
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 新增病例交流的统计字段
|
||
* @param exchangeId id
|
||
* @param type 类型:1:阅读量 2:收藏量 3:评论数
|
||
*/
|
||
@Transactional
|
||
public boolean IncCaseExchangeStats(String exchangeId,String userId,Integer type){
|
||
try {
|
||
// 阅读量
|
||
if (type == 1){
|
||
caseExchangeDao.inc(Long.valueOf(exchangeId),"read_num",1);
|
||
statsCaseExchangeDao.inc(1L,"exchange_read_num",1);
|
||
|
||
// 此处无需担心stats_case_exchange_user无数据,发布病例时会新增
|
||
statsCaseExchangeUserDao.inc(Long.valueOf(userId),"exchange_read_num",1);
|
||
}
|
||
|
||
// 收藏量
|
||
if (type == 2){
|
||
caseExchangeDao.inc(Long.valueOf(exchangeId),"collect_num",1);
|
||
statsCaseExchangeDao.inc(1L,"exchange_collect_num",1);
|
||
|
||
// 此处无需担心stats_case_exchange_user无数据,发布病例时会新增
|
||
statsCaseExchangeUserDao.inc(Long.valueOf(userId),"exchange_collect_num",1);
|
||
}
|
||
|
||
// 评论数
|
||
if (type == 3){
|
||
caseExchangeDao.inc(Long.valueOf(exchangeId),"comment_num",1);
|
||
statsCaseExchangeDao.inc(1L,"exchange_comment_num",1);
|
||
|
||
// 此处无需担心stats_case_exchange_user无数据,发布病例时会新增
|
||
statsCaseExchangeUserDao.inc(Long.valueOf(userId),"exchange_comment_num",1);
|
||
}
|
||
|
||
return true;
|
||
} catch (Exception e) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 减少文章的统计字段
|
||
* @param exchangeId id
|
||
* @param type 类型:1:阅读量 2:收藏量 3:评论数
|
||
*/
|
||
@Transactional
|
||
public boolean DecCaseExchangeStats(String exchangeId,String userId,Integer type){
|
||
try {
|
||
// 阅读量
|
||
if (type == 1){
|
||
caseExchangeDao.dec(Long.valueOf(exchangeId),"read_num",1);
|
||
statsCaseExchangeDao.dec(1L,"exchange_read_num",1);
|
||
|
||
// 此处无需担心stats_case_exchange_user无数据,发布病例时会新增
|
||
statsCaseExchangeUserDao.dec(Long.valueOf(userId),"exchange_read_num",1);
|
||
}
|
||
|
||
// 收藏量
|
||
if (type == 2){
|
||
caseExchangeDao.inc(Long.valueOf(exchangeId),"collect_num",1);
|
||
statsCaseExchangeDao.dec(1L,"exchange_collect_num",1);
|
||
|
||
// 此处无需担心stats_case_exchange_user无数据,发布病例时会新增
|
||
statsCaseExchangeUserDao.dec(Long.valueOf(userId),"exchange_collect_num",1);
|
||
}
|
||
|
||
// 评论数
|
||
if (type == 3){
|
||
caseExchangeDao.inc(Long.valueOf(exchangeId),"comment_num",1);
|
||
statsCaseExchangeDao.dec(1L,"exchange_comment_num",1);
|
||
|
||
// 此处无需担心stats_case_exchange_user无数据,发布病例时会新增
|
||
statsCaseExchangeUserDao.dec(Long.valueOf(userId),"exchange_comment_num",1);
|
||
}
|
||
|
||
return true;
|
||
} catch (Exception e) {
|
||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||
return false;
|
||
}
|
||
}
|
||
}
|