Jiaqi Xia

feat: add pending order subscription messages query and update proto/service/db implementations

...@@ -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 +}
......