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 d9e58d9..ac6bb4f 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 @@ -3,7 +3,9 @@ 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.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.util.Date; @@ -21,14 +23,8 @@ public class GoodsDetailVO { 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("模版封面图片") @@ -44,4 +40,8 @@ public class GoodsDetailVO { @ApiModelProperty("是否已购买 0否 1是") private Integer isBuy; private Integer isFree; + private Integer parts; + public Integer getSourceType() { + return goodsType; + } } diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java index deae348..7469406 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderRespVO.java @@ -1,6 +1,7 @@ package com.ycwl.basic.model.pc.order.resp; import com.fasterxml.jackson.annotation.JsonFormat; +import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -111,6 +112,7 @@ public class OrderRespVO { private List orderItemList; private Long scenicId; private String scenicName; + private List goodsList; public BigDecimal getDiscountPrice() { if (slashPrice == null) { diff --git a/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java b/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java index 26d1097..90572c6 100644 --- a/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/source/resp/SourceRespVO.java @@ -26,10 +26,6 @@ public class SourceRespVO { private Long scenicId; @ApiModelProperty("景区名称") private String scenicName; - @ApiModelProperty("经度") - private BigDecimal longitude; - @ApiModelProperty("纬度") - private BigDecimal latitude; /** * 来源设备id */ diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java index 80ad5c6..5574950 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java @@ -198,10 +198,7 @@ public class GoodsServiceImpl implements GoodsService { } goodsDetailVO.setScenicId(sourceRespVO.getScenicId()); goodsDetailVO.setScenicName(sourceRespVO.getScenicName()); - goodsDetailVO.setLongitude(sourceRespVO.getLongitude()); - goodsDetailVO.setLatitude(sourceRespVO.getLatitude()); goodsDetailVO.setGoodsType(sourceType); - goodsDetailVO.setSourceType(sourceType); goodsDetailVO.setGoodsId(sourceRespVO.getId()); if (sourceRespVO.getVideoUrl() != null) { try { diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java index 8caf9e0..f92a874 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java @@ -1,5 +1,7 @@ package com.ycwl.basic.service.pc.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ycwl.basic.biz.CouponBiz; @@ -10,6 +12,7 @@ import com.ycwl.basic.constant.NumberConstant; import com.ycwl.basic.enums.*; import com.ycwl.basic.exception.AppException; import com.ycwl.basic.mapper.*; +import com.ycwl.basic.model.mobile.goods.GoodsDetailVO; import com.ycwl.basic.model.mobile.order.IsBuyRespVO; import com.ycwl.basic.model.mobile.order.OrderAppPageReq; import com.ycwl.basic.model.mobile.order.PriceObj; @@ -31,18 +34,22 @@ import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity; import com.ycwl.basic.model.pc.price.resp.GoodsListRespVO; import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.pc.task.entity.TaskEntity; +import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.wx.WXPayOrderReqVO; import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.PriceRepository; +import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.repository.VideoRepository; import com.ycwl.basic.repository.VideoTaskRepository; import com.ycwl.basic.service.mobile.WxPayService; import com.ycwl.basic.service.pc.OrderService; +import com.ycwl.basic.service.task.impl.TaskTaskServiceImpl; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.BigDecimalUtil; import com.ycwl.basic.utils.SnowFlakeUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -90,6 +97,10 @@ public class OrderServiceImpl implements OrderService { private FaceRepository faceRepository; @Autowired private CouponBiz couponBiz; + @Autowired + private TemplateRepository templateRepository; + @Autowired + private TaskTaskServiceImpl taskTaskService; @Override public ApiResponse> pageQuery(OrderReqQuery query) { @@ -141,28 +152,84 @@ public class OrderServiceImpl implements OrderService { public ApiResponse detail(Long orderId) { OrderRespVO byId = orderMapper.getById(orderId); List orderItemList = byId.getOrderItemList(); + List goodsList = new ArrayList<>(); + List _f = new ArrayList<>(); orderItemList.forEach(item -> { if (Integer.valueOf(1).equals(item.getGoodsType())) { // 原片 goodsId就是人脸ID List memberVideoEntityList = sourceMapper.listVideoByFaceRelation(byId.getMemberId(), item.getGoodsId()); item.setCoverList(memberVideoEntityList.stream().map(SourceEntity::getUrl).collect(Collectors.toList())); - if (!memberVideoEntityList.isEmpty()) { + if (!_f.contains(1)) { + _f.add(1); + if (!memberVideoEntityList.isEmpty()) { + for (SourceEntity sourceEntity : memberVideoEntityList) { + GoodsDetailVO goods = new GoodsDetailVO(); + goods.setGoodsId(sourceEntity.getId()); + goods.setGoodsName("录像集录像"); + goods.setUrl(sourceEntity.getUrl()); + goods.setGoodsType(sourceEntity.getType()); + goods.setScenicId(sourceEntity.getScenicId()); + goods.setUrl(sourceEntity.getVideoUrl()); + goods.setTemplateCoverUrl(sourceEntity.getUrl()); + goods.setCreateTime(sourceEntity.getCreateTime()); + goodsList.add(goods); + } + } item.setShootingTime(memberVideoEntityList.get(0).getCreateTime()); } } else if (Integer.valueOf(2).equals(item.getGoodsType())) { // 照片 goodsId就是人脸ID List memberVideoEntityList = sourceMapper.listImageByFaceRelation(byId.getMemberId(), item.getGoodsId()); item.setCoverList(memberVideoEntityList.stream().map(SourceEntity::getUrl).collect(Collectors.toList())); - if (!memberVideoEntityList.isEmpty()) { + if (!_f.contains(2)) { + _f.add(2); + if (!memberVideoEntityList.isEmpty()) { + for (SourceEntity sourceEntity : memberVideoEntityList) { + GoodsDetailVO goods = new GoodsDetailVO(); + goods.setGoodsId(sourceEntity.getId()); + goods.setGoodsName("照片集照片"); + goods.setUrl(sourceEntity.getUrl()); + goods.setGoodsType(sourceEntity.getType()); + goods.setScenicId(sourceEntity.getScenicId()); + goods.setUrl(sourceEntity.getUrl()); + goods.setTemplateCoverUrl(sourceEntity.getUrl()); + goods.setScenicId(sourceEntity.getScenicId()); + goods.setCreateTime(sourceEntity.getCreateTime()); + goodsList.add(goods); + } + } item.setShootingTime(memberVideoEntityList.get(0).getCreateTime()); } } else { item.setCoverList(Collections.singletonList(item.getCoverUrl())); - VideoEntity videoMapperById = videoRepository.getVideoByTaskId(item.getGoodsId()); + VideoEntity videoMapperById = videoRepository.getVideo(item.getGoodsId()); if (videoMapperById != null) { + TaskEntity task = videoTaskRepository.getTaskById(videoMapperById.getTaskId()); + TemplateRespVO template = templateRepository.getTemplate(videoMapperById.getTemplateId()); + GoodsDetailVO goods = new GoodsDetailVO(); + goods.setGoodsId(videoMapperById.getId()); + goods.setGoodsName(template.getName()); + goods.setUrl(videoMapperById.getVideoUrl()); + goods.setGoodsType(0); + goods.setTemplateCoverUrl(template.getCoverUrl()); + long deviceCount; + if (task.getTaskParams() == null) { + deviceCount = 1; + } else { + JSONObject paramJson = JSON.parseObject(task.getTaskParams()); + List templatePlaceholder = templateRepository.getTemplatePlaceholder(task.getTemplateId()); + deviceCount = paramJson.keySet().stream() + .filter(StringUtils::isNumeric) + .filter(templatePlaceholder::contains) + .count(); + } + goods.setCreateTime(videoTaskRepository.getTaskShotDate(task.getId())); + goods.setParts(Math.toIntExact(deviceCount)); + goodsList.add(goods); item.setShootingTime(videoTaskRepository.getTaskShotDate(videoMapperById.getTaskId())); item.setVideoUrl(videoMapperById.getVideoUrl()); } } }); + byId.setGoodsList(goodsList); return ApiResponse.success(byId); }