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.toLowerCase(),passWord.toLowerCase()); key="5b2d0edb45ac3583543fbf55d8af1e6d"; 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(); } }