package com.ruoyi.admin.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.admin.entity.IamConfig; import com.ruoyi.admin.entity.OrderRecording; import com.ruoyi.admin.service.IamConfigService; import com.ruoyi.admin.service.OrderRecordingService; import com.ruoyi.admin.service.OrderService; import com.ruoyi.admin.voice.util.AXBUtil; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.api.entity.Order; import com.ruoyi.order.api.feignClient.OrderClient; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Objects; /** *

* 协议政策、司机操作指导 前端控制器 *

* * @author hjl * @since 2024-05-29 */ @Slf4j @RestController @RequestMapping("/privateNumber") public class PrivateNumberCallBackController { @Resource private OrderClient orderClient; @Resource private OrderRecordingService orderRecordingService; @Resource private IamConfigService iamConfigService; /** * 隐私号码回调 */ @PostMapping(value = "/callBack") public R callBack(@RequestBody JSONObject jsonObject) { JSONArray feeLst = jsonObject.getJSONArray("feeLst"); for (int i = 0; i < feeLst.size(); i++) { JSONObject feeLstJson = feeLst.getJSONObject(i); String subscriptionId = feeLstJson.getString("subscriptionId"); String recordDomain = feeLstJson.getString("recordDomain"); String recordObjectName = feeLstJson.getString("recordObjectName"); String recordBucketName = feeLstJson.getString("recordBucketName"); log.info("隐私号码回调:{},录音文件名:{},录音服务器名:{}", subscriptionId, recordObjectName, recordDomain); Order order = orderClient.detailBySubscriptionId(subscriptionId).getData(); long count = orderRecordingService.count(Wrappers.lambdaQuery() .eq(OrderRecording::getRecordObjectName, recordObjectName) .eq(OrderRecording::getRecordDomain, recordDomain)); if (Objects.nonNull(order) && count == 0) { IamConfig iamConfig = iamConfigService.getById(1); OrderRecording orderRecording = new OrderRecording(); orderRecording.setOrderId(order.getId()); orderRecording.setRecordDomain(recordDomain); orderRecording.setRecordObjectName(recordObjectName); String recordingUrl = AXBUtil.axbGetRecordDownloadLink(iamConfig.getAppKey(), iamConfig.getAppSecret(), recordDomain, recordObjectName); orderRecording.setPhoneRecording(recordingUrl); orderRecordingService.save(orderRecording); } } return R.ok(); } }