浏览代码

阿里云短信验证码

gaodm 6 年之前
父节点
当前提交
f27e9ccb77
共有 25 个文件被更改,包括 390 次插入73 次删除
  1. 48 0
      common/src/main/java/com/diagbot/enums/VisibleIdTypeEnum.java
  2. 3 2
      config-server/src/main/resources/shared/user-service-dev.yml
  3. 3 2
      config-server/src/main/resources/shared/user-service-local.yml
  4. 11 4
      user-service/pom.xml
  5. 0 28
      user-service/src/main/java/com/diagbot/config/AlidayuConfigurer.java
  6. 5 4
      user-service/src/main/java/com/diagbot/config/AlidayuConfig.java
  7. 45 0
      user-service/src/main/java/com/diagbot/config/AliyunConfigurer.java
  8. 13 0
      user-service/src/main/java/com/diagbot/config/RedisConfigurer.java
  9. 17 0
      user-service/src/main/java/com/diagbot/dto/ImgVerCreatDTO.java
  10. 1 1
      user-service/src/main/java/com/diagbot/entity/SwsVerInfo.java
  11. 11 4
      user-service/src/main/java/com/diagbot/facade/VerFacade.java
  12. 36 0
      user-service/src/main/java/com/diagbot/idc/AbstractIdCreater.java
  13. 24 0
      user-service/src/main/java/com/diagbot/idc/IdCreater.java
  14. 62 0
      user-service/src/main/java/com/diagbot/idc/InvisibleIdCreater.java
  15. 71 0
      user-service/src/main/java/com/diagbot/idc/VisibleIdCreater.java
  16. 2 2
      user-service/src/main/java/com/diagbot/service/SmsVerService.java
  17. 1 1
      user-service/src/main/java/com/diagbot/service/impl/ImgVerServiceImpl.java
  18. 29 16
      user-service/src/main/java/com/diagbot/service/impl/SmsVerServiceImpl.java
  19. 1 1
      user-service/src/main/java/com/diagbot/util/VerifyCodeUtils.java
  20. 3 5
      user-service/src/main/java/com/diagbot/web/VerController.java
  21. 二进制
      user-service/src/main/libs/aliyun-java-sdk-core-3.3.1.jar
  22. 二进制
      user-service/src/main/libs/aliyun-java-sdk-dysmsapi-1.0.0.jar
  23. 二进制
      user-service/src/main/libs/taobao-sdk-java-auto_1455552377940-20170303.jar
  24. 0 3
      user-service/src/main/resources/alidayu.properties
  25. 4 0
      user-service/src/main/resources/aliyun.properties

+ 48 - 0
common/src/main/java/com/diagbot/enums/VisibleIdTypeEnum.java

@@ -0,0 +1,48 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description: 可见ID分类
+ * @author: gaodm
+ * @time: 2018/9/5 10:30
+ */
+public enum VisibleIdTypeEnum implements KeyedNamed {
+    IS_IMG_VER(1, "图片验证码");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    VisibleIdTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static VisibleIdTypeEnum getEnum(int key) {
+        for (VisibleIdTypeEnum item : VisibleIdTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        VisibleIdTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 3 - 2
config-server/src/main/resources/shared/user-service-dev.yml

@@ -79,8 +79,9 @@ spring:
   redis:
     database:
       cache: 0 # Redis缓存索引
-      sms: 1 # Redis短信索引
-      img: 2 # Redis图片验证码索引
+      idc: 1 # 不可见ID索引
+      sms: 2 # Redis短信索引
+      img: 3 # Redis图片验证码索引
     host: 192.168.2.236  #Redis服务器地址
     port: 6379 # Redis服务器连接端口
     password: lantone # Redis服务器连接密码(默认为空)

+ 3 - 2
config-server/src/main/resources/shared/user-service-local.yml

@@ -79,8 +79,9 @@ spring:
   redis:
     database:
       cache: 0 # Redis缓存索引
-      sms: 1 # Redis短信索引
-      img: 2 # Redis图片验证码索引
+      idc: 1 # 不可见ID索引
+      sms: 2 # Redis短信索引
+      img: 3 # Redis图片验证码索引
     host: 127.0.0.1  #Redis服务器地址
     port: 6379 # Redis服务器连接端口
     password: # Redis服务器连接密码(默认为空)

+ 11 - 4
user-service/pom.xml

@@ -191,11 +191,18 @@
         </dependency>
 
         <dependency>
-            <groupId>com.taobao</groupId>
-            <artifactId>taobao-sdk</artifactId>
-            <version>1.0</version>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>3.3.1</version>
             <scope>system</scope>
-            <systemPath>${basedir}/src/main/libs/taobao-sdk-java-auto_1455552377940-20170303.jar</systemPath>
+            <systemPath>${basedir}/src/main/libs/aliyun-java-sdk-core-3.3.1.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>1.1.0</version>
+            <scope>system</scope>
+            <systemPath>${basedir}/src/main/libs/aliyun-java-sdk-dysmsapi-1.0.0.jar</systemPath>
         </dependency>
 
     </dependencies>

+ 0 - 28
user-service/src/main/java/com/diagbot/config/AlidayuConfigurer.java

@@ -1,28 +0,0 @@
-package com.diagbot.config;
-
-import com.taobao.api.DefaultTaobaoClient;
-import com.taobao.api.TaobaoClient;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-
-/**
- * @Description: 阿里大鱼配置项
- * @author: gaodm
- * @time: 2018/9/4 19:24
- */
-@Configuration
-@PropertySource("classpath:alidayu.properties")
-public class AlidayuConfigurer {
-    @Bean
-    @ConfigurationProperties(prefix = "alidayu")
-    public AlidayuConfig alidayuConfig() {
-        return new AlidayuConfig();
-    }
-
-    @Bean
-    public TaobaoClient taobaoClient(AlidayuConfig alidayuConfig) {
-        return new DefaultTaobaoClient(alidayuConfig.getServerUrl(), alidayuConfig.getAppKey(), alidayuConfig.getAppSecret());
-    }
-}

+ 5 - 4
user-service/src/main/java/com/diagbot/config/AlidayuConfig.java

@@ -10,8 +10,9 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class AlidayuConfig {
-    private String serverUrl;
-    private String appKey;
-    private String appSecret;
+public class AliyunConfig {
+    private String product;
+    private String domain;
+    private String accessKeyId;
+    private String accessKeySecret;
 }

+ 45 - 0
user-service/src/main/java/com/diagbot/config/AliyunConfigurer.java

@@ -0,0 +1,45 @@
+package com.diagbot.config;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+import com.diagbot.exception.CommonException;
+import com.diagbot.exception.ErrorCode;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
+
+/**
+ * @Description: 阿里大鱼配置项
+ * @author: gaodm
+ * @time: 2018/9/4 19:24
+ */
+@Configuration
+@PropertySource("classpath:aliyun.properties")
+public class AliyunConfigurer {
+    @Bean
+    @ConfigurationProperties(prefix = "alidayu")
+    public AliyunConfig alidayuConfig() {
+        return new AliyunConfig();
+    }
+
+    @Bean
+    public IAcsClient iAcsClient(AliyunConfig aliyunConfig) throws ClientException {
+        //可自助调整超时时间
+        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+
+        //初始化acsClient,暂不支持region化
+        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getAccessKeyId(), aliyunConfig.getAccessKeySecret());
+        try {
+            DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", aliyunConfig.getProduct(), aliyunConfig.getDomain());
+        } catch (ClientException e){
+            e.printStackTrace();
+            throw new CommonException(ErrorCode.SMS_SEND_ERROR);
+        }
+        return new DefaultAcsClient(profile);
+    }
+}

+ 13 - 0
user-service/src/main/java/com/diagbot/config/RedisConfigurer.java

@@ -28,6 +28,8 @@ public class RedisConfigurer extends CachingConfigurerSupport {
 
     @Value("${spring.redis.database.cache}")
     private String databaseCache;
+    @Value("${spring.redis.database.idc}")
+    private String databaseIdc;
     @Value("${spring.redis.database.sms}")
     private String databaseSms;
     @Value("${spring.redis.database.img}")
@@ -136,6 +138,17 @@ public class RedisConfigurer extends CachingConfigurerSupport {
     }
 
 
+    /**
+     * 短信验证使用的redis
+     *
+     * @param factory
+     * @return
+     */
+    @Bean(name = "redisTemplateForIdc")
+    public RedisTemplate<String, Object> redisTemplateForIdc(JedisConnectionFactory factory) {
+        return getRedisTemplate(factory, Integer.valueOf(databaseIdc));
+    }
+
     /**
      * 短信验证使用的redis
      *

+ 17 - 0
user-service/src/main/java/com/diagbot/dto/ImgVerCreatDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2018/9/5 9:10
+ */
+@Getter
+@Setter
+public class ImgVerCreatDTO {
+    //图片验证码唯一标志
+    private String imgId;
+    byte[] imgByte;
+}

+ 1 - 1
user-service/src/main/java/com/diagbot/entity/SwsVerInfo.java

@@ -14,7 +14,7 @@ import java.util.Date;
 @Setter
 public class SwsVerInfo {
     //用户ID
-    private Integer userId;
+    private Long userId;
     //用户电话
     private String mobile;
     //验证码

+ 11 - 4
user-service/src/main/java/com/diagbot/facade/VerFacade.java

@@ -1,6 +1,9 @@
 package com.diagbot.facade;
 
+import com.diagbot.dto.ImgVerCreatDTO;
 import com.diagbot.entity.ImgVerInfo;
+import com.diagbot.enums.VisibleIdTypeEnum;
+import com.diagbot.idc.VisibleIdCreater;
 import com.diagbot.service.ImgVerService;
 import com.diagbot.service.SmsVerService;
 import com.diagbot.vo.ImgVerCreatVO;
@@ -21,14 +24,18 @@ public class VerFacade {
 
     /**
      * 获取用户图片验证信息
-     * @param imgVerCreatVO
      * @return
      */
-    public byte[] getImgVerification(ImgVerCreatVO imgVerCreatVO){
+    public ImgVerCreatDTO getImgVerification(){
+        ImgVerCreatDTO imgVerCreatDTO = new ImgVerCreatDTO();
+        VisibleIdCreater visibleIdCreater = new VisibleIdCreater(1,1);
+        String imgId = visibleIdCreater.getNextId(VisibleIdTypeEnum.IS_IMG_VER.getKey()).toString();
         ImgVerInfo imgVerInfo = new ImgVerInfo();
-        imgVerInfo.setImgId(imgVerCreatVO.getImgId());
+        imgVerInfo.setImgId(imgId);
         byte[] res = imgVerService.createImgVerification(imgVerInfo);
-        return res;
+        imgVerCreatDTO.setImgId(imgId);
+        imgVerCreatDTO.setImgByte(res);
+        return imgVerCreatDTO;
     }
 
 

+ 36 - 0
user-service/src/main/java/com/diagbot/idc/AbstractIdCreater.java

@@ -0,0 +1,36 @@
+package com.diagbot.idc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: ID生成抽象类接口
+ * @author: gaodm
+ * @time: 2018/9/5 9:20
+ */
+public abstract class AbstractIdCreater<T> implements IdCreater<T> {
+
+    protected int machineId;
+    protected int dataCenterId;
+
+    public AbstractIdCreater(int machineId, int dataCenterId) {
+        this.machineId = machineId;
+        this.dataCenterId = dataCenterId;
+    }
+
+    @Override
+    public abstract Long getNextId(T param);
+
+    @Override
+    public List<Long> getNextIds(T param, int size) {
+        List<Long> longs = new ArrayList<>(size);
+        for (int i = 0; i < size; i++) {
+            longs.add(getNextId(param));
+        }
+        return longs;
+    }
+
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+}

+ 24 - 0
user-service/src/main/java/com/diagbot/idc/IdCreater.java

@@ -0,0 +1,24 @@
+package com.diagbot.idc;
+
+import java.util.List;
+
+/**
+ * @Description: ID生成接口
+ * @author: gaodm
+ * @time: 2018/9/5 9:21
+ */
+public interface IdCreater<T> {
+
+    /**
+     * 生成一个id
+     * @return 生成的id
+     */
+    Long getNextId(T param);
+
+    /**
+     * 批量生成id
+     * @param size 生成数量
+     * @return 生成的id列表
+     */
+    List<Long> getNextIds(T param, int size);
+}

+ 62 - 0
user-service/src/main/java/com/diagbot/idc/InvisibleIdCreater.java

@@ -0,0 +1,62 @@
+package com.diagbot.idc;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.List;
+
+/**
+ * @Description: 不可见id由redis生成
+ * @author: gaodm
+ * @time: 2018/9/5 9:21
+ */
+@SuppressWarnings("unchecked")
+@Slf4j
+public class InvisibleIdCreater extends AbstractIdCreater<Class> {
+
+    @Autowired
+    @Qualifier("redisTemplateForIdc")
+    RedisTemplate redisTemplate;
+
+    public InvisibleIdCreater(int machineId, int dataCenterId) {
+        super(machineId, dataCenterId);
+    }
+
+    @Override
+    public Long getNextId(Class param) {
+        final byte[] redis_key = redisTemplate.getKeySerializer().serialize("id_" + param.getName());
+        Object execute = redisTemplate.execute(new RedisCallback() {
+            @Override
+            public Long doInRedis(RedisConnection connection) throws DataAccessException {
+                Long incr = connection.incr(redis_key);
+                return incr;
+            }
+        });
+        return (Long) execute;
+    }
+
+    @Override
+    public List<Long> getNextIds(Class param, final int size) {
+        final byte[] rawKey = redisTemplate.getKeySerializer().serialize("id_" + param.getName());
+        //pipeline
+        RedisCallback<List<Object>> pipelineCallback = new RedisCallback<List<Object>>() {
+            @Override
+            public List<Object> doInRedis(RedisConnection connection) throws DataAccessException {
+                connection.openPipeline();
+                for (int i = 0; i < size; i++) {
+                    connection.incr(rawKey);
+                }
+                return connection.closePipeline();
+            }
+        };
+
+        List<Long> results = (List<Long>) redisTemplate.execute(pipelineCallback);
+        return results;
+    }
+
+}

+ 71 - 0
user-service/src/main/java/com/diagbot/idc/VisibleIdCreater.java

@@ -0,0 +1,71 @@
+package com.diagbot.idc;
+
+
+import com.diagbot.util.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.RandomUtils;
+import org.apache.commons.lang3.time.DateUtils;
+
+import java.util.Calendar;
+
+/**
+ * @Description: 可见id每秒递增
+ * @author: gaodm
+ * @time: 2018/9/5 10:45
+ */
+@Slf4j
+public class VisibleIdCreater extends AbstractIdCreater<Integer> {
+
+    private long lastTimestamp = -1L;
+
+    private long sequence = 0L;
+    private long sequenceMask = 9999;
+
+    public VisibleIdCreater(int machineId, int dataCenterId) {
+        super(machineId, dataCenterId);
+    }
+
+    @Override
+    /**
+     *  对外id生成规则
+     *  180905123451110001
+     *  180905 - 12345 -  1   -  1   -     1     - 0001
+     *   日期 -  秒数  - 业务 - 机器 - 数据中心 - 秒内自增
+     *  @param type 业务id 1.订单 2.交易 3.退款
+     *  @return 生成的id
+     */
+    public synchronized Long getNextId(Integer type) {
+
+        Calendar calendar = Calendar.getInstance();
+
+        long timestamp = timeGen() / 1000;
+
+        if (timestamp < lastTimestamp) {
+            log.error(String.format("clock is moving backwards. Rejecting requests until %d.", lastTimestamp));
+            throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1);
+            if (sequence > sequenceMask) {
+                //timestamp = tilNextMillis(lastTimestamp);
+                log.error(String.format("id creater sequence is full. wait to next time"));
+                return null;
+            }
+        } else {
+            sequence = getNewSequence();
+        }
+
+        lastTimestamp = timestamp;
+
+        String date = DateUtil.format(calendar.getTime(), "yyMMdd");
+        long seconds = DateUtils.getFragmentInSeconds(calendar, Calendar.DAY_OF_YEAR);
+
+        return Long.valueOf(date + String.format("%05d", seconds) + String.valueOf(type) + machineId + dataCenterId + sequence);
+    }
+
+    private long getNewSequence() {
+        return RandomUtils.nextInt(1000, 2000);
+    }
+
+}

+ 2 - 2
user-service/src/main/java/com/diagbot/service/SmsVerService.java

@@ -28,10 +28,10 @@ public interface SmsVerService {
      * @param userId 用户ID
      * @return 用户信息
      */
-    SwsVerInfo getSmsVerification(Integer userId);
+    SwsVerInfo getSmsVerification(Long userId);
 
     /**
      * 删除用户短信验证码信息
      */
-    Boolean deleteSmsVerification(Integer userId);
+    Boolean deleteSmsVerification(Long userId);
 }

+ 1 - 1
user-service/src/main/java/com/diagbot/service/impl/ImgVerServiceImpl.java

@@ -131,7 +131,7 @@ public class ImgVerServiceImpl implements ImgVerService {
             throw new CommonException(ErrorCode.PARAM_IS_ERROR,
                     "图片验证码唯一标志不一致!");
         }
-        if (!imgVerInfoRes.getCode().equals(imgVerInfo.getCode())) {
+        if (!(imgVerInfoRes.getCode().toUpperCase()).equals(imgVerInfo.getCode())) {
             log.info("用户图片验证码不一致!验证码:{}", imgVerInfo.getCode());
             throw new CommonException(ErrorCode.PARAM_IS_ERROR,
                     "用户图片验证码不一致!");

+ 29 - 16
user-service/src/main/java/com/diagbot/service/impl/SmsVerServiceImpl.java

@@ -1,5 +1,8 @@
 package com.diagbot.service.impl;
 
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.diagbot.entity.SwsVerInfo;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.ErrorCode;
@@ -8,9 +11,6 @@ import com.diagbot.util.DateUtil;
 import com.diagbot.util.GsonUtil;
 import com.diagbot.util.SmsCodeUtil;
 import com.diagbot.util.StringUtil;
-import com.taobao.api.TaobaoClient;
-import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
-import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -37,7 +37,7 @@ public class SmsVerServiceImpl implements SmsVerService {
     private RedisTemplate redisForSms;
 
     @Autowired
-    private TaobaoClient taobaoClient;
+    private IAcsClient acsClient;
 
     private byte[] serializeKey(Object o) {
         return redisForSms.getKeySerializer().serialize(o);
@@ -51,7 +51,7 @@ public class SmsVerServiceImpl implements SmsVerService {
         return redisForSms.getValueSerializer().deserialize(b);
     }
 
-    private byte[] getUserSmsKey(int userId) {
+    private byte[] getUserSmsKey(Long userId) {
         String userSmsFormat = "user_sms_%d";
         return serializeKey(String.format(userSmsFormat, userId));
     }
@@ -61,23 +61,36 @@ public class SmsVerServiceImpl implements SmsVerService {
             throw new CommonException(ErrorCode.PARAM_IS_NULL,
                     "电话号码不能为空!");
         }
-        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
-        req.setSmsType( "normal" );
-        req.setSmsFreeSignName( "朗通云平台" );
+
+        //组装请求对象-具体描述见控制台-文档部分内容
+        SendSmsRequest request = new SendSmsRequest();
+        //必填:待发送手机号
+        request.setPhoneNumbers(mobile);
+        //必填:短信签名-可在短信控制台中找到
+        request.setSignName("朗通云平台");
+        //必填:短信模板-可在短信控制台中找到
+        request.setTemplateCode(smsTemplateCode);
         String code = SmsCodeUtil.getVerCode();
         String json="{\"code\":\""
                 + code
-                + "\",\"product\":\"【朗通云平台】\"}";
-        req.setSmsParamString(json);
-        req.setRecNum(mobile);
-        req.setSmsTemplateCode(smsTemplateCode);
+                + "\",\"name\":\"hhh\"}";
+        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
+        request.setTemplateParam(json);
+
+        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
+        //request.setSmsUpExtendCode("90997");
+        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
+        //request.setOutId("yourOutId");
+
         try {
-            AlibabaAliqinFcSmsNumSendResponse rsp = taobaoClient.execute(req);
+            //此处可能会抛出异常,注意catch
+            SendSmsResponse rsp = acsClient.getAcsResponse(request);
             System.out.println(GsonUtil.toJson(rsp));
-            if (null == rsp || !rsp.isSuccess()){
+            if ((null == rsp) || !(rsp.getCode().equals("OK"))){
                 throw new CommonException(ErrorCode.SMS_SEND_ERROR);
             }
         } catch (Exception e) {
+            e.printStackTrace();
             throw new CommonException(ErrorCode.SMS_SEND_ERROR);
         }
         return code;
@@ -193,7 +206,7 @@ public class SmsVerServiceImpl implements SmsVerService {
      * @return
      */
     @Override
-    public SwsVerInfo getSmsVerification(Integer userId){
+    public SwsVerInfo getSmsVerification(Long userId){
         return (SwsVerInfo) redisForSms.execute(new RedisCallback<Object>() {
             @Override
             public Object doInRedis(RedisConnection connection) throws DataAccessException {
@@ -211,7 +224,7 @@ public class SmsVerServiceImpl implements SmsVerService {
      * 删除用户短信验证码信息
      */
     @Override
-    public Boolean deleteSmsVerification(Integer userId){
+    public Boolean deleteSmsVerification(Long userId){
         final byte[] redis_key = getUserSmsKey(userId);
         Long l = (Long) redisForSms.execute(new RedisCallback<Long>() {
             @Override

+ 1 - 1
user-service/src/main/java/com/diagbot/util/VerifyCodeUtils.java

@@ -289,7 +289,7 @@ public class VerifyCodeUtils {
         File dir = new File("E:/verifies");
         for(int i = 0; i < 50; i++){
             Object[] res = createImage();
-            String code = res[0].toString();
+            String code = res[0].toString().toUpperCase();
             System.out.println(code);
             File file = new File(dir, code + ".jpg");
             OutputStream out = new FileOutputStream(file);

+ 3 - 5
user-service/src/main/java/com/diagbot/web/VerController.java

@@ -7,9 +7,7 @@ import com.diagbot.vo.ImgVerCreatVO;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
@@ -23,10 +21,10 @@ public class VerController {
     @Autowired
     private VerFacade verFacade;
 
-    @ApiOperation(value = "获取图片验证码", notes = "图片验证码唯一标志为必填项")
+    @ApiOperation(value = "获取图片验证码", notes = "获取图片验证码包括包括系统验证用的ID和图片信息")
     @GetMapping("/getImgVerification")
     @SysLogger("getImgVerification")
-    public RespDTO getImgVerification(ImgVerCreatVO imgVerCreatVO){
-        return   RespDTO.onSuc(verFacade.getImgVerification(imgVerCreatVO));
+    public RespDTO getImgVerification(){
+        return   RespDTO.onSuc(verFacade.getImgVerification());
     }
 }

二进制
user-service/src/main/libs/aliyun-java-sdk-core-3.3.1.jar


二进制
user-service/src/main/libs/aliyun-java-sdk-dysmsapi-1.0.0.jar


二进制
user-service/src/main/libs/taobao-sdk-java-auto_1455552377940-20170303.jar


+ 0 - 3
user-service/src/main/resources/alidayu.properties

@@ -1,3 +0,0 @@
-alidayu.serverUrl=http://gw.api.taobao.com/router/rest
-alidayu.appKey=12312321321
-alidayu.appSecret=33213215215365211wqdedsds

+ 4 - 0
user-service/src/main/resources/aliyun.properties

@@ -0,0 +1,4 @@
+aliyun.product=Dysmsapi
+aliyun.domain=dysmsapi.aliyuncs.com
+aliyun.accessKeyId=yourAccessKeyId
+aliyun.accessKeySecret=yourAccessKeyId