package com.ruoyi.task.mapper;
import com.ruoyi.task.domain.ServiceSubtask;
import com.ruoyi.task.domain.ServiceSubtaskPreachform;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 随访子任务「执行方式明细」({@code service_subtask_preachform})Mapper。
*
*
2026-11 归属调整
* 该表原先归 {@code ruoyi-inhospvisit}(经 {@code PreachformApi} 契约对外),
* smartor 侧另有一份同表 CRUD 由一个 {@code @Primary} 委托实现兜着,ruoyi-task 只能经
* {@code ServiceSubtaskPreachformMapper} 间接读写。按"表跟随业务域"的口径,这张表整体划归 {@code ruoyi-task}:
*
* - SQL 与 Mapper 只有这一份(本接口 + {@code mapper/task/ServiceSubtaskPreachformMapper.xml});
* - ruoyi-task / ruoyi-phone / smartor / ruoyi-admin / ruoyi-quartz 一律直接注入本 Mapper;
* - {@code ruoyi-inhospvisit} 反向依赖不成立(它要写这张表),因此仍走
* {@code com.ruoyi.common.core.service.PreachformApi} 契约,实现方改为本模块
* ({@code com.ruoyi.task.api.contract.PreachformApiImpl})。
*
*
* ⚠️ 方法名沿用迁移前(smartor / 本模块调用点保持零改动)
* 语句 id 与 {@link ServiceSubtaskPreachform} 字段一一对应,条件、顺序照抄原 SQL,
* 不做"顺手精简"。三个 {@code delete*} 在库里其实是软删({@code update ... set del_flag = 1})。
*/
@Mapper
public interface ServiceSubtaskPreachformMapper {
/**
* 按主键查(原 {@code selectServiceSubtaskPreachformById})。
*/
ServiceSubtaskPreachform selectServiceSubtaskPreachformById(Long id);
/**
* 按条件查(原 {@code selectServiceSubtaskPreachformList})。
*
* 固定条件 {@code del_flag = 0},其余 8 个字段为可选条件:
* {@code subid / taskid / current_send_time / preachform / sendstate / orgid / sort / compensate_time}。
*/
List selectServiceSubtaskPreachformList(ServiceSubtaskPreachform query);
/**
* 新增(自增主键回填到 {@code id})。
*/
int insertServiceSubtaskPreachform(ServiceSubtaskPreachform row);
/**
* 按主键更新({@code where id = #{id}},SET 各列均为可选)。
*/
int updateServiceSubtaskPreachform(ServiceSubtaskPreachform row);
/**
* 按条件更新(SET 同 update,WHERE 按 {@code subid / taskid / preachform / remark / orgid},无 id 条件)。
*/
int updateSSPByCondition(ServiceSubtaskPreachform row);
/**
* 微信公众号已领取未填写按默认选项完成时,将当前发送方式置为完成(9)。
* 仅更新当前子任务、当前公众号行,且只允许从已发送(2)/已领取(3)迁移,避免影响其他任务。
*
* @param row 必填 id、subid、preachform、remark
* @return 影响行数
*/
int updateWechatPreachformComplete(ServiceSubtaskPreachform row);
/**
* 按主键软删。
*/
int deleteServiceSubtaskPreachformById(Long id);
/**
* 按 {@code subid} 软删。
*/
int deleteServiceSubtaskPreachformBySubid(Long subid);
/**
* 按主键集合软删。
*/
int deleteServiceSubtaskPreachformByIds(Long[] ids);
/**
* 按 {@code taskid + orgid} 查(方法名沿用旧名,不是按 subtask 主键查)。
*/
List selectBySubtask(ServiceSubtask subtask);
}