diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java index 18bfabad0e..c389fef5eb 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java @@ -1,12 +1,14 @@ package com.epmet.modules.topic.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.result.FirstTopicShiftedToIssueApplicationResultDTO; import com.epmet.modules.topic.service.ResiTopicService; +import com.epmet.resi.group.dto.scanapicallback.VoiceScanCallBackContentFormDTO; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.TopicInfoDTO; @@ -15,12 +17,12 @@ import com.epmet.resi.group.dto.topic.result.*; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpStatus; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; +import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * @Description @@ -355,16 +357,36 @@ public class ResiTopicController { return new Result().ok(topicService.selectMyPartTopic(myPartIssueFormDTO)); } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param checksum 字符串格式,由用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。说明 用户UID必须是阿里云账号的UID,而不是RAM用户的UID。 + * @param content content:JSON字符串格式,请自行解析反转成JSON对象。关于content结果的示例,请参见查询异步检测结果的返回示例。 + * @author yinzuomei + * @description 测试语音异步检测回调方法 + * @Date 2020/12/11 9:07 + **/ @PostMapping("callBackPublishTopic") public Result callBackPublishTopic(@RequestParam("checksum") String checksum, @RequestParam("content") String content, HttpServletResponse response){ - log.info("checksum:"+checksum); - log.info("content:"+ JSON.toJSONString(content,true)); - Map map=new HashMap<>(); - map.put("checksum",checksum); - map.put("content",content); - response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); - return new Result<>().ok(map); + // 原因是因为传参的关系,使字符串中保留这"\"线,可以使用String.replaceAll("\\\\","");将所有的"\"线替换为空串 + String contentStr=content.replaceAll("\\\\",""); + List formDTOList=new ArrayList<>(); + if(contentStr.startsWith("[")){ + log.info("入参content为数组:"+ JSON.toJSONString(contentStr,true)); + List list= JSONArray.parseArray(content.replaceAll("\\\\",""), VoiceScanCallBackContentFormDTO.class); + if(!CollectionUtils.isEmpty(list)){ + formDTOList.addAll(list); + } + }else if(contentStr.startsWith("{")){ + VoiceScanCallBackContentFormDTO formDTO= JSON.parseObject(contentStr, VoiceScanCallBackContentFormDTO.class); + log.info("入参content为对象:"+JSON.toJSONString(formDTO,true)); + formDTOList.add(formDTO); + } + formDTOList.forEach(dto->{ + log.info(dto.toString()); + }); + //TODO 判断检测任务结果,执行后续任务 + response.setStatus(HttpStatus.SC_OK); + return new Result<>(); } - - }