diff --git a/src/main/java/com/ycwl/basic/mapper/OrderMapper.java b/src/main/java/com/ycwl/basic/mapper/OrderMapper.java index 404f725..2ac7d42 100644 --- a/src/main/java/com/ycwl/basic/mapper/OrderMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/OrderMapper.java @@ -38,4 +38,6 @@ public interface OrderMapper { OrderAppRespVO appDetail(Long id); List refundList(OrderReqQuery query); + + List listOrderItemByOrderId(Long orderId); } diff --git a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java index 1349c8b..887553b 100644 --- a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java @@ -51,4 +51,8 @@ public interface SourceMapper { List listUser(SourceReqQuery sourceReqQuery); int addRelations(List list); + + int updateRelation(MemberSourceEntity memberSourceEntity); + + List queryByRelation(SourceReqQuery sourceReqQuery); } diff --git a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java index 6c466dd..22e57e0 100644 --- a/src/main/java/com/ycwl/basic/mapper/VideoMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/VideoMapper.java @@ -1,8 +1,6 @@ package com.ycwl.basic.mapper; -import com.ycwl.basic.model.pc.template.entity.TemplateEntity; -import com.ycwl.basic.model.pc.template.req.TemplateReqQuery; -import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; +import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity; import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.req.VideoReqQuery; import com.ycwl.basic.model.pc.video.resp.VideoRespVO; @@ -25,4 +23,11 @@ public interface VideoMapper { int update(VideoEntity task); VideoEntity findByTaskId(@NonNull Long taskId); + + + int addRelation(MemberVideoEntity source); + int addRelations(List list); + int updateRelation(MemberVideoEntity memberVideoEntity); + + List queryByRelation(VideoReqQuery videoReqQuery); } diff --git a/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsPageVO.java b/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsPageVO.java index 9952d3c..d770661 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsPageVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/goods/GoodsPageVO.java @@ -19,10 +19,6 @@ public class GoodsPageVO { private Long scenicId; @ApiModelProperty("景区名称") private String scenicName; - @ApiModelProperty("经度") - private BigDecimal longitude; - @ApiModelProperty("纬度") - private BigDecimal latitude; @ApiModelProperty("商品类型 1:成片视频 2:源素材") private Integer goodsType; @ApiModelProperty("源素材类型 1:视频 2:图片") diff --git a/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicDeviceCountVO.java b/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicDeviceCountVO.java index 74c5278..951e376 100644 --- a/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicDeviceCountVO.java +++ b/src/main/java/com/ycwl/basic/model/mobile/scenic/ScenicDeviceCountVO.java @@ -13,6 +13,4 @@ import lombok.Data; public class ScenicDeviceCountVO { @ApiModelProperty("景区设备总数") private Integer totalDeviceCount; - @ApiModelProperty("拍摄到用户的设备数量") - private Integer shotDeviceCount; } diff --git a/src/main/java/com/ycwl/basic/model/pc/source/entity/MemberSourceEntity.java b/src/main/java/com/ycwl/basic/model/pc/source/entity/MemberSourceEntity.java index 3ec4132..70a7072 100644 --- a/src/main/java/com/ycwl/basic/model/pc/source/entity/MemberSourceEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/source/entity/MemberSourceEntity.java @@ -11,4 +11,5 @@ public class MemberSourceEntity { private Integer type; private Long sourceId; private Integer isBuy; + private Long orderId; } 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 0ff626a..d332207 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 @@ -35,11 +35,6 @@ public class SourceRespVO { */ @ApiModelProperty("来源设备id") private Long deviceId; - /** - * 所属用户 - */ - @ApiModelProperty("所属用户") - private Long memberId; @ApiModelProperty("原素材类型:1视频,2图像") private Integer type; /** diff --git a/src/main/java/com/ycwl/basic/model/pc/video/entity/MemberVideoEntity.java b/src/main/java/com/ycwl/basic/model/pc/video/entity/MemberVideoEntity.java new file mode 100644 index 0000000..c2d5866 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/video/entity/MemberVideoEntity.java @@ -0,0 +1,13 @@ +package com.ycwl.basic.model.pc.video.entity; + +import lombok.Data; + +@Data +public class MemberVideoEntity { + private Long id; + private Long memberId; + private Long taskId; + private Long videoId; + private Integer isBuy; + private Long orderId; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/video/resp/VideoRespVO.java b/src/main/java/com/ycwl/basic/model/pc/video/resp/VideoRespVO.java index b464ab3..e210065 100644 --- a/src/main/java/com/ycwl/basic/model/pc/video/resp/VideoRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/video/resp/VideoRespVO.java @@ -41,10 +41,6 @@ public class VideoRespVO { private BigDecimal slashPrice; @ApiModelProperty("模版封面图片") private String templateCoverUrl; - @ApiModelProperty("经度") - private BigDecimal longitude; - @ApiModelProperty("纬度") - private BigDecimal latitude; /** * 任务id */ 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 080a0c5..7bbc36b 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 @@ -26,6 +26,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** * @Author:longbinbin @@ -54,14 +55,12 @@ public class GoodsServiceImpl implements GoodsService { videoReqQuery.setIsBuy(query.getIsBuy()); videoReqQuery.setMemberId(Long.valueOf(BaseContextHandler.getUserId())); //查询成片vlog - List videoList = videoMapper.list(videoReqQuery); + List videoList = videoMapper.queryByRelation(videoReqQuery); videoList.forEach(videoRespVO -> { GoodsPageVO goodsPageVO = new GoodsPageVO(); goodsPageVO.setGoodsName(videoRespVO.getTemplateName()); goodsPageVO.setScenicId(videoRespVO.getScenicId()); goodsPageVO.setScenicName(videoRespVO.getScenicName()); - goodsPageVO.setLongitude(videoRespVO.getLongitude()); - goodsPageVO.setLatitude(videoRespVO.getLatitude()); goodsPageVO.setGoodsType(1); goodsPageVO.setGoodsId(videoRespVO.getId()); goodsPageVO.setTemplateName(videoRespVO.getTemplateName()); @@ -73,21 +72,17 @@ public class GoodsServiceImpl implements GoodsService { SourceReqQuery sourceReqQuery = new SourceReqQuery(); sourceReqQuery.setScenicId(query.getScenicId()); sourceReqQuery.setIsBuy(query.getIsBuy()); - sourceReqQuery.setMemberId(query.getMemberId()); + sourceReqQuery.setMemberId(Long.valueOf(BaseContextHandler.getUserId())); //查询源素材 - List sourceList = sourceMapper.listGroupByType(sourceReqQuery); - sourceList.forEach(sourceRespVO -> { + List sourceList = sourceMapper.queryByRelation(sourceReqQuery); + sourceList.stream().collect(Collectors.groupingBy(SourceRespVO::getType)).forEach((type, value) -> { GoodsPageVO goodsPageVO = new GoodsPageVO(); - Integer type = sourceRespVO.getType(); - if(type==1){ + if (type == 1) { goodsPageVO.setGoodsName("原片集"); - }else { + } else { goodsPageVO.setGoodsName("照片集"); } - goodsPageVO.setScenicId(sourceRespVO.getScenicId()); - goodsPageVO.setScenicName(sourceRespVO.getScenicName()); - goodsPageVO.setLongitude(sourceRespVO.getLongitude()); - goodsPageVO.setLatitude(sourceRespVO.getLatitude()); + goodsPageVO.setScenicId(query.getScenicId()); goodsPageVO.setGoodsType(2); goodsPageVO.setSourceType(type); goodsList.add(goodsPageVO); @@ -187,8 +182,6 @@ public class GoodsServiceImpl implements GoodsService { goodsDetailVO.setGoodsName(videoRespVO.getTemplateName()); goodsDetailVO.setScenicId(videoRespVO.getScenicId()); goodsDetailVO.setScenicName(videoRespVO.getScenicName()); - goodsDetailVO.setLongitude(videoRespVO.getLongitude()); - goodsDetailVO.setLatitude(videoRespVO.getLatitude()); goodsDetailVO.setGoodsType(1); goodsDetailVO.setGoodsId(videoRespVO.getId()); goodsDetailVO.setVideoUrl(videoRespVO.getVideoUrl()); diff --git a/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java index 6b56557..987bc4b 100644 --- a/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/mobile/WxPayServiceImpl.java @@ -27,11 +27,17 @@ import com.ycwl.basic.enums.BizCodeEnum; import com.ycwl.basic.enums.OrderStateEnum; import com.ycwl.basic.enums.StatisticEnum; import com.ycwl.basic.exception.AppException; +import com.ycwl.basic.mapper.OrderMapper; import com.ycwl.basic.mapper.PaymentMapper; +import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.mapper.StatisticsMapper; +import com.ycwl.basic.mapper.VideoMapper; import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq; +import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.model.pc.payment.entity.PaymentEntity; +import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity; +import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity; import com.ycwl.basic.model.wx.WXPayOrderReqVO; import com.ycwl.basic.model.wx.WxPayRespVO; import com.ycwl.basic.model.wx.WxchatCallbackSuccessData; @@ -88,6 +94,12 @@ public class WxPayServiceImpl implements WxPayService { private PaymentMapper paymentMapper; @Autowired private StatisticsMapper statisticsMapper; + @Autowired + private OrderMapper orderMapper; + @Autowired + private SourceMapper sourceMapper; + @Autowired + private VideoMapper videoMapper; @Override public WxPayRespVO createOrder(WXPayOrderReqVO req) { @@ -196,7 +208,31 @@ public class WxPayServiceImpl implements WxPayService { }catch (Exception e) { log.error("[微信支付回调]更新订单状态失败", e); } - + OrderRespVO byId = orderMapper.getById(orderId); + List orderItemList = orderMapper.listOrderItemByOrderId(orderId); + orderItemList.forEach(orderItemVO -> { + switch (orderItemVO.getGoodsType()) { + case 1: // 成片 + MemberVideoEntity memberVideoEntity = new MemberVideoEntity(); + memberVideoEntity.setMemberId(byId.getMemberId()); + memberVideoEntity.setVideoId(orderItemVO.getGoodsId()); + memberVideoEntity.setIsBuy(1); + memberVideoEntity.setOrderId(orderId); + videoMapper.updateRelation(memberVideoEntity); + break; + case 2: // 源素材 + MemberSourceEntity memberSourceEntity = new MemberSourceEntity(); + memberSourceEntity.setMemberId(byId.getMemberId()); + memberSourceEntity.setSourceId(orderItemVO.getGoodsId()); + memberSourceEntity.setType(orderItemVO.getGoodsType()); + memberSourceEntity.setIsBuy(1); + memberSourceEntity.setOrderId(orderId); + sourceMapper.updateRelation(memberSourceEntity); + break; + default: + break; + } + }); } }).start(); 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 bbb6ba4..0965f99 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 @@ -128,19 +128,6 @@ public class OrderServiceImpl implements OrderService { orderItemEntity.setGoodsType(goodsType); orderItemEntity.setGoodsId(goodsId); orderItems.add(orderItemEntity); - - //修改商品状态 -// if (Objects.equals(goodsType, GoodsTypeEnum.VIDEO.code)) { -// VideoEntity videoEntity = new VideoEntity(); -// videoEntity.setId(goodsId); -// videoEntity.setIsBuy(1); -// videoMapper.update(videoEntity); -// }else if (Objects.equals(goodsType, GoodsTypeEnum.SOURCE.code)) { -// SourceEntity sourceEntity = new SourceEntity(); -// sourceEntity.setId(goodsId); -// sourceEntity.setIsBuy(1); -// sourceMapper.update(sourceEntity); -// } }); int addOrderItems = orderMapper.addOrderItems(orderItems); if (addOrderItems == NumberConstant.ZERO) { diff --git a/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java index be2084d..0e531f6 100644 --- a/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/task/TaskTaskServiceImpl.java @@ -17,6 +17,7 @@ import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import com.ycwl.basic.model.pc.task.entity.TaskEntity; import com.ycwl.basic.model.pc.task.req.TaskReqQuery; import com.ycwl.basic.model.pc.task.resp.TaskRespVO; +import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity; import com.ycwl.basic.model.pc.template.entity.TemplateEntity; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.video.entity.VideoEntity; @@ -130,6 +131,7 @@ public class TaskTaskServiceImpl implements TaskService { if (faceId == null) { return; } + TemplateConfigEntity config = templateMapper.getConfig(templateId); FaceRespVO faceRespVO = faceMapper.getById(faceId); if (faceRespVO == null) { return; @@ -141,6 +143,11 @@ public class TaskTaskServiceImpl implements TaskService { .map(FaceSampleRespVO::getSourceId) .map(sourceId -> sourceMapper.getById(sourceId)) .collect(Collectors.groupingBy(item -> item.getDeviceId().toString())); + if (config != null) { + if (config.getMinimalPlaceholderFill() > sourcesMap.size()) { + throw new RuntimeException("请先游玩后在来生成吧~"); + } + } TaskEntity taskEntity = new TaskEntity(); taskEntity.setId(SnowFlakeUtil.getLongId()); taskEntity.setFaceId(faceId); diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml index 77c987f..4b2ffb8 100644 --- a/src/main/resources/mapper/DeviceMapper.xml +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -88,18 +88,9 @@ where d.scenic_id = #{scenicId} + \ No newline at end of file diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index 8061a49..6aca4c3 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -6,14 +6,14 @@ values (#{id}, #{scenicId}, #{deviceId}, #{url}, #{videoUrl}, #{type}, #{faceSampleId}, #{posJson}) - replace member_source(member_id, source_id, is_buy, type) - values (#{memberId}, #{sourceId}, #{isBuy}, #{type}) + replace member_source(member_id, source_id, is_buy, type, order_id) + values (#{memberId}, #{sourceId}, #{isBuy}, #{type}, #{orderId}) - replace member_source(member_id, source_id, is_buy, type) + replace member_source(member_id, source_id, is_buy, type, order_id) values - (#{item.memberId}, #{item.sourceId}, #{item.isBuy}, #{item.type}) + (#{item.memberId}, #{item.sourceId}, #{item.isBuy}, #{item.type}, #{orderId}) @@ -30,12 +30,20 @@ where id = #{id} + + update member_source + + is_buy = #{isBuy}, + order_id = #{orderId}, + + where member_id = #{memberId} and source_id = #{sourceId} and type = #{type} + delete from source where id = #{id} + diff --git a/src/main/resources/mapper/VideoMapper.xml b/src/main/resources/mapper/VideoMapper.xml index abf7881..5709874 100644 --- a/src/main/resources/mapper/VideoMapper.xml +++ b/src/main/resources/mapper/VideoMapper.xml @@ -5,6 +5,17 @@ insert into video(id, scenic_id, member_id, template_id, task_id, worker_id, video_url) values (#{id}, #{scenicId}, #{memberId}, #{templateId}, #{taskId}, #{workerId}, #{videoUrl}) + + replace member_video(member_id, task_id, video_id, is_buy, order_id) + values (#{memberId}, #{taskId}, #{videoId}, #{isBuy}, #{orderId}) + + + replace member_video(member_id, task_id, video_id, is_buy, order_id) + values + + (#{item.memberId}, #{item.taskId}, #{item.videoId}, #{item.isBuy}, #{orderId}) + + update video @@ -18,6 +29,14 @@ where id = #{id} + + update member_video + + is_buy = #{isBuy}, + order_id = #{orderId}, + + where member_id = #{memberId} and video_id = #{videoId} + delete from video where id = #{id} @@ -60,4 +79,27 @@ + \ No newline at end of file