Преглед изворни кода

读取配置 济南 短信和看课链接拆分

yuhongqi пре 2 недеља
родитељ
комит
df675a1aef

+ 52 - 2
fs-service/src/main/java/com/fs/common/service/impl/SmsServiceImpl.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.redis.RedisCache;
 
 import com.fs.common.service.ISmsService;
@@ -51,6 +52,7 @@ import com.fs.sop.mapper.QwSopLogsMapper;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.fs.system.service.ISysConfigService;
+import com.fs.system.service.ISysDictTypeService;
 import com.fs.utils.ShortCodeGeneratorUtils;
 import com.google.gson.Gson;
 import lombok.Synchronized;
@@ -132,6 +134,16 @@ public class SmsServiceImpl implements ISmsService
     @Autowired
     private ISysConfigService configService;
 
+    @Autowired
+    private ISysDictTypeService sysDictTypeService;
+
+    private static final String SMS_SEND_URL_CONFIG = "sms_send_url_config";
+    private static final long DICT_SORT_SMS_SEND_URL_ENABLED = 1L;
+    private static final long DICT_SORT_SMS_SEND_URL_URL = 2L;
+    private static final long DICT_SORT_SMS_SEND_URL_ACCOUNT = 3L;
+    private static final long DICT_SORT_SMS_SEND_URL_PASSWORD = 4L;
+    private static final long DICT_SORT_SMS_SEND_URL_CODE = 5L;
+
     private static final String  LINK_SUFFIX = "?customer_channel=up:";
 
     @Override
@@ -727,8 +739,11 @@ public class SmsServiceImpl implements ISmsService
         FsSmsConfig sms = JSON.parseObject(sysConfig.getConfigValue(), FsSmsConfig.class);
         if (sms.getType().equals("rf")) {
             try {
-//                content = content.replace("${sms.sign}",sms.getRfSign2());
-                urls = sms.getRfUrl2() + "sms?action=send&account=" + sms.getRfAccount2() + "&password=" + sms.getRfPassword2() + "&mobile=" + phone + "&content=" + URLEncoder.encode(content, "UTF-8") + "&extno=" + sms.getRfCode2() + "&rt=json";
+                String rfUrl = resolveRfSendUrlParam(DICT_SORT_SMS_SEND_URL_URL, sms.getRfUrl2());
+                String rfAccount = resolveRfSendUrlParam(DICT_SORT_SMS_SEND_URL_ACCOUNT, sms.getRfAccount2());
+                String rfPassword = resolveRfSendUrlParam(DICT_SORT_SMS_SEND_URL_PASSWORD, sms.getRfPassword2());
+                String rfCode = resolveRfSendUrlParam(DICT_SORT_SMS_SEND_URL_CODE, sms.getRfCode2());
+                urls = rfUrl + "sms?action=send&account=" + rfAccount + "&password=" + rfPassword + "&mobile=" + phone + "&content=" + URLEncoder.encode(content, "UTF-8") + "&extno=" + rfCode + "&rt=json";
             } catch (UnsupportedEncodingException e) {
                 log.error("{}发送失败", phone, e);
                 return R.error("短信发送失败:" + e.getMessage());
@@ -818,6 +833,41 @@ public class SmsServiceImpl implements ISmsService
         return R.ok();
     }
 
+    private boolean isSmsSendUrlConfigEnabled() {
+        List<SysDictData> dictList = sysDictTypeService.selectDictDataByType(SMS_SEND_URL_CONFIG);
+        if (dictList == null || dictList.isEmpty()) {
+            return false;
+        }
+        return dictList.stream()
+                .filter(item -> "0".equals(item.getStatus()))
+                .filter(item -> item.getDictSort() != null && DICT_SORT_SMS_SEND_URL_ENABLED == item.getDictSort())
+                .anyMatch(item -> "1".equals(StringUtils.trimToEmpty(item.getDictValue())));
+    }
+
+    private String getSmsSendUrlDictValue(long dictSort) {
+        List<SysDictData> dictList = sysDictTypeService.selectDictDataByType(SMS_SEND_URL_CONFIG);
+        if (dictList == null || dictList.isEmpty()) {
+            return null;
+        }
+        for (SysDictData item : dictList) {
+            if (!"0".equals(item.getStatus())) {
+                continue;
+            }
+            if (item.getDictSort() != null && dictSort == item.getDictSort()) {
+                return StringUtils.trimToEmpty(item.getDictValue());
+            }
+        }
+        return null;
+    }
+
+    private String resolveRfSendUrlParam(long dictSort, String defaultValue) {
+        if (!isSmsSendUrlConfigEnabled()) {
+            return defaultValue;
+        }
+        String configValue = getSmsSendUrlDictValue(dictSort);
+        return StringUtils.isNotBlank(configValue) ? configValue : defaultValue;
+    }
+
     /**
      * 发送简单短信
      * @param phone 接收方手机号

+ 21 - 0
fs-service/src/main/resources/db/changelog/dictData/dict_data_update.sql

@@ -74,3 +74,24 @@ VALUES
 --rollback DELETE FROM sys_dict_data WHERE dict_type = 'store_mall_func';
 --rollback DELETE FROM sys_dict_type WHERE dict_type = 'store_mall_func';
 
+--changeset yhq:20260707-sms-send-url-config-dict
+--preconditions onFail:MARK_RAN
+--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sys_dict_type WHERE dict_type = 'sms_send_url_config'
+--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'sms_send_url_config'
+INSERT INTO `sys_dict_type`
+(`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    ('短信发送URL配置', 'sms_send_url_config', '0', 'admin', NOW(), '', NULL, 'sendUrl方法短信发送参数配置,第1项值为1时使用字典中的url/account/password/extno覆盖his.sms配置');
+
+INSERT INTO `sys_dict_data`
+(`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES
+    (1, '是否启用sendUrl独立配置', '0', 'sms_send_url_config', '', 'info', 'Y', '0', 'admin', NOW(), '', NULL, '值为1时使用字典配置的url/account/password/extno,默认0使用his.sms配置,sort就是id不能变'),
+    (2, 'sendUrl请求地址', '', 'sms_send_url_config', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '对应rfUrl2,为空则使用his.sms配置,sort就是id不能变'),
+    (3, 'sendUrl账号account', '', 'sms_send_url_config', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '对应rfAccount2,为空则使用his.sms配置,sort就是id不能变'),
+    (4, 'sendUrl密码password', '', 'sms_send_url_config', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '对应rfPassword2,为空则使用his.sms配置,sort就是id不能变'),
+    (5, 'sendUrl扩展码extno', '', 'sms_send_url_config', '', 'default', 'N', '0', 'admin', NOW(), '', NULL, '对应rfCode2,为空则使用his.sms配置,sort就是id不能变');
+--rollback DELETE FROM sys_dict_data WHERE dict_type = 'sms_send_url_config';
+--rollback DELETE FROM sys_dict_type WHERE dict_type = 'sms_send_url_config';
+
+