后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CallbackSmController.java 5.8 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.iformall.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.iformall.annotation.AuthIgnore;
  4. import com.iformall.common.ErrorCode;
  5. import com.iformall.common.ResultData;
  6. import com.iformall.domain.po.sm.*;
  7. import com.iformall.enums.EnumDigitalAvatarOrderStatus;
  8. import com.iformall.enums.EnumVideoStatus;
  9. import com.iformall.service.sm.*;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiOperation;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.*;
  17. import java.util.*;
  18. @RestController
  19. @RequestMapping("/callback")
  20. @Api(description = "视频回调")
  21. public class CallbackSmController extends BaseController {
  22. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  23. @Autowired
  24. private PhotoSpeakVideoService photoSpeakVideoService;
  25. @Autowired
  26. private UserDigitalAvatarOrderService userDigitalAvatarOrderService;
  27. @AuthIgnore
  28. @ApiOperation("视频回调")
  29. @PostMapping(value = "/photo/speak")
  30. public ResultData photoSpeak(@RequestBody Map<String, Object> paranMap) {
  31. logger.debug("[" + getIpAddr() + "] CallbackSmController::photoSpeak");
  32. logger.info("照片生成视频结果通知{}"+JSONObject.toJSONString(paranMap));
  33. Long task_id = (Long) paranMap.get("task_id");//任务ID
  34. String code = (String) paranMap.get("code");//code
  35. String msg = (String) paranMap.get("msg");
  36. if (task_id == null){
  37. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"任务ID不能为空");
  38. }
  39. PhotoSpeakVideo photoSpeakVideo = photoSpeakVideoService.getById(Long.valueOf(task_id));
  40. if (photoSpeakVideo == null){
  41. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
  42. }
  43. Object data = paranMap.get("data");
  44. String jsonString = JSONObject.toJSONString(data);
  45. Map dataMap = JSONObject.parseObject(jsonString,Map.class);
  46. Boolean sr = (Boolean) dataMap.get("sr");//判断 sr=True 就是超分的, False 是没超分的
  47. String url = (String) dataMap.get("url");
  48. String save_dir = null;
  49. String audio_path = null;
  50. if(sr){
  51. if(!EnumVideoStatus.hy_ing.getCode().equals(photoSpeakVideo.getVideoStatus())){
  52. return new ResultData();
  53. }
  54. }else{
  55. if(!EnumVideoStatus.ing.getCode().equals(photoSpeakVideo.getVideoStatus())){
  56. return new ResultData();
  57. }
  58. save_dir = (String) dataMap.get("save_dir");
  59. audio_path = (String) dataMap.get("audio_path");
  60. }
  61. if (StringUtils.isEmpty(url)){
  62. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"视频URL不能为空");
  63. }
  64. PhotoSpeakVideo speakVideoUpd = new PhotoSpeakVideo();
  65. speakVideoUpd.setId(photoSpeakVideo.getId());
  66. if("4000".equals(code)){
  67. if (sr){
  68. speakVideoUpd.setVideoStatus(EnumVideoStatus.hy_success.getCode());
  69. }else {
  70. speakVideoUpd.setVideoStatus(EnumVideoStatus.success.getCode());
  71. speakVideoUpd.setSaveDir(save_dir);
  72. speakVideoUpd.setAudioPath(audio_path);
  73. }
  74. speakVideoUpd.setVideoPath(url);
  75. speakVideoUpd.setVideoMsg("视频生成成功");
  76. }else{
  77. if (sr){
  78. speakVideoUpd.setVideoStatus(EnumVideoStatus.hy_fail.getCode());
  79. }else {
  80. speakVideoUpd.setVideoStatus(EnumVideoStatus.fail.getCode());
  81. }
  82. speakVideoUpd.setVideoMsg("(MetaService)"+msg);
  83. }
  84. speakVideoUpd.setUpdateDate(new Date());
  85. photoSpeakVideoService.updateById(speakVideoUpd);
  86. //TODO 用户相关操作
  87. if (sr){
  88. photoSpeakVideoService.uploadHyVideo(speakVideoUpd);
  89. }else {
  90. photoSpeakVideoService.uploadVideo(speakVideoUpd);
  91. }
  92. return new ResultData();
  93. }
  94. @AuthIgnore
  95. @ApiOperation("生成照片回调")
  96. @PostMapping(value = "/create/photo")
  97. public ResultData createPhoto(@RequestBody Map<String, Object> paranMap) {
  98. logger.debug("[" + getIpAddr() + "] CallbackSmController::photoSpeak");
  99. Long task_id = (Long) paranMap.get("task_id");//任务ID
  100. String code = (String) paranMap.get("code");//code
  101. String msg = (String) paranMap.get("msg");
  102. logger.info("照片生成视频结果通知{}task_id="+task_id+",code="+code);
  103. if (task_id == null){
  104. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"任务ID不能为空");
  105. }
  106. UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderService.selectById(task_id);
  107. if (userDigitalAvatarOrder == null){
  108. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到任务数据");
  109. }
  110. if("2000".equals(code)){
  111. Map<String,String> data = (Map) paranMap.get("data");
  112. List<String> imgList = new ArrayList<>();
  113. imgList.add(data.get("img_0"));
  114. imgList.add(data.get("img_1"));
  115. imgList.add(data.get("img_2"));
  116. imgList.add(data.get("img_3"));
  117. userDigitalAvatarOrderService.handlePhoto(userDigitalAvatarOrder,imgList);
  118. }else{
  119. UserDigitalAvatarOrder updOrder = new UserDigitalAvatarOrder();
  120. updOrder.setId(userDigitalAvatarOrder.getId());
  121. updOrder.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode());
  122. updOrder.setMsg(msg);
  123. updOrder.setUpdateDate(new Date());
  124. userDigitalAvatarOrderService.updateById(updOrder);
  125. }
  126. return new ResultData();
  127. }
  128. }