|
|
@@ -1,9 +1,13 @@
|
|
|
package com.izouma.jiashanxia.service;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.izouma.jiashanxia.domain.*;
|
|
|
import com.izouma.jiashanxia.domain.Package;
|
|
|
+import com.izouma.jiashanxia.dto.GoodsVO;
|
|
|
+import com.izouma.jiashanxia.dto.OrderInfoVO;
|
|
|
import com.izouma.jiashanxia.dto.PageQuery;
|
|
|
import com.izouma.jiashanxia.enums.OrderInfoStatus;
|
|
|
import com.izouma.jiashanxia.enums.PayMethod;
|
|
|
@@ -13,13 +17,19 @@ import com.izouma.jiashanxia.repo.*;
|
|
|
import com.izouma.jiashanxia.utils.JpaUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageImpl;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
|
@@ -35,6 +45,7 @@ public class OrderInfoService {
|
|
|
private UserPackageService userPackageService;
|
|
|
private CompanyRepo companyRepo;
|
|
|
private WithdrawService withdrawService;
|
|
|
+ private GoodsInfoRepo goodsInfoRepo;
|
|
|
|
|
|
public Page<OrderInfo> all(PageQuery pageQuery) {
|
|
|
return orderInfoRepo.findAll(JpaUtils.toSpecification(pageQuery, OrderInfo.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
@@ -61,7 +72,7 @@ public class OrderInfoService {
|
|
|
/*
|
|
|
下订单
|
|
|
*/
|
|
|
- public OrderInfo creatOrder(Long userId, Long packageId, PayMethod payMethod) {
|
|
|
+ public OrderInfo createOrder(Long userId, Long packageId, PayMethod payMethod) {
|
|
|
Package setInfo = packageRepo.findById(packageId).orElseThrow(new BusinessException("无套餐"));
|
|
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
String localTime = df.format(LocalDateTime.now());
|
|
|
@@ -161,7 +172,6 @@ public class OrderInfoService {
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
公司分销
|
|
|
*/
|
|
|
@@ -187,4 +197,61 @@ public class OrderInfoService {
|
|
|
.build());
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ /*
|
|
|
+ 用户订单
|
|
|
+ */
|
|
|
+ public Page<OrderInfoVO> my(Pageable pageable, Long userId, List<OrderInfoStatus> status) {
|
|
|
+ return orderInfoRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
|
|
|
+ List<Predicate> and = new ArrayList<>();
|
|
|
+ and.add(criteriaBuilder.equal(root.get("userId"), userId));
|
|
|
+ if (CollUtil.isNotEmpty(status)) {
|
|
|
+ List<Predicate> or = new ArrayList<>();
|
|
|
+ status.forEach(orderInfoStatus ->
|
|
|
+ or.add(criteriaBuilder.equal(root.get("status"), orderInfoStatus))
|
|
|
+ );
|
|
|
+ and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
|
|
|
+ }
|
|
|
+ return criteriaBuilder.and(and.toArray(new Predicate[0]));
|
|
|
+ }), pageable).map(this::toVo);
|
|
|
+// return new PageImpl<>(this.toVO(all), pageable, all.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ public OrderInfoVO toVo(OrderInfo orderInfo) {
|
|
|
+ OrderInfoVO vo = new OrderInfoVO();
|
|
|
+ BeanUtil.copyProperties(orderInfo, vo);
|
|
|
+ vo.setAPackage(packageRepo.findById(orderInfo.getPackageId()).orElseThrow(new BusinessException("无套餐")));
|
|
|
+ List<PackageGoods> packageGoods = packageGoodsRepo.findAllByPackageId(orderInfo.getPackageId());
|
|
|
+ vo.setGoods(packageGoods);
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<OrderInfoVO> toVO(List<OrderInfo> orderInfos) {
|
|
|
+ List<OrderInfoVO> orderInfoVOS = new ArrayList<>();
|
|
|
+ Set<Long> packageIds = orderInfos.stream().map(OrderInfo::getPackageId).collect(Collectors.toSet());
|
|
|
+ Map<Long, Package> packageMap = packageRepo.findAllById(packageIds)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(Package::getId, apackage -> apackage));
|
|
|
+// Map<Long, String> goodsMap = goodsInfoRepo.findAll()
|
|
|
+// .stream()
|
|
|
+// .collect(Collectors.toMap(GoodsInfo::getId, GoodsInfo::getName));
|
|
|
+
|
|
|
+ orderInfos.forEach(orderInfo -> {
|
|
|
+ OrderInfoVO vo = new OrderInfoVO();
|
|
|
+ BeanUtil.copyProperties(orderInfo, vo);
|
|
|
+ vo.setAPackage(packageMap.get(orderInfo.getPackageId()));
|
|
|
+ List<PackageGoods> packageGoods = packageGoodsRepo.findAllByPackageId(orderInfo.getPackageId());
|
|
|
+// List<GoodsVO> goodsVOS = new ArrayList<>();
|
|
|
+// packageGoods.forEach(goods -> {
|
|
|
+// goodsVOS.add(GoodsVO.builder()
|
|
|
+// .name(goodsMap.get(goods.getGoodsInfoId()))
|
|
|
+// .num(goods.getNum().longValue())
|
|
|
+// .build());
|
|
|
+// });
|
|
|
+ vo.setGoods(packageGoods);
|
|
|
+
|
|
|
+ orderInfoVOS.add(vo);
|
|
|
+ });
|
|
|
+ return orderInfoVOS;
|
|
|
+ }
|
|
|
}
|