zhuyifan

fix

...@@ -17,6 +17,8 @@ import lombok.NoArgsConstructor; ...@@ -17,6 +17,8 @@ import lombok.NoArgsConstructor;
17 import lombok.ToString; 17 import lombok.ToString;
18 18
19 import javax.validation.Valid; 19 import javax.validation.Valid;
20 +import javax.validation.constraints.NotEmpty;
21 +import javax.validation.constraints.NotNull;
20 import java.time.LocalDateTime; 22 import java.time.LocalDateTime;
21 import java.util.ArrayList; 23 import java.util.ArrayList;
22 import java.util.List; 24 import java.util.List;
...@@ -206,15 +208,19 @@ public class OrderDbDTO { ...@@ -206,15 +208,19 @@ public class OrderDbDTO {
206 208
207 @RequestKeyParam 209 @RequestKeyParam
208 @ApiModelProperty(value = "档口 ID") 210 @ApiModelProperty(value = "档口 ID")
211 + @NotNull(message = "档口 ID不能为空")
209 private Integer stallId; 212 private Integer stallId;
210 213
211 @ApiModelProperty(value = "客户 ID") 214 @ApiModelProperty(value = "客户 ID")
215 + @NotNull(message = "客户 ID不能为空")
212 private Integer customerId; 216 private Integer customerId;
213 217
214 @ApiModelProperty(value = "餐单 id") 218 @ApiModelProperty(value = "餐单 id")
219 + @NotNull(message = "餐单 id不能为空")
215 private Integer menuId; 220 private Integer menuId;
216 221
217 @ApiModelProperty(value = "用餐日期") 222 @ApiModelProperty(value = "用餐日期")
223 + @NotNull(message = "用餐日期不能为空")
218 private LocalDateTime mealTime; 224 private LocalDateTime mealTime;
219 225
220 @ApiModelProperty(value = "桌号") 226 @ApiModelProperty(value = "桌号")
...@@ -224,9 +230,11 @@ public class OrderDbDTO { ...@@ -224,9 +230,11 @@ public class OrderDbDTO {
224 private String remark; 230 private String remark;
225 231
226 @ApiModelProperty(value = "支付方式") 232 @ApiModelProperty(value = "支付方式")
233 + @NotNull(message = "支付方式不能为空")
227 private OnlinePayEnum onlinePay; 234 private OnlinePayEnum onlinePay;
228 235
229 @ApiModelProperty(value = "订单菜品详情列表") 236 @ApiModelProperty(value = "订单菜品详情列表")
237 + @NotEmpty(message = "订单菜品详情列表不能为空")
230 private List<OperatorCreateOrderDetailDto> orderDetailDtos; 238 private List<OperatorCreateOrderDetailDto> orderDetailDtos;
231 } 239 }
232 240
...@@ -240,10 +248,12 @@ public class OrderDbDTO { ...@@ -240,10 +248,12 @@ public class OrderDbDTO {
240 private Integer enterpriseId; 248 private Integer enterpriseId;
241 249
242 @ApiModelProperty(value = "院区 ID") 250 @ApiModelProperty(value = "院区 ID")
251 + @NotNull(message = "院区 ID不能为空")
243 private Integer clientId; 252 private Integer clientId;
244 253
245 @RequestKeyParam 254 @RequestKeyParam
246 @ApiModelProperty(value = "档口 ID") 255 @ApiModelProperty(value = "档口 ID")
256 + @NotNull(message = "档口 ID不能为空")
247 private Integer stallId; 257 private Integer stallId;
248 258
249 @ApiModelProperty(value = "需要创建客户 ID") 259 @ApiModelProperty(value = "需要创建客户 ID")
...@@ -256,6 +266,7 @@ public class OrderDbDTO { ...@@ -256,6 +266,7 @@ public class OrderDbDTO {
256 private Integer status; 266 private Integer status;
257 267
258 @ApiModelProperty(value = "餐单 id") 268 @ApiModelProperty(value = "餐单 id")
269 + @NotNull(message = "餐单 id不能为空")
259 private Integer menuId; 270 private Integer menuId;
260 271
261 @ApiModelProperty(value = "订单商品总数") 272 @ApiModelProperty(value = "订单商品总数")
...@@ -265,6 +276,7 @@ public class OrderDbDTO { ...@@ -265,6 +276,7 @@ public class OrderDbDTO {
265 private Integer payPrice; 276 private Integer payPrice;
266 277
267 @ApiModelProperty(value = "支付方式") 278 @ApiModelProperty(value = "支付方式")
279 + @NotNull(message = "支付方式不能为空")
268 private OnlinePayEnum onlinePay; 280 private OnlinePayEnum onlinePay;
269 281
270 @ApiModelProperty(value = "支付时间") 282 @ApiModelProperty(value = "支付时间")
...@@ -280,6 +292,7 @@ public class OrderDbDTO { ...@@ -280,6 +292,7 @@ public class OrderDbDTO {
280 private String transactionId; 292 private String transactionId;
281 293
282 @ApiModelProperty(value = "用餐日期") 294 @ApiModelProperty(value = "用餐日期")
295 + @NotNull(message = "用餐日期不能为空")
283 private LocalDateTime mealTime; 296 private LocalDateTime mealTime;
284 297
285 @ApiModelProperty(value = "订餐地址") 298 @ApiModelProperty(value = "订餐地址")
...@@ -309,7 +322,6 @@ public class OrderDbDTO { ...@@ -309,7 +322,6 @@ public class OrderDbDTO {
309 @ApiModelProperty(value = "修改人 ID,修改人可能是院区端登陆的用户,也可能是 KDS 端登陆用户") 322 @ApiModelProperty(value = "修改人 ID,修改人可能是院区端登陆的用户,也可能是 KDS 端登陆用户")
310 private Integer updatedBy; 323 private Integer updatedBy;
311 324
312 -
313 @ApiModelProperty(value = "更新来源:小程序点餐=1;院区端=2;kds=3;业务中台 = 4") 325 @ApiModelProperty(value = "更新来源:小程序点餐=1;院区端=2;kds=3;业务中台 = 4")
314 private Integer updateSource; 326 private Integer updateSource;
315 327
...@@ -317,6 +329,7 @@ public class OrderDbDTO { ...@@ -317,6 +329,7 @@ public class OrderDbDTO {
317 private CloseTimeType closeTimeType; 329 private CloseTimeType closeTimeType;
318 330
319 @ApiModelProperty(value = "订单菜品详情列表") 331 @ApiModelProperty(value = "订单菜品详情列表")
332 + @NotEmpty(message = "订单菜品详情列表不能为空")
320 private List<CreateOrderDetailDto> orderDetailDtos; 333 private List<CreateOrderDetailDto> orderDetailDtos;
321 } 334 }
322 335
......
...@@ -24,7 +24,7 @@ import java.util.stream.Collectors; ...@@ -24,7 +24,7 @@ import java.util.stream.Collectors;
24 public class WebSocketServer extends TextWebSocketHandler { 24 public class WebSocketServer extends TextWebSocketHandler {
25 25
26 private static final ConcurrentHashMap<UserSessionKey, UserSessionData> userSessions = new ConcurrentHashMap<>(); 26 private static final ConcurrentHashMap<UserSessionKey, UserSessionData> userSessions = new ConcurrentHashMap<>();
27 - private static final long INACTIVITY_TIMEOUT = 2 * 60 * 60 * 1000; 27 + private static final long INACTIVITY_TIMEOUT = 60 * 60 * 1000;
28 private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 28 private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
29 29
30 static { 30 static {
...@@ -34,6 +34,7 @@ public class WebSocketServer extends TextWebSocketHandler { ...@@ -34,6 +34,7 @@ public class WebSocketServer extends TextWebSocketHandler {
34 private static void cleanInactiveSessions() { 34 private static void cleanInactiveSessions() {
35 final var currentTime = System.currentTimeMillis(); 35 final var currentTime = System.currentTimeMillis();
36 final var iterator = userSessions.entrySet().iterator(); 36 final var iterator = userSessions.entrySet().iterator();
37 + log.info("cleanInactiveSessions; sessions:{}", userSessions.keySet());
37 while (iterator.hasNext()) { 38 while (iterator.hasNext()) {
38 final var entry = iterator.next(); 39 final var entry = iterator.next();
39 final var key = entry.getKey(); 40 final var key = entry.getKey();
...@@ -108,8 +109,17 @@ public class WebSocketServer extends TextWebSocketHandler { ...@@ -108,8 +109,17 @@ public class WebSocketServer extends TextWebSocketHandler {
108 public void afterConnectionEstablished(WebSocketSession session) { 109 public void afterConnectionEstablished(WebSocketSession session) {
109 final var key = getUserSessionKey(session); 110 final var key = getUserSessionKey(session);
110 if (key != null) { 111 if (key != null) {
112 + final var existingSession = userSessions.remove(key);
113 + if (existingSession != null) {
114 + try {
115 + existingSession.closeSession();
116 + log.info("WebSocket old connect closed,userId : {}, userType : {}", key.getUserId(), key.getUserType());
117 + } catch (IOException e) {
118 + log.error("old WebSocket close failed,userId : {}, userType : {}", key.getUserId(), key.getUserType(), e);
119 + }
120 + }
111 userSessions.put(key, new UserSessionData(session)); 121 userSessions.put(key, new UserSessionData(session));
112 - log.info("WebSocket connect success: userId : {}, userType : {}", key.getUserId(), key.getUserType()); 122 + log.info("WebSocket connect success, userId : {}, userType : {}", key.getUserId(), key.getUserType());
113 } else { 123 } else {
114 log.warn("WebSocket connect failed,unable to get valid user information"); 124 log.warn("WebSocket connect failed,unable to get valid user information");
115 } 125 }
......
...@@ -609,7 +609,7 @@ public class OrderServiceRpcClient { ...@@ -609,7 +609,7 @@ public class OrderServiceRpcClient {
609 .type(MessageTypeEnum.ORDER) 609 .type(MessageTypeEnum.ORDER)
610 .noticeType(NoticeTypeEnum.ORDER_CREATED) 610 .noticeType(NoticeTypeEnum.ORDER_CREATED)
611 .subject(NoticeTypeEnum.ORDER_CREATED.getDescription()) 611 .subject(NoticeTypeEnum.ORDER_CREATED.getDescription())
612 - .message("下单成功啦,快去查看吧~") 612 + .message("有新的订单下单成功啦,快去查看吧~")
613 .data(orderCreateSuccessData) 613 .data(orderCreateSuccessData)
614 .build(); 614 .build();
615 try { 615 try {
......