package com.smartor.message;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.message.sms.provider.ls.LishuiMessageConfig;
import com.ruoyi.message.sms.provider.ls.LishuiMessageConfigProvider;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import com.smartor.common.LSHospTokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 丽水短信机构级配置实现。
*
* 统一了原先三套并存的查询方式:
*
* - {@code RyTask.ls 分支}:按机构查 {@code ls.msg.info};
* - {@code ServiceSubtaskServiceImpl.smsSubTask}:用 {@code MsgLSEnum}(已废弃);
* - {@code SmsRecordsServiceImpl.sendSMS}:又是第三套(本轮已改为委托发送方)。
*
* 现在唯一入口就是本类:读 {@code sys_config} 表的 {@code ls.msg.info}(按机构),
* token 走 {@code LSHospTokenUtil}。
*/
@Slf4j
@Component
public class LishuiMessageConfigProviderImpl implements LishuiMessageConfigProvider {
/**
* 丽水机构级配置的配置项 key(与原实现一致)
*/
private static final String CONFIG_KEY = "ls.msg.info";
private final ISysConfigService configService;
public LishuiMessageConfigProviderImpl(ISysConfigService configService) {
this.configService = configService;
}
@Override
public LishuiMessageConfig getConfig(String orgid) {
if (StringUtils.isEmpty(orgid)) {
return null;
}
SysConfig query = new SysConfig();
query.setConfigKey(CONFIG_KEY);
query.setOrgid(orgid);
List sysConfigs = configService.selectConfigList(query);
if (CollectionUtils.isEmpty(sysConfigs)) {
log.warn("【LishuiMessageConfigProviderImpl】机构 {} 未配置 {}", orgid, CONFIG_KEY);
return null;
}
String configValue = sysConfigs.get(0).getConfigValue();
Map msgInfo = new HashMap<>();
if (StringUtils.isNotEmpty(configValue)) {
try {
msgInfo = new ObjectMapper().readValue(configValue, Map.class);
} catch (Exception e) {
log.error("【LishuiMessageConfigProviderImpl】解析 {} 失败,orgid:{},value:{},err:{}",
CONFIG_KEY, orgid, configValue, e.getMessage(), e);
return null;
}
}
log.info("-----------丽水短信配置 map 的值为:{}", msgInfo);
LishuiMessageConfig config = new LishuiMessageConfig();
config.setOrgid(orgid);
config.setAddress(msgInfo.get("address"));
config.setZuHuId(msgInfo.get("ZuHuID"));
config.setZuHuMc(msgInfo.get("ZuHuMC"));
config.setSendPersonId(msgInfo.get("sendPersonId"));
config.setSendPersonName(msgInfo.get("sendPersonName"));
config.setTokenUrl(msgInfo.get("tokenUrl"));
return config;
}
@Override
public String getToken(String orgid, String tokenUrl) {
return LSHospTokenUtil.getToken(orgid, tokenUrl);
}
}