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.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 {
|
private String url="http://103.21.119.249:3131/http/send.aspx";
|
private String loginName="qddxfsyy";
|
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.toLowerCase(),passWord.toLowerCase());
|
key="5b2d0edb45ac3583543fbf55d8af1e6d";
|
String content="{\"LoginName\":\""+loginName+"\",\"PassWord\":\""+passWord+"\"," +
|
"\"Key\":\""+key+"\"," +
|
"\"Tel\":\""+DTO.getTel()+"\",\"MessageContent\":\""+DTO.getMessageContent()+"\"}";
|
String 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) {
|
|
return hashPasswordForStoring(str,"MD5");
|
}
|
|
public static String SHA1(String str) {
|
|
return hashPasswordForStoring(str,"SHA1");
|
}
|
|
public static String hashPasswordForStoring(String password, String algorithm) {
|
try {
|
// 1. 获取哈希算法实例
|
MessageDigest md = MessageDigest.getInstance(algorithm);
|
// 2. 密码转 UTF-8 字节(和 .NET 完全一致)
|
byte[] passwordBytes = password.getBytes(StandardCharsets.UTF_8);
|
// 3. 计算哈希
|
byte[] hashBytes = md.digest(passwordBytes);
|
// 4. 转为大写十六进制字符串(和 .NET 输出格式一致)
|
return bytesToHexUpperCase(hashBytes);
|
|
} catch (NoSuchAlgorithmException e) {
|
throw new RuntimeException("不支持的哈希算法: " + algorithm, e);
|
}
|
}
|
private static String bytesToHexUpperCase(byte[] bytes) {
|
StringBuilder sb = new StringBuilder();
|
for (byte b : bytes) {
|
// 转两位大写十六进制
|
sb.append(String.format("%02X", b));
|
}
|
return sb.toString();
|
}
|
|
}
|