package com.ruoyi.task.api.spi;
import com.ruoyi.task.domain.ServiceSubtask;
import com.ruoyi.task.domain.ServiceSubtaskPreachform;
import java.util.List;
/**
* 子任务「执行方式明细」({@code service_subtask_preachform})读写能力 ——
* ruoyi-task 的对外 SPI,由 smartor 侧实现。
*
*
为什么需要它
* 任务侧的 4 个类({@code ServiceSubtaskServiceImpl} / {@code ServiceTaskServiceImpl} /
* {@code ServiceTaskScheduleServiceImpl} / {@code ScheduleSubtaskBuilder})都要读写这张表,
* 但该表的归属模块是 {@code ruoyi-inhospvisit}(已收口到 ruoyi-common 的
* {@code PreachformApi}),ruoyi-task 不能依赖 smartor、也不该自写该表 SQL。
*
* ⚠️ 这是【过渡】端口,形态刻意与旧 Mapper 一致
* 本端口逐方法镜像 smartor 既有的(已 {@code @Deprecated} 的)
* {@code ServiceSubtaskPreachformMapper}:同名方法、同名参数、同返回类型
* ({@code insert/update} 仍返回 {@code int})。
* 这样那 4 个类搬进 ruoyi-task 时只需把注入的字段类型换成本端口,调用点一行都不用改,
* 把"改 25 处调用点 + 逐处换类型"的风险降到最低。
*
* 之所以不直接让它们注入 {@code PreachformApi}:那需要把
* {@code ServiceSubtaskPreachform} 换成 {@code VisitPreachformRow}、
* 并把 {@code int} 返回值改成 {@code boolean},共约 25 处调用点,
* 属独立的收口动作(见 {@code doc/跨模块数据访问原则与收口方案.md}),不在本次范围内。
*
*
将来动作
* 待 preachform 全面收口时,把本端口与 smartor 的 Bridge 一并删除,
* 4 个类改为直接注入 {@code PreachformApi}。
*
* ⚠️ 实现必须保持"纯转发"
* 实现方只转发到既有 Mapper/Bridge,不得加入业务判断或字段补齐。
*
* @see com.ruoyi.common.core.service.PreachformApi 该表真正的归属契约
*/
public interface TaskPreachformPort {
/**
* 按主键查(原 {@code selectServiceSubtaskPreachformById})。
*/
ServiceSubtaskPreachform selectServiceSubtaskPreachformById(Long id);
/**
* 按条件查列表(原 {@code selectServiceSubtaskPreachformList})。
*/
List selectServiceSubtaskPreachformList(ServiceSubtaskPreachform query);
/**
* 新增(原 {@code insertServiceSubtaskPreachform})。
*
* @return 受影响行数(与原实现一致,仍为 {@code int})
*/
int insertServiceSubtaskPreachform(ServiceSubtaskPreachform row);
/**
* 按主键更新(原 {@code updateServiceSubtaskPreachform})。
*/
int updateServiceSubtaskPreachform(ServiceSubtaskPreachform row);
/**
* 按条件更新(原 {@code updateSSPByCondition})。
*/
int updateSSPByCondition(ServiceSubtaskPreachform row);
/**
* 按 {@code subid} 删除该子任务的所有发送方式(原
* {@code deleteServiceSubtaskPreachformBySubid},实际是软删)。
*/
int deleteServiceSubtaskPreachformBySubid(Long subId);
/**
* 按 taskid/orgid 查(原 {@code selectBySubtask};⚠️ 方法名易误解,
* 它不按 subtask 主键查,见 {@code PreachformApi#findByTaskidAndOrgid})。
*/
List selectBySubtask(ServiceSubtask subtask);
}