MenuServiceImpl.java 5.46 KB
package com.infoloop.tianting.service.impl;

import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsResponseDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.DishRuleJson;
import com.infoloop.tianting.model.dto.MenuDbDTO.MenuDetailDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.MenuDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.MenuRefDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.OrderRuleJson;
import com.infoloop.tianting.service.MenuService;
import com.infoloop.tianting.service.client.MenuServiceRpcClient;
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 MenuServiceImpl implements MenuService {

  private final MenuServiceRpcClient menuServiceRpcClient;

  @Override
  public List<MenuDto> queryMiniProgramPublishedMenusByStallId(
      Integer enterpriseId, Integer stallId) {

    final var response = menuServiceRpcClient.queryMiniProgramPublishedMenusByStallIds(
        enterpriseId, stallId);
    return response.getResponsesList().stream().map(menu ->
        MenuDto.builder()
            .id(menu.getId())
            .code(menu.getCode())
            .enterpriseId(menu.getEnterpriseId())
            .name(menu.getName())
            .status(menu.getStatusValue())
            .customerScope(menu.getCustomerScope())
            .nutritionPromotion(menu.getNutritionPromotion())
            .nutritionalStatistics(menu.getNutritionalStatistics())
            .dishRuleJson(DishRuleJson.builder()
                .days(menu.getDishRuleJson().getDays())
                .dishType(menu.getDishRuleJson().getDishType())
                .mealIds(menu.getDishRuleJson().getMealIdsList())
                .build())
            .orderRuleJson(OrderRuleJson.builder()
                .allowMicroPlaceOrder(menu.getOrderRuleJson().getAllowMicroPlaceOrder())
                .closeTimeType(menu.getOrderRuleJson().getCloseTimeType())
                .dishSelectRule(menu.getOrderRuleJson().getDishSelectRule())
                .earlyDays(menu.getOrderRuleJson().getEarlyDays())
                .modeOfPayment(menu.getOrderRuleJson().getModeOfPayment())
                .placeOrderCount(menu.getOrderRuleJson().getPlaceOrderCount())
                .startTime(menu.getOrderRuleJson().getStartTime())
                .endTime(menu.getOrderRuleJson().getEndTime())
                .deadline(menu.getOrderRuleJson().getDeadline())
                .build())
            .createdBy(menu.getCreatedBy())
            .creationSource(menu.getCreationSource())
            .createdAt(DateUtil.formatDate(menu.getCreatedAt()))
            .updatedBy(menu.getUpdatedBy())
            .updateSource(menu.getUpdateSource())
            .updatedAt(DateUtil.formatDate(menu.getUpdatedAt()))
            .publishAt(DateUtil.formatDate(menu.getPublishAt()))
            .build()).collect(Collectors.toList());
  }

  @Override
  public List<MenuDetailDto> queryMenuDetailsByMenuId(Integer enterpriseId, Integer menuId) {
    final var response = menuServiceRpcClient.queryMenuDetailsByMenuId(enterpriseId, menuId);
    return response.getResponsesList().stream().map(menuDetail ->
        MenuDetailDto.builder()
            .id(menuDetail.getId())
            .categoryId(menuDetail.getCategoryId())
            .mealId(menuDetail.getMealId())
            .menuId(menuDetail.getMenuId())
            .days(menuDetail.getDays())
            .enterpriseId(menuDetail.getEnterpriseId())
            .price(menuDetail.getPrice())
            .showName(menuDetail.getShowName())
            .skuId(menuDetail.getSkuId())
            .isDeleted(menuDetail.getIsDeleted())
            .createdBy(menuDetail.getCreatedBy())
            .creationSource(menuDetail.getCreationSource())
            .createdAt(DateUtil.formatDate(menuDetail.getCreatedAt()))
            .updatedBy(menuDetail.getUpdatedBy())
            .updateSource(menuDetail.getUpdateSource())
            .updatedAt(DateUtil.formatDate(menuDetail.getUpdatedAt()))
            .build()).collect(Collectors.toList());
  }

  @Override
  public List<MenuRefDto> getClientCustomerMenuRefsByCustomerId(Integer enterpriseId, Integer customerId) {
    final var response = menuServiceRpcClient.getClientCustomerMenuRefsByCustomerId(enterpriseId, customerId);
    return response.getResponsesList().stream().map(ref ->
        MenuRefDto.builder()
            .id(ref.getId())
            .bindAt(DateUtil.formatDate(ref.getBindAt()))
            .createdAt(DateUtil.formatDate(ref.getBindAt()))
            .createdBy(ref.getCreatedBy())
            .creationSource(ref.getCreationSource())
            .customerId(ref.getCustomerId())
            .enterpriseId(ref.getEnterpriseId())
            .isTop(ref.getIsTop())
            .menuId(ref.getMenuId())
        .build()
        ).collect(Collectors.toList());

  }

  @Override
  public BatchCreateMenuRefsResponseDto batchCreateMenuRefs(BatchCreateMenuRefsDto batchCreateMenuRefsDto) {
    final var response = menuServiceRpcClient.batchCreateClientCustomerMenuRefs(batchCreateMenuRefsDto);
    return BatchCreateMenuRefsResponseDto.builder()
        .ids(response.getIdsList())
        .isCreated(response.getIsCreated())
        .build();
  }

}