|
|
|
@ -5,14 +5,28 @@ import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryPa |
|
|
|
import com.qniao.dam.api.query.order.user.response.GetOrderStatisticsByOperatorVo; |
|
|
|
import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; |
|
|
|
import com.qniao.dam.api.query.order.user.response.UserPageOrderItemByOperatorVo; |
|
|
|
import com.qniao.dam.application.service.right.RightApplicationService; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.Order; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.OrderItem; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; |
|
|
|
import com.qniao.dam.domain.aggregate.right.entity.Right; |
|
|
|
import com.qniao.dam.domain.aggregate.right.entity.RightTerm; |
|
|
|
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.right.constant.RightNameEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.view.OrderViewDao; |
|
|
|
import com.qniao.dam.query.order.OrderQueryService; |
|
|
|
import com.qniao.dam.query.product.ProductQueryService; |
|
|
|
import com.qniao.dam.query.right.RightQueryService; |
|
|
|
import com.qniao.framework.utils.PageUtil; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@Service |
|
|
|
@ -20,6 +34,14 @@ public class OrderQueryServiceImpl implements OrderQueryService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private OrderViewDao orderViewDao; |
|
|
|
@Resource |
|
|
|
private RightQueryService rightQueryService; |
|
|
|
@Resource |
|
|
|
private RightApplicationService rightApplicationService; |
|
|
|
@Resource |
|
|
|
private ProductSpecRepository productSpecRepository; |
|
|
|
@Resource |
|
|
|
private ProductQueryService productQueryService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public IPage<UserPageOrderByOperatorVo> pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam) { |
|
|
|
@ -28,9 +50,7 @@ public class OrderQueryServiceImpl implements OrderQueryService { |
|
|
|
List<Long> orderIdList = page.getRecords().stream().map(UserPageOrderByOperatorVo::getOrderId).collect(Collectors.toList()); |
|
|
|
List<UserPageOrderItemByOperatorVo> allOrderItemList = orderViewDao.listOrderItemByOperatorByOrderIds(orderIdList); |
|
|
|
Map<Long, List<UserPageOrderItemByOperatorVo>> allOrderItemMap = allOrderItemList.stream().collect(Collectors.groupingBy(UserPageOrderItemByOperatorVo::getOrderId)); |
|
|
|
page.getRecords().forEach(record -> { |
|
|
|
record.setOrderItemList(allOrderItemMap.get(record.getOrderId())); |
|
|
|
}); |
|
|
|
page.getRecords().forEach(record -> record.setOrderItemList(allOrderItemMap.get(record.getOrderId()))); |
|
|
|
} |
|
|
|
return page; |
|
|
|
} |
|
|
|
@ -39,4 +59,19 @@ public class OrderQueryServiceImpl implements OrderQueryService { |
|
|
|
public GetOrderStatisticsByOperatorVo getOrderStatisticsByOperator(UserPageOrderByOperatorQueryParam queryParam) { |
|
|
|
return orderViewDao.getOrderStatisticsByOperator(queryParam); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean checkDiffSpecRight(Order order, OrderItem orderItem, ProductSpec productSpec) { |
|
|
|
boolean flag = false; |
|
|
|
ProductSpecTerm productSpecTerm = productQueryService.getTermByName(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.SPEC); |
|
|
|
RightTypeEnum rightType = rightApplicationService.transformRightType(orderItem.getSubCategory()); |
|
|
|
if (Objects.nonNull(rightType) && Objects.nonNull(productSpecTerm)) { |
|
|
|
Right right = rightQueryService.getEnableSpecPeriodRight(order.getUserId(), order.getMiId(), rightType); |
|
|
|
if (Objects.nonNull(right)) { |
|
|
|
RightTerm rightTerm = rightQueryService.getRightTermByName(right, RightNameEnum.SPEC); |
|
|
|
flag = !rightTerm.getUnit().getValue().equals(productSpecTerm.getUnit().getValue()); |
|
|
|
} |
|
|
|
} |
|
|
|
return flag; |
|
|
|
} |
|
|
|
} |