SkuServiceImpl.java 3.49 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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@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()))
                        .cecommendList(sku.getCecommendsList().stream().map(cecommend -> SkuDetailSingleResponseDto.builder().id(cecommend.getId()).name(cecommend.getName()).build()).collect(Collectors.toList()))
                        .build()
        ).collect(Collectors.toList());
    }
}