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> goodsList(@RequestBody GoodsReqQuery query) { return goodsService.goodsList(query); } @ApiOperation("源素材(原片/照片)商品列表") @PostMapping("/sourceGoodsList") public ApiResponse> sourceGoodsList(@RequestBody GoodsReqQuery query) { List goodsDetailVOS = goodsService.sourceGoodsList(query); return ApiResponse.success(goodsDetailVOS); } @ApiOperation("源素材(原片/照片)商品数量") @PostMapping("/sourceGoodsCount") public ApiResponse sourceGoodsCount(@RequestBody GoodsReqQuery query) { Integer count = goodsService.sourceGoodsCount(query); return ApiResponse.success(count); } @PostMapping("/sourceGoodsList/preview") public ApiResponse> sourceGoodsListPreview(@RequestBody GoodsReqQuery query) { List goodsUrlList = goodsService.sourceGoodsListPreview(query); return ApiResponse.success(goodsUrlList); } @PostMapping("/sourceGoodsList/download") public ApiResponse> sourceGoodsListDownload(@RequestBody GoodsReqQuery query) { List goodsUrlList = goodsService.sourceGoodsListDownload(query); return ApiResponse.success(goodsUrlList); } @ApiOperation("成片vlog商品详情") @GetMapping("/getVideoGoodsDetail/{videoId}") @IgnoreToken public ApiResponse 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 sourceGoodsInfo(@PathVariable("sourceId") Long sourceId) { return goodsService.sourceGoodsInfo(sourceId); } /** * 查询用户当前景区的视频合成任务状态 * * @return 0没有任务 1 合成中 2 合成成功 */ @ApiOperation("查询用户当前景区的整体视频合成任务状态 0没有任务 1 合成中 2 合成成功 ") @GetMapping("/getTaskStatus/") public ApiResponse 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 getTemplateTaskStatus(@PathVariable("faceId") Long faceId, @PathVariable("templateId") Long templateId) { JwtInfo worker = JwtTokenUtil.getWorker(); return ApiResponse.success(goodsService.getTaskStatusByTemplateId(faceId, templateId)); } }