后台服务
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

193 rindas
7.6 KiB

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