liusheng
2026-10-10 0afac42fb2e9d6e5291304dd0044ce3042b45d2b
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package com.ruoyi.message.config;
 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
/**
 * 存量配置(字段名与各站点 {@code application-<profile>.yml} 的 key <b>完全同名</b>)。
 * <p>
 * ⚠️ 为什么必须同名、必须扁平:
 * <pre>
 * Spring Boot 的松散绑定是按「点分路径 + 逐段规范化后缀匹配」工作的。
 * 一个叫 {@code xhsmsPath} 的 key,只能绑定到「字段路径为 xhsmsPath」的位置;
 * 它<b>不可能</b>落到 {@code sms.xhsms.path} 上——即使 {@code xhsms} 是 {@code sms} 的子字段、
 * {@code path} 是 {@code xhsms} 的子字段也不行(实测已确认:嵌套绑定恒为 null)。
 * </pre>
 * 所以本类刻意保持扁平,字段名 = yml key:
 * <ul>
 *   <li>{@code xhsmsPath} / {@code xhsmsAccount} / {@code xhsmsPwd} / {@code xhsmsjrm}</li>
 *   <li>{@code sms_accountName} / {@code sms_password} / {@code sms_url} / {@code sms_sourceAddr}
 *       / {@code sms_serviceCode} / {@code sms_appkey} / {@code sms_flag}</li>
 *   <li>{@code accessKeyId} / {@code accessKeySecret} / {@code signName}</li>
 * </ul>
 * 需要分组语义时由 {@link MessageProperties} 负责转换,业务代码不直接依赖字段布局。
 * <p>
 * 各站点 yml 一律不需要改动。
 */
@Component
@ConfigurationProperties
public class RootMessageProperties {
 
    // ------------------------------------------------------------------ 新华短信网关
    /** 对应 {@code xhsmsPath} */
    private String xhsmsPath;
 
    /** 对应 {@code xhsmsAccount} */
    private String xhsmsAccount;
 
    /** 对应 {@code xhsmsPwd} */
    private String xhsmsPwd;
 
    /** 对应 {@code xhsmsjrm}(虚拟接入码) */
    private String xhsmsjrm;
 
    // ------------------------------------------------------------------ 南华附一 MT
    /** 对应 {@code sms_accountName} */
    private String smsAccountName;
 
    /** 对应 {@code sms_password} */
    private String smsPassword;
 
    /** 对应 {@code sms_url} */
    private String smsUrl;
 
    /** 对应 {@code sms_sourceAddr} */
    private String smsSourceAddr;
 
    /** 对应 {@code sms_serviceCode} */
    private String smsServiceCode;
 
    /** 对应 {@code sms_appkey} */
    private String smsAppkey;
 
    /** 对应 {@code sms_flag}(短信签名前缀) */
    private String smsFlag;
 
    // ------------------------------------------------------------------ 阿里云短信
    /** 对应 {@code accessKeyId} */
    private String accessKeyId;
 
    /** 对应 {@code accessKeySecret} */
    private String accessKeySecret;
 
    /** 对应 {@code signName} */
    private String signName;
 
    public String getXhsmsPath() {
        return xhsmsPath;
    }
 
    public void setXhsmsPath(String xhsmsPath) {
        this.xhsmsPath = xhsmsPath;
    }
 
    public String getXhsmsAccount() {
        return xhsmsAccount;
    }
 
    public void setXhsmsAccount(String xhsmsAccount) {
        this.xhsmsAccount = xhsmsAccount;
    }
 
    public String getXhsmsPwd() {
        return xhsmsPwd;
    }
 
    public void setXhsmsPwd(String xhsmsPwd) {
        this.xhsmsPwd = xhsmsPwd;
    }
 
    public String getXhsmsjrm() {
        return xhsmsjrm;
    }
 
    public void setXhsmsjrm(String xhsmsjrm) {
        this.xhsmsjrm = xhsmsjrm;
    }
 
    public String getSmsAccountName() {
        return smsAccountName;
    }
 
    public void setSmsAccountName(String smsAccountName) {
        this.smsAccountName = smsAccountName;
    }
 
    public String getSmsPassword() {
        return smsPassword;
    }
 
    public void setSmsPassword(String smsPassword) {
        this.smsPassword = smsPassword;
    }
 
    public String getSmsUrl() {
        return smsUrl;
    }
 
    public void setSmsUrl(String smsUrl) {
        this.smsUrl = smsUrl;
    }
 
    public String getSmsSourceAddr() {
        return smsSourceAddr;
    }
 
    public void setSmsSourceAddr(String smsSourceAddr) {
        this.smsSourceAddr = smsSourceAddr;
    }
 
    public String getSmsServiceCode() {
        return smsServiceCode;
    }
 
    public void setSmsServiceCode(String smsServiceCode) {
        this.smsServiceCode = smsServiceCode;
    }
 
    public String getSmsAppkey() {
        return smsAppkey;
    }
 
    public void setSmsAppkey(String smsAppkey) {
        this.smsAppkey = smsAppkey;
    }
 
    public String getSmsFlag() {
        return smsFlag;
    }
 
    public void setSmsFlag(String smsFlag) {
        this.smsFlag = smsFlag;
    }
 
    public String getAccessKeyId() {
        return accessKeyId;
    }
 
    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }
 
    public String getAccessKeySecret() {
        return accessKeySecret;
    }
 
    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }
 
    public String getSignName() {
        return signName;
    }
 
    public void setSignName(String signName) {
        this.signName = signName;
    }
}