diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java index 9a7f34f..7b36ce8 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java @@ -76,4 +76,6 @@ public class MaterialConstants { public static final String MESSAGE_TO = "TO:"; public static final Long CACHE_MATERIAL_MALL_MESSAGE_HOURS = 24L; + public static final String DICT_TYPE_ORDER_STATUS = "order_status"; + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/config/RemoteConfig.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/config/RemoteConfig.java new file mode 100644 index 0000000..5367269 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/config/RemoteConfig.java @@ -0,0 +1,96 @@ +package com.bonus.material.common.config; + +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.utils.StringUtils; +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.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author ma_sh + * @create 2024/10/23 19:06 + */ +@Component +@Slf4j +public class RemoteConfig { + + @Resource + private RemoteDictDataService remoteDictDataService; + + @Resource + private RemoteUserService remoteUserService; + + /** + * 获取字典值 + * @param dictType + * @return + */ + public Map getDictValue(String dictType) { + if (StringUtils.isBlank(dictType)) { + return Collections.emptyMap(); + } + 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; + } catch (Exception e) { + log.error("远程调用查询字典键值失败:", e.getMessage()); + } + return Collections.emptyMap(); + } + + /** + * 获取用户名 + * @param userIds + * @return + */ + public Map getUserName(Long[] userIds) { + if (userIds == null || userIds.length == 0) { + return Collections.emptyMap(); + } + try { + AjaxResult ajaxResult = remoteUserService.getUsers(userIds, SecurityConstants.INNER); + // 假设 ajaxResult.get("data") 返回的是 List + List rawData = (List) ajaxResult.get("data"); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + List dataList = rawData.stream() + .map(rawDatum -> objectMapper.convertValue(rawDatum, SysUser.class)) + .collect(Collectors.toList()); + // 创建一个以 createBy 为键,nickName 为值的映射 + Map nickNameMap = dataList.stream() + .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName)); + return nickNameMap; + } catch (Exception e) { + log.error("远程调用查询用户名失败:", e.getMessage()); + } + return Collections.emptyMap(); + } +} + diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index e0b5bca..6e576d2 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -15,6 +15,7 @@ import com.bonus.common.redis.service.RedisService; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.basic.domain.BmMessage; import com.bonus.material.basic.mapper.BmMessageMapper; +import com.bonus.material.common.config.RemoteConfig; import com.bonus.material.comprehensive.entity.RentDetailDto; import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.mapper.DevInfoMapper; @@ -61,6 +62,9 @@ public class OrderServiceImpl implements OrderService { @Resource private LeaseRepairRecordMapper leaseRepairRecordMapper; + @Resource + private RemoteConfig remoteConfig; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override @@ -284,7 +288,8 @@ public class OrderServiceImpl implements OrderService { for (OrderDetailDto dto : dtos) { BmMessage bmMessage = new BmMessage(); bmMessage.setCreateTime(DateUtils.getNowDate()); - bmMessage.setMessageContent("您好,您的订单状态已变更为" + dto.getOrderStatus() + ",请及时查看"); + Map maMachineMap = remoteConfig.getDictValue(MaterialConstants.DICT_TYPE_ORDER_STATUS); + bmMessage.setMessageContent("您好,您的订单状态已变更为" + maMachineMap.get(dto.getOrderStatus()) + ",请及时查看"); bmMessage.setMessageType(String.valueOf(MessageTypeEnum.ORDER_MESSAGE.getType())); bmMessage.setUuid(String.valueOf(UUID.randomUUID())); bmMessage.setFromCompany(0L);