MenuServiceRpcClient.java 6.48 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 com.infoloop.tianting.utils.DateUtil;
import io.swagger.models.auth.In;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@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);
  }
}