Jiaqi Xia

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

......@@ -20,7 +20,7 @@ import java.time.LocalDateTime;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value = "order_subscription_message")
@TableName(value = "meal_order_subscription_messages")
public class OrderSubscriptionMessageDb extends Model<OrderSubscriptionMessageDb> {
/**
* 主键ID
......
......@@ -28,5 +28,12 @@ public interface OrderSubscriptionMessageDbService extends IService<OrderSubscri
* @return 受影响的行数
*/
int batchPhysicalDeleteByIds(java.util.List<Long> ids, int enterpriseId);
/**
* 查询待发送的订阅消息(未删除的记录)
* @param enterpriseId 企业ID
* @return 待发送的订阅消息列表
*/
List<OrderSubscriptionMessageDb> queryPendingMessages(int enterpriseId);
}
......
......@@ -16,6 +16,9 @@ import com.infoloop.tianting.mealorderservice.CreateOrderSubscriptionMessageRpcR
import com.infoloop.tianting.mealorderservice.GetUserOrderSubscriptionMessageHistoryRpcRequest;
import com.infoloop.tianting.mealorderservice.GetUserOrderSubscriptionMessageHistoryRpcResponse;
import com.infoloop.tianting.mealorderservice.OrderSubscriptionMessageRpcResponse;
import com.infoloop.tianting.mealorderservice.PendingOrderSubscriptionMessageRpcResponse;
import com.infoloop.tianting.mealorderservice.QueryPendingOrderSubscriptionMessagesRpcRequest;
import com.infoloop.tianting.mealorderservice.QueryPendingOrderSubscriptionMessagesRpcResponse;
import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcResponse;
import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcRequest;
import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcResponse;
......@@ -1541,4 +1544,38 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_SLAVE)
public void queryPendingOrderSubscriptionMessages(
final QueryPendingOrderSubscriptionMessagesRpcRequest request,
final StreamObserver<QueryPendingOrderSubscriptionMessagesRpcResponse> responseObserver) {
final var builder = QueryPendingOrderSubscriptionMessagesRpcResponse.newBuilder();
try {
final var messages = orderSubscriptionMessageDbService.queryPendingMessages(
request.getEnterpriseId());
for (final var message : messages) {
builder.addResponses(PendingOrderSubscriptionMessageRpcResponse.newBuilder()
.setId(message.getId())
.setEnterpriseId(message.getEnterpriseId())
.setDinerId(message.getDinerId() != null ? message.getDinerId() : 0)
.setOpenId(message.getOpenId())
.setTemplateId(message.getTemplateId() != null ? message.getTemplateId() : "")
.setOrderPeriodStartDate(message.getOrderPeriodStartDate() != null ?
message.getOrderPeriodStartDate().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : 0)
.setJumpPath(message.getJumpPath() != null ? message.getJumpPath() : "")
.setOrderPeriodEndDate(message.getOrderPeriodEndDate() != null ?
message.getOrderPeriodEndDate().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : 0)
.setCreatedAt(message.getCreatedAt() != null ?
message.getCreatedAt().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : 0)
.build());
}
} catch (final Exception e) {
log.error("queryPendingOrderSubscriptionMessages error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
return;
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
}
......
......@@ -96,5 +96,14 @@ public class OrderSubscriptionMessageDbServiceImpl extends ServiceImpl<OrderSubs
// 物理删除(使用 Mapper 中的 SQL,绕过逻辑删除)
return this.baseMapper.physicalDeleteByIds(ids, enterpriseId);
}
@Override
public List<OrderSubscriptionMessageDb> queryPendingMessages(int enterpriseId) {
LambdaQueryWrapper<OrderSubscriptionMessageDb> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrderSubscriptionMessageDb::getEnterpriseId, enterpriseId)
.eq(OrderSubscriptionMessageDb::getIsDeleted, false)
.orderByAsc(OrderSubscriptionMessageDb::getCreatedAt);
return this.list(queryWrapper);
}
}
......
......@@ -69,6 +69,7 @@ service MealOrderServiceRpc {
rpc GetUserOrderSubscriptionMessageHistory (GetUserOrderSubscriptionMessageHistoryRpcRequest) returns (GetUserOrderSubscriptionMessageHistoryRpcResponse) {}
rpc BatchDeleteOrderSubscriptionMessagesByIds (BatchDeleteOrderSubscriptionMessagesByIdsRpcRequest) returns (BatchDeleteOrderSubscriptionMessagesByIdsRpcResponse) {}
rpc BatchPhysicalDeleteOrderSubscriptionMessagesByIds (BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcRequest) returns (BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcResponse) {}
rpc QueryPendingOrderSubscriptionMessages (QueryPendingOrderSubscriptionMessagesRpcRequest) returns (QueryPendingOrderSubscriptionMessagesRpcResponse) {}
}
enum MealOrderOrderMethodEnum {
......@@ -1013,3 +1014,24 @@ message BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcRequest {
message BatchPhysicalDeleteOrderSubscriptionMessagesByIdsRpcResponse {
int32 affectedRows = 1; // 受影响的行数
}
// 查询待发送的订阅消息(未删除的记录)
message QueryPendingOrderSubscriptionMessagesRpcRequest {
int32 enterpriseId = 1;
}
message PendingOrderSubscriptionMessageRpcResponse {
int64 id = 1;
int32 enterpriseId = 2;
int32 dinerId = 3;
string openId = 4;
string templateId = 5;
int64 orderPeriodStartDate = 6;
string jumpPath = 7;
int64 orderPeriodEndDate = 8;
int64 createdAt = 9;
}
message QueryPendingOrderSubscriptionMessagesRpcResponse {
repeated PendingOrderSubscriptionMessageRpcResponse responses = 1;
}
......