Administrator
2025-12-22 2ff297dbe6e482f37059157510dea91d484cdc60
feat(sms): 集成阿里云短信服务并替换原有短信发送逻辑

- 添加阿里云短信服务依赖
- 实现阿里云短信发送工具类ZzSmsSend
- 替换CommonController中的短信发送方法调用
- 移除原有的zzsms365短信接口相关代码
- 配置阿里云短信签名和模板ID
- 添加短信发送日志记录和状态判断
3 files modified
84 ■■■■ changed files
pom.xml 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java 72 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/CommonController.java 4 ●●●● patch | view | raw | blame | history
pom.xml
@@ -34,6 +34,14 @@
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.18</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java
@@ -6,6 +6,10 @@
import cn.hutool.core.util.XmlUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.tea.TeaException;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
@@ -18,6 +22,60 @@
 **/
@Slf4j
public class ZzSmsSend {
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }
    private static final String SIGNNAME = "美澳";
    private static final String TEMPLATECODE = "SMS_499150559";
    public static boolean sendALiYun(String phone,String TemplateParam){
        com.aliyun.dysmsapi20170525.Client client = null;
        try {
            client = createClient("LTAI5t7XPsehXDaFoiuU4ihK", "2t2cVtUlO4Cfx6ODHm0JHgZObfEqkW");
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
//                .setSignName("阿里云短信测试")
                .setSignName(SIGNNAME)
//                .setTemplateCode("SMS_154950909")
                .setTemplateCode(TEMPLATECODE)
//                .setPhoneNumbers("15274802129")
                .setPhoneNumbers(phone)
//                .setTemplateParam("{\"code\":\"1234\"}");
                .setTemplateParam("{\"code\":\""+TemplateParam+"\"}");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
            log.info("短信发送:{}", sendSmsResponse);
            JSONObject jsonObject = JSONUtil.parseObj(sendSmsResponse);
            System.out.print(jsonObject);
            if(200 == sendSmsResponse.getStatusCode()) {
                return true;
            }else{
                return false;
            }
        } catch (TeaException error) {
            // 如有需要,请打印 error
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 如有需要,请打印 error
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
        return false;
    }
    private static final String URL = "http://zzsms365.com/v2sms.aspx?action=send";
@@ -51,18 +109,4 @@
        }
    }
    public static void main(String[] args) {
        Map<String, Object> data = new HashMap<>();
        Long time = System.currentTimeMillis();
        data.put("userid", USER_ID);
        data.put("timestamp", time);
        data.put("mobile", "15773002834");
        String signStr = ACCOUNT + PWD + time;
        String sign = SecureUtil.md5(signStr);
        data.put("sign", sign);
        data.put("content", "【HiBit】尊敬的用户,恭喜您于2010-03-25有一笔充值已成功到账,充值数量为10。");
        String post = HttpUtil.post(URL, data);
        System.out.println(post);
    }
}
src/main/java/cc/mrbird/febs/mall/controller/CommonController.java
@@ -53,8 +53,8 @@
        // 发送手机验证码
        if (AppContants.ACCOUNT_TYPE_MOBILE.equals(type)) {
//            boolean result = ZzSmsSend.sendVerifyCode(account, code.toString(), 2);
            boolean result = Sms106Send.sendVerifyCode(account, code.toString(), 2);
            boolean result = ZzSmsSend.sendALiYun(account, code.toString());
//            boolean result = Sms106Send.sendVerifyCode(account, code.toString(), 2);
            if (result) {
                Map<String, Object> map = new HashMap<>();
                boolean flag = redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 120);