订单消息

This commit is contained in:
sxu 2025-01-02 15:56:27 +08:00
parent 3ed2059cde
commit a9df4f47cf
3 changed files with 104 additions and 1 deletions

View File

@ -76,4 +76,6 @@ public class MaterialConstants {
public static final String MESSAGE_TO = "TO:"; public static final String MESSAGE_TO = "TO:";
public static final Long CACHE_MATERIAL_MALL_MESSAGE_HOURS = 24L; public static final Long CACHE_MATERIAL_MALL_MESSAGE_HOURS = 24L;
public static final String DICT_TYPE_ORDER_STATUS = "order_status";
} }

View File

@ -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<String, String> getDictValue(String dictType) {
if (StringUtils.isBlank(dictType)) {
return Collections.emptyMap();
}
try {
Map<String, String> dictMap = new LinkedHashMap<>();
AjaxResult ajaxResult = remoteDictDataService.dictType(dictType, SecurityConstants.INNER);
if (ajaxResult.isSuccess()) {
// 假设 ajaxResult.get("data") 返回的是 List<LinkedHashMap>
List<LinkedHashMap> rawData = (List<LinkedHashMap>) ajaxResult.get("data");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// rawData 转换为 SysDictData 列表
List<SysDictData> 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<Long, String> getUserName(Long[] userIds) {
if (userIds == null || userIds.length == 0) {
return Collections.emptyMap();
}
try {
AjaxResult ajaxResult = remoteUserService.getUsers(userIds, SecurityConstants.INNER);
// 假设 ajaxResult.get("data") 返回的是 List<LinkedHashMap>
List<LinkedHashMap> rawData = (List<LinkedHashMap>) ajaxResult.get("data");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
List<SysUser> dataList = rawData.stream()
.map(rawDatum -> objectMapper.convertValue(rawDatum, SysUser.class))
.collect(Collectors.toList());
// 创建一个以 createBy 为键nickName 为值的映射
Map<Long, String> nickNameMap = dataList.stream()
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
return nickNameMap;
} catch (Exception e) {
log.error("远程调用查询用户名失败:", e.getMessage());
}
return Collections.emptyMap();
}
}

View File

@ -15,6 +15,7 @@ import com.bonus.common.redis.service.RedisService;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.basic.domain.BmMessage; import com.bonus.material.basic.domain.BmMessage;
import com.bonus.material.basic.mapper.BmMessageMapper; 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.comprehensive.entity.RentDetailDto;
import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.domain.vo.DevInfoVo;
import com.bonus.material.device.mapper.DevInfoMapper; import com.bonus.material.device.mapper.DevInfoMapper;
@ -61,6 +62,9 @@ public class OrderServiceImpl implements OrderService {
@Resource @Resource
private LeaseRepairRecordMapper leaseRepairRecordMapper; private LeaseRepairRecordMapper leaseRepairRecordMapper;
@Resource
private RemoteConfig remoteConfig;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override @Override
@ -284,7 +288,8 @@ public class OrderServiceImpl implements OrderService {
for (OrderDetailDto dto : dtos) { for (OrderDetailDto dto : dtos) {
BmMessage bmMessage = new BmMessage(); BmMessage bmMessage = new BmMessage();
bmMessage.setCreateTime(DateUtils.getNowDate()); bmMessage.setCreateTime(DateUtils.getNowDate());
bmMessage.setMessageContent("您好,您的订单状态已变更为" + dto.getOrderStatus() + ",请及时查看"); Map<String, String> maMachineMap = remoteConfig.getDictValue(MaterialConstants.DICT_TYPE_ORDER_STATUS);
bmMessage.setMessageContent("您好,您的订单状态已变更为" + maMachineMap.get(dto.getOrderStatus()) + ",请及时查看");
bmMessage.setMessageType(String.valueOf(MessageTypeEnum.ORDER_MESSAGE.getType())); bmMessage.setMessageType(String.valueOf(MessageTypeEnum.ORDER_MESSAGE.getType()));
bmMessage.setUuid(String.valueOf(UUID.randomUUID())); bmMessage.setUuid(String.valueOf(UUID.randomUUID()));
bmMessage.setFromCompany(0L); bmMessage.setFromCompany(0L);