Files
FrameTour-BE/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java
Jerry Yan 00890c764e feat(basic): 添加模板片段更新状态缓存支持
- 在FaceStatusManager中新增按模板ID区分的人脸片段更新状态缓存键
- 更新TaskTaskServiceImpl以设置模板渲染状态
- 在任务回调逻辑中增加对模板渲染状态的更新操作
- 修改任务删除逻辑为更新状态加10的临时解决方案
- 移除旧有的切割任务状态更新逻辑,统一使用模板渲染状态管理
2025-12-17 15:49:24 +08:00

122 lines
4.7 KiB
Java

package com.ycwl.basic.controller.mobile;
import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.exception.CheckTokenException;
import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.mobile.goods.*;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author:longbinbin
* @Date:2024/12/5 14:49
* 成片(video)和源素材(source)都可作为商品,订单中可购买多个
*/
@RestController
@RequestMapping("/api/mobile/goods/v1")
// 商品相关接口
public class AppGoodsController {
@Autowired
private GoodsService goodsService;
@Autowired
private FaceService faceService;
// 商品列表
@PostMapping("/goodsList")
public ApiResponse<List<GoodsPageVO>> goodsList(@RequestBody GoodsReqQuery query) {
JwtInfo worker = JwtTokenUtil.getWorker();
Long userId = worker.getUserId();
List<FaceRespVO> faceRespVOS = faceService.listByUser(userId, query.getScenicId());
List<Long> faceIds = faceRespVOS.stream().map(FaceRespVO::getId).toList();
return goodsService.listGoodsByFaceIdList(faceIds, query.getIsBuy(), query.getScenicId());
}
// 源素材(原片/照片)商品列表
@PostMapping("/sourceGoodsList")
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) {
List<GoodsDetailVO> goodsDetailVOS = goodsService.sourceGoodsList(query);
return ApiResponse.success(goodsDetailVOS);
}
// 源素材(原片/照片)商品数量
@PostMapping("/sourceGoodsCount")
public ApiResponse<Integer> sourceGoodsCount(@RequestBody GoodsReqQuery query) {
Integer count = goodsService.sourceGoodsCount(query);
return ApiResponse.success(count);
}
@PostMapping("/sourceGoodsList/preview")
public ApiResponse<List<GoodsUrlVO>> sourceGoodsListPreview(@RequestBody GoodsReqQuery query) {
List<GoodsUrlVO> goodsUrlList = goodsService.sourceGoodsListPreview(query);
return ApiResponse.success(goodsUrlList);
}
@PostMapping("/sourceGoodsList/download")
public ApiResponse<List<GoodsUrlVO>> sourceGoodsListDownload(@RequestBody GoodsReqQuery query) {
List<GoodsUrlVO> goodsUrlList = goodsService.sourceGoodsListDownload(query);
return ApiResponse.success(goodsUrlList);
}
// 成片vlog商品详情
@GetMapping("/getVideoGoodsDetail/{videoId}")
@IgnoreToken
public ApiResponse<VideoGoodsDetailVO> videoGoodsDetail(@PathVariable("videoId") Long videoId) {
try {
JwtInfo worker = JwtTokenUtil.getWorker();
return goodsService.videoGoodsDetail(worker.getUserId(), videoId);
} catch (CheckTokenException e) {
return goodsService.videoGoodsDetail(null, videoId);
}
}
@GetMapping("/sourceGoods/{sourceId}")
public ApiResponse<GoodsDetailVO> sourceGoodsInfo(@PathVariable("sourceId") Long sourceId) {
return goodsService.sourceGoodsInfo(sourceId);
}
/**
* 查询用户当前景区的视频合成任务状态
*
* @return 0没有任务 1 合成中 2 合成成功
*/
// 查询用户当前景区的整体视频合成任务状态 0没有任务 1 合成中 2 合成成功
@GetMapping("/getTaskStatus/")
public ApiResponse<VideoTaskStatusVO> getAllTaskStatus() {
JwtInfo worker = JwtTokenUtil.getWorker();
return ApiResponse.success(goodsService.getAllTaskStatus(worker.getUserId()));
}
/**
* 查询用户当前景区的具体模版视频合成任务状态
*
* @param templateId 模版id
* @return 1 合成中 2 合成成功
*/
// 查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功
@GetMapping("/task/face/{faceId}/template/{templateId}")
public ApiResponse<VideoTaskStatusVO> getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) {
return ApiResponse.success(goodsService.getTaskStatusByTemplateId(faceId, templateId));
}
/**
* 检查视频是否可更新
*
* @param videoId 视频ID
* @return 视频更新检查结果
*/
@GetMapping("/video/{videoId}/updateCheck")
public ApiResponse<VideoUpdateCheckVO> checkVideoUpdate(@PathVariable("videoId") Long videoId) {
VideoUpdateCheckVO result = goodsService.checkVideoUpdate(videoId);
return ApiResponse.success(result);
}
}