Parcourir la source

添加短信

dev
yeqd il y a 4 ans
Parent
révision
c585a0787f
7 fichiers modifiés avec 137 ajouts et 10 suppressions
  1. +5
    -1
      user-service/pom.xml
  2. +14
    -0
      user-service/src/main/java/com/hp/user/service/constants/UserConstants.java
  3. +2
    -0
      user-service/src/main/java/com/hp/user/service/controller/MessageController.java
  4. +37
    -2
      user-service/src/main/java/com/hp/user/service/impl/MessageServiceImpl.java
  5. +0
    -6
      user-service/src/main/java/com/hp/user/service/redis/RedisOperation.java
  6. +1
    -1
      user-service/src/main/java/com/hp/user/service/util/IdWorker.java
  7. +78
    -0
      user-service/src/main/java/com/hp/user/service/util/SendSmsUtil.java

+ 5
- 1
user-service/pom.xml Voir le fichier

@@ -163,7 +163,11 @@
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>

<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>


</dependencies>


+ 14
- 0
user-service/src/main/java/com/hp/user/service/constants/UserConstants.java Voir le fichier

@@ -0,0 +1,14 @@
package com.hp.user.service.constants;

public class UserConstants {
/**
* 验证码redis前缀
*/
public static String VERIFICATION_CODE = "verificationCode@";
/**
* rediskey失效时间
*/
public static int EXPIRE_SECONDS = 900;

}

+ 2
- 0
user-service/src/main/java/com/hp/user/service/controller/MessageController.java Voir le fichier

@@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.hp.user.client.service.MessageService;
import com.hp.user.service.util.SendSmsUtil;

import io.swagger.annotations.Api;

@@ -21,6 +22,7 @@ public class MessageController {
@Autowired
private MessageService messageService;
/**
* 发送验证码
* @param phoneNumber


+ 37
- 2
user-service/src/main/java/com/hp/user/service/impl/MessageServiceImpl.java Voir le fichier

@@ -1,8 +1,17 @@
package com.hp.user.service.impl;

import java.util.Map;
import java.util.Random;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hp.user.client.service.MessageService;
import com.hp.user.service.constants.UserConstants;
import com.hp.user.service.redis.RedisOperation;
import com.hp.user.service.util.SendSmsUtil;

import redis.clients.jedis.Jedis;

/**
* 信息服务实现类
@@ -12,11 +21,37 @@ import com.hp.user.client.service.MessageService;
*/
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
private SendSmsUtil sendSmsUtil;
@Autowired
private RedisOperation redisOperation;

@Override
public void sendVerificationCode(String phone) {
// TODO Auto-generated method stub
try {
Random rd = new Random();
StringBuilder code = new StringBuilder();
for(int i=0;i<6;i++) {
code.append(rd.nextInt(10));
}
String codeStr = code.toString();
Map map = sendSmsUtil.sendVerificationCode(phone, codeStr);
if("OK".equals(map.get("Code"))) {
//调用阿里云接口成功
//调用成功后需要将code缓存到redis中
Jedis jedis = redisOperation.getRedis();
jedis.setex(UserConstants.VERIFICATION_CODE+phone, UserConstants.EXPIRE_SECONDS, codeStr);
jedis.close();
}else {
//调用失败阿里云接口成功
}
}catch(Exception e) {
}
}

@Override


+ 0
- 6
user-service/src/main/java/com/hp/user/service/redis/RedisOperation.java Voir le fichier

@@ -1,11 +1,5 @@
package com.hp.user.service.redis;

import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;


user-service/src/main/java/com/hp/user/util/IdWorker.java → user-service/src/main/java/com/hp/user/service/util/IdWorker.java Voir le fichier

@@ -1,4 +1,4 @@
package com.hp.user.util;
package com.hp.user.service.util;

/**
* Id生成器

+ 78
- 0
user-service/src/main/java/com/hp/user/service/util/SendSmsUtil.java Voir le fichier

@@ -0,0 +1,78 @@
package com.hp.user.service.util;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

@Component
public class SendSmsUtil implements ApplicationRunner{
@Value("${aliyun.regionId}")
private String regionId;
@Value("${aliyun.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.secret}")
private String secret;
@Value("${aliyun.signName}")
private String signName;
@Value("${aliyun.templateCode}")
private String templateCode;
private DefaultProfile profile = null;

@Override
public void run(ApplicationArguments args) throws Exception {
if(profile == null) {
profile = DefaultProfile.getProfile(regionId, accessKeyId, secret);
}
}
/**
* 验证码发送
* @param phoneNumbers 手机号码
* @param code 6位随机验证码
* @return
* @throws ServerException
* @throws ClientException
*/
public Map sendVerificationCode(String phoneNumbers,String code) throws ServerException, ClientException {
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
// 接收短信的手机号码
request.putQueryParameter("PhoneNumbers", phoneNumbers);
// 短信签名名称。请在控制台签名管理页面签名名称一列查看(必须是已添加、并通过审核的短信签名)。
request.putQueryParameter("SignName", signName);
// 短信模板ID
request.putQueryParameter("TemplateCode", templateCode);
// 短信模板变量对应的实际值,JSON格式。
JSONObject codeJson = new JSONObject();
codeJson.put("code", code);
request.putQueryParameter("TemplateParam", codeJson.toJSONString());
CommonResponse commonResponse = client.getCommonResponse(request);
String data = commonResponse.getData();
String sData = data.replaceAll("'\'", "");
// log_print("sendSms", sData);
Gson gson = new Gson();
Map map = gson.fromJson(sData, Map.class);
return map;
}

}

Chargement…
Annuler
Enregistrer