diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java new file mode 100644 index 00000000..acb4ae9a --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java @@ -0,0 +1,91 @@ +package com.bonus.material.purchase.config; + +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.system.api.RemoteDictDataService; +import com.bonus.system.api.RemoteUserService; +import com.bonus.system.api.domain.SysDictData; +import com.bonus.system.api.domain.SysUser; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 远程调用查询键值配置类 + * @Author ma_sh + * @create 2024/10/23 16:51 + */ +@Component +@Slf4j +public class RemoteConfig { + + @Resource + private RemoteDictDataService remoteDictDataService; + + @Resource + private RemoteUserService remoteUserService; + + /** + * 获取字典值 + * @param dictType + * @param dictLabel + * @return + */ + public String getDictValue(String dictType, String dictLabel) { + try { + Map dictMap = new LinkedHashMap<>(); + AjaxResult ajaxResult = remoteDictDataService.dictType(dictType, SecurityConstants.INNER); + if (ajaxResult.isSuccess()) { + // 假设 ajaxResult.get("data") 返回的是 List + List rawData = (List) ajaxResult.get("data"); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + // 将 rawData 转换为 SysDictData 列表 + List dataList = rawData.stream() + .map(rawDatum -> objectMapper.convertValue(rawDatum, SysDictData.class)) + .collect(Collectors.toList()); + // 使用 Map 存储字典数据以提高查找速度 + dictMap = dataList.stream() + .collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel)); + } + return dictMap.get(dictLabel); + } catch (Exception e) { + log.error("远程调用查询字典键值失败:", e.getMessage()); + } + return null; + } + + /** + * 获取用户名 + * @param userId + * @return + */ + public String getUserName(String userId) { + try { + String userName = ""; + AjaxResult ajaxResult = remoteUserService.getInfo(Long.parseLong(userId), SecurityConstants.INNER); + if (ajaxResult.isSuccess()) { + // ajaxResult.get("data") 返回的是 LinkedHashMap + LinkedHashMap rawDataList = (LinkedHashMap) ajaxResult.get("data"); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + if (rawDataList != null) { + SysUser sysUser = objectMapper.convertValue(rawDataList, SysUser.class); + userName = sysUser.getNickName(); + } + } + return userName; + } catch (IllegalArgumentException e) { + log.error("远程调用查询用户名失败:", e.getMessage()); + } + return null; + } +} +