|
- package com.iformall.controller;
-
- import com.alibaba.fastjson.JSONObject;
- import com.iformall.annotation.AuthIgnore;
- import com.iformall.common.ErrorCode;
- import com.iformall.common.ResultData;
- import com.iformall.domain.po.sm.*;
- import com.iformall.enums.EnumDigitalAvatarOrderStatus;
- import com.iformall.enums.EnumVideoStatus;
- import com.iformall.service.sm.*;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
-
- import java.util.*;
-
-
- @RestController
- @RequestMapping("/callback")
- @Api(description = "视频回调")
- public class CallbackSmController extends BaseController {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- @Autowired
- private PhotoSpeakVideoService photoSpeakVideoService;
-
- @Autowired
- private UserDigitalAvatarOrderService userDigitalAvatarOrderService;
-
- @AuthIgnore
- @ApiOperation("视频回调")
- @PostMapping(value = "/photo/speak")
- public ResultData photoSpeak(@RequestBody Map<String, Object> paranMap) {
- logger.debug("[" + getIpAddr() + "] CallbackSmController::photoSpeak");
- logger.info("照片生成视频结果通知{}"+JSONObject.toJSONString(paranMap));
- Long task_id = (Long) paranMap.get("task_id");//任务ID
- String code = (String) paranMap.get("code");//code
- String msg = (String) paranMap.get("msg");
-
- if (task_id == null){
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"任务ID不能为空");
- }
-
- PhotoSpeakVideo photoSpeakVideo = photoSpeakVideoService.getById(Long.valueOf(task_id));
- if (photoSpeakVideo == null){
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
- }
-
- Object data = paranMap.get("data");
- String jsonString = JSONObject.toJSONString(data);
- Map dataMap = JSONObject.parseObject(jsonString,Map.class);
- Boolean sr = (Boolean) dataMap.get("sr");//判断 sr=True 就是超分的, False 是没超分的
- String url = (String) dataMap.get("url");
- String save_dir = null;
- String audio_path = null;
- if(sr){
- if(!EnumVideoStatus.hy_ing.getCode().equals(photoSpeakVideo.getVideoStatus())){
- return new ResultData();
- }
- }else{
- if(!EnumVideoStatus.ing.getCode().equals(photoSpeakVideo.getVideoStatus())){
- return new ResultData();
- }
- save_dir = (String) dataMap.get("save_dir");
- audio_path = (String) dataMap.get("audio_path");
- }
- if (StringUtils.isEmpty(url)){
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"视频URL不能为空");
- }
-
- PhotoSpeakVideo speakVideoUpd = new PhotoSpeakVideo();
- speakVideoUpd.setId(photoSpeakVideo.getId());
-
- if("4000".equals(code)){
- if (sr){
- speakVideoUpd.setVideoStatus(EnumVideoStatus.hy_success.getCode());
- }else {
- speakVideoUpd.setVideoStatus(EnumVideoStatus.success.getCode());
- speakVideoUpd.setSaveDir(save_dir);
- speakVideoUpd.setAudioPath(audio_path);
- }
- speakVideoUpd.setVideoPath(url);
- speakVideoUpd.setVideoMsg("视频生成成功");
- }else{
- if (sr){
- speakVideoUpd.setVideoStatus(EnumVideoStatus.hy_fail.getCode());
- }else {
- speakVideoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
- }
- speakVideoUpd.setVideoMsg("(MetaService)"+msg);
- }
- speakVideoUpd.setUpdateDate(new Date());
- photoSpeakVideoService.updateById(speakVideoUpd);
-
- //TODO 用户相关操作
- if (sr){
- photoSpeakVideoService.uploadHyVideo(speakVideoUpd);
- }else {
- photoSpeakVideoService.uploadVideo(speakVideoUpd);
- }
-
- return new ResultData();
- }
-
-
- @AuthIgnore
- @ApiOperation("生成照片回调")
- @PostMapping(value = "/create/photo")
- public ResultData createPhoto(@RequestBody Map<String, Object> paranMap) {
- logger.debug("[" + getIpAddr() + "] CallbackSmController::photoSpeak");
-
- Long task_id = (Long) paranMap.get("task_id");//任务ID
- String code = (String) paranMap.get("code");//code
- String msg = (String) paranMap.get("msg");
- logger.info("照片生成视频结果通知{}task_id="+task_id+",code="+code);
-
- if (task_id == null){
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"任务ID不能为空");
- }
- UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderService.selectById(task_id);
-
- if (userDigitalAvatarOrder == null){
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
- }
-
- if("2000".equals(code)){
- Map<String,String> data = (Map) paranMap.get("data");
- List<String> imgList = new ArrayList<>();
- imgList.add(data.get("img_0"));
- imgList.add(data.get("img_1"));
- imgList.add(data.get("img_2"));
- imgList.add(data.get("img_3"));
- userDigitalAvatarOrderService.handlePhoto(userDigitalAvatarOrder,imgList);
- }else{
- UserDigitalAvatarOrder updOrder = new UserDigitalAvatarOrder();
- updOrder.setId(userDigitalAvatarOrder.getId());
- updOrder.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode());
- updOrder.setMsg(msg);
- updOrder.setUpdateDate(new Date());
- userDigitalAvatarOrderService.updateById(updOrder);
- }
-
- return new ResultData();
- }
-
- }
|