zhuyifan

Merge remote-tracking branch 'origin/master'

package com.tianting.infoloop.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
/**
* 学生停餐记录Mapper接口
*/
public interface DinerMealSuspensionRecordMapper extends BaseMapper<DinerMealSuspensionRecord> {
}
\ No newline at end of file
package com.tianting.infoloop.model.db;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @TableName diner_meal_suspension_records
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value ="diner_meal_suspension_records")
public class DinerMealSuspensionRecord extends Model<DinerMealSuspensionRecord> implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer enterpriseId;
private Integer clientId;
private Integer classId;
private Integer dinerId;
private LocalDateTime startAt;
private LocalDateTime endAt;
private String comment;
private Integer createdBy;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createdAt;
private Integer creationSource;
private Integer updatedBy;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
private Integer updateSource;
@TableLogic
private Boolean isDeleted;
}
\ No newline at end of file
package com.tianting.infoloop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
/**
* 学生停餐记录服务接口
*/
public interface DinerMealSuspensionRecordService extends IService<DinerMealSuspensionRecord> {
}
\ No newline at end of file
......@@ -4,6 +4,8 @@ import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.infoloop.tianting.mealorderservice.BatchCreateDinerMealSuspensionRecordsRpcRequest;
import com.infoloop.tianting.mealorderservice.BatchCreateDinerMealSuspensionRecordsRpcResponse;
import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcRequest;
import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcResponse;
import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcRequest;
......@@ -12,6 +14,8 @@ import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateDinersRpcRequest;
import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateDinersRpcResponse;
import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateGradeClassesRpcRequest;
import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateGradeClassesRpcResponse;
import com.infoloop.tianting.mealorderservice.CreateDinerMealSuspensionRecordRpcRequest;
import com.infoloop.tianting.mealorderservice.CreateDinerMealSuspensionRecordRpcResponse;
import com.infoloop.tianting.mealorderservice.CreateDinerRpcRequest;
import com.infoloop.tianting.mealorderservice.CreateDinerRpcResponse;
import com.infoloop.tianting.mealorderservice.CreateGradeClassRpcRequest;
......@@ -24,6 +28,8 @@ import com.infoloop.tianting.mealorderservice.CreateMpAccountDinerRefRpcRequest;
import com.infoloop.tianting.mealorderservice.CreateMpAccountDinerRefRpcResponse;
import com.infoloop.tianting.mealorderservice.CreateMpAccountRpcRequest;
import com.infoloop.tianting.mealorderservice.CreateMpAccountRpcResponse;
import com.infoloop.tianting.mealorderservice.DeleteDinerMealSuspensionRecordsByIdsRpcRequest;
import com.infoloop.tianting.mealorderservice.DeleteDinerMealSuspensionRecordsRpcResponse;
import com.infoloop.tianting.mealorderservice.DeleteDinersByIdsRpcRequest;
import com.infoloop.tianting.mealorderservice.DeleteDinersRpcResponse;
import com.infoloop.tianting.mealorderservice.DeleteGradeClassesAndDinersByClassIdsRpcRequest;
......@@ -43,6 +49,10 @@ import com.infoloop.tianting.mealorderservice.DeleteMpAccountsRpcResponse;
import com.infoloop.tianting.mealorderservice.DinerModification;
import com.infoloop.tianting.mealorderservice.GetDinerByIdRpcRequest;
import com.infoloop.tianting.mealorderservice.GetDinerByIdRpcResponse;
import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordByIdRpcRequest;
import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordByIdRpcResponse;
import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordsByIdsRpcRequest;
import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordsByIdsRpcResponse;
import com.infoloop.tianting.mealorderservice.GetDinersByIdsRpcRequest;
import com.infoloop.tianting.mealorderservice.GetDinersByIdsRpcResponse;
import com.infoloop.tianting.mealorderservice.GetGradeClassByIdRpcRequest;
......@@ -67,6 +77,8 @@ import com.infoloop.tianting.mealorderservice.GetMpAccountsByIdsRpcRequest;
import com.infoloop.tianting.mealorderservice.GetMpAccountsByIdsRpcResponse;
import com.infoloop.tianting.mealorderservice.MealOrderServiceRpcGrpc;
import com.infoloop.tianting.mealorderservice.MenuSchedule;
import com.infoloop.tianting.mealorderservice.QueryDinerMealSuspensionRecordsByConditionRpcRequest;
import com.infoloop.tianting.mealorderservice.QueryDinerMealSuspensionRecordsByConditionRpcResponse;
import com.infoloop.tianting.mealorderservice.QueryDinersByConditionRpcRequest;
import com.infoloop.tianting.mealorderservice.QueryDinersByConditionRpcResponse;
import com.infoloop.tianting.mealorderservice.QueryGradeClassesByConditionRpcRequest;
......@@ -83,12 +95,15 @@ import com.infoloop.tianting.mealorderservice.QueryMpAccountsByConditionRpcReque
import com.infoloop.tianting.mealorderservice.QueryMpAccountsByConditionRpcResponse;
import com.infoloop.tianting.mealorderservice.QueryReserveMealOrdersByDinerIdsRpcRequest;
import com.infoloop.tianting.mealorderservice.QueryReserveMealOrdersByDinerIdsRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleDinerMealSuspensionRecordRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleGradeClassRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMealMenuRecordRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMealOrderRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMpAccountDinerRefRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMpAccountRpcResponse;
import com.infoloop.tianting.mealorderservice.UpdateDinerMealSuspensionRecordRpcRequest;
import com.infoloop.tianting.mealorderservice.UpdateDinerMealSuspensionRecordRpcResponse;
import com.infoloop.tianting.mealorderservice.UpdateDinerRpcRequest;
import com.infoloop.tianting.mealorderservice.UpdateDinerRpcResponse;
import com.infoloop.tianting.mealorderservice.UpdateGradeClassRpcRequest;
......@@ -96,6 +111,7 @@ import com.infoloop.tianting.mealorderservice.UpdateGradeClassRpcResponse;
import com.infoloop.tianting.mealorderservice.UpdateMpAccountRpcRequest;
import com.infoloop.tianting.mealorderservice.UpdateMpAccountRpcResponse;
import com.tianting.infoloop.model.db.Diner;
import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
import com.tianting.infoloop.model.db.GradeClass;
import com.tianting.infoloop.model.db.MealMenuRecord;
import com.tianting.infoloop.model.db.MealOrder;
......@@ -107,6 +123,7 @@ import com.tianting.infoloop.service.MealMenuRecordService;
import com.tianting.infoloop.service.MealOrderService;
import com.tianting.infoloop.service.MpAccountDinerRefService;
import com.tianting.infoloop.service.MpAccountService;
import com.tianting.infoloop.service.DinerMealSuspensionRecordService;
import com.tianting.infoloop.utils.ProtoBeanUtil;
import io.grpc.Status;
import io.grpc.stub.StreamObserver;
......@@ -117,6 +134,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
......@@ -147,6 +165,8 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi
private final MpAccountService mpAccountService;
private final DinerMealSuspensionRecordService dinerMealSuspensionRecordService;
@Override
@DS(DATA_SOURCE_SLAVE)
public void getMealOrderById(final GetMealOrderByIdRpcRequest request,
......@@ -1210,4 +1230,191 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_SLAVE)
public void getDinerMealSuspensionRecordById(final GetDinerMealSuspensionRecordByIdRpcRequest request,
final StreamObserver<GetDinerMealSuspensionRecordByIdRpcResponse> responseObserver) {
final var builder = GetDinerMealSuspensionRecordByIdRpcResponse.newBuilder();
try {
final var record = dinerMealSuspensionRecordService.getById(request.getId());
if (record != null) {
builder.setResponse(ProtoBeanUtil.beanToProto(record, SingleDinerMealSuspensionRecordRpcResponse.class));
}
} catch (final Exception e) {
log.error("getDinerMealSuspensionRecordById error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_SLAVE)
public void getDinerMealSuspensionRecordsByIds(final GetDinerMealSuspensionRecordsByIdsRpcRequest request,
final StreamObserver<GetDinerMealSuspensionRecordsByIdsRpcResponse> responseObserver) {
final var builder = GetDinerMealSuspensionRecordsByIdsRpcResponse.newBuilder();
try {
if (request.getIdsList().isEmpty()) {
builder.addAllResponses(Collections.emptyList());
} else {
final var records = dinerMealSuspensionRecordService.listByIds(request.getIdsList());
if (!records.isEmpty()) {
builder.addAllResponses(ProtoBeanUtil.beanListToProtoList(records, SingleDinerMealSuspensionRecordRpcResponse.class));
}
}
} catch (final Exception e) {
log.error("getDinerMealSuspensionRecordsByIds error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_SLAVE)
public void queryDinerMealSuspensionRecordsByCondition(final QueryDinerMealSuspensionRecordsByConditionRpcRequest request,
final StreamObserver<QueryDinerMealSuspensionRecordsByConditionRpcResponse> responseObserver) {
final var builder = QueryDinerMealSuspensionRecordsByConditionRpcResponse.newBuilder();
try {
LambdaQueryWrapper<DinerMealSuspensionRecord> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DinerMealSuspensionRecord::getEnterpriseId, request.getEnterpriseId());
if (request.getShouldFilterClientIds()) {
queryWrapper.in(!request.getClientIdsList().isEmpty(), DinerMealSuspensionRecord::getClientId, request.getClientIdsList());
}
if (request.getShouldFilterClassIds()) {
queryWrapper.in(!request.getClassIdsList().isEmpty(), DinerMealSuspensionRecord::getClassId, request.getClassIdsList());
}
if (request.getShouldFilterDinerIds()) {
queryWrapper.in(!request.getDinerIdsList().isEmpty(), DinerMealSuspensionRecord::getDinerId, request.getDinerIdsList());
}
if (request.getShouldFilterStartAt()) {
queryWrapper.ge(DinerMealSuspensionRecord::getStartAt, LocalDateTimeUtil.of(request.getStartAt()));
}
if (request.getShouldFilterEndAt()) {
queryWrapper.le(DinerMealSuspensionRecord::getEndAt, LocalDateTimeUtil.of(request.getEndAt()));
}
final var records = dinerMealSuspensionRecordService.list(queryWrapper);
if (!records.isEmpty()) {
builder.addAllResponses(ProtoBeanUtil.beanListToProtoList(records, SingleDinerMealSuspensionRecordRpcResponse.class));
}
} catch (final Exception e) {
log.error("queryDinerMealSuspensionRecordsByCondition error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_MASTER)
public void createDinerMealSuspensionRecord(final CreateDinerMealSuspensionRecordRpcRequest request,
final StreamObserver<CreateDinerMealSuspensionRecordRpcResponse> responseObserver) {
final var builder = CreateDinerMealSuspensionRecordRpcResponse.newBuilder();
try {
DinerMealSuspensionRecord record = new DinerMealSuspensionRecord();
record.setEnterpriseId(request.getEnterpriseId());
record.setCreatedBy(request.getCreatedBy());
record.setCreationSource(request.getCreationSource());
record.setUpdatedBy(request.getCreatedBy());
record.setUpdateSource(request.getCreationSource());
record.setClientId(request.getCreation().getClientId());
record.setClassId(request.getCreation().getClassId());
record.setDinerId(request.getCreation().getDinerId());
record.setStartAt(LocalDateTimeUtil.of(request.getCreation().getStartAt()));
record.setEndAt(LocalDateTimeUtil.of(request.getCreation().getEndAt()));
record.setComment(request.getCreation().getComment());
builder.setIsCreated(dinerMealSuspensionRecordService.save(record)).setId(record.getId());
} catch (final Exception e) {
log.error("createDinerMealSuspensionRecord error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_MASTER)
public void batchCreateDinerMealSuspensionRecords(final BatchCreateDinerMealSuspensionRecordsRpcRequest request,
final StreamObserver<BatchCreateDinerMealSuspensionRecordsRpcResponse> responseObserver) {
final var builder = BatchCreateDinerMealSuspensionRecordsRpcResponse.newBuilder();
try {
final var records = new ArrayList<DinerMealSuspensionRecord>();
for (final var creation : request.getCreationsList()) {
DinerMealSuspensionRecord record = new DinerMealSuspensionRecord();
record.setEnterpriseId(request.getEnterpriseId());
record.setCreatedBy(request.getCreatedBy());
record.setCreationSource(request.getCreationSource());
record.setUpdatedBy(request.getCreatedBy());
record.setUpdateSource(request.getCreationSource());
record.setClientId(creation.getClientId());
record.setClassId(creation.getClassId());
record.setDinerId(creation.getDinerId());
record.setStartAt(LocalDateTimeUtil.of(creation.getStartAt()));
record.setEndAt(LocalDateTimeUtil.of(creation.getEndAt()));
record.setComment(creation.getComment());
records.add(record);
}
builder.setIsCreated(dinerMealSuspensionRecordService.saveBatch(records))
.addAllIds(records.stream().map(DinerMealSuspensionRecord::getId).collect(Collectors.toList()));
} catch (final Exception e) {
log.error("batchCreateDinerMealSuspensionRecords error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_MASTER)
public void updateDinerMealSuspensionRecord(final UpdateDinerMealSuspensionRecordRpcRequest request,
final StreamObserver<UpdateDinerMealSuspensionRecordRpcResponse> responseObserver) {
final var builder = UpdateDinerMealSuspensionRecordRpcResponse.newBuilder();
try {
DinerMealSuspensionRecord record = new DinerMealSuspensionRecord();
record.setId(request.getModification().getId());
record.setEnterpriseId(request.getEnterpriseId());
record.setUpdatedBy(request.getUpdatedBy());
record.setUpdateSource(request.getUpdateSource());
if (request.getModification().getShouldUpdateStartAt()) {
record.setStartAt(LocalDateTimeUtil.of(request.getModification().getStartAt()));
}
if (request.getModification().getShouldUpdateEndAt()) {
record.setEndAt(LocalDateTimeUtil.of(request.getModification().getEndAt()));
}
if (request.getModification().getShouldUpdateComment()) {
record.setComment(request.getModification().getComment());
}
if (request.getModification().getShouldUpdateClassId()) {
record.setClassId(request.getModification().getClassId());
}
builder.setIsUpdated(dinerMealSuspensionRecordService.updateById(record));
} catch (final Exception e) {
log.error("updateDinerMealSuspensionRecord error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
@Override
@DS(DATA_SOURCE_MASTER)
public void deleteDinerMealSuspensionRecordsByIds(final DeleteDinerMealSuspensionRecordsByIdsRpcRequest request,
final StreamObserver<DeleteDinerMealSuspensionRecordsRpcResponse> responseObserver) {
final var builder = DeleteDinerMealSuspensionRecordsRpcResponse.newBuilder();
try {
final var records = dinerMealSuspensionRecordService.listByIds(request.getIdsList());
for (final var record : records) {
record.setUpdatedBy(request.getUpdatedBy());
record.setUpdateSource(request.getUpdateSource());
}
builder.setIsDeleted(dinerMealSuspensionRecordService.updateBatchById(records) &&
dinerMealSuspensionRecordService.removeBatchByIds(request.getIdsList()));
} catch (final Exception e) {
log.error("deleteDinerMealSuspensionRecordsByIds error;", e);
responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
}
responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
}
......
package com.tianting.infoloop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianting.infoloop.mapper.DinerMealSuspensionRecordMapper;
import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
import com.tianting.infoloop.service.DinerMealSuspensionRecordService;
import org.springframework.stereotype.Service;
/**
* 学生停餐记录服务实现类
*/
@Service
public class DinerMealSuspensionRecordServiceImpl extends ServiceImpl<DinerMealSuspensionRecordMapper, DinerMealSuspensionRecord> implements DinerMealSuspensionRecordService {
}
\ No newline at end of file
......@@ -54,6 +54,15 @@ service MealOrderServiceRpc {
rpc QueryMealMenuRecordsByCondition (QueryMealMenuRecordsByConditionRpcRequest) returns (QueryMealMenuRecordsByConditionRpcResponse) {}
rpc CreateMealMenuRecord (CreateMealMenuRecordRpcRequest) returns (CreateMealMenuRecordRpcResponse) {}
rpc QueryLatestMealMenuRecordsByClientIds (QueryLatestMealMenuRecordsByClientIdsRpcRequest) returns (QueryLatestMealMenuRecordsByClientIdsRpcResponse) {}
// 停餐记录相关服务
rpc getDinerMealSuspensionRecordById(GetDinerMealSuspensionRecordByIdRpcRequest) returns (GetDinerMealSuspensionRecordByIdRpcResponse);
rpc getDinerMealSuspensionRecordsByIds(GetDinerMealSuspensionRecordsByIdsRpcRequest) returns (GetDinerMealSuspensionRecordsByIdsRpcResponse);
rpc queryDinerMealSuspensionRecordsByCondition(QueryDinerMealSuspensionRecordsByConditionRpcRequest) returns (QueryDinerMealSuspensionRecordsByConditionRpcResponse);
rpc createDinerMealSuspensionRecord(CreateDinerMealSuspensionRecordRpcRequest) returns (CreateDinerMealSuspensionRecordRpcResponse);
rpc batchCreateDinerMealSuspensionRecords(BatchCreateDinerMealSuspensionRecordsRpcRequest) returns (BatchCreateDinerMealSuspensionRecordsRpcResponse);
rpc updateDinerMealSuspensionRecord(UpdateDinerMealSuspensionRecordRpcRequest) returns (UpdateDinerMealSuspensionRecordRpcResponse);
rpc deleteDinerMealSuspensionRecordsByIds(DeleteDinerMealSuspensionRecordsByIdsRpcRequest) returns (DeleteDinerMealSuspensionRecordsRpcResponse);
}
enum MealOrderOrderMethodEnum {
......@@ -823,3 +832,126 @@ message QueryLatestMealMenuRecordsByClientIdsRpcRequest {
message QueryLatestMealMenuRecordsByClientIdsRpcResponse {
repeated SingleMealMenuRecordRpcResponse responses = 1;
}
// 停餐记录相关消息定义
message SingleDinerMealSuspensionRecordRpcResponse {
int32 id = 1;
int32 enterpriseId = 2;
int32 clientId = 3;
int32 classId = 4;
int32 dinerId = 5;
int64 startAt = 6;
int64 endAt = 7;
string comment = 8;
int64 createdAt = 9;
int32 createdBy = 10;
int32 creationSource = 11;
int64 updatedAt = 12;
int32 updatedBy = 13;
int32 updateSource = 14;
}
message GetDinerMealSuspensionRecordByIdRpcRequest {
int64 id = 1;
}
message GetDinerMealSuspensionRecordByIdRpcResponse {
SingleDinerMealSuspensionRecordRpcResponse response = 1;
}
message GetDinerMealSuspensionRecordsByIdsRpcRequest {
repeated int32 ids = 1;
}
message GetDinerMealSuspensionRecordsByIdsRpcResponse {
repeated SingleDinerMealSuspensionRecordRpcResponse responses = 1;
}
message QueryDinerMealSuspensionRecordsByConditionRpcRequest {
int32 enterpriseId = 1;
bool shouldFilterClientIds = 2;
repeated int32 clientIds = 3;
bool shouldFilterClassIds = 4;
repeated int32 classIds = 5;
bool shouldFilterDinerIds = 6;
repeated int32 dinerIds = 7;
bool shouldFilterStartAt = 8;
int64 startAt = 9;
bool shouldFilterEndAt = 10;
int64 endAt = 11;
}
message QueryDinerMealSuspensionRecordsByConditionRpcResponse {
repeated SingleDinerMealSuspensionRecordRpcResponse responses = 1;
}
message CreateDinerMealSuspensionRecordRpcRequest {
int32 enterpriseId = 1;
int32 createdBy = 2;
int32 creationSource = 3;
DinerMealSuspensionRecordCreation creation = 4;
}
message DinerMealSuspensionRecordCreation {
int32 clientId = 1;
int32 classId = 2;
int32 dinerId = 3;
int64 startAt = 4;
int64 endAt = 5;
string comment = 6;
}
message CreateDinerMealSuspensionRecordRpcResponse {
bool isCreated = 1;
int32 id = 2;
}
message UpdateDinerMealSuspensionRecordRpcRequest {
int32 enterpriseId = 1;
int32 updatedBy = 2;
int32 updateSource = 3;
DinerMealSuspensionRecordModification modification = 4;
}
message DinerMealSuspensionRecordModification {
int32 id = 1;
bool shouldUpdateClientId = 2;
int32 clientId = 3;
bool shouldUpdateClassId = 4;
int32 classId = 5;
bool shouldUpdateDinerId = 6;
int32 dinerId = 7;
bool shouldUpdateStartAt = 8;
int64 startAt = 9;
bool shouldUpdateEndAt = 10;
int64 endAt = 11;
bool shouldUpdateComment = 12;
string comment = 13;
}
message UpdateDinerMealSuspensionRecordRpcResponse {
bool isUpdated = 1;
}
message DeleteDinerMealSuspensionRecordsByIdsRpcRequest {
repeated int32 ids = 1;
int32 enterpriseId = 2;
int32 updatedBy = 3;
int32 updateSource = 4;
}
message DeleteDinerMealSuspensionRecordsRpcResponse {
bool isDeleted = 1;
}
message BatchCreateDinerMealSuspensionRecordsRpcRequest {
int32 enterpriseId = 1;
int32 createdBy = 2;
int32 creationSource = 3;
repeated DinerMealSuspensionRecordCreation creations = 4;
}
message BatchCreateDinerMealSuspensionRecordsRpcResponse {
bool isCreated = 1;
repeated int32 ids = 2;
}
......