This commit is contained in:
wucongxing8150 2025-05-13 14:32:26 +08:00
parent 8841975427
commit fa8278939e
13 changed files with 579 additions and 25 deletions

View File

@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.caseData.common.Response;
import com.example.caseData.dao.*;
import com.example.caseData.dto.T;
import com.example.caseData.dto.basicHospital.BasicHospitalDto;
import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto;
import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.model.*;
import com.example.caseData.request.UserRequest;
import com.example.caseData.request.clinicalRequest.addClinicalArticleComment;
import com.example.caseData.request.clinicalRequest.getClinicalHospitalSearchPage;
import com.example.caseData.service.CaseClinicalArticleService;
import com.example.caseData.service.UserService;
@ -44,7 +47,7 @@ public class CaseClinicalArticleController {
private UserCollectClinicalArticleDao userCollectClinicalArticleDao;
@Resource
private HttpServletRequest request;
private HttpServletRequest httpServletRequest;
@Resource
private CaseClinicalArticleService caseClinicalArticleService;
@ -77,10 +80,21 @@ public class CaseClinicalArticleController {
author.setCaseClinicalDoctor(caseClinicalDoctor);
}
article.setAuthor(caseClinicalArticleAuthors);
// 处理返回值
CaseClinicalArticleDto g = CaseClinicalArticleDto.GetDto(article);
// 是否已收藏
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId != null) {
// 检测用户是否已收藏过
UserCollectClinicalArticleModel userCollectClinicalArticle = caseClinicalArticleService.getUserCollectClinicalArticleStatus(articleId,userId);
if (userCollectClinicalArticle != null) {
g.setCollect(true);
}
}
return Response.success(g);
}
@ -88,11 +102,11 @@ public class CaseClinicalArticleController {
* 临床病例库-文章-收藏
*/
@PostMapping("/clinical/article/collect/{article_id}")
public Response<CaseClinicalArticleDto> AddClinicalArticleCollect(
public Response<T> AddClinicalArticleCollect(
@PathVariable("article_id") String articleId
) {
String userId = (String) request.getAttribute("userId");
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
@ -105,4 +119,49 @@ public class CaseClinicalArticleController {
return Response.success();
}
/**
* 临床病例库-文章-取消收藏
*/
@DeleteMapping("/clinical/article/collect/{article_id}")
public Response<T> DeleteClinicalArticleCollect(
@PathVariable("article_id") String articleId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
boolean res = caseClinicalArticleService.DeleteClinicalArticleCollect(articleId,userId);
if (!res){
return Response.error("操作失败");
}
return Response.success();
}
/**
* 临床病例库-文章-评论
*/
@PostMapping("/clinical/article/comment/{article_id}")
public Response<T> AddClinicalArticleComment(
@PathVariable("article_id") String articleId,
@Validated() addClinicalArticleComment request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
boolean res = caseClinicalArticleService.AddClinicalArticleComment(articleId,userId,request.getComment());
if (!res){
return Response.error("操作失败");
}
return Response.success();
}
}

View File

@ -3,16 +3,14 @@ package com.example.caseData.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.common.Response;
import com.example.caseData.dao.*;
import com.example.caseData.dto.T;
import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto;
import com.example.caseData.model.BasicHospitalModel;
import com.example.caseData.model.CaseClinicalVideoAuthorModel;
import com.example.caseData.model.CaseClinicalVideoModel;
import com.example.caseData.model.CaseClinicalDoctorModel;
import com.example.caseData.model.*;
import com.example.caseData.service.CaseClinicalArticleService;
import com.example.caseData.service.CaseClinicalVideoService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -34,6 +32,12 @@ public class CaseClinicalVideoController {
@Resource
private BasicHospitalDao basicHospitalDao;
@Resource
private HttpServletRequest httpServletRequest;
@Resource
private CaseClinicalVideoService caseClinicalVideoService;
/**
* 临床病例库-视频-详情
*/
@ -65,6 +69,61 @@ public class CaseClinicalVideoController {
article.setAuthor(caseClinicalVideoAuthors);
CaseClinicalVideoDto g = CaseClinicalVideoDto.GetDto(article);
// 是否已收藏
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId != null) {
// 检测用户是否已收藏过
UserCollectClinicalVideoModel userCollectClinicalVideo = caseClinicalVideoService.getUserCollectClinicalVideoStatus(videoId,userId);
if (userCollectClinicalVideo != null) {
g.setCollect(true);
}
}
return Response.success(g);
}
/**
* 临床病例库-文章-收藏
*/
@PostMapping("/clinical/video/collect/{video_id}")
public Response<T> AddClinicalVideoCollect(
@PathVariable("video_id") String articleId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
boolean res = caseClinicalVideoService.AddClinicalVideoCollect(articleId,userId);
if (!res){
return Response.error("操作失败");
}
return Response.success();
}
/**
* 临床病例库-文章-取消收藏
*/
@DeleteMapping("/clinical/video/collect/{video_id}")
public Response<T> DeleteClinicalVideoCollect(
@PathVariable("video_id") String videoId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
boolean res = caseClinicalVideoService.DeleteClinicalVideoCollect(videoId,userId);
if (!res){
return Response.error("操作失败");
}
return Response.success();
}
}

View File

@ -13,14 +13,14 @@ import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto;
import com.example.caseData.dto.caseClinicalVideoAuthor.CaseClinicalVideoAuthorDto;
import com.example.caseData.dto.statsCaseClinicalDoctor.StatsCaseClinicalDoctorDto;
import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto;
import com.example.caseData.model.BasicHospitalModel;
import com.example.caseData.model.CaseClinicalArticleAuthorModel;
import com.example.caseData.model.CaseClinicalDoctorModel;
import com.example.caseData.model.CaseClinicalVideoAuthorModel;
import com.example.caseData.model.*;
import com.example.caseData.request.clinicalRequest.getClinicalDoctorSearchPage;
import com.example.caseData.request.clinicalRequest.getClinicalHospitalSearchPage;
import com.example.caseData.request.clinicalRequest.getClinicalSearchPage;
import com.example.caseData.service.CaseClinicalArticleService;
import com.example.caseData.service.CaseClinicalVideoService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -61,14 +61,25 @@ public class ClinicalController extends BaseController {
@Resource
private BasicHospitalDao basicHospitalDao;
@Resource
private HttpServletRequest httpServletRequest;
@Resource
private CaseClinicalArticleService caseClinicalArticleService;
@Resource
private CaseClinicalVideoService caseClinicalVideoService;
/**
* 临床病例库-搜索
*/
@PostMapping("/clinical/search")
public Response<Map<String, Object>> getClinicalSearchPage(
@Validated({getClinicalSearchPage.class})
@Validated()
@RequestBody getClinicalSearchPage request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
request.validateForPage();
Map<String, Object> resultMap = new HashMap<>();
@ -100,6 +111,15 @@ public class ClinicalController extends BaseController {
List<CaseClinicalArticleAuthorDto> caseClinicalArticleAuthorListDto = CaseClinicalArticleAuthorDto.GetListDto(caseClinicalArticleAuthors);
dto.setAuthor(caseClinicalArticleAuthorListDto);
// 获取用户收藏状态
if (userId != null) {
// 检测用户是否已收藏过
UserCollectClinicalArticleModel userCollectClinicalArticle = caseClinicalArticleService.getUserCollectClinicalArticleStatus(dto.getArticleId(),userId);
if (userCollectClinicalArticle != null) {
dto.setCollect(true);
}
}
}
resultMap.put("page", resultPage.getCurrent());
@ -131,6 +151,15 @@ public class ClinicalController extends BaseController {
List<CaseClinicalVideoAuthorDto> caseClinicalVideoAuthorListDto = CaseClinicalVideoAuthorDto.GetListDto(caseClinicalVideoAuthors);
dto.setAuthor(caseClinicalVideoAuthorListDto);
// 获取用户收藏状态
if (userId != null) {
// 检测用户是否已收藏过
UserCollectClinicalVideoModel userCollectClinicalVideo = caseClinicalVideoService.getUserCollectClinicalVideoStatus(dto.getVideoId(),userId);
if (userCollectClinicalVideo != null) {
dto.setCollect(true);
}
}
}
resultMap.put("page", resultPage.getCurrent());

View File

@ -1,11 +1,13 @@
package com.example.caseData.dao;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto;
import com.example.caseData.model.CaseClinicalArticleModel;
import org.apache.ibatis.annotations.*;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@ -28,4 +30,25 @@ public interface CaseClinicalArticleDao extends BaseMapper<CaseClinicalArticleMo
@Param("doctor_id") String doctorId,
@Param("order") Map<String, String> order
);
/**
* Inc 自增
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 增加的数值
* @return 更新的行数
*/
@Update("UPDATE case_clinical_article SET ${field} = ${field} + #{numeral} WHERE article_id = #{articleId}")
int inc(@Param("articleId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* Dec 自减
*
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 减少的数值
* @return 更新的行数
*/
@Update("UPDATE case_clinical_article SET ${field} = ${field} - #{numeral} WHERE article_id = #{articleId}")
int dec(@Param("articleId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
}

View File

@ -8,6 +8,7 @@ import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto;
import com.example.caseData.model.CaseClinicalVideoModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.Map;
@ -28,4 +29,25 @@ public interface CaseClinicalVideoDao extends BaseMapper<CaseClinicalVideoModel>
@Param("labelName") String labelName,
@Param("order") Map<String, String> order
);
/**
* Inc 自增
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 增加的数值
* @return 更新的行数
*/
@Update("UPDATE case_clinical_video SET ${field} = ${field} + #{numeral} WHERE video_id = #{videoId}")
int inc(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* Dec 自减
*
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 减少的数值
* @return 更新的行数
*/
@Update("UPDATE case_clinical_video SET ${field} = ${field} - #{numeral} WHERE video_id = #{videoId}")
int dec(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
}

View File

@ -2,6 +2,28 @@ package com.example.caseData.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.caseData.model.StatsCaseClinicalModel;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
public interface StatsCaseClinicalDao extends BaseMapper<StatsCaseClinicalModel> {
/**
* Inc 自增
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 增加的数值
* @return 更新的行数
*/
@Update("UPDATE stats_case_clinical SET ${field} = ${field} + #{numeral} WHERE stats_id = #{statsId}")
int inc(@Param("statsId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* Dec 自减
*
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 减少的数值
* @return 更新的行数
*/
@Update("UPDATE stats_case_clinical SET ${field} = ${field} - #{numeral} WHERE stats_id = #{statsId}")
int dec(@Param("statsId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
}

View File

@ -7,6 +7,7 @@ import com.example.caseData.dto.statsCaseClinicalDoctor.StatsCaseClinicalDoctorD
import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto;
import com.example.caseData.model.StatsCaseClinicalDoctorModel;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.Map;
@ -22,4 +23,25 @@ public interface StatsCaseClinicalDoctorDao extends BaseMapper<StatsCaseClinical
@Param("doctor_name") String doctorName,
@Param("order") Map<String, String> order
);
/**
* Inc 自增
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 增加的数值
* @return 更新的行数
*/
@Update("UPDATE stats_case_clinical_doctor SET ${field} = ${field} + #{numeral} WHERE doctor_id = #{doctorId}")
int inc(@Param("doctorId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* Dec 自减
*
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 减少的数值
* @return 更新的行数
*/
@Update("UPDATE stats_case_clinical_doctor SET ${field} = ${field} - #{numeral} WHERE doctor_id = #{doctorId}")
int dec(@Param("doctorId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto;
import com.example.caseData.model.StatsCaseClinicalHospitalModel;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.checkerframework.checker.units.qual.N;
import java.util.Map;
@ -22,4 +23,25 @@ public interface StatsCaseClinicalHospitalDao extends BaseMapper<StatsCaseClinic
@Param("hospital_name") String hospitalName,
@Param("order") Map<String, String> order
);
/**
* Inc 自增
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 增加的数值
* @return 更新的行数
*/
@Update("UPDATE stats_case_clinical_hospital SET ${field} = ${field} + #{numeral} WHERE hospital_id = #{hospitalId}")
int inc(@Param("hospitalId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* Dec 自减
*
* @param articleId 文章 ID
* @param field 字段名称
* @param numeral 减少的数值
* @return 更新的行数
*/
@Update("UPDATE stats_case_clinical_hospital SET ${field} = ${field} - #{numeral} WHERE hospital_id = #{hospitalId}")
int dec(@Param("hospitalId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
}

View File

@ -47,7 +47,6 @@ public class CaseClinicalArticleDto {
* 发表时间
*/
@JsonProperty("push_date")
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime pushDate;
/**
@ -74,6 +73,12 @@ public class CaseClinicalArticleDto {
@JsonProperty("author")
private List<CaseClinicalArticleAuthorDto> author;
/**
* 收藏状态
*/
@JsonProperty("is_collect")
private boolean isCollect;
/**
* 列表
*/

View File

@ -78,6 +78,12 @@ public class CaseClinicalVideoDto {
@JsonProperty("author")
private List<CaseClinicalVideoAuthorDto> author;
/**
* 收藏状态
*/
@JsonProperty("is_collect")
private boolean isCollect;
/**
* 列表
*/

View File

@ -0,0 +1,11 @@
package com.example.caseData.request.clinicalRequest;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class addClinicalArticleComment {
// 评论内容
@JsonProperty("comment")
private String comment;
}

View File

@ -1,19 +1,49 @@
package com.example.caseData.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.dao.UserCollectClinicalArticleDao;
import com.example.caseData.dao.*;
import com.example.caseData.model.CaseClinicalArticleAuthorModel;
import com.example.caseData.model.CaseClinicalDoctorModel;
import com.example.caseData.model.UserCollectClinicalArticleModel;
import com.example.caseData.model.UserModel;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import static com.baomidou.mybatisplus.extension.toolkit.Db.save;
import java.util.List;
//import static com.baomidou.mybatisplus.extension.toolkit.Db.removeById;
//import static com.baomidou.mybatisplus.extension.toolkit.Db.save;
@Service
public class CaseClinicalArticleService {
@Resource
private UserCollectClinicalArticleDao userCollectClinicalArticleDao;
@Resource
private CaseClinicalArticleDao caseClinicalArticleDao;
@Resource
private StatsCaseClinicalDao statsCaseClinicalDao;
@Resource
private UserDao userDao;
@Resource
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
@Resource
private StatsCaseClinicalDoctorDao statsCaseClinicalDoctorDao;
@Resource
private CaseClinicalArticleAuthorDao caseClinicalArticleAuthorDao;
@Resource
private CaseClinicalDoctorDao caseClinicalDoctorDao;
/**
* 新增收藏-临床病例库-文章
* @param articleId 文章id
@ -23,10 +53,7 @@ public class CaseClinicalArticleService {
@Transactional
public boolean AddClinicalArticleCollect(String articleId,String userId){
// 检测用户是否已收藏过
LambdaQueryWrapper<UserCollectClinicalArticleModel> mapQueryWrapper = new LambdaQueryWrapper<>();
mapQueryWrapper.eq(UserCollectClinicalArticleModel::getUserId, userId);
mapQueryWrapper.eq(UserCollectClinicalArticleModel::getArticleId, articleId);
UserCollectClinicalArticleModel userCollectClinicalArticle = userCollectClinicalArticleDao.selectOne(mapQueryWrapper);
UserCollectClinicalArticleModel userCollectClinicalArticle = getUserCollectClinicalArticleStatus(articleId,userId);
if (userCollectClinicalArticle != null) {
return true;
}
@ -35,6 +62,103 @@ public class CaseClinicalArticleService {
UserCollectClinicalArticleModel userCollectClinicalArticleData = new UserCollectClinicalArticleModel();
userCollectClinicalArticleData.setUserId(Long.valueOf(userId));
userCollectClinicalArticleData.setArticleId(Long.valueOf(articleId));
return save(userCollectClinicalArticleData);
int res = userCollectClinicalArticleDao.insert(userCollectClinicalArticleData);
if (res <= 0){
return false;
}
// 增加文章收藏数
caseClinicalArticleDao.inc(Long.valueOf(articleId),"collect_num",1);
// 增加文章总收藏数
statsCaseClinicalDao.inc(1L,"article_collect_num",1);
// 获取文章作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId);
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"article_collect_num",1);
// 增加医生文章收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"article_collect_num",1);
}
return true;
}
/**
* 取消收藏-临床病例库-文章
* @param articleId 文章id
* @param userId 用户id
* @return bool
*/
@Transactional
public boolean DeleteClinicalArticleCollect(String articleId,String userId){
// 检测用户是否已收藏过
UserCollectClinicalArticleModel userCollectClinicalArticle = getUserCollectClinicalArticleStatus(articleId,userId);
if (userCollectClinicalArticle == null) {
return true;
}
// 删除收藏
int res = userCollectClinicalArticleDao.deleteById(userCollectClinicalArticle.getCollectId());
if (res <= 0){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
// 减少文章收藏数
caseClinicalArticleDao.dec(Long.valueOf(articleId),"collect_num",1);
// 减少文章总收藏数
statsCaseClinicalDao.dec(1L,"article_collect_num",1);
// 获取文章作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId);
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 减少医院文章收藏数
statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"article_collect_num",1);
// 减少医生文章收藏数
statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"article_collect_num",1);
}
return true;
}
/**
* 新增评论-临床病例库-文章
* @param articleId 文章id
* @param userId 用户id
* @return bool
*/
@Transactional
public boolean AddClinicalArticleComment(String articleId,String userId,String comment){
return true;
}
/**
* 获取用户收藏数据
* @param articleId 文章id
* @param userId 用户id
* @return bool false:未收藏 true已收藏
*/
public UserCollectClinicalArticleModel getUserCollectClinicalArticleStatus(String articleId,String userId){
// 检测用户是否已收藏过
LambdaQueryWrapper<UserCollectClinicalArticleModel> mapQueryWrapper = new LambdaQueryWrapper<>();
mapQueryWrapper.eq(UserCollectClinicalArticleModel::getUserId, userId);
mapQueryWrapper.eq(UserCollectClinicalArticleModel::getArticleId, articleId);
return userCollectClinicalArticleDao.selectOne(mapQueryWrapper);
}
}

View File

@ -0,0 +1,150 @@
package com.example.caseData.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.dao.*;
import com.example.caseData.model.*;
import com.example.caseData.model.UserCollectClinicalVideoModel;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.List;
//import static com.baomidou.mybatisplus.extension.toolkit.Db.removeById;
//import static com.baomidou.mybatisplus.extension.toolkit.Db.save;
@Service
public class CaseClinicalVideoService {
@Resource
private UserCollectClinicalVideoDao userCollectClinicalVideoDao;
@Resource
private CaseClinicalVideoDao caseClinicalVideoDao;
@Resource
private StatsCaseClinicalDao statsCaseClinicalDao;
@Resource
private UserDao userDao;
@Resource
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
@Resource
private StatsCaseClinicalDoctorDao statsCaseClinicalDoctorDao;
@Resource
private CaseClinicalVideoAuthorDao caseClinicalVideoAuthorDao;
@Resource
private CaseClinicalDoctorDao caseClinicalDoctorDao;
/**
* 新增收藏-临床病例库-视频
* @param videoId 视频id
* @param userId 用户id
* @return bool
*/
@Transactional
public boolean AddClinicalVideoCollect(String videoId,String userId){
// 检测用户是否已收藏过
UserCollectClinicalVideoModel userCollectClinicalVideo = getUserCollectClinicalVideoStatus(videoId,userId);
if (userCollectClinicalVideo != null) {
return true;
}
// 新增收藏
UserCollectClinicalVideoModel userCollectClinicalVideoData = new UserCollectClinicalVideoModel();
userCollectClinicalVideoData.setUserId(Long.valueOf(userId));
userCollectClinicalVideoData.setVideoId(Long.valueOf(videoId));
int res = userCollectClinicalVideoDao.insert(userCollectClinicalVideoData);
if (res <= 0){
return false;
}
// 增加视频收藏数
caseClinicalVideoDao.inc(Long.valueOf(videoId),"collect_num",1);
// 增加视频总收藏数
statsCaseClinicalDao.inc(1L,"article_collect_num",1);
// 获取视频作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, videoId);
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院视频收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"article_collect_num",1);
// 增加医生视频收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"article_collect_num",1);
}
return true;
}
/**
* 取消收藏-临床病例库-视频
* @param videoId 视频id
* @param userId 用户id
* @return bool
*/
@Transactional
public boolean DeleteClinicalVideoCollect(String videoId,String userId){
// 检测用户是否已收藏过
UserCollectClinicalVideoModel userCollectClinicalVideo = getUserCollectClinicalVideoStatus(videoId,userId);
if (userCollectClinicalVideo == null) {
return true;
}
// 删除收藏
int res = userCollectClinicalVideoDao.deleteById(userCollectClinicalVideo.getCollectId());
if (res <= 0){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
// 减少视频收藏数
caseClinicalVideoDao.dec(Long.valueOf(videoId),"collect_num",1);
// 减少视频总收藏数
statsCaseClinicalDao.dec(1L,"article_collect_num",1);
// 获取视频作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, videoId);
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 减少医院视频收藏数
statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"article_collect_num",1);
// 减少医生视频收藏数
statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"article_collect_num",1);
}
return true;
}
/**
* 获取用户收藏数据
* @param videoId 视频id
* @param userId 用户id
* @return bool false:未收藏 true已收藏
*/
public UserCollectClinicalVideoModel getUserCollectClinicalVideoStatus(String videoId, String userId){
// 检测用户是否已收藏过
LambdaQueryWrapper<UserCollectClinicalVideoModel> mapQueryWrapper = new LambdaQueryWrapper<>();
mapQueryWrapper.eq(UserCollectClinicalVideoModel::getUserId, userId);
mapQueryWrapper.eq(UserCollectClinicalVideoModel::getVideoId, videoId);
return userCollectClinicalVideoDao.selectOne(mapQueryWrapper);
}
}