package com.iformall.controller; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.sm.MouldPatch; import com.iformall.domain.po.sm.MouldPatchSign; import com.iformall.domain.po.sm.UserMouldVideo; import com.iformall.enums.EnumMouldSendType; import com.iformall.enums.EnumVideoStatus; import com.iformall.enums.EnumaMouldPatchStatus; import com.iformall.service.sm.MouldPatchService; import com.iformall.service.sm.MouldPatchSignService; import com.iformall.service.sm.UserMouldVideoService; import com.iformall.video.VideoFactory; import com.iformall.video.entity.VideUploadResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; 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.Date; import java.util.List; @RestController @RequestMapping("/api/userVideo") @Api(description = "模板接口") public class UserMouldVideoController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private UserMouldVideoService userMouldVideoService; @Autowired private MouldPatchService mouldPatchService; @Autowired private VideoFactory videoFactory; @Autowired String videoType; @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) public ResultData list(@ModelAttribute UserMouldVideo record, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] UserMouldVideoController::list"); if (record == null) record = new UserMouldVideo(); record.setUserId(getMemberId()); record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); final PageInfo page = userMouldVideoService.cListAsPage(record, pageNum, pageSize); return new ResultData(page); } @ApiOperation("根据id查询接口") @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(Long id) { logger.debug("[" + getIpAddr() + "] MouldPatchController::findById"); UserMouldVideo mouldVideo = userMouldVideoService.getById(id); if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); } if(mouldVideo.getPersonMouldId() != null){ mouldVideo.setPersonMould(mouldPatchService.getDetailById(mouldVideo.getPersonMouldId())); } if(mouldVideo.getVoiceMouldId() != null){ mouldVideo.setVoiceMould(mouldPatchService.getDetailById(mouldVideo.getVoiceMouldId())); } if(mouldVideo.getBackgroundMouldId() != null){ mouldVideo.setBackgroundMould(mouldPatchService.getDetailById(mouldVideo.getBackgroundMouldId())); } return new ResultData(mouldVideo); } @ApiOperation("新增接口") @PostMapping("saveOrUpdate") public ResultData saveOrUpdate(@RequestBody UserMouldVideo record) { logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate"); record.setUserId(getMemberId()); return userMouldVideoService.saveOrUpdate(record); } @ApiOperation("生成视频") @PostMapping("createVideo") public ResultData create(@RequestBody UserMouldVideo record) { logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate"); if(record.getId() == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } UserMouldVideo mouldVideo = userMouldVideoService.getById(record.getId()); if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); } if(StringUtils.isEmpty(mouldVideo.getPaperwork())){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未填写视频文案"); } if(EnumVideoStatus.ing.getCode().equals(mouldVideo.getVideoStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"生成视频中"); } UserMouldVideo mouldVideoUpd = new UserMouldVideo(); mouldVideoUpd.setId(record.getId()); mouldVideoUpd.setVideoStatus(EnumVideoStatus.ing.getCode()); mouldVideoUpd.setCreateVideoDate(new Date()); userMouldVideoService.saveOrUpdate(mouldVideoUpd); userMouldVideoService.createVideo(mouldVideo); return new ResultData(); } @ApiOperation("根据id查询接口") @GetMapping("/findVideo") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findVideo(Long id) { logger.debug("[" + getIpAddr() + "] MouldPatchController::findVideo"); UserMouldVideo userMouldVideo = userMouldVideoService.findVideo(id); return new ResultData(userMouldVideo); } @GetMapping(value = "/videoDetial") @ApiOperation("视频详情") @ApiImplicitParams({ @ApiImplicitParam(name = "videoId", value = "视频编号", dataType = "String", paramType = "query", required = true)}) public ResultData videoDetial(String videoId) { try { VideUploadResult videoDetail = videoFactory.getExcutor(videoType).getVideoDetailWithCache(videoId); return new ResultData(videoDetail); } catch (Exception e) { logger.error(e.getMessage()); return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } } }