package com.ruoyi.web.controller.common;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.utils.http.HttpUtils;
|
import com.ruoyi.common.utils.sign.Md5Utils;
|
import com.ruoyi.project.domain.GiApi;
|
import com.ruoyi.project.domain.dto.ApiDTO;
|
import com.ruoyi.project.domain.dto.SmsDTO;
|
import com.ruoyi.project.service.IApiService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.nio.charset.StandardCharsets;
|
import java.security.MessageDigest;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.ArrayList;
|
import java.util.Base64;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
@Api(description = "短信服务")
|
@RestController
|
@RequestMapping("/sms")
|
public class SmsController {
|
@Value("${sms.url}")
|
private String url="http://103.21.119.249:3131/http/send.aspx";
|
@Value("${sms.loginName}")
|
private String loginName="qddxfsyy";
|
@Value("${sms.passWord}")
|
private String passWord="Qyfy_0718";
|
@ApiOperation("短信服务->发送短信")
|
@PostMapping("/send")
|
public AjaxResult getApiList(@RequestBody SmsDTO DTO) {
|
if (ObjectUtils.isNotEmpty(DTO.getTel())&&ObjectUtils.isNotEmpty(DTO.getMessageContent())) {
|
String key= keyForMd5(loginName,passWord);
|
String content="{\"LoginName\":\""+loginName+"\",\"PassWord\":\""+passWord+"\"," +
|
"\"Key\":\""+key+"\"," +
|
"\"Tel\":\""+DTO.getTel()+"\",\"MessageContent\":\""+DTO.getMessageContent()+"\"}";
|
String result="";
|
result= HttpUtils.sendPost(url, Base64.getEncoder().encodeToString(content.getBytes()) );
|
return AjaxResult.success(result);
|
} else {
|
return AjaxResult.error("电话和消息不能为空");
|
}
|
}
|
public String keyForMd5(String name, String pass)
|
{
|
return md5(md5(pass) + pass + md5(name));
|
}
|
|
|
|
public static String md5(String str) {
|
try {
|
// 1. 获取 MD5 消息摘要实例
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
// 2. 使用 UTF-8 编码将字符串转换为字节数组并计算哈希
|
byte[] hashBytes = md.digest(str.getBytes(StandardCharsets.UTF_8));
|
// 3. 将字节数组转换为十六进制字符串(小写)
|
return bytesToHex(hashBytes).toLowerCase();
|
} catch (NoSuchAlgorithmException e) {
|
// MD5 是标准算法,正常情况下不会抛出此异常
|
throw new RuntimeException("系统不支持 MD5 算法", e);
|
}
|
}
|
|
/**
|
* 将字节数组转换为十六进制字符串
|
*
|
* @param bytes 字节数组
|
* @return 十六进制字符串
|
*/
|
private static String bytesToHex(byte[] bytes) {
|
StringBuilder sb = new StringBuilder(bytes.length * 2);
|
for (byte b : bytes) {
|
// 将每个字节的高4位和低4位分别转换为十六进制字符
|
sb.append(String.format("%02x", b));
|
}
|
return sb.toString();
|
}
|
|
}
|