zhuyifan

Merge remote-tracking branch 'origin/master'

1 +package com.tianting.infoloop.mapper;
2 +
3 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 +import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
5 +
6 +/**
7 + * 学生停餐记录Mapper接口
8 + */
9 +public interface DinerMealSuspensionRecordMapper extends BaseMapper<DinerMealSuspensionRecord> {
10 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package com.tianting.infoloop.model.db;
2 +
3 +import com.baomidou.mybatisplus.annotation.FieldFill;
4 +import com.baomidou.mybatisplus.annotation.IdType;
5 +import com.baomidou.mybatisplus.annotation.TableField;
6 +import com.baomidou.mybatisplus.annotation.TableId;
7 +import com.baomidou.mybatisplus.annotation.TableLogic;
8 +import com.baomidou.mybatisplus.annotation.TableName;
9 +import com.baomidou.mybatisplus.extension.activerecord.Model;
10 +import lombok.Data;
11 +import lombok.EqualsAndHashCode;
12 +import lombok.experimental.Accessors;
13 +
14 +import java.io.Serializable;
15 +import java.time.LocalDateTime;
16 +
17 +/**
18 + * @TableName diner_meal_suspension_records
19 + */
20 +@Data
21 +@Accessors(chain = true)
22 +@EqualsAndHashCode(callSuper = true)
23 +@TableName(value ="diner_meal_suspension_records")
24 +public class DinerMealSuspensionRecord extends Model<DinerMealSuspensionRecord> implements Serializable {
25 +
26 + @TableId(type = IdType.AUTO)
27 + private Integer id;
28 +
29 + private Integer enterpriseId;
30 +
31 + private Integer clientId;
32 +
33 + private Integer classId;
34 +
35 + private Integer dinerId;
36 +
37 + private LocalDateTime startAt;
38 +
39 + private LocalDateTime endAt;
40 +
41 + private String comment;
42 +
43 + private Integer createdBy;
44 +
45 + @TableField(fill = FieldFill.INSERT)
46 + private LocalDateTime createdAt;
47 +
48 + private Integer creationSource;
49 +
50 + private Integer updatedBy;
51 +
52 + @TableField(fill = FieldFill.INSERT_UPDATE)
53 + private LocalDateTime updatedAt;
54 +
55 + private Integer updateSource;
56 +
57 + @TableLogic
58 + private Boolean isDeleted;
59 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package com.tianting.infoloop.service;
2 +
3 +import com.baomidou.mybatisplus.extension.service.IService;
4 +import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
5 +
6 +/**
7 + * 学生停餐记录服务接口
8 + */
9 +public interface DinerMealSuspensionRecordService extends IService<DinerMealSuspensionRecord> {
10 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -4,6 +4,8 @@ import cn.hutool.core.date.LocalDateTimeUtil; ...@@ -4,6 +4,8 @@ import cn.hutool.core.date.LocalDateTimeUtil;
4 import com.baomidou.dynamic.datasource.annotation.DS; 4 import com.baomidou.dynamic.datasource.annotation.DS;
5 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 5 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
6 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 6 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
7 +import com.infoloop.tianting.mealorderservice.BatchCreateDinerMealSuspensionRecordsRpcRequest;
8 +import com.infoloop.tianting.mealorderservice.BatchCreateDinerMealSuspensionRecordsRpcResponse;
7 import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcRequest; 9 import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcRequest;
8 import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcResponse; 10 import com.infoloop.tianting.mealorderservice.BatchCreateGradeClassesRpcResponse;
9 import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcRequest; 11 import com.infoloop.tianting.mealorderservice.BatchCreateMealOrdersRpcRequest;
...@@ -12,6 +14,8 @@ import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateDinersRpcRequest; ...@@ -12,6 +14,8 @@ import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateDinersRpcRequest;
12 import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateDinersRpcResponse; 14 import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateDinersRpcResponse;
13 import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateGradeClassesRpcRequest; 15 import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateGradeClassesRpcRequest;
14 import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateGradeClassesRpcResponse; 16 import com.infoloop.tianting.mealorderservice.BatchSaveOrUpdateGradeClassesRpcResponse;
17 +import com.infoloop.tianting.mealorderservice.CreateDinerMealSuspensionRecordRpcRequest;
18 +import com.infoloop.tianting.mealorderservice.CreateDinerMealSuspensionRecordRpcResponse;
15 import com.infoloop.tianting.mealorderservice.CreateDinerRpcRequest; 19 import com.infoloop.tianting.mealorderservice.CreateDinerRpcRequest;
16 import com.infoloop.tianting.mealorderservice.CreateDinerRpcResponse; 20 import com.infoloop.tianting.mealorderservice.CreateDinerRpcResponse;
17 import com.infoloop.tianting.mealorderservice.CreateGradeClassRpcRequest; 21 import com.infoloop.tianting.mealorderservice.CreateGradeClassRpcRequest;
...@@ -24,6 +28,8 @@ import com.infoloop.tianting.mealorderservice.CreateMpAccountDinerRefRpcRequest; ...@@ -24,6 +28,8 @@ import com.infoloop.tianting.mealorderservice.CreateMpAccountDinerRefRpcRequest;
24 import com.infoloop.tianting.mealorderservice.CreateMpAccountDinerRefRpcResponse; 28 import com.infoloop.tianting.mealorderservice.CreateMpAccountDinerRefRpcResponse;
25 import com.infoloop.tianting.mealorderservice.CreateMpAccountRpcRequest; 29 import com.infoloop.tianting.mealorderservice.CreateMpAccountRpcRequest;
26 import com.infoloop.tianting.mealorderservice.CreateMpAccountRpcResponse; 30 import com.infoloop.tianting.mealorderservice.CreateMpAccountRpcResponse;
31 +import com.infoloop.tianting.mealorderservice.DeleteDinerMealSuspensionRecordsByIdsRpcRequest;
32 +import com.infoloop.tianting.mealorderservice.DeleteDinerMealSuspensionRecordsRpcResponse;
27 import com.infoloop.tianting.mealorderservice.DeleteDinersByIdsRpcRequest; 33 import com.infoloop.tianting.mealorderservice.DeleteDinersByIdsRpcRequest;
28 import com.infoloop.tianting.mealorderservice.DeleteDinersRpcResponse; 34 import com.infoloop.tianting.mealorderservice.DeleteDinersRpcResponse;
29 import com.infoloop.tianting.mealorderservice.DeleteGradeClassesAndDinersByClassIdsRpcRequest; 35 import com.infoloop.tianting.mealorderservice.DeleteGradeClassesAndDinersByClassIdsRpcRequest;
...@@ -43,6 +49,10 @@ import com.infoloop.tianting.mealorderservice.DeleteMpAccountsRpcResponse; ...@@ -43,6 +49,10 @@ import com.infoloop.tianting.mealorderservice.DeleteMpAccountsRpcResponse;
43 import com.infoloop.tianting.mealorderservice.DinerModification; 49 import com.infoloop.tianting.mealorderservice.DinerModification;
44 import com.infoloop.tianting.mealorderservice.GetDinerByIdRpcRequest; 50 import com.infoloop.tianting.mealorderservice.GetDinerByIdRpcRequest;
45 import com.infoloop.tianting.mealorderservice.GetDinerByIdRpcResponse; 51 import com.infoloop.tianting.mealorderservice.GetDinerByIdRpcResponse;
52 +import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordByIdRpcRequest;
53 +import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordByIdRpcResponse;
54 +import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordsByIdsRpcRequest;
55 +import com.infoloop.tianting.mealorderservice.GetDinerMealSuspensionRecordsByIdsRpcResponse;
46 import com.infoloop.tianting.mealorderservice.GetDinersByIdsRpcRequest; 56 import com.infoloop.tianting.mealorderservice.GetDinersByIdsRpcRequest;
47 import com.infoloop.tianting.mealorderservice.GetDinersByIdsRpcResponse; 57 import com.infoloop.tianting.mealorderservice.GetDinersByIdsRpcResponse;
48 import com.infoloop.tianting.mealorderservice.GetGradeClassByIdRpcRequest; 58 import com.infoloop.tianting.mealorderservice.GetGradeClassByIdRpcRequest;
...@@ -67,6 +77,8 @@ import com.infoloop.tianting.mealorderservice.GetMpAccountsByIdsRpcRequest; ...@@ -67,6 +77,8 @@ import com.infoloop.tianting.mealorderservice.GetMpAccountsByIdsRpcRequest;
67 import com.infoloop.tianting.mealorderservice.GetMpAccountsByIdsRpcResponse; 77 import com.infoloop.tianting.mealorderservice.GetMpAccountsByIdsRpcResponse;
68 import com.infoloop.tianting.mealorderservice.MealOrderServiceRpcGrpc; 78 import com.infoloop.tianting.mealorderservice.MealOrderServiceRpcGrpc;
69 import com.infoloop.tianting.mealorderservice.MenuSchedule; 79 import com.infoloop.tianting.mealorderservice.MenuSchedule;
80 +import com.infoloop.tianting.mealorderservice.QueryDinerMealSuspensionRecordsByConditionRpcRequest;
81 +import com.infoloop.tianting.mealorderservice.QueryDinerMealSuspensionRecordsByConditionRpcResponse;
70 import com.infoloop.tianting.mealorderservice.QueryDinersByConditionRpcRequest; 82 import com.infoloop.tianting.mealorderservice.QueryDinersByConditionRpcRequest;
71 import com.infoloop.tianting.mealorderservice.QueryDinersByConditionRpcResponse; 83 import com.infoloop.tianting.mealorderservice.QueryDinersByConditionRpcResponse;
72 import com.infoloop.tianting.mealorderservice.QueryGradeClassesByConditionRpcRequest; 84 import com.infoloop.tianting.mealorderservice.QueryGradeClassesByConditionRpcRequest;
...@@ -83,12 +95,15 @@ import com.infoloop.tianting.mealorderservice.QueryMpAccountsByConditionRpcReque ...@@ -83,12 +95,15 @@ import com.infoloop.tianting.mealorderservice.QueryMpAccountsByConditionRpcReque
83 import com.infoloop.tianting.mealorderservice.QueryMpAccountsByConditionRpcResponse; 95 import com.infoloop.tianting.mealorderservice.QueryMpAccountsByConditionRpcResponse;
84 import com.infoloop.tianting.mealorderservice.QueryReserveMealOrdersByDinerIdsRpcRequest; 96 import com.infoloop.tianting.mealorderservice.QueryReserveMealOrdersByDinerIdsRpcRequest;
85 import com.infoloop.tianting.mealorderservice.QueryReserveMealOrdersByDinerIdsRpcResponse; 97 import com.infoloop.tianting.mealorderservice.QueryReserveMealOrdersByDinerIdsRpcResponse;
98 +import com.infoloop.tianting.mealorderservice.SingleDinerMealSuspensionRecordRpcResponse;
86 import com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse; 99 import com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse;
87 import com.infoloop.tianting.mealorderservice.SingleGradeClassRpcResponse; 100 import com.infoloop.tianting.mealorderservice.SingleGradeClassRpcResponse;
88 import com.infoloop.tianting.mealorderservice.SingleMealMenuRecordRpcResponse; 101 import com.infoloop.tianting.mealorderservice.SingleMealMenuRecordRpcResponse;
89 import com.infoloop.tianting.mealorderservice.SingleMealOrderRpcResponse; 102 import com.infoloop.tianting.mealorderservice.SingleMealOrderRpcResponse;
90 import com.infoloop.tianting.mealorderservice.SingleMpAccountDinerRefRpcResponse; 103 import com.infoloop.tianting.mealorderservice.SingleMpAccountDinerRefRpcResponse;
91 import com.infoloop.tianting.mealorderservice.SingleMpAccountRpcResponse; 104 import com.infoloop.tianting.mealorderservice.SingleMpAccountRpcResponse;
105 +import com.infoloop.tianting.mealorderservice.UpdateDinerMealSuspensionRecordRpcRequest;
106 +import com.infoloop.tianting.mealorderservice.UpdateDinerMealSuspensionRecordRpcResponse;
92 import com.infoloop.tianting.mealorderservice.UpdateDinerRpcRequest; 107 import com.infoloop.tianting.mealorderservice.UpdateDinerRpcRequest;
93 import com.infoloop.tianting.mealorderservice.UpdateDinerRpcResponse; 108 import com.infoloop.tianting.mealorderservice.UpdateDinerRpcResponse;
94 import com.infoloop.tianting.mealorderservice.UpdateGradeClassRpcRequest; 109 import com.infoloop.tianting.mealorderservice.UpdateGradeClassRpcRequest;
...@@ -96,6 +111,7 @@ import com.infoloop.tianting.mealorderservice.UpdateGradeClassRpcResponse; ...@@ -96,6 +111,7 @@ import com.infoloop.tianting.mealorderservice.UpdateGradeClassRpcResponse;
96 import com.infoloop.tianting.mealorderservice.UpdateMpAccountRpcRequest; 111 import com.infoloop.tianting.mealorderservice.UpdateMpAccountRpcRequest;
97 import com.infoloop.tianting.mealorderservice.UpdateMpAccountRpcResponse; 112 import com.infoloop.tianting.mealorderservice.UpdateMpAccountRpcResponse;
98 import com.tianting.infoloop.model.db.Diner; 113 import com.tianting.infoloop.model.db.Diner;
114 +import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
99 import com.tianting.infoloop.model.db.GradeClass; 115 import com.tianting.infoloop.model.db.GradeClass;
100 import com.tianting.infoloop.model.db.MealMenuRecord; 116 import com.tianting.infoloop.model.db.MealMenuRecord;
101 import com.tianting.infoloop.model.db.MealOrder; 117 import com.tianting.infoloop.model.db.MealOrder;
...@@ -107,6 +123,7 @@ import com.tianting.infoloop.service.MealMenuRecordService; ...@@ -107,6 +123,7 @@ import com.tianting.infoloop.service.MealMenuRecordService;
107 import com.tianting.infoloop.service.MealOrderService; 123 import com.tianting.infoloop.service.MealOrderService;
108 import com.tianting.infoloop.service.MpAccountDinerRefService; 124 import com.tianting.infoloop.service.MpAccountDinerRefService;
109 import com.tianting.infoloop.service.MpAccountService; 125 import com.tianting.infoloop.service.MpAccountService;
126 +import com.tianting.infoloop.service.DinerMealSuspensionRecordService;
110 import com.tianting.infoloop.utils.ProtoBeanUtil; 127 import com.tianting.infoloop.utils.ProtoBeanUtil;
111 import io.grpc.Status; 128 import io.grpc.Status;
112 import io.grpc.stub.StreamObserver; 129 import io.grpc.stub.StreamObserver;
...@@ -117,6 +134,7 @@ import org.springframework.stereotype.Service; ...@@ -117,6 +134,7 @@ import org.springframework.stereotype.Service;
117 import org.springframework.transaction.annotation.Transactional; 134 import org.springframework.transaction.annotation.Transactional;
118 135
119 import java.time.DayOfWeek; 136 import java.time.DayOfWeek;
137 +import java.time.Instant;
120 import java.time.LocalDate; 138 import java.time.LocalDate;
121 import java.time.LocalDateTime; 139 import java.time.LocalDateTime;
122 import java.time.LocalTime; 140 import java.time.LocalTime;
...@@ -147,6 +165,8 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi ...@@ -147,6 +165,8 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi
147 165
148 private final MpAccountService mpAccountService; 166 private final MpAccountService mpAccountService;
149 167
168 + private final DinerMealSuspensionRecordService dinerMealSuspensionRecordService;
169 +
150 @Override 170 @Override
151 @DS(DATA_SOURCE_SLAVE) 171 @DS(DATA_SOURCE_SLAVE)
152 public void getMealOrderById(final GetMealOrderByIdRpcRequest request, 172 public void getMealOrderById(final GetMealOrderByIdRpcRequest request,
...@@ -1210,4 +1230,191 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi ...@@ -1210,4 +1230,191 @@ public class MealOrderGrpcService extends MealOrderServiceRpcGrpc.MealOrderServi
1210 responseObserver.onNext(builder.build()); 1230 responseObserver.onNext(builder.build());
1211 responseObserver.onCompleted(); 1231 responseObserver.onCompleted();
1212 } 1232 }
1233 +
1234 + @Override
1235 + @DS(DATA_SOURCE_SLAVE)
1236 + public void getDinerMealSuspensionRecordById(final GetDinerMealSuspensionRecordByIdRpcRequest request,
1237 + final StreamObserver<GetDinerMealSuspensionRecordByIdRpcResponse> responseObserver) {
1238 + final var builder = GetDinerMealSuspensionRecordByIdRpcResponse.newBuilder();
1239 + try {
1240 + final var record = dinerMealSuspensionRecordService.getById(request.getId());
1241 + if (record != null) {
1242 + builder.setResponse(ProtoBeanUtil.beanToProto(record, SingleDinerMealSuspensionRecordRpcResponse.class));
1243 + }
1244 + } catch (final Exception e) {
1245 + log.error("getDinerMealSuspensionRecordById error;", e);
1246 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1247 + }
1248 + responseObserver.onNext(builder.build());
1249 + responseObserver.onCompleted();
1250 + }
1251 +
1252 + @Override
1253 + @DS(DATA_SOURCE_SLAVE)
1254 + public void getDinerMealSuspensionRecordsByIds(final GetDinerMealSuspensionRecordsByIdsRpcRequest request,
1255 + final StreamObserver<GetDinerMealSuspensionRecordsByIdsRpcResponse> responseObserver) {
1256 + final var builder = GetDinerMealSuspensionRecordsByIdsRpcResponse.newBuilder();
1257 + try {
1258 + if (request.getIdsList().isEmpty()) {
1259 + builder.addAllResponses(Collections.emptyList());
1260 + } else {
1261 + final var records = dinerMealSuspensionRecordService.listByIds(request.getIdsList());
1262 + if (!records.isEmpty()) {
1263 + builder.addAllResponses(ProtoBeanUtil.beanListToProtoList(records, SingleDinerMealSuspensionRecordRpcResponse.class));
1264 + }
1265 + }
1266 + } catch (final Exception e) {
1267 + log.error("getDinerMealSuspensionRecordsByIds error;", e);
1268 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1269 + }
1270 + responseObserver.onNext(builder.build());
1271 + responseObserver.onCompleted();
1272 + }
1273 +
1274 + @Override
1275 + @DS(DATA_SOURCE_SLAVE)
1276 + public void queryDinerMealSuspensionRecordsByCondition(final QueryDinerMealSuspensionRecordsByConditionRpcRequest request,
1277 + final StreamObserver<QueryDinerMealSuspensionRecordsByConditionRpcResponse> responseObserver) {
1278 + final var builder = QueryDinerMealSuspensionRecordsByConditionRpcResponse.newBuilder();
1279 + try {
1280 + LambdaQueryWrapper<DinerMealSuspensionRecord> queryWrapper = new LambdaQueryWrapper<>();
1281 + queryWrapper.eq(DinerMealSuspensionRecord::getEnterpriseId, request.getEnterpriseId());
1282 + if (request.getShouldFilterClientIds()) {
1283 + queryWrapper.in(!request.getClientIdsList().isEmpty(), DinerMealSuspensionRecord::getClientId, request.getClientIdsList());
1284 + }
1285 + if (request.getShouldFilterClassIds()) {
1286 + queryWrapper.in(!request.getClassIdsList().isEmpty(), DinerMealSuspensionRecord::getClassId, request.getClassIdsList());
1287 + }
1288 + if (request.getShouldFilterDinerIds()) {
1289 + queryWrapper.in(!request.getDinerIdsList().isEmpty(), DinerMealSuspensionRecord::getDinerId, request.getDinerIdsList());
1290 + }
1291 + if (request.getShouldFilterStartAt()) {
1292 + queryWrapper.ge(DinerMealSuspensionRecord::getStartAt, LocalDateTimeUtil.of(request.getStartAt()));
1293 + }
1294 + if (request.getShouldFilterEndAt()) {
1295 + queryWrapper.le(DinerMealSuspensionRecord::getEndAt, LocalDateTimeUtil.of(request.getEndAt()));
1296 + }
1297 + final var records = dinerMealSuspensionRecordService.list(queryWrapper);
1298 + if (!records.isEmpty()) {
1299 + builder.addAllResponses(ProtoBeanUtil.beanListToProtoList(records, SingleDinerMealSuspensionRecordRpcResponse.class));
1300 + }
1301 + } catch (final Exception e) {
1302 + log.error("queryDinerMealSuspensionRecordsByCondition error;", e);
1303 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1304 + }
1305 + responseObserver.onNext(builder.build());
1306 + responseObserver.onCompleted();
1307 + }
1308 +
1309 + @Override
1310 + @DS(DATA_SOURCE_MASTER)
1311 + public void createDinerMealSuspensionRecord(final CreateDinerMealSuspensionRecordRpcRequest request,
1312 + final StreamObserver<CreateDinerMealSuspensionRecordRpcResponse> responseObserver) {
1313 + final var builder = CreateDinerMealSuspensionRecordRpcResponse.newBuilder();
1314 + try {
1315 + DinerMealSuspensionRecord record = new DinerMealSuspensionRecord();
1316 + record.setEnterpriseId(request.getEnterpriseId());
1317 + record.setCreatedBy(request.getCreatedBy());
1318 + record.setCreationSource(request.getCreationSource());
1319 + record.setUpdatedBy(request.getCreatedBy());
1320 + record.setUpdateSource(request.getCreationSource());
1321 + record.setClientId(request.getCreation().getClientId());
1322 + record.setClassId(request.getCreation().getClassId());
1323 + record.setDinerId(request.getCreation().getDinerId());
1324 + record.setStartAt(LocalDateTimeUtil.of(request.getCreation().getStartAt()));
1325 + record.setEndAt(LocalDateTimeUtil.of(request.getCreation().getEndAt()));
1326 + record.setComment(request.getCreation().getComment());
1327 + builder.setIsCreated(dinerMealSuspensionRecordService.save(record)).setId(record.getId());
1328 + } catch (final Exception e) {
1329 + log.error("createDinerMealSuspensionRecord error;", e);
1330 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1331 + }
1332 + responseObserver.onNext(builder.build());
1333 + responseObserver.onCompleted();
1334 + }
1335 +
1336 + @Override
1337 + @DS(DATA_SOURCE_MASTER)
1338 + public void batchCreateDinerMealSuspensionRecords(final BatchCreateDinerMealSuspensionRecordsRpcRequest request,
1339 + final StreamObserver<BatchCreateDinerMealSuspensionRecordsRpcResponse> responseObserver) {
1340 + final var builder = BatchCreateDinerMealSuspensionRecordsRpcResponse.newBuilder();
1341 + try {
1342 + final var records = new ArrayList<DinerMealSuspensionRecord>();
1343 + for (final var creation : request.getCreationsList()) {
1344 + DinerMealSuspensionRecord record = new DinerMealSuspensionRecord();
1345 + record.setEnterpriseId(request.getEnterpriseId());
1346 + record.setCreatedBy(request.getCreatedBy());
1347 + record.setCreationSource(request.getCreationSource());
1348 + record.setUpdatedBy(request.getCreatedBy());
1349 + record.setUpdateSource(request.getCreationSource());
1350 + record.setClientId(creation.getClientId());
1351 + record.setClassId(creation.getClassId());
1352 + record.setDinerId(creation.getDinerId());
1353 + record.setStartAt(LocalDateTimeUtil.of(creation.getStartAt()));
1354 + record.setEndAt(LocalDateTimeUtil.of(creation.getEndAt()));
1355 + record.setComment(creation.getComment());
1356 + records.add(record);
1357 + }
1358 + builder.setIsCreated(dinerMealSuspensionRecordService.saveBatch(records))
1359 + .addAllIds(records.stream().map(DinerMealSuspensionRecord::getId).collect(Collectors.toList()));
1360 + } catch (final Exception e) {
1361 + log.error("batchCreateDinerMealSuspensionRecords error;", e);
1362 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1363 + }
1364 + responseObserver.onNext(builder.build());
1365 + responseObserver.onCompleted();
1366 + }
1367 +
1368 + @Override
1369 + @DS(DATA_SOURCE_MASTER)
1370 + public void updateDinerMealSuspensionRecord(final UpdateDinerMealSuspensionRecordRpcRequest request,
1371 + final StreamObserver<UpdateDinerMealSuspensionRecordRpcResponse> responseObserver) {
1372 + final var builder = UpdateDinerMealSuspensionRecordRpcResponse.newBuilder();
1373 + try {
1374 + DinerMealSuspensionRecord record = new DinerMealSuspensionRecord();
1375 + record.setId(request.getModification().getId());
1376 + record.setEnterpriseId(request.getEnterpriseId());
1377 + record.setUpdatedBy(request.getUpdatedBy());
1378 + record.setUpdateSource(request.getUpdateSource());
1379 + if (request.getModification().getShouldUpdateStartAt()) {
1380 + record.setStartAt(LocalDateTimeUtil.of(request.getModification().getStartAt()));
1381 + }
1382 + if (request.getModification().getShouldUpdateEndAt()) {
1383 + record.setEndAt(LocalDateTimeUtil.of(request.getModification().getEndAt()));
1384 + }
1385 + if (request.getModification().getShouldUpdateComment()) {
1386 + record.setComment(request.getModification().getComment());
1387 + }
1388 + if (request.getModification().getShouldUpdateClassId()) {
1389 + record.setClassId(request.getModification().getClassId());
1390 + }
1391 + builder.setIsUpdated(dinerMealSuspensionRecordService.updateById(record));
1392 + } catch (final Exception e) {
1393 + log.error("updateDinerMealSuspensionRecord error;", e);
1394 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1395 + }
1396 + responseObserver.onNext(builder.build());
1397 + responseObserver.onCompleted();
1398 + }
1399 +
1400 + @Override
1401 + @DS(DATA_SOURCE_MASTER)
1402 + public void deleteDinerMealSuspensionRecordsByIds(final DeleteDinerMealSuspensionRecordsByIdsRpcRequest request,
1403 + final StreamObserver<DeleteDinerMealSuspensionRecordsRpcResponse> responseObserver) {
1404 + final var builder = DeleteDinerMealSuspensionRecordsRpcResponse.newBuilder();
1405 + try {
1406 + final var records = dinerMealSuspensionRecordService.listByIds(request.getIdsList());
1407 + for (final var record : records) {
1408 + record.setUpdatedBy(request.getUpdatedBy());
1409 + record.setUpdateSource(request.getUpdateSource());
1410 + }
1411 + builder.setIsDeleted(dinerMealSuspensionRecordService.updateBatchById(records) &&
1412 + dinerMealSuspensionRecordService.removeBatchByIds(request.getIdsList()));
1413 + } catch (final Exception e) {
1414 + log.error("deleteDinerMealSuspensionRecordsByIds error;", e);
1415 + responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asException());
1416 + }
1417 + responseObserver.onNext(builder.build());
1418 + responseObserver.onCompleted();
1419 + }
1213 } 1420 }
......
1 +package com.tianting.infoloop.service.impl;
2 +
3 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 +import com.tianting.infoloop.mapper.DinerMealSuspensionRecordMapper;
5 +import com.tianting.infoloop.model.db.DinerMealSuspensionRecord;
6 +import com.tianting.infoloop.service.DinerMealSuspensionRecordService;
7 +import org.springframework.stereotype.Service;
8 +
9 +/**
10 + * 学生停餐记录服务实现类
11 + */
12 +@Service
13 +public class DinerMealSuspensionRecordServiceImpl extends ServiceImpl<DinerMealSuspensionRecordMapper, DinerMealSuspensionRecord> implements DinerMealSuspensionRecordService {
14 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -54,6 +54,15 @@ service MealOrderServiceRpc { ...@@ -54,6 +54,15 @@ service MealOrderServiceRpc {
54 rpc QueryMealMenuRecordsByCondition (QueryMealMenuRecordsByConditionRpcRequest) returns (QueryMealMenuRecordsByConditionRpcResponse) {} 54 rpc QueryMealMenuRecordsByCondition (QueryMealMenuRecordsByConditionRpcRequest) returns (QueryMealMenuRecordsByConditionRpcResponse) {}
55 rpc CreateMealMenuRecord (CreateMealMenuRecordRpcRequest) returns (CreateMealMenuRecordRpcResponse) {} 55 rpc CreateMealMenuRecord (CreateMealMenuRecordRpcRequest) returns (CreateMealMenuRecordRpcResponse) {}
56 rpc QueryLatestMealMenuRecordsByClientIds (QueryLatestMealMenuRecordsByClientIdsRpcRequest) returns (QueryLatestMealMenuRecordsByClientIdsRpcResponse) {} 56 rpc QueryLatestMealMenuRecordsByClientIds (QueryLatestMealMenuRecordsByClientIdsRpcRequest) returns (QueryLatestMealMenuRecordsByClientIdsRpcResponse) {}
57 +
58 + // 停餐记录相关服务
59 + rpc getDinerMealSuspensionRecordById(GetDinerMealSuspensionRecordByIdRpcRequest) returns (GetDinerMealSuspensionRecordByIdRpcResponse);
60 + rpc getDinerMealSuspensionRecordsByIds(GetDinerMealSuspensionRecordsByIdsRpcRequest) returns (GetDinerMealSuspensionRecordsByIdsRpcResponse);
61 + rpc queryDinerMealSuspensionRecordsByCondition(QueryDinerMealSuspensionRecordsByConditionRpcRequest) returns (QueryDinerMealSuspensionRecordsByConditionRpcResponse);
62 + rpc createDinerMealSuspensionRecord(CreateDinerMealSuspensionRecordRpcRequest) returns (CreateDinerMealSuspensionRecordRpcResponse);
63 + rpc batchCreateDinerMealSuspensionRecords(BatchCreateDinerMealSuspensionRecordsRpcRequest) returns (BatchCreateDinerMealSuspensionRecordsRpcResponse);
64 + rpc updateDinerMealSuspensionRecord(UpdateDinerMealSuspensionRecordRpcRequest) returns (UpdateDinerMealSuspensionRecordRpcResponse);
65 + rpc deleteDinerMealSuspensionRecordsByIds(DeleteDinerMealSuspensionRecordsByIdsRpcRequest) returns (DeleteDinerMealSuspensionRecordsRpcResponse);
57 } 66 }
58 67
59 enum MealOrderOrderMethodEnum { 68 enum MealOrderOrderMethodEnum {
...@@ -823,3 +832,126 @@ message QueryLatestMealMenuRecordsByClientIdsRpcRequest { ...@@ -823,3 +832,126 @@ message QueryLatestMealMenuRecordsByClientIdsRpcRequest {
823 message QueryLatestMealMenuRecordsByClientIdsRpcResponse { 832 message QueryLatestMealMenuRecordsByClientIdsRpcResponse {
824 repeated SingleMealMenuRecordRpcResponse responses = 1; 833 repeated SingleMealMenuRecordRpcResponse responses = 1;
825 } 834 }
835 +
836 +// 停餐记录相关消息定义
837 +message SingleDinerMealSuspensionRecordRpcResponse {
838 + int32 id = 1;
839 + int32 enterpriseId = 2;
840 + int32 clientId = 3;
841 + int32 classId = 4;
842 + int32 dinerId = 5;
843 + int64 startAt = 6;
844 + int64 endAt = 7;
845 + string comment = 8;
846 + int64 createdAt = 9;
847 + int32 createdBy = 10;
848 + int32 creationSource = 11;
849 + int64 updatedAt = 12;
850 + int32 updatedBy = 13;
851 + int32 updateSource = 14;
852 +}
853 +
854 +message GetDinerMealSuspensionRecordByIdRpcRequest {
855 + int64 id = 1;
856 +}
857 +
858 +message GetDinerMealSuspensionRecordByIdRpcResponse {
859 + SingleDinerMealSuspensionRecordRpcResponse response = 1;
860 +}
861 +
862 +message GetDinerMealSuspensionRecordsByIdsRpcRequest {
863 + repeated int32 ids = 1;
864 +}
865 +
866 +message GetDinerMealSuspensionRecordsByIdsRpcResponse {
867 + repeated SingleDinerMealSuspensionRecordRpcResponse responses = 1;
868 +}
869 +
870 +message QueryDinerMealSuspensionRecordsByConditionRpcRequest {
871 + int32 enterpriseId = 1;
872 + bool shouldFilterClientIds = 2;
873 + repeated int32 clientIds = 3;
874 + bool shouldFilterClassIds = 4;
875 + repeated int32 classIds = 5;
876 + bool shouldFilterDinerIds = 6;
877 + repeated int32 dinerIds = 7;
878 + bool shouldFilterStartAt = 8;
879 + int64 startAt = 9;
880 + bool shouldFilterEndAt = 10;
881 + int64 endAt = 11;
882 +}
883 +
884 +message QueryDinerMealSuspensionRecordsByConditionRpcResponse {
885 + repeated SingleDinerMealSuspensionRecordRpcResponse responses = 1;
886 +}
887 +
888 +message CreateDinerMealSuspensionRecordRpcRequest {
889 + int32 enterpriseId = 1;
890 + int32 createdBy = 2;
891 + int32 creationSource = 3;
892 + DinerMealSuspensionRecordCreation creation = 4;
893 +}
894 +
895 +message DinerMealSuspensionRecordCreation {
896 + int32 clientId = 1;
897 + int32 classId = 2;
898 + int32 dinerId = 3;
899 + int64 startAt = 4;
900 + int64 endAt = 5;
901 + string comment = 6;
902 +}
903 +
904 +message CreateDinerMealSuspensionRecordRpcResponse {
905 + bool isCreated = 1;
906 + int32 id = 2;
907 +}
908 +
909 +message UpdateDinerMealSuspensionRecordRpcRequest {
910 + int32 enterpriseId = 1;
911 + int32 updatedBy = 2;
912 + int32 updateSource = 3;
913 + DinerMealSuspensionRecordModification modification = 4;
914 +}
915 +
916 +message DinerMealSuspensionRecordModification {
917 + int32 id = 1;
918 + bool shouldUpdateClientId = 2;
919 + int32 clientId = 3;
920 + bool shouldUpdateClassId = 4;
921 + int32 classId = 5;
922 + bool shouldUpdateDinerId = 6;
923 + int32 dinerId = 7;
924 + bool shouldUpdateStartAt = 8;
925 + int64 startAt = 9;
926 + bool shouldUpdateEndAt = 10;
927 + int64 endAt = 11;
928 + bool shouldUpdateComment = 12;
929 + string comment = 13;
930 +}
931 +
932 +message UpdateDinerMealSuspensionRecordRpcResponse {
933 + bool isUpdated = 1;
934 +}
935 +
936 +message DeleteDinerMealSuspensionRecordsByIdsRpcRequest {
937 + repeated int32 ids = 1;
938 + int32 enterpriseId = 2;
939 + int32 updatedBy = 3;
940 + int32 updateSource = 4;
941 +}
942 +
943 +message DeleteDinerMealSuspensionRecordsRpcResponse {
944 + bool isDeleted = 1;
945 +}
946 +
947 +message BatchCreateDinerMealSuspensionRecordsRpcRequest {
948 + int32 enterpriseId = 1;
949 + int32 createdBy = 2;
950 + int32 creationSource = 3;
951 + repeated DinerMealSuspensionRecordCreation creations = 4;
952 +}
953 +
954 +message BatchCreateDinerMealSuspensionRecordsRpcResponse {
955 + bool isCreated = 1;
956 + repeated int32 ids = 2;
957 +}
......