Files
FrameTour-BE/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java
2025-05-04 10:51:27 +08:00

105 lines
4.1 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.service.mobile.GoodsService;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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")
@Api(tags = "商品相关接口")
public class AppGoodsController {
@Autowired
private GoodsService goodsService;
@ApiOperation("商品列表")
@PostMapping("/goodsList")
public ApiResponse<List<GoodsPageVO>> goodsList(@RequestBody GoodsReqQuery query) {
return goodsService.goodsList(query);
}
@ApiOperation("源素材(原片/照片)商品列表")
@PostMapping("/sourceGoodsList")
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@RequestBody GoodsReqQuery query) {
List<GoodsDetailVO> goodsDetailVOS = goodsService.sourceGoodsList(query);
return ApiResponse.success(goodsDetailVOS);
}
@ApiOperation("源素材(原片/照片)商品数量")
@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);
}
@ApiOperation("成片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 合成成功
*/
@ApiOperation("查询用户当前景区的整体视频合成任务状态 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 合成成功
*/
@ApiOperation("查询用户当前景区的具体模版视频合成任务状态 1 合成中 2 合成成功 ")
@GetMapping("/task/face/{faceId}/template/{templateId}")
public ApiResponse<VideoTaskStatusVO> getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) {
JwtInfo worker = JwtTokenUtil.getWorker();
return ApiResponse.success(goodsService.getTaskStatusByTemplateId(faceId, templateId));
}
}