|
@@ -1,5 +1,6 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -20,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.PaymentDivMemberRecordWrapper;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponOrderWrapper;
|
|
|
import com.yonge.cooleshow.common.constant.SysConfigConstant;
|
|
@@ -65,6 +67,7 @@ import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.function.Consumer;
|
|
|
import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
@@ -129,6 +132,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
@Autowired
|
|
|
private UserPaymentOrderService userPaymentOrderService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserOrderDetailService userOrderDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserService sysUserService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MusicAlbumService musicAlbumService;
|
|
|
+
|
|
|
//验证订单是否可以下单,获取订单金额信息
|
|
|
private static final Map<GoodTypeEnum, Function<OrderReq.OrderReqInfo, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>();
|
|
|
//插入订单后执行
|
|
@@ -240,6 +252,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
.amount(userOrderVo.getExpectPrice().doubleValue())
|
|
|
.build());
|
|
|
userOrderVo.setDiscountPrice(BigDecimal.valueOf(couponOrderWrapper.getDiscountedPrices()));
|
|
|
+
|
|
|
+ List<UserOrderDetailVo> userOrderDetailVos = getUserOrderDetailVos(Lists.newArrayList(userOrderVo.getOrderNo()));
|
|
|
+ userOrderVo.setOrderDetailList(userOrderDetailVos);
|
|
|
}
|
|
|
return userOrderVo;
|
|
|
}
|
|
@@ -348,10 +363,105 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 订单ID集合
|
|
|
+ List<String> orderNos = records.stream().map(UserOrder::getOrderNo).collect(Collectors.toList());
|
|
|
+ List<UserOrderDetailVo> detailVoList = getUserOrderDetailVos(orderNos);
|
|
|
+
|
|
|
+ // id分组
|
|
|
+ Map<String, List<UserOrderDetailVo>> map = detailVoList.stream().collect(Collectors.groupingBy(o -> o.getOrderNo()));
|
|
|
+
|
|
|
+ for (UserOrderVo record : records) {
|
|
|
+ List<UserOrderDetailVo> userOrderDetailVos = map.get(record.getOrderNo());
|
|
|
+ record.setOrderDetailList(userOrderDetailVos);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
return userOrderVoIPage;
|
|
|
}
|
|
|
|
|
|
+ private List<UserOrderDetailVo> getUserOrderDetailVos(List<String> orderNos) {
|
|
|
+ List<UserOrderDetailVo> detailVoList = userOrderDetailService.getOrderDetilListByOrderNos(orderNos);
|
|
|
+
|
|
|
+ // 根据商品类型分组获取商品ID集合
|
|
|
+ Map<GoodTypeEnum, List<UserOrderDetailVo>> orderBizMap = detailVoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(UserOrderDetailVo::getGoodType));
|
|
|
+
|
|
|
+ // 只针对机构专辑,曲目,专辑,vip
|
|
|
+ orderBizMap.forEach((orderType,list) -> {
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // bizId集合
|
|
|
+ List<Long> bizIds = list.stream().map(UserOrderDetailVo::getBizId).collect(Collectors.toList());
|
|
|
+ switch (orderType) {
|
|
|
+ case MUSIC: {
|
|
|
+ Map<Long, MusicSheet> mapByIds = musicSheetService.getMapByIds(bizIds);
|
|
|
+ // 上传人ID集合
|
|
|
+ List<Long> userIds = mapByIds.values().stream().map(MusicSheet::getUserId).collect(Collectors.toList());
|
|
|
+ Map<Long, SysUser> userMap = sysUserService.getMapByIds(userIds);
|
|
|
+
|
|
|
+ for (UserOrderDetailVo userOrderDetailVo : list) {
|
|
|
+ MusicSheet musicSheet = mapByIds.getOrDefault(userOrderDetailVo.getBizId(),new MusicSheet());
|
|
|
+ UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
|
|
|
+ bizInfo.setBizCover(musicSheet.getTitleImg());
|
|
|
+ bizInfo.setBizName(userOrderDetailVo.getGoodName());
|
|
|
+ bizInfo.setComposer(musicSheet.getComposer());
|
|
|
+ bizInfo.setUploadUser(userMap.getOrDefault(musicSheet.getUserId(),new SysUser()).getUsername());
|
|
|
+ userOrderDetailVo.setBizInfo(bizInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case TENANT_ALBUM:
|
|
|
+ {
|
|
|
+ Map<Long, TenantAlbum> mapByIds = tenantAlbumService.getMapByIds(bizIds);
|
|
|
+ Map<Long, Long> musicCountByIds = tenantAlbumService.getMusicCountByIds(bizIds);
|
|
|
+
|
|
|
+ for (UserOrderDetailVo userOrderDetailVo : list) {
|
|
|
+ TenantAlbumWrapper.TenantAlbumContent tenantAlbumContent = JSON
|
|
|
+ .parseObject(userOrderDetailVo.getBizContent(), TenantAlbumWrapper.TenantAlbumContent.class);
|
|
|
+ UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
|
|
|
+ TenantAlbum tenantAlbum = mapByIds.getOrDefault(userOrderDetailVo.getBizId(),new TenantAlbum());
|
|
|
+ bizInfo.setBizCover(tenantAlbum.getCoverImg());
|
|
|
+ bizInfo.setBizName(userOrderDetailVo.getGoodName());
|
|
|
+ bizInfo.setBizDesc(tenantAlbum.getDescribe());
|
|
|
+ bizInfo.setBizMusicCount(musicCountByIds.getOrDefault(tenantAlbum.getId(),0L).intValue());
|
|
|
+ bizInfo.setBizValidTime(tenantAlbumContent.getBuyCycle());
|
|
|
+ userOrderDetailVo.setBizInfo(bizInfo);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case ALBUM:
|
|
|
+ {
|
|
|
+ Map<Long, MusicAlbum> mapByIds = musicAlbumService.getMapByIds(bizIds);
|
|
|
+ Map<Long, Long> musicCountByIds = musicAlbumService.getMusicCountByIds(bizIds);
|
|
|
+
|
|
|
+ for (UserOrderDetailVo userOrderDetailVo : list) {
|
|
|
+ UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
|
|
|
+ MusicAlbum musicAlbum = mapByIds.getOrDefault(userOrderDetailVo.getBizId(), new MusicAlbum());
|
|
|
+ bizInfo.setBizCover(musicAlbum.getAlbumCoverUrl());
|
|
|
+ bizInfo.setBizName(userOrderDetailVo.getGoodName());
|
|
|
+ bizInfo.setBizDesc(musicAlbum.getAlbumDesc());
|
|
|
+ bizInfo.setBizMusicCount(musicCountByIds.getOrDefault(userOrderDetailVo.getBizId(),0L).intValue());
|
|
|
+ userOrderDetailVo.setBizInfo(bizInfo);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case VIP:
|
|
|
+ {
|
|
|
+
|
|
|
+ for (UserOrderDetailVo userOrderDetailVo : list) {
|
|
|
+ UserOrderDetailVo.BizInfo bizInfo = new UserOrderDetailVo.BizInfo();
|
|
|
+ bizInfo.setBizName(userOrderDetailVo.getGoodName());
|
|
|
+ userOrderDetailVo.setBizInfo(bizInfo);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return detailVoList;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<UserOrderVo> selectAllList(OrderSearch query) {
|
|
|
return baseMapper.selectAllList(query);
|