liusheng
8 天以前 f0a09ee996ab2605869844d6a3d812709e2bf0fa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.ruoyi.task.api.spi;
 
/**
 * 参数配置读取能力 —— <b>ruoyi-task 的对外 SPI,由 smartor 侧实现</b>。
 *
 * <h3>用途</h3>
 * 子任务统计里要读 {@code sys_config} 的 {@code wj.sms.template} 取值
 * (原 {@code ServiceSubtaskServiceImpl} L5141-5146):
 * <pre>
 * SysConfig sysConfig = new SysConfig();
 * sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
 * if (!Objects.isNull(sysConfig)) { String smsContemt = sysConfig.getConfigValue(); ... }
 * </pre>
 * {@code sys_config} 属系统域。ruoyi-task 自己的模块开关读参数走
 * {@code ruoyi-common} 的 {@code IConfigService};但这里原本走的是
 * {@code SysConfigMapper#checkConfigKeyUnique}(返回整行),
 * 且只用到 {@code configValue} 一个字段,故收成一个<b>只返回值</b>的端口。
 *
 * <h3>⚠️ 关于"行存在但值为 null"的边界</h3>
 * 原判定是"行存在"({@code !isNull(sysConfig)}),本端口判定是"值非 null"。
 * 二者只在 {@code sys_config} 存在一行且 {@code config_value IS NULL} 时不同 ——
 * 而 RuoYi 的 {@code sys_config.config_value} 是 {@code varchar(500) NOT NULL DEFAULT ''},
 * <b>该情形不可能出现</b>,因此行为等价。
 * (实现方按原样调 {@code checkConfigKeyUnique} 后取 {@code getConfigValue()}。)
 *
 * <h3>⚠️ 实现必须保持"纯转发"</h3>
 */
public interface TaskSysConfigPort {
 
    /**
     * 按参数键名取参数值(原 {@code SysConfigMapper#checkConfigKeyUnique} + {@code getConfigValue()})。
     *
     * @param configKey 参数键名
     * @return 参数值;该键不存在时返回 {@code null}
     */
    String findConfigValueByKey(String configKey);
 
    /**
     * 按参数键名取参数值(原 {@code ISysConfigService#selectConfigByKey(String)})。
     * <p>
     * ⚠️ 与 {@link #findConfigValueByKey} <b>不是同一个东西</b>,不要合并:
     * 前者走的是 {@code SysConfigMapper#checkConfigKeyUnique}(按 key 查整行),
     * 本方法走的是 {@code ISysConfigService#selectConfigByKey}(带缓存、且支持 orgid 维度)。
     * 两者 SQL 不同,合并会改变取值来源 —— 故并列保留、各自对应原调用。
     *
     * @param configKey 参数键名
     * @return 参数值;不存在返回 {@code StringUtils.EMPTY}(与原实现一致,不是 null)
     */
    String selectConfigValue(String configKey);
 
    /**
     * 按参数键名 + 机构 id 取参数值(原 {@code ISysConfigService#selectConfigByKey(String, String)})。
     * <p>
     * ⚠️ 该 2 参重载<b>只在 ruoyi-system 的 {@code ISysConfigService} 上</b>,
     * 不在 ruoyi-common 的 {@code IConfigService} 上 —— 这也是为什么不能简单地把
     * 调用方字段类型换成 {@code IConfigService} 来省掉依赖。
     *
     * @param configKey 参数键名
     * @param orgid     机构 id
     * @return 参数值;不存在返回空串
     */
    String selectConfigValue(String configKey, String orgid);
}