Kaynağa Gözat

处理没有账号时,发送短信没有验证码

yuanliang 1 yıl önce
ebeveyn
işleme
0c9088e53e

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SmsCodeServiceImpl.java

@@ -42,7 +42,7 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 	@Override
 	public boolean sendValidCode(String mobile,String jpushType) {
 		SysUser sysUser = sysUserFeignService.queryUserByMobile(mobile);
-		Integer userId = null;
+		Integer userId = -1;
 		if (sysUser != null) {
 			if(sysUser.getLockFlag() == 9 || sysUser.getLockFlag() == 1 || sysUser.getDelFlag() == YesOrNoEnum.YES) {
 				throw new BizException("账号已冻结,请联系管理员");

+ 11 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -54,6 +54,8 @@ import java.io.IOException;
 import java.net.URL;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
 
@@ -446,18 +448,22 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if(StringUtils.isEmpty(jpushType)){
 			jpushType = "STUDENT";
 		}
-		List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(new ArrayList<>(receivers.keySet()));
+		// 处理注册验证码,没有用户ID的情况导致没有发送短息
 		List<CbsMessageWrapper.MessageParam> messageParams = new ArrayList<>();
-		for (SimpleUserDto user : userDtoList) {
+		List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(new ArrayList<>(receivers.keySet()));
+		Map<Integer, SimpleUserDto> userMap = userDtoList.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, Function.identity()));
+		for (Map.Entry<Integer, String> receive : receivers.entrySet()) {
+			Long userId = Long.valueOf(Optional.ofNullable(receive.getKey()).orElse(-1));
+			SimpleUserDto user = userMap.getOrDefault(userId.intValue(), new SimpleUserDto());
 			CbsMessageWrapper.MessageParam messageParam = new CbsMessageWrapper.MessageParam();
-			messageParam.setUserId(user.getUserId().longValue());
+			messageParam.setUserId(userId);
 			messageParam.setAppKey(EAppKey.GYM);
 			messageParam.setClientType(getClientType(jpushType));
-			messageParam.setClientId(messageParam.getClientType());
+			messageParam.setClientId(getClientType(jpushType));
 			messageParam.setType(type.getCode());
 			messageParam.setUrl(url);
 			Map<Long, String> params = new HashMap<>();
-			params.put(user.getUserId().longValue(), user.getPhone());
+			params.put(userId, Optional.ofNullable(user.getPhone()).orElse(receive.getValue()));
 			messageParam.setReceivers(params);
 			messageParam.setRealSend(!debugMode);
 			if(args != null && args.length > 0){