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; @Mapper public interface CaseClinicalArticleDao extends BaseMapper { /** * 临床病例库-搜索 * @param page 分页数据 * @param keyword 搜索关键词-标题/医生名称/标签名称 * @param order 排序 */ IPage getCaseClinicalArticleSearchPage( Page page, @Param("keyword") String keyword, @Param("hospitalId") String hospitalId, @Param("doctorId") String doctorId, @Param("labelIden") String labelIden, @Param("order") Map order ); /** * 临床病例库-搜索-数量 * @param keyword 搜索关键词-标题/医生名称/标签名称 */ Long getCaseClinicalArticleSearchCount( @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_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} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + "WHERE article_id = #{articleId}") int dec(@Param("articleId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); }