SkuServiceImpl.java 2.92 KB
package com.infoloop.tianting.service.impl;

import com.infoloop.tianting.model.dto.SkuDbDTO.SkuDetailSingleResponseDto;
import com.infoloop.tianting.model.dto.SkuDbDTO.SkuDto;
import com.infoloop.tianting.model.dto.SkuDbDTO.SkuSpecialDetailSingleResponseDto;
import com.infoloop.tianting.service.SkuService;
import com.infoloop.tianting.service.client.SkuServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import java.util.List;
import java.util.stream.Collectors;
import lombok.Data;
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 SkuServiceImpl implements SkuService {
  private final SkuServiceRpcClient skuServiceRpcClient;

  @Override
  public List<SkuDto> getSkusByIds(List<Integer> ids) {
    final var response = skuServiceRpcClient.getDishSkusByIds(ids);
    return response.getResponseList().stream().map(sku ->
        SkuDto.builder()
            .id(sku.getId())
            .categoryId(sku.getCategoryId())
            .name(sku.getName())
            .enterpriseId(sku.getEnterpriseId())
            .description(sku.getDescription())
            .code(sku.getCode())
            .alias(sku.getAlias())
            .imageUrl(sku.getImageUrl())
            .basicMaterials(sku.getBasicMaterials())
            .carbohydrate(sku.getCarbohydrate())
            .createdAt(DateUtil.formatDate(sku.getCreatedAt()))
            .energy(sku.getEnergy())
            .fat(sku.getFat())
            .protein(sku.getProtein())
            .skuList(sku.getSkusList().stream().map(subSku -> SkuDetailSingleResponseDto.builder().id(subSku.getId()).name(subSku.getName()).build()).collect(
                Collectors.toList()))
            .tasteList(sku.getTastesList().stream().map(taste -> SkuDetailSingleResponseDto.builder().id(taste.getId()).name(taste.getName()).build()).collect(
                Collectors.toList()))
            .efficacyList(sku.getEfficaciesList().stream().map(efficacy -> SkuDetailSingleResponseDto.builder().id(efficacy.getId()).name(efficacy.getName()).build()).collect(
                Collectors.toList()))
            .doctorList(sku.getDoctorsList().stream().map(doctor -> SkuSpecialDetailSingleResponseDto
                .builder().id(doctor.getId()).name(doctor.getName()).build()).collect(
                Collectors.toList()))
            .avoidList(sku.getAvoidsList().stream().map(avoid -> SkuDetailSingleResponseDto.builder().id(avoid.getId()).name(avoid.getName()).build()).collect(
                Collectors.toList()))
            .allergyList(sku.getAllergiesList().stream().map(allergy -> SkuSpecialDetailSingleResponseDto.builder().id(allergy.getId()).name(allergy.getName()).build()).collect(
                Collectors.toList()))
            .build()
        ).collect(Collectors.toList());
  }
}