MenuServiceRpcClient.java 6.99 KB
package com.infoloop.tianting.service.client;

import com.infoloop.tianting.menuservice.BatchCreateClientCustomerMenuRefsRpcRequest;
import com.infoloop.tianting.menuservice.BatchCreateClientCustomerMenuRefsRpcResponse;
import com.infoloop.tianting.menuservice.ClientCustomerMenuRefCreation;
import com.infoloop.tianting.menuservice.GetClientCustomerMenuRefsByCustomerIdRpcRequest;
import com.infoloop.tianting.menuservice.GetClientCustomerMenuRefsByCustomerIdRpcResponse;
import com.infoloop.tianting.menuservice.GetClientCustomerMenuRefsByCustomerIdsRpcRequest;
import com.infoloop.tianting.menuservice.GetClientCustomerMenuRefsByCustomerIdsRpcResponse;
import com.infoloop.tianting.menuservice.GetMenuByIdRpcRequest;
import com.infoloop.tianting.menuservice.GetMenuByIdRpcResponse;
import com.infoloop.tianting.menuservice.GetMenuDetailByIdRpcRequest;
import com.infoloop.tianting.menuservice.GetMenuDetailByIdRpcResponse;
import com.infoloop.tianting.menuservice.GetMenuDetailsByMenuIdsRpcRequest;
import com.infoloop.tianting.menuservice.GetMenuDetailsByMenuIdsRpcResponse;
import com.infoloop.tianting.menuservice.GetMenusByIdsRpcRequest;
import com.infoloop.tianting.menuservice.GetMenusByIdsRpcResponse;
import com.infoloop.tianting.menuservice.GetMicroPublishedMenusByStallIdsRpcRequest;
import com.infoloop.tianting.menuservice.GetMicroPublishedMenusByStallIdsRpcResponse;
import com.infoloop.tianting.menuservice.GetPublishedMenusByStallIdsRpcRequest;
import com.infoloop.tianting.menuservice.GetPublishedMenusByStallIdsRpcResponse;
import com.infoloop.tianting.menuservice.MenuServiceRpcGrpc;
import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsDto;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MenuServiceRpcClient {
    private final MenuServiceRpcGrpc.MenuServiceRpcBlockingStub menuServiceRpcBlockingStub;

    public GetMicroPublishedMenusByStallIdsRpcResponse queryMiniProgramPublishedMenusByStallId(
            Integer enterpriseId, Integer stallId) {
        final var request = GetMicroPublishedMenusByStallIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllStallIds(List.of(stallId))
                .setIncludeDeleted(false)
                .build();
        return menuServiceRpcBlockingStub.getMicroPublishedMenusByStallIds(request);
    }

    public GetPublishedMenusByStallIdsRpcResponse queryPublishedMenusByStallId(
            Integer enterpriseId, Integer stallId) {
        final var request = GetPublishedMenusByStallIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllStallIds(List.of(stallId))
                .build();
        return menuServiceRpcBlockingStub.getPublishedMenusByStallIds(request);
    }

    public GetMenuByIdRpcResponse getMenuById(Integer enterpriseId, Integer id) {
        final var request = GetMenuByIdRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .setId(id)
                .setIncludeDeleted(false)
                .build();
        return menuServiceRpcBlockingStub.getMenuById(request);
    }

    public GetMenusByIdsRpcResponse getMenusByIds(Integer enterpriseId, List<Integer> ids) {
        final var request = GetMenusByIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllIds(ids)
                .setIncludeDeleted(false)
                .build();
        return menuServiceRpcBlockingStub.getMenusByIds(request);
    }

    public GetMenuDetailByIdRpcResponse getMenuDetailById(Integer enterpriseId, Integer id) {
        final var request = GetMenuDetailByIdRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .setId(id)
                .setIncludeDeleted(false)
                .build();
        return menuServiceRpcBlockingStub.getMenuDetailById(request);
    }

    public GetMenuDetailsByMenuIdsRpcResponse queryMenuDetailsByMenuId(
            Integer enterpriseId, Integer menuId) {
        final var request = GetMenuDetailsByMenuIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllMenuIds(List.of(menuId))
                .setIncludeDeleted(false)
                .build();
        return menuServiceRpcBlockingStub.getMenuDetailsByMenuIds(request);
    }

    public GetMenuDetailsByMenuIdsRpcResponse queryMenuDetailsByMenuIds(
            Integer enterpriseId, List<Integer> menuIds) {
        final var request = GetMenuDetailsByMenuIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllMenuIds(menuIds)
                .setIncludeDeleted(false)
                .build();
        return menuServiceRpcBlockingStub.getMenuDetailsByMenuIds(request);
    }

    public GetClientCustomerMenuRefsByCustomerIdRpcResponse getClientCustomerMenuRefsByCustomerId(
            Integer enterpriseId, Integer customerId
    ) {

        final var request = GetClientCustomerMenuRefsByCustomerIdRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .setCustomerId(customerId)
                .build();
        return menuServiceRpcBlockingStub.getClientCustomerMenuRefsByCustomerId(request);

    }

    public GetClientCustomerMenuRefsByCustomerIdsRpcResponse getClientCustomerMenuRefsByCustomerIds(
            Integer enterpriseId, List<Integer> customerIds
    ) {

        final var request = GetClientCustomerMenuRefsByCustomerIdsRpcRequest.newBuilder()
                .setEnterpriseId(enterpriseId)
                .addAllCustomerIds(customerIds)
                .build();
        return menuServiceRpcBlockingStub.getClientCustomerMenuRefsByCustomerIds(request);

    }

    public BatchCreateClientCustomerMenuRefsRpcResponse batchCreateClientCustomerMenuRefs(
            BatchCreateMenuRefsDto batchCreateMenuRefsDto) {
        final var creations = batchCreateMenuRefsDto.getCreations().stream().map(mr ->
                        ClientCustomerMenuRefCreation.newBuilder()
                                .setIsTop(mr.isTop())
                                .setMenuId(mr.getMenuId())
                                .setCustomerId(mr.getCustomerId())
                                .setBindAt(LocalDateTime.now().toEpochSecond(ZoneOffset.UTC))
                                .build())
                .collect(Collectors.toList());
        final var request = BatchCreateClientCustomerMenuRefsRpcRequest.newBuilder()
                .setCreatedBy(batchCreateMenuRefsDto.getCreatedBy())
                .setEnterpriseId(batchCreateMenuRefsDto.getEnterpriseId())
                .addAllCreations(creations)
                .setCreationSource(batchCreateMenuRefsDto.getCreationSource().getNumber())
                .build();
        return menuServiceRpcBlockingStub.batchCreateClientCustomerMenuRefs(request);
    }
}