OrderServiceImpl.java 6.08 KB
package com.infoloop.tianting.service.impl;

import com.infoloop.tianting.model.dto.OrderDbDTO;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.CustomerNotice;
import com.infoloop.tianting.model.dto.OrderDbDTO.MealDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderDto;
import com.infoloop.tianting.model.vo.TestExampleDbVO;
import com.infoloop.tianting.service.OrderService;
import com.infoloop.tianting.service.client.OrderServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderServiceImpl implements OrderService {
  private final OrderServiceRpcClient orderServiceRpcClient;

  @Override
  public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) {
    return orderServiceRpcClient.createOrder(createOrderDto);
  }

  @Override
  public List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId) {
    final var responseList = orderServiceRpcClient.getOrderDetailsByOrderId(orderId);
    return responseList.stream().map(d ->
        OrderDetailDto.builder()
            .id(d.getId())
            .count(d.getCount())
            .categoryId(d.getCategoryId())
            .mealId(d.getMealId())
            .menuDetailId(d.getMenuDetailId())
            .orderId(d.getOrderId())
            .price(d.getPrice())
            .showName(d.getShowName())
            .mealDetailJson(MealDetailDto.builder()
                .allergies(d.getMealDetailJson().getAllergiesList())
                .basicMaterials(d.getMealDetailJson().getBasicMaterials())
                .dockers(d.getMealDetailJson().getDockersList())
                .efficacies(d.getMealDetailJson().getEfficaciesList())
                .fat(d.getMealDetailJson().getFat())
                .tastes(d.getMealDetailJson().getTastesList())
                .protein(d.getMealDetailJson().getProtein())
                .carbohydrate(d.getMealDetailJson().getCarbohydrate())
                .energy(d.getMealDetailJson().getEnergy())
                .avoids(d.getMealDetailJson().getAvoidsList())
                .skus(d.getMealDetailJson().getSkusList())
                .build())
            .adjustSkuRemark(d.getAdjustSkuRemark())
            .notServe(d.getNotServe())
            .creationSource(d.getCreationSource().getNumber())
            .createdBy(d.getCreatedBy())
            .createdAt(DateUtil.formatDate(d.getCreatedAt()))
            .updateSource(d.getUpdateSource().getNumber())
            .updatedAt(DateUtil.formatDate(d.getUpdatedAt()))
            .updatedBy(d.getUpdatedBy())
            .build()).collect(Collectors.toList());
  }

  @Override
  public List<OrderDto> getOrdersByCustomerId(Integer customerId) {
    final var responseList = orderServiceRpcClient.getOrdersByCustomerId(customerId);
    return responseList.stream().map(r -> OrderDto.builder()
        .id(r.getId())
        .enterpriseId(r.getEnterpriseId())
        .clientId(r.getClientId())
        .stallId(r.getStallId())
        .customerId(r.getCustomerId())
        .openId(r.getOpenId())
        .address(r.getAddress())
        .orderCode(r.getOrderCode())
        .menuId(r.getMenuId())
        .pickupCode(r.getPickupCode())
        .tableCode(r.getTableCode())
        .roomNo(r.getRoomNo())
        .status(r.getStatus().getNumber())
        .customerNoticeJson(CustomerNotice.builder()
            .avoids(r.getCustomerNoticeJson().getAvoidsList())
            .doctors(r.getCustomerNoticeJson().getDoctorsList()).build())
        .onlinePay(r.getOnlinePay())
        .payStatus(r.getPayStatusValue())
        .payPrice(r.getPayPrice())
        .payTime(DateUtil.formatDate(r.getPayTime()))
        .mealTime(DateUtil.formatDate(r.getMealTime()))
        .orderType(r.getOrderTypeValue())
        .remark(r.getRemark())
        .creationSource(r.getCreationSource().getNumber())
        .createdBy(r.getCreatedBy())
        .createdAt(DateUtil.formatDate(r.getCreatedAt()))
        .updateSource(r.getUpdateSource().getNumber())
        .updatedAt(DateUtil.formatDate(r.getUpdatedAt()))
        .updatedBy(r.getUpdatedBy())
        .build()).collect(Collectors.toList());
  }

  @Override
  public List<OrderDto> getOrdersByCondition(QueryOrderDto queryOrderDto) {
    final var responseList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto);
    return responseList.stream().map(r -> OrderDto.builder()
        .id(r.getId())
        .enterpriseId(r.getEnterpriseId())
        .clientId(r.getClientId())
        .stallId(r.getStallId())
        .customerId(r.getCustomerId())
        .openId(r.getOpenId())
        .address(r.getAddress())
        .orderCode(r.getOrderCode())
        .menuId(r.getMenuId())
        .pickupCode(r.getPickupCode())
        .tableCode(r.getTableCode())
        .roomNo(r.getRoomNo())
        .status(r.getStatus().getNumber())
        .customerNoticeJson(CustomerNotice.builder()
            .avoids(r.getCustomerNoticeJson().getAvoidsList())
            .doctors(r.getCustomerNoticeJson().getDoctorsList()).build())
        .onlinePay(r.getOnlinePay())
        .payStatus(r.getPayStatusValue())
        .payPrice(r.getPayPrice())
        .payTime(DateUtil.formatDate(r.getPayTime()))
        .mealTime(DateUtil.formatDate(r.getMealTime()))
        .orderType(r.getOrderTypeValue())
        .remark(r.getRemark())
        .creationSource(r.getCreationSource().getNumber())
        .createdBy(r.getCreatedBy())
        .createdAt(DateUtil.formatDate(r.getCreatedAt()))
        .updateSource(r.getUpdateSource().getNumber())
        .updatedAt(DateUtil.formatDate(r.getUpdatedAt()))
        .updatedBy(r.getUpdatedBy())
        .build()).collect(Collectors.toList());
  }
}