Files
case-data-api/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java
T
2025-08-29 13:12:06 +08:00

112 lines
4.0 KiB
Java

package com.example.caseData.dao;
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.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.Select;
import org.apache.ibatis.annotations.Update;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Mapper
public interface CaseClinicalVideoDao extends BaseMapper<CaseClinicalVideoModel> {
/**
* 临床病例库-搜索
* @param page 分页数据
* @param keyword 搜索关键词-标题/医生名称/标签名称
* @param order 排序
*/
IPage<CaseClinicalVideoDto> getCaseClinicalVideoSearchPage(
Page<?> page,
@Param("keyword") String keyword,
@Param("hospitalId") String hospitalId,
@Param("doctorId") String doctorId,
@Param("labelIden") String labelIden,
@Param("isNeedLink") Integer isNeedLink,
@Param("order") Map<String, String> order
);
/**
* 临床病例库-搜索
* @param keyword 搜索关键词-标题/医生名称/标签名称
* @param order 排序
*/
List<CaseClinicalVideoDto> getCaseClinicalVideoSearchList(
@Param("keyword") String keyword,
@Param("hospitalId") String hospitalId,
@Param("doctorId") String doctorId,
@Param("labelIden") String labelIden,
@Param("order") Map<String, String> order
);
/**
* 临床病例库-搜索-数量
* @param keyword 搜索关键词-标题/医生名称/标签名称
*/
Long getCaseClinicalVideoSearchCount(
@Param("keyword") String keyword,
@Param("hospitalId") String hospitalId,
@Param("doctorId") String doctorId,
@Param("labelIden") String labelIden
);
/**
* 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} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " +
"WHERE video_id = #{videoId}")
int dec(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
/**
* 根据医院ID查询该医院最后一篇文章的发表时间
* @param hospitalId 医院ID
* @return 最新发表时间,无数据时返回 null
*/
LocalDateTime selectLastVideoPushDateByHospitalId(@Param("hospitalId") Long hospitalId);
/**
* 根据医生ID查询该医生最后一篇文章的发表时间
* @param doctorId 医院ID
* @return 最新发表时间,无数据时返回 null
*/
LocalDateTime selectLastVideoPushDateByDoctorId(@Param("doctorId") Long doctorId);
/**
* 根据医院ID查询该医院最后一篇文章的发表时间
* @param labelIden 标签唯一标识
* @return 最新发表时间,无数据时返回 null
*/
LocalDateTime selectLastVideoPushDateByLabelId(@Param("labelIden") String labelIden);
/**
* 查询所有未删除文章的阅读量总和
*
* @return 阅读量总和
*/
@Select("SELECT SUM(read_num) FROM case_clinical_video WHERE delete_status = 0 and video_status = 1")
Long getTotalReadNum();
}