feat: add pending order subscription messages query and update proto/service/db implementations
Showing
5 changed files
with
76 additions
and
1 deletions
| ... | @@ -20,7 +20,7 @@ import java.time.LocalDateTime; | ... | @@ -20,7 +20,7 @@ import java.time.LocalDateTime; |
| 20 | @Data | 20 | @Data |
| 21 | @Accessors(chain = true) | 21 | @Accessors(chain = true) |
| 22 | @EqualsAndHashCode(callSuper = true) | 22 | @EqualsAndHashCode(callSuper = true) |
| 23 | -@TableName(value = "order_subscription_message") | 23 | +@TableName(value = "meal_order_subscription_messages") |
| 24 | public class OrderSubscriptionMessageDb extends Model<OrderSubscriptionMessageDb> { | 24 | public class OrderSubscriptionMessageDb extends Model<OrderSubscriptionMessageDb> { |
| 25 | /** | 25 | /** |
| 26 | * 主键ID | 26 | * 主键ID | ... | ... |
| ... | @@ -28,5 +28,12 @@ public interface OrderSubscriptionMessageDbService extends IService<OrderSubscri | ... | @@ -28,5 +28,12 @@ public interface OrderSubscriptionMessageDbService extends IService<OrderSubscri |
| 28 | * @return 受影响的行数 | 28 | * @return 受影响的行数 |
| 29 | */ | 29 | */ |
| 30 | int batchPhysicalDeleteByIds(java.util.List<Long> ids, int enterpriseId); | 30 | int batchPhysicalDeleteByIds(java.util.List<Long> ids, int enterpriseId); |
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 查询待发送的订阅消息(未删除的记录) | ||
| 34 | + * @param enterpriseId 企业ID | ||
| 35 | + * @return 待发送的订阅消息列表 | ||
| 36 | + */ | ||
| 37 | + List<OrderSubscriptionMessageDb> queryPendingMessages(int enterpriseId); | ||
| 31 | } | 38 | } |
| 32 | 39 | ... | ... |
| ... | @@ -16,6 +16,9 @@ import com.infoloop.tianting.mealorderservice.CreateOrderSubscriptionMessageRpcR | ... | @@ -16,6 +16,9 @@ import com.infoloop.tianting.mealorderservice.CreateOrderSubscriptionMessageRpcR |
| 16 | import com.infoloop.tianting.mealorderservice.GetUserOrderSubscriptionMessageHistoryRpcRequest; | 16 | import com.infoloop.tianting.mealorderservice.GetUserOrderSubscriptionMessageHistoryRpcRequest; |
| 17 | import com.infoloop.tianting.mealorderservice.GetUserOrderSubscriptionMessageHistoryRpcResponse; | 17 | import com.infoloop.tianting.mealorderservice.GetUserOrderSubscriptionMessageHistoryRpcResponse; |
| 18 | import com.infoloop.tianting.mealorderservice.OrderSubscriptionMessageRpcResponse; | 18 | import com.infoloop.tianting.mealorderservice.OrderSubscriptionMessageRpcResponse; |
| 19 | +import com.infoloop.tianting.mealorderservice.PendingOrderSubscriptionMessageRpcResponse; | ||
| 20 | +import com.infoloop.tianting.mealorderservice.QueryPendingOrderSubscriptionMessagesRpcRequest; | ||
| 21 | +import com.infoloop.tianting.mealorderservice.QueryPendingOrderSubscriptionMessagesRpcResponse; | ||
| 19 | import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcResponse; | 22 | import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcResponse; |
| 20 | import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcRequest; | 23 | import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcRequest; |
| 21 | import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcResponse; | 24 | import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcResponse; |
| ... | @@ -1541,4 +1544,38 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi | ... | @@ -1541,4 +1544,38 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi |
| 1541 | responseObserver.onNext(builder.build()); | 1544 | responseObserver.onNext(builder.build()); |
| 1542 | responseObserver.onCompleted(); | 1545 | responseObserver.onCompleted(); |
| 1543 | } | 1546 | } |
| 1547 | + | ||
| 1548 | + @Override | ||
| 1549 | + @DS(DATA_SOURCE_SLAVE) | ||
| 1550 | + public void queryPendingOrderSubscriptionMessages( | ||
| 1551 | + final QueryPendingOrderSubscriptionMessagesRpcRequest request, | ||
| 1552 | + final StreamObserver<QueryPendingOrderSubscriptionMessagesRpcResponse> responseObserver) { | ||
| 1553 | + final var builder = QueryPendingOrderSubscriptionMessagesRpcResponse.newBuilder(); | ||
| 1554 | + try { | ||
| 1555 | + final var messages = orderSubscriptionMessageDbService.queryPendingMessages( | ||
| 1556 | + request.getEnterpriseId()); | ||
| 1557 | + for (final var message : messages) { | ||
| 1558 | + builder.addResponses(PendingOrderSubscriptionMessageRpcResponse.newBuilder() | ||
| 1559 | + .setId(message.getId()) | ||
| 1560 | + .setEnterpriseId(message.getEnterpriseId()) | ||
| 1561 | + .setDinerId(message.getDinerId() != null ? message.getDinerId() : 0) | ||
| 1562 | + .setOpenId(message.getOpenId()) | ||
| 1563 | + .setTemplateId(message.getTemplateId() != null ? message.getTemplateId() : "") | ||
| 1564 | + .setOrderPeriodStartDate(message.getOrderPeriodStartDate() != null ? | ||
| 1565 | + message.getOrderPeriodStartDate().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : 0) | ||
| 1566 | + .setJumpPath(message.getJumpPath() != null ? message.getJumpPath() : "") | ||
| 1567 | + .setOrderPeriodEndDate(message.getOrderPeriodEndDate() != null ? | ||
| 1568 | + message.getOrderPeriodEndDate().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : 0) | ||
| 1569 | + .setCreatedAt(message.getCreatedAt() != null ? | ||
| 1570 | + message.getCreatedAt().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : 0) | ||
| 1571 | + .build()); | ||
| 1572 | + } | ||
| 1573 | + } catch (final Exception e) { | ||
| 1574 | + log.error("queryPendingOrderSubscriptionMessages error;", e); | ||
| 1575 | + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException()); | ||
| 1576 | + return; | ||
| 1577 | + } | ||
| 1578 | + responseObserver.onNext(builder.build()); | ||
| 1579 | + responseObserver.onCompleted(); | ||
| 1580 | + } | ||
| 1544 | } | 1581 | } | ... | ... |
| ... | @@ -96,5 +96,14 @@ public class OrderSubscriptionMessageDbServiceImpl extends ServiceImpl<OrderSubs | ... | @@ -96,5 +96,14 @@ public class OrderSubscriptionMessageDbServiceImpl extends ServiceImpl<OrderSubs |
| 96 | // 物理删除(使用 Mapper 中的 SQL,绕过逻辑删除) | 96 | // 物理删除(使用 Mapper 中的 SQL,绕过逻辑删除) |
| 97 | return this.baseMapper.physicalDeleteByIds(ids, enterpriseId); | 97 | return this.baseMapper.physicalDeleteByIds(ids, enterpriseId); |
| 98 | } | 98 | } |
| 99 | + | ||
| 100 | + @Override | ||
| 101 | + public List<OrderSubscriptionMessageDb> queryPendingMessages(int enterpriseId) { | ||
| 102 | + LambdaQueryWrapper<OrderSubscriptionMessageDb> queryWrapper = new LambdaQueryWrapper<>(); | ||
| 103 | + queryWrapper.eq(OrderSubscriptionMessageDb::getEnterpriseId, enterpriseId) | ||
| 104 | + .eq(OrderSubscriptionMessageDb::getIsDeleted, false) | ||
| 105 | + .orderByAsc(OrderSubscriptionMessageDb::getCreatedAt); | ||
| 106 | + return this.list(queryWrapper); | ||
| 107 | + } | ||
| 99 | } | 108 | } |
| 100 | 109 | ... | ... |
| ... | @@ -69,6 +69,7 @@ service MealOrderServiceRpc { | ... | @@ -69,6 +69,7 @@ service MealOrderServiceRpc { |
| 69 | rpc GetUserOrderSubscriptionMessageHistory (GetUserOrderSubscriptionMessageHistoryRpcRequest) returns (GetUserOrderSubscriptionMessageHistoryRpcResponse) {} | 69 | rpc GetUserOrderSubscriptionMessageHistory (GetUserOrderSubscriptionMessageHistoryRpcRequest) returns (GetUserOrderSubscriptionMessageHistoryRpcResponse) {} |
| 70 | rpc BatchDeleteOrderSubscriptionMessagesByIds (BatchDeleteOrderSubscriptionMessagesByIdsRpcRequest) returns (BatchDeleteOrderSubscriptionMessagesByIdsRpcResponse) {} | 70 | rpc BatchDeleteOrderSubscriptionMessagesByIds (BatchDeleteOrderSubscriptionMessagesByIdsRpcRequest) returns (BatchDeleteOrderSubscriptionMessagesByIdsRpcResponse) {} |
| 71 | rpc BatchPhysicalDeleteOrderSubscriptionMessagesByIds (BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcRequest) returns (BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcResponse) {} | 71 | rpc BatchPhysicalDeleteOrderSubscriptionMessagesByIds (BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcRequest) returns (BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcResponse) {} |
| 72 | + rpc QueryPendingOrderSubscriptionMessages (QueryPendingOrderSubscriptionMessagesRpcRequest) returns (QueryPendingOrderSubscriptionMessagesRpcResponse) {} | ||
| 72 | } | 73 | } |
| 73 | 74 | ||
| 74 | enum MealOrderOrderMethodEnum { | 75 | enum MealOrderOrderMethodEnum { |
| ... | @@ -1013,3 +1014,24 @@ message BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcRequest { | ... | @@ -1013,3 +1014,24 @@ message BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcRequest { |
| 1013 | message BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcResponse { | 1014 | message BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcResponse { |
| 1014 | int32 affectedRows = 1; // 受影响的行数 | 1015 | int32 affectedRows = 1; // 受影响的行数 |
| 1015 | } | 1016 | } |
| 1017 | + | ||
| 1018 | +// 查询待发送的订阅消息(未删除的记录) | ||
| 1019 | +message QueryPendingOrderSubscriptionMessagesRpcRequest { | ||
| 1020 | + int32 enterpriseId = 1; | ||
| 1021 | +} | ||
| 1022 | + | ||
| 1023 | +message PendingOrderSubscriptionMessageRpcResponse { | ||
| 1024 | + int64 id = 1; | ||
| 1025 | + int32 enterpriseId = 2; | ||
| 1026 | + int32 dinerId = 3; | ||
| 1027 | + string openId = 4; | ||
| 1028 | + string templateId = 5; | ||
| 1029 | + int64 orderPeriodStartDate = 6; | ||
| 1030 | + string jumpPath = 7; | ||
| 1031 | + int64 orderPeriodEndDate = 8; | ||
| 1032 | + int64 createdAt = 9; | ||
| 1033 | +} | ||
| 1034 | + | ||
| 1035 | +message QueryPendingOrderSubscriptionMessagesRpcResponse { | ||
| 1036 | + repeated PendingOrderSubscriptionMessageRpcResponse responses = 1; | ||
| 1037 | +} | ... | ... |
-
Please register or login to post a comment