package com.tourguide.modules.user.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.tourguide.modules.user.entity.GuideUser; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; import java.math.BigDecimal; public interface GuideUserMapper extends BaseMapper { @Update("UPDATE guide_user SET accepted_order_count = accepted_order_count + 1, " + "current_month_order_count = current_month_order_count + 1, updated_at = NOW() " + "WHERE id = #{guideId} AND deleted = 0 AND status = 1") int incrementAcceptedOrderCount(Long guideId); @Update("UPDATE guide_user SET status = 0, updated_at = NOW() " + "WHERE id = #{guideId} AND deleted = 0 AND status = 1 " + "AND COALESCE(auto_disable_whitelisted, 0) = 0 " + "AND accepted_order_count >= #{orderThreshold} " + "AND rating > 0 AND rating <= #{ratingThreshold}") int autoDisableIfEligible(@Param("guideId") Long guideId, @Param("orderThreshold") Integer orderThreshold, @Param("ratingThreshold") BigDecimal ratingThreshold); }