1
zj
2025-04-18 43c900c904084b657d90826e7f91afef92500733
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.nq.utils.smsUtil;
 
import com.google.gson.Gson;
import com.nq.controller.SmsApiController;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.pay.CmcPayOuterRequestUtil;
import com.nq.utils.redis.RedisKeyConstant;
import com.nq.utils.redis.RedisShardedPoolUtils;
import okhttp3.*;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
 
 
public class smsUtil {
    private static final Logger log = LoggerFactory.getLogger(SmsApiController.class);
 
    public String sendSMS(String telephone) {
        // 生成6位数字验证码
        String verificationCode = RandomStringUtils.randomNumeric(6);
 
        try {
            OkHttpClient client = new OkHttpClient();
 
            MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
            RequestBody body = RequestBody.create(mediaType, "sp_id=697778&mobile="+telephone+"&content="+verificationCode+"&password=fe663ee62f83ddb353fdc31ee7c88378");
            Request request = new Request.Builder()
                    .url("http://47.242.44.254:9511/api/send-sms-single")
                    .post(body)
                    .addHeader("content-type", "application/x-www-form-urlencoded")
                    .build();
 
            Response response = client.newCall(request).execute();
            if(response.isSuccessful()){
                try {
                    // 将验证码存入 Redis,设置 30 秒过期时间
                    String redisKey = RedisKeyConstant.verification_code + ":" + telephone; // 使用电话号码作为唯一标识符
                    RedisShardedPoolUtils.setEx(redisKey, verificationCode, 30);
                } catch (Exception e) {
                    // 捕获异常并记录日志,避免程序崩溃
                    System.err.println("Error storing verification code in Redis: " + e.getMessage());
                    // 你可以根据需要做进一步的异常处理,比如重新抛出异常
                }
                // 返回验证码
                return verificationCode;
            }
        } catch (Exception e) {
            // 异常处理
            System.err.println("短信发送异常: " + e.getMessage());
            e.printStackTrace();
        }
        // 返回验证码
        return "000000";
    }
 
 
 
    /**
     * 找回密码
     */
    public String sendForgetSms(String telephone) {
        String code = RandomStringUtils.randomNumeric(4);
        CmcPayOuterRequestUtil requestUtil = new CmcPayOuterRequestUtil();
 
        String sign = "【老虎证券】";
        String uid = PropertiesUtil.getProperty("dxb.sms.USERNAME");
        String key = PropertiesUtil.getProperty("dxb.sms.PASSWORD");
//        String coding = PropertiesUtil.getProperty("wj.sms.coding");
        String smscontent = sign+"您正在申請找回密码,验证码为:" + code + ",5分钟内有效!";
 
 
 
        try {
            uid = URLEncoder.encode(uid,"UTF-8");
            smscontent = URLEncoder.encode(smscontent,"UTF-8");
        } catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }
//        String url = "http://"+ cod+ing +".api.smschinese.cn/?Uid="+ uid +"&Key="+ key +"&smsMob=" + telephone + "&smsText="+sign+smscontent;
        String url ="https://api.smsbao.com/sms?u="+uid+"&p="+key+"&m="+telephone+"&c="+smscontent;
        log.info("smsurl"+url);
        String result = requestUtil.sendGet(url);
        log.info("smsresult="+result+"==code="+code);
        if (Integer.valueOf(result) < 0) {
            return "";
        } else {
            String keys = "AliyunSmsCode:" + telephone;
            RedisShardedPoolUtils.setEx(keys, code, 5400);
            return code;
        }
    }
}