diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java index 1a4ba27..8ffbf29 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppGoodsController.java @@ -1,10 +1,7 @@ package com.ycwl.basic.controller.mobile; import com.ycwl.basic.model.jwt.JwtInfo; -import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; -import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq; -import com.ycwl.basic.model.mobile.goods.GoodsReqQuery; -import com.ycwl.basic.model.mobile.goods.GoodsPageVO; +import com.ycwl.basic.model.mobile.goods.*; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.utils.ApiResponse; @@ -44,7 +41,7 @@ public class AppGoodsController { @ApiOperation("成片vlog商品详情") @GetMapping("/getVideoGoodsDetail/{goodId}") - public ApiResponse videoGoodsDetail(@PathVariable("goodId") Long goodsId) { + public ApiResponse videoGoodsDetail(@PathVariable("goodId") Long goodsId) { return goodsService.videoGoodsDetail(goodsId); } diff --git a/src/main/java/com/ycwl/basic/mapper/pc/DeviceMapper.java b/src/main/java/com/ycwl/basic/mapper/pc/DeviceMapper.java index d496826..86f81df 100644 --- a/src/main/java/com/ycwl/basic/mapper/pc/DeviceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/pc/DeviceMapper.java @@ -6,6 +6,7 @@ import com.ycwl.basic.model.pc.device.req.DeviceAddOrUpdateReq; import com.ycwl.basic.model.pc.device.req.DeviceReqQuery; import com.ycwl.basic.model.pc.device.resp.DeviceRespVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,5 +26,5 @@ public interface DeviceMapper { List listByScenicId(Long scenicId); - ScenicDeviceCountVO deviceCountByScenicId(Long scenicId, String userId); + ScenicDeviceCountVO deviceCountByScenicId(@Param("scenicId") Long scenicId,@Param("userId") Long userId); } diff --git a/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsDetailVO.java b/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsDetailVO.java index 60d24d0..bf22a23 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsDetailVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsDetailVO.java @@ -39,4 +39,8 @@ public class GoodsDetailVO { private String videoUrl; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; + @ApiModelProperty("价格") + private BigDecimal price; + @ApiModelProperty("是否已购买 0否 1是") + private Integer isBuy; } diff --git a/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java b/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java new file mode 100644 index 0000000..2cf15be --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/mobile/goods/VideoGoodsDetailVO.java @@ -0,0 +1,48 @@ +package com.ycwl.basic.model.mobile.goods; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/12/5 15:10 + */ +@Data +@ApiModel("vlog商品详情") +public class VideoGoodsDetailVO { + @ApiModelProperty("商品名称") + private String goodsName; + @ApiModelProperty("景区id") + private Long scenicId; + @ApiModelProperty("景区名称") + private String scenicName; + @ApiModelProperty("经度") + private BigDecimal longitude; + @ApiModelProperty("纬度") + private BigDecimal latitude; + @ApiModelProperty("商品类型 1:成片视频 2:源素材") + private Integer goodsType; + @ApiModelProperty("源素材类型 1:视频 2:图片") + private Integer sourceType; + @ApiModelProperty("商品id goodsType=1时为videoId,goodsType=2时为sourceId") + private Long goodsId; + @ApiModelProperty("模版封面图片") + private String templateCoverUrl; + @ApiModelProperty("图片文件存储地址") + private String url; + @ApiModelProperty("视频文件存储地址") + private String videoUrl; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @ApiModelProperty("价格") + private BigDecimal price; + @ApiModelProperty("是否已购买 0否 1是") + private Integer isBuy; + @ApiModelProperty("镜头数") + private Integer lensNum; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java index 57a9df8..1e790a6 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java @@ -19,6 +19,8 @@ public class OrderItemVO { */ @ApiModelProperty("订单id") private Long orderId; + @ApiModelProperty("商品类型,1成片,2源素材") + private Integer goodsType; /** * 商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id */ diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java index 7da34ab..68afd1d 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/AppScenicServiceImpl.java @@ -72,8 +72,8 @@ public class AppScenicServiceImpl implements AppScenicService { @Override public ApiResponse deviceCountByScenicId(Long scenicId) { - String userId = BaseContextHandler.getUserId(); - ScenicDeviceCountVO scenicDeviceCountVO = deviceMapper.deviceCountByScenicId(scenicId, userId); + JwtInfo worker = JwtTokenUtil.getWorker(); + ScenicDeviceCountVO scenicDeviceCountVO = deviceMapper.deviceCountByScenicId(scenicId, worker.getUserId()); return ApiResponse.success(scenicDeviceCountVO); } diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java index 2313e19..cf4c69a 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/GoodsServiceImpl.java @@ -1,14 +1,9 @@ package com.ycwl.basic.service.impl.mobile; -import com.ycwl.basic.mapper.pc.ScenicMapper; -import com.ycwl.basic.mapper.pc.SourceMapper; -import com.ycwl.basic.mapper.pc.TaskMapper; -import com.ycwl.basic.mapper.pc.VideoMapper; +import com.ycwl.basic.mapper.pc.*; import com.ycwl.basic.model.jwt.JwtInfo; -import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; -import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq; -import com.ycwl.basic.model.mobile.goods.GoodsReqQuery; -import com.ycwl.basic.model.mobile.goods.GoodsPageVO; +import com.ycwl.basic.model.mobile.goods.*; +import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO; import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO; import com.ycwl.basic.model.pc.source.req.SourceReqQuery; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; @@ -39,6 +34,8 @@ public class GoodsServiceImpl implements GoodsService { private ScenicMapper scenicMapper; @Autowired private TaskMapper taskMapper; + @Autowired + private DeviceMapper deviceMapper; public ApiResponse> goodsList(GoodsReqQuery query) { JwtInfo worker = JwtTokenUtil.getWorker(); @@ -171,9 +168,12 @@ public class GoodsServiceImpl implements GoodsService { } @Override - public ApiResponse videoGoodsDetail(Long goodsId) { - GoodsDetailVO goodsDetailVO = new GoodsDetailVO(); + public ApiResponse videoGoodsDetail(Long goodsId) { + VideoGoodsDetailVO goodsDetailVO = new VideoGoodsDetailVO(); VideoRespVO videoRespVO = videoMapper.getById(goodsId); + if(videoRespVO==null){ + return ApiResponse.fail("该vlog不存在或已失效"); + } goodsDetailVO.setGoodsName(videoRespVO.getTemplateName()); goodsDetailVO.setScenicId(videoRespVO.getScenicId()); goodsDetailVO.setScenicName(videoRespVO.getScenicName()); @@ -184,6 +184,10 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setVideoUrl(videoRespVO.getVideoUrl()); goodsDetailVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl()); goodsDetailVO.setCreateTime(videoRespVO.getCreateTime()); + goodsDetailVO.setPrice(videoRespVO.getTemplatePrice()); + goodsDetailVO.setIsBuy(videoRespVO.getIsBuy()); + ScenicDeviceCountVO scenicDeviceCountVO = deviceMapper.deviceCountByScenicId(videoRespVO.getScenicId(), -1L); + goodsDetailVO.setLensNum(scenicDeviceCountVO.getTotalDeviceCount()); return ApiResponse.success(goodsDetailVO); } diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java index a6f4c2b..51ca65e 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java @@ -264,6 +264,7 @@ public class OrderServiceImpl implements OrderService { OrderItemVO itemVO = orderItemList.get(NumberConstant.ZERO); appRespVO.setScenicName(itemVO.getScenicName()); appRespVO.setGoodsName(itemVO.getGoodsName()); + appRespVO.setSourceType(itemVO.getSourceType()); } } PageInfo pageInfo = new PageInfo<>(list); diff --git a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java index b2b85b5..4cf84c9 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/GoodsService.java @@ -1,9 +1,6 @@ package com.ycwl.basic.service.mobile; -import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; -import com.ycwl.basic.model.mobile.goods.GoodsPriceQueryReq; -import com.ycwl.basic.model.mobile.goods.GoodsReqQuery; -import com.ycwl.basic.model.mobile.goods.GoodsPageVO; +import com.ycwl.basic.model.mobile.goods.*; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import com.ycwl.basic.utils.ApiResponse; @@ -42,7 +39,7 @@ public interface GoodsService { * @param goodsId 商品(vlog)id * @return */ - ApiResponse videoGoodsDetail(Long goodsId); + ApiResponse videoGoodsDetail(Long goodsId); /** * 查询当前用户的成片合成任务状态 diff --git a/src/main/resources/mapper/pc/DeviceMapper.xml b/src/main/resources/mapper/pc/DeviceMapper.xml index 59de37b..d805506 100644 --- a/src/main/resources/mapper/pc/DeviceMapper.xml +++ b/src/main/resources/mapper/pc/DeviceMapper.xml @@ -68,7 +68,7 @@ left join ( select count(1) shotDeviceCount,scenic_id from source - where scenic_id = #{scenicId} + where scenic_id = #{scenicId} and member_id=#{userId} group by device_id )b on a.scenic_id = b.scenic_id diff --git a/src/main/resources/mapper/pc/OrderMapper.xml b/src/main/resources/mapper/pc/OrderMapper.xml index d0322f6..e5873a6 100644 --- a/src/main/resources/mapper/pc/OrderMapper.xml +++ b/src/main/resources/mapper/pc/OrderMapper.xml @@ -47,9 +47,9 @@ - + - + @@ -58,14 +58,29 @@ + + insert into `order`(id, member_id, openid,price, pay_price, remark, broker_id, promo_code,goods_type,scenic_id) VALUES (#{id}, #{memberId}, #{openid},#{price}, #{payPrice}, #{remark}, #{brokerId}, #{promoCode},#{goodsType},#{scenicId}) - insert into order_item(id, order_id, goods_id) VALUES + insert into order_item(id, order_id,goods_type, goods_id) VALUES - (#{item.id}, #{item.orderId}, #{item.goodsId}) + (#{item.id}, #{item.orderId}, #{item.goodsType},#{item.goodsId}) @@ -107,7 +122,7 @@