From 7affe8533d23df9ea512d291f2947eaea7e04a28 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 31 五月 2023 14:46:20 +0800
Subject: [PATCH] optimize dining

---
 service-store/src/main/java/com/java110/store/cmd/reserveOrder/DoDiningCmd.java |   64 +++++++++++++++++++++++++++++---
 1 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/service-store/src/main/java/com/java110/store/cmd/reserveOrder/DoDiningCmd.java b/service-store/src/main/java/com/java110/store/cmd/reserveOrder/DoDiningCmd.java
index 31d8379..c1a3ed0 100644
--- a/service-store/src/main/java/com/java110/store/cmd/reserveOrder/DoDiningCmd.java
+++ b/service-store/src/main/java/com/java110/store/cmd/reserveOrder/DoDiningCmd.java
@@ -9,6 +9,7 @@
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.community.CommunitySpacePersonTimeDto;
+import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.reserve.ReserveGoodsConfirmOrderDto;
 import com.java110.dto.reserve.ReserveGoodsDto;
 import com.java110.dto.reserve.ReserveGoodsOrderDto;
@@ -18,6 +19,7 @@
 import com.java110.intf.store.IReserveGoodsOrderTimeV1InnerServiceSMO;
 import com.java110.intf.store.IReserveGoodsOrderV1InnerServiceSMO;
 import com.java110.intf.store.IReserveGoodsV1InnerServiceSMO;
+import com.java110.intf.user.IOwnerV1InnerServiceSMO;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.po.reserveGoodsConfirmOrder.ReserveGoodsConfirmOrderPo;
 import com.java110.po.reserveGoodsOrder.ReserveGoodsOrderPo;
@@ -57,12 +59,66 @@
     @Autowired
     private IReserveGoodsConfirmOrderV1InnerServiceSMO reserveGoodsConfirmOrderV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
         Assert.hasKeyAndValue(reqJson, "communityId", "鏈寘鍚皬鍖�");
         Assert.hasKeyAndValue(reqJson, "qrCode", "鏈寘鍚簩缁寸爜");
         Assert.hasKeyAndValue(reqJson, "goodsId", "鏈寘鍚晢鍝�");
 
+        String userId = userV1InnerServiceSMOImpl.getUserIdByQrCode(reqJson.getString("qrCode"));
+
+        if (StringUtil.isEmpty(userId)) {
+            throw new CmdException("浜岀淮鐮佽繃鏈�");
+        }
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(reqJson.getString("userId"));
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "鐢ㄦ埛涓嶅瓨鍦�");
+
+        // todo 鍒ゆ柇鐢ㄦ埛鏄惁涓鸿繖涓皬鍖轰笟涓�
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(reqJson.getString("communityId"));
+        ownerDto.setLink(userDtos.get(0).getTel());
+        int count = ownerV1InnerServiceSMOImpl.queryOwnersCount(ownerDto);
+        if (count < 1) {
+            throw new CmdException("涓氫富涓嶅瓨鍦�");
+        }
+        reqJson.put("userId", userId);
+
+        ReserveGoodsDto reserveGoodsDto = new ReserveGoodsDto();
+        reserveGoodsDto.setGoodsId(reqJson.getString("goodsId"));
+        List<ReserveGoodsDto> reserveGoodsDtos = reserveGoodsV1InnerServiceSMOImpl.queryReserveGoodss(reserveGoodsDto);
+        Assert.listOnlyOne(reserveGoodsDtos, "灏遍涓嶅瓨鍦�");
+
+        ReserveGoodsOrderTimeDto reserveGoodsOrderTimeDto = null;
+        int flag = 0;
+        int quantity = 0;
+        Calendar calendar = Calendar.getInstance();
+        reserveGoodsOrderTimeDto = new ReserveGoodsOrderTimeDto();
+        reserveGoodsOrderTimeDto.setCommunityId(reqJson.getString("communityId"));
+        reserveGoodsOrderTimeDto.setAppointmentTime(DateUtil.getFormatTimeStringB(DateUtil.getCurrentDate()));
+        reserveGoodsOrderTimeDto.setHours(calendar.get(Calendar.HOUR) + "");
+        reserveGoodsOrderTimeDto.setGoodsId(reqJson.getString("goodsId"));
+        reserveGoodsOrderTimeDto.setPersonTel(userDtos.get(0).getTel());
+        flag = reserveGoodsOrderTimeV1InnerServiceSMOImpl.queryReserveGoodsOrderTimesCount(reserveGoodsOrderTimeDto);
+        if (flag > 0) {
+            throw new CmdException(reserveGoodsOrderTimeDto.getAppointmentTime() + "," + reserveGoodsOrderTimeDto.getHours() + "宸茬粡灏遍");
+        }
+
+        reserveGoodsOrderTimeDto = new ReserveGoodsOrderTimeDto();
+        reserveGoodsOrderTimeDto.setCommunityId(reqJson.getString("communityId"));
+        reserveGoodsOrderTimeDto.setAppointmentTime(DateUtil.getFormatTimeStringB(DateUtil.getCurrentDate()));
+        reserveGoodsOrderTimeDto.setGoodsId(reqJson.getString("goodsId"));
+        quantity = reserveGoodsOrderTimeV1InnerServiceSMOImpl.queryReserveGoodsOrderTimesCount(reserveGoodsOrderTimeDto);
+
+        if (quantity > Integer.parseInt(reserveGoodsDtos.get(0).getHoursMaxQuantity())) {
+            throw new CmdException("灏遍鏁伴噺瓒呰繃璁惧畾鏁伴噺");
+        }
 
     }
 
@@ -75,18 +131,14 @@
         List<ReserveGoodsDto> reserveGoodsDtos = reserveGoodsV1InnerServiceSMOImpl.queryReserveGoodss(reserveGoodsDto);
         Assert.listOnlyOne(reserveGoodsDtos, "灏遍涓嶅瓨鍦�");
 
-        String userId = userV1InnerServiceSMOImpl.getUserIdByQrCode(reqJson.getString("qrCode"));
-
-        if(StringUtil.isEmpty(userId)){
-            throw new CmdException("浜岀淮鐮佽繃鏈�");
-        }
 
         UserDto userDto = new UserDto();
-        userDto.setUserId(userId);
+        userDto.setUserId(reqJson.getString("userId"));
         List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
 
         Assert.listOnlyOne(userDtos, "鐢ㄦ埛涓嶅瓨鍦�");
 
+
         ReserveGoodsOrderPo reserveGoodsOrderPo = new ReserveGoodsOrderPo();
         reserveGoodsOrderPo.setOrderId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
         reserveGoodsOrderPo.setGoodsId(reqJson.getString("goodsId"));

--
Gitblit v1.8.0