package com.supervision.controller; import cn.hutool.crypto.digest.MD5; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.supervision.exception.BusinessException; import com.supervision.model.ConfigPhysicalTool; import com.supervision.service.ConfigPhysicalToolService; import com.supervision.util.MinioUtil; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; @RestController @RequestMapping("test") @RequiredArgsConstructor public class TestController { private final ConfigPhysicalToolService configPhysicalToolService; @GetMapping("testExpireTime") public String testExpireTime() { return "OK"; } @GetMapping("testQueryJSON") public List testQueryJSON() { return configPhysicalToolService.list(); } /** * 数字人获取房间号 * @param key 数字人ID,张总那边提供 * @param token 前端每打开一个页面,就给一个新的UUID * @return 房间号 */ @GetMapping("queryRoomId") public String queryRoomId(String key,String token){ Map param = new HashMap<>(); param.put("token",token); param.put("key",key); String s = HttpUtil.get("https://digital-human.jd.com/getRoomId", param); JSONObject entries = JSONUtil.parseObj(s); if (200 != entries.getInt("code")){ throw new BusinessException(entries.getStr("data")); } return entries.getStr("data"); } /** * 调用数字人接口进行语音的播放 * @param text 需要播放的文本 * @param roomId 房间ID */ @GetMapping("shuZiRenSend") public String shuZiRenSend(String text, String roomId) { HashMap param = new HashMap<>(); long timeStamp = System.currentTimeMillis(); param.put("text", text); param.put("roomId", roomId); param.put("action", "-1"); param.put("nonce", UUID.randomUUID().toString()); param.put("timeStamp", String.valueOf(timeStamp)); param.put("sign", getSign(String.valueOf(timeStamp), (String) param.get("nonce"), (String) param.get("text"), (String) param.get("actionId"), (String) param.get("roomId"))); return HttpUtil.get("https://digital-human.jd.com/text_driven", param); } private static String getSign(String timeStamp, String nonce, String text, String actionId, String roomId) { Map paramMap = new TreeMap<>(); paramMap.put("action", actionId); paramMap.put("nonce", nonce); paramMap.put("roomId", roomId); paramMap.put("text", text); paramMap.put("timeStamp", timeStamp); String paramJsonString = JSONUtil.toJsonStr(paramMap); System.out.println(paramJsonString); String signServer = new MD5().digestHex16(paramJsonString); System.out.println("---------> :" + signServer); return signServer; } @PostMapping("testFileUpload") public String testFileUpload(MultipartFile file) throws Exception { return MinioUtil.uploadFile(file.getInputStream(), UUID.randomUUID().toString()); } @PostMapping("downloadFile") public InputStream downloadFile(String fileId) throws Exception { return MinioUtil.download(fileId); } }