Showing
5 changed files
with
44 additions
and
4 deletions
| ... | @@ -80,10 +80,10 @@ public class WebSocketServer extends TextWebSocketHandler { | ... | @@ -80,10 +80,10 @@ public class WebSocketServer extends TextWebSocketHandler { |
| 80 | sendMessageToUsers(keys, socketMessage); | 80 | sendMessageToUsers(keys, socketMessage); |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | - public static <T> void sendMessageByUserTypes(List<UserTypeEnum> userTypes, List<String> authUserIds, SocketMessage<T> socketMessage) throws IOException { | 83 | + public static <T> void sendMessageByUserTypes(List<UserTypeEnum> userTypes, List<UserAuthData> userAuthData, SocketMessage<T> socketMessage) throws IOException { |
| 84 | final var keys = userSessions.keySet().stream() | 84 | final var keys = userSessions.keySet().stream() |
| 85 | .filter(userSessionData -> userTypes.contains(userSessionData.getUserType())) | 85 | .filter(userSessionData -> userTypes.contains(userSessionData.getUserType())) |
| 86 | - .filter(userSessionData -> authUserIds.contains(userSessionData.getUserId())) | 86 | + .filter(userSessionData -> userAuthData.isEmpty() || (userAuthData.stream().anyMatch(data -> String.valueOf(data.getOperatorId()).equals(userSessionData.getUserId()) && data.getUserType().equals(userSessionData.getUserType())))) |
| 87 | .collect(Collectors.toList()); | 87 | .collect(Collectors.toList()); |
| 88 | sendMessageToUsers(keys, socketMessage); | 88 | sendMessageToUsers(keys, socketMessage); |
| 89 | } | 89 | } | ... | ... |
| 1 | package com.infoloop.tianting.service.client; | 1 | package com.infoloop.tianting.service.client; |
| 2 | 2 | ||
| 3 | import com.infoloop.tianting.enterpriseresourcetagservice.EnterpriseResourceTagServiceRpcGrpc; | 3 | import com.infoloop.tianting.enterpriseresourcetagservice.EnterpriseResourceTagServiceRpcGrpc; |
| 4 | +import com.infoloop.tianting.enterpriseresourcetagservice.GetOperatorIdsByStallIdRpcRequest; | ||
| 4 | import com.infoloop.tianting.enterpriseresourcetagservice.UserTagsAndResourcesGetRequest; | 5 | import com.infoloop.tianting.enterpriseresourcetagservice.UserTagsAndResourcesGetRequest; |
| 5 | import com.infoloop.tianting.enterpriseresourcetagservice.UserTagsAndResourcesGetResponse; | 6 | import com.infoloop.tianting.enterpriseresourcetagservice.UserTagsAndResourcesGetResponse; |
| 6 | import lombok.RequiredArgsConstructor; | 7 | import lombok.RequiredArgsConstructor; |
| 7 | import org.springframework.beans.factory.annotation.Autowired; | 8 | import org.springframework.beans.factory.annotation.Autowired; |
| 8 | import org.springframework.stereotype.Service; | 9 | import org.springframework.stereotype.Service; |
| 9 | 10 | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 10 | @Service | 13 | @Service |
| 11 | @RequiredArgsConstructor(onConstructor = @__(@Autowired)) | 14 | @RequiredArgsConstructor(onConstructor = @__(@Autowired)) |
| 12 | public class EnterpriseResourceServiceRpcClient { | 15 | public class EnterpriseResourceServiceRpcClient { |
| ... | @@ -21,4 +24,12 @@ public class EnterpriseResourceServiceRpcClient { | ... | @@ -21,4 +24,12 @@ public class EnterpriseResourceServiceRpcClient { |
| 21 | .build(); | 24 | .build(); |
| 22 | return enterpriseResourceTagServiceRpcBlockingStub.getUserResources(request); | 25 | return enterpriseResourceTagServiceRpcBlockingStub.getUserResources(request); |
| 23 | } | 26 | } |
| 27 | + | ||
| 28 | + public List<Integer> getOperatorIdsByStallId(int enterpriseId, int stallId) { | ||
| 29 | + final var request = GetOperatorIdsByStallIdRpcRequest.newBuilder() | ||
| 30 | + .setEnterpriseId(enterpriseId) | ||
| 31 | + .setStallId(stallId) | ||
| 32 | + .build(); | ||
| 33 | + return enterpriseResourceTagServiceRpcBlockingStub.getOperatorIdsByStallId(request).getOperatorIdsList(); | ||
| 34 | + } | ||
| 24 | } | 35 | } | ... | ... |
| ... | @@ -67,6 +67,7 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailOperationDto; | ... | @@ -67,6 +67,7 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailOperationDto; |
| 67 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto; | 67 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto; |
| 68 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto; | 68 | import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto; |
| 69 | import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderDto; | 69 | import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderDto; |
| 70 | +import com.infoloop.tianting.server.UserAuthData; | ||
| 70 | import com.infoloop.tianting.server.WebSocketServer; | 71 | import com.infoloop.tianting.server.WebSocketServer; |
| 71 | import com.infoloop.tianting.server.message.MessageTypeEnum; | 72 | import com.infoloop.tianting.server.message.MessageTypeEnum; |
| 72 | import com.infoloop.tianting.server.message.NoticeTypeEnum; | 73 | import com.infoloop.tianting.server.message.NoticeTypeEnum; |
| ... | @@ -105,6 +106,7 @@ public class OrderServiceRpcClient { | ... | @@ -105,6 +106,7 @@ public class OrderServiceRpcClient { |
| 105 | private final SkuServiceRpcClient skuServiceRpcClient; | 106 | private final SkuServiceRpcClient skuServiceRpcClient; |
| 106 | private final OperatorServiceRpcClient operatorServiceRpcClient; | 107 | private final OperatorServiceRpcClient operatorServiceRpcClient; |
| 107 | private final ClientResourceTagServiceRpcClient clientResourceTagServiceRpcClient; | 108 | private final ClientResourceTagServiceRpcClient clientResourceTagServiceRpcClient; |
| 109 | + private final EnterpriseResourceServiceRpcClient enterpriseResourceServiceRpcClient; | ||
| 108 | private final RedissonClient redissonClient; | 110 | private final RedissonClient redissonClient; |
| 109 | private final DelayedQueue<AutoCancelParam> delayedQueue; | 111 | private final DelayedQueue<AutoCancelParam> delayedQueue; |
| 110 | 112 | ||
| ... | @@ -605,7 +607,6 @@ public class OrderServiceRpcClient { | ... | @@ -605,7 +607,6 @@ public class OrderServiceRpcClient { |
| 605 | if (orderResponse.getIsCreated()) { | 607 | if (orderResponse.getIsCreated()) { |
| 606 | // 用餐时间为当天,并且非在线支付餐单,发送消息给客户端 | 608 | // 用餐时间为当天,并且非在线支付餐单,发送消息给客户端 |
| 607 | if (createOrderDto.getMealTime().toLocalDate().equals(LocalDate.now()) && menuById.getResponse().getOrderRuleJson().getModeOfPayment() != ModeOfPaymentEnum.ONLINE) { | 609 | if (createOrderDto.getMealTime().toLocalDate().equals(LocalDate.now()) && menuById.getResponse().getOrderRuleJson().getModeOfPayment() != ModeOfPaymentEnum.ONLINE) { |
| 608 | - final var userIds = clientResourceTagServiceRpcClient.getOperatorIdsByStallIds(List.of(createOrderDto.getStallId())).stream().map(SingleResourceLabelEntityRefsResponse::getEntityId).distinct().map(String::valueOf).collect(Collectors.toList()); | ||
| 609 | final var orderCreateSuccessData = OrderCreateSuccessData.builder() | 610 | final var orderCreateSuccessData = OrderCreateSuccessData.builder() |
| 610 | .orderId(orderResponse.getId()) | 611 | .orderId(orderResponse.getId()) |
| 611 | .build(); | 612 | .build(); |
| ... | @@ -616,8 +617,14 @@ public class OrderServiceRpcClient { | ... | @@ -616,8 +617,14 @@ public class OrderServiceRpcClient { |
| 616 | .message("有新的订单下单成功啦,快去查看吧~") | 617 | .message("有新的订单下单成功啦,快去查看吧~") |
| 617 | .data(orderCreateSuccessData) | 618 | .data(orderCreateSuccessData) |
| 618 | .build(); | 619 | .build(); |
| 620 | + final var clientOperatorIds = clientResourceTagServiceRpcClient.getOperatorIdsByStallIds(List.of(createOrderDto.getStallId())).stream().map(SingleResourceLabelEntityRefsResponse::getEntityId).distinct().collect(Collectors.toList()); | ||
| 621 | + final var enterpriseOperatorIds = enterpriseResourceServiceRpcClient.getOperatorIdsByStallId(createOrderDto.getEnterpriseId(), createOrderDto.getStallId()); | ||
| 622 | + final var userAuthData = new ArrayList<UserAuthData>(); | ||
| 623 | + userAuthData.addAll(clientOperatorIds.stream().map(e -> UserAuthData.builder().operatorId(e).userType(UserTypeEnum.CLIENT).build()).collect(Collectors.toList())); | ||
| 624 | + userAuthData.addAll(enterpriseOperatorIds.stream().map(e -> UserAuthData.builder().operatorId(e).userType(UserTypeEnum.KDS).build()).collect(Collectors.toList())); | ||
| 625 | + log.info("received userAuthData:{}", userAuthData); | ||
| 619 | try { | 626 | try { |
| 620 | - WebSocketServer.sendMessageByUserTypes(List.of(UserTypeEnum.CLIENT, UserTypeEnum.KDS), userIds, data); | 627 | + WebSocketServer.sendMessageByUserTypes(List.of(UserTypeEnum.CLIENT, UserTypeEnum.KDS), userAuthData, data); |
| 621 | } catch (IOException e) { | 628 | } catch (IOException e) { |
| 622 | log.error("Failed to send message to user", e); | 629 | log.error("Failed to send message to user", e); |
| 623 | } | 630 | } | ... | ... |
| ... | @@ -19,6 +19,7 @@ service EnterpriseResourceTagServiceRpc { | ... | @@ -19,6 +19,7 @@ service EnterpriseResourceTagServiceRpc { |
| 19 | rpc GetUsersByTagId (UsersGetByTagIdRequest) returns (UsersGetByTagIdResponse) {} | 19 | rpc GetUsersByTagId (UsersGetByTagIdRequest) returns (UsersGetByTagIdResponse) {} |
| 20 | rpc CreateTag (TagCreationRpcRequest) returns (TagCreationRpcResponse) {} | 20 | rpc CreateTag (TagCreationRpcRequest) returns (TagCreationRpcResponse) {} |
| 21 | rpc AddResourcesToTag (AddResourcesToTagRpcRequest) returns (AddResourcesToTagRpcResponse) {} | 21 | rpc AddResourcesToTag (AddResourcesToTagRpcRequest) returns (AddResourcesToTagRpcResponse) {} |
| 22 | + rpc GetOperatorIdsByStallId (GetOperatorIdsByStallIdRpcRequest) returns (GetOperatorIdsByStallIdRpcResponse) {} | ||
| 22 | } | 23 | } |
| 23 | 24 | ||
| 24 | message TagCreationRpcRequest { | 25 | message TagCreationRpcRequest { |
| ... | @@ -202,4 +203,13 @@ message AddResourcesToTagRpcRequest { | ... | @@ -202,4 +203,13 @@ message AddResourcesToTagRpcRequest { |
| 202 | 203 | ||
| 203 | message AddResourcesToTagRpcResponse { | 204 | message AddResourcesToTagRpcResponse { |
| 204 | bool isSuccess = 1; | 205 | bool isSuccess = 1; |
| 206 | +} | ||
| 207 | + | ||
| 208 | +message GetOperatorIdsByStallIdRpcRequest { | ||
| 209 | + int32 enterpriseId = 1; | ||
| 210 | + int32 stallId = 2; | ||
| 211 | +} | ||
| 212 | + | ||
| 213 | +message GetOperatorIdsByStallIdRpcResponse { | ||
| 214 | + repeated int32 operatorIds = 1; | ||
| 205 | } | 215 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment