From db6d4a5362dc11e24b34711b6ad5294c93990ada Mon Sep 17 00:00:00 2001 From: gaowdong Date: Fri, 21 Feb 2025 10:40:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/OrderDishesAndroidBusiness.java | 2 + .../impl/OrderDishesAndroidBusinessImpl.java | 97 ++++ .../business/OrderDishesAndroidBusiness.java | 28 - .../impl/OrderDishesAndroidBusinessImpl.java | 527 ------------------ .../impl/OrderRefundBusinessImpl.java | 2 +- 5 files changed, 100 insertions(+), 556 deletions(-) delete mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/OrderDishesAndroidBusiness.java delete mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/impl/OrderDishesAndroidBusinessImpl.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/OrderDishesAndroidBusiness.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/OrderDishesAndroidBusiness.java index caaa12b5..ec6248e3 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/OrderDishesAndroidBusiness.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/OrderDishesAndroidBusiness.java @@ -8,4 +8,6 @@ public interface OrderDishesAndroidBusiness { void initOrderMealCode(OrderInfo orderInfo); + void didUpdateDishesState(Long orderId, Integer dishesStateBeforeUpdated); + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/impl/OrderDishesAndroidBusinessImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/impl/OrderDishesAndroidBusinessImpl.java index e53f2776..3ebf2b50 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/impl/OrderDishesAndroidBusinessImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/business/impl/OrderDishesAndroidBusinessImpl.java @@ -6,11 +6,28 @@ import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; import com.bonus.core.allocation.api.AllocStallApi; import com.bonus.core.allocation.canteen.model.AllocStall; +import com.bonus.core.common.redis.RedisUtil; import com.bonus.core.customer.constants.OrderTypeEnum; +import com.bonus.core.customer.vo.CustPayVO; import com.bonus.core.order.android.business.OrderDishesAndroidBusiness; +import com.bonus.core.order.android.vo.OrderCallListVO; +import com.bonus.core.order.android.vo.OrderListAndroidVO; +import com.bonus.core.order.client.OrderModuleClient; +import com.bonus.core.order.client.po.CustPayInfoQueryParam; +import com.bonus.core.order.common.constants.DishesStateEnum; +import com.bonus.core.order.common.constants.OrderCacheConstants; +import com.bonus.core.order.common.constants.OrderStateEnum; +import com.bonus.core.order.common.dto.OrderSearchParam; import com.bonus.core.order.common.model.OrderInfo; +import com.bonus.core.order.common.query.OrderQueryHelper; +import com.bonus.core.order.common.service.OrderDetailService; +import com.bonus.core.order.common.service.OrderInfoService; +import com.bonus.core.order.common.vo.OrderIdDateVO; import com.bonus.core.order.custom.OrderCustomBusiness; +import com.bonus.core.order.deprecated.constants.OrderStateOldEnum; +import com.bonus.core.order.mq.OrderMessageSend; import com.bonus.core.order.utils.LeNumUtil; +import com.bonus.core.order.web.dto.OrderUserPermissionDTO; import com.bonus.core.supermarket.api.SupermarketApi; import com.bonus.core.supermarket.model.SupermarketInfo; import org.redisson.api.RLock; @@ -46,6 +63,15 @@ public class OrderDishesAndroidBusinessImpl implements OrderDishesAndroidBusines @Lazy @Autowired protected LeNumUtil numUtil; + @Autowired + @Lazy + protected OrderInfoService orderInfoService; + @Autowired + @Lazy + protected OrderDetailService orderDetailService; + @Autowired + @Lazy + protected OrderModuleClient orderModuleClient; public void initOrderMealCode(OrderInfo orderInfo) { if (!CharSequenceUtil.isNotEmpty(orderInfo.getMealCode())) { @@ -76,4 +102,75 @@ public class OrderDishesAndroidBusinessImpl implements OrderDishesAndroidBusines } } + public void didUpdateDishesState(Long orderId, Integer dishesStateBeforeUpdated) { + OrderInfo orderInfo = this.orderInfoService.getById(orderId); + CustPayVO custInfo = this.orderModuleClient.custPayInfoQuery(CustPayInfoQueryParam.ofCustId(orderInfo.getCustId())); + this.updateCallCacheIfNeed(OrderCallListVO.of(orderInfo, custInfo != null ? custInfo.getCustName() : null)); + if (!ObjectUtil.equal(dishesStateBeforeUpdated, orderInfo.getDishesState())) { + OrderMessageSend.orderV3DishesStateUpdated(orderInfo, dishesStateBeforeUpdated); + } + + this.orderCustomBusiness.android().didUpdateOrderDishesStateV2(orderInfo, dishesStateBeforeUpdated); + } + + protected void updateCallCacheIfNeed(OrderCallListVO orderCallListVO) { + if (orderCallListVO != null && LeNumUtil.isValidId(orderCallListVO.getStallId()) && !CharSequenceUtil.isEmpty(orderCallListVO.getMealCode())) { + RLock lock = RedisUtil.getLock(OrderCacheConstants.orderCallCacheLockKey(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType())); + lock.lock(10L, TimeUnit.SECONDS); + + try { + Object obj = RedisUtil.getObj(OrderCacheConstants.orderCallCacheKey(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType())); + Map orderCallMap; + if (obj instanceof Map) { + orderCallMap = (Map)obj; + } else { + orderCallMap = this.queryOrderCallMap(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType()); + } + + if (!OrderStateOldEnum.MAKEING.getKey().equals(orderCallListVO.getOrdState()) && !OrderStateOldEnum.WAITTAKE.getKey().equals(orderCallListVO.getOrdState())) { + orderCallMap.remove(orderCallListVO.getOrderId().toString()); + } else { + orderCallMap.put(orderCallListVO.getOrderId().toString(), orderCallListVO); + } + + RedisUtil.setObj(OrderCacheConstants.orderCallCacheKey(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType()), orderCallMap, OrderCacheConstants.CALL_CACHE_SECONDS); + } finally { + try { + if (lock.isHeldByCurrentThread() && lock.isLocked()) { + lock.unlock(); + } + } catch (Exception var10) { + log.error("解锁异常", var10); + } + + } + + } + } + + protected Map queryOrderCallMap(Long stallId, Integer mealtimeType) { + OrderSearchParam androidQueryDTO = new OrderSearchParam(); + androidQueryDTO.setStartDate(LocalDate.now()); + androidQueryDTO.setEndDate(LocalDate.now()); + androidQueryDTO.setOrderStateList(CollUtil.toList(new Integer[]{OrderStateEnum.PLACE.getKey()})); + androidQueryDTO.setDishesStateList(CollUtil.toList(new Integer[]{DishesStateEnum.MAKING.getKey(), DishesStateEnum.WAIT_TAKE.getKey()})); + androidQueryDTO.setMealtimeTypeList(CollUtil.toList(new Integer[]{mealtimeType})); + androidQueryDTO.setStallIdList(CollUtil.toList(new Long[]{stallId})); + if (LeNumUtil.isValidId(stallId)) { + AllocStall allocStall = this.allocStallApi.getAllocStall(stallId); + if (allocStall != null) { + androidQueryDTO.setCanteenIdList(CollUtil.toList(new Long[]{allocStall.getCanteenId()})); + } + } + + OrderQueryHelper.initQueryParam(androidQueryDTO); + List orderIdDatePage = this.orderInfoService.queryOrderId(androidQueryDTO, (OrderUserPermissionDTO)null); + List orderListAndroidVOS = this.orderInfoService.listOrderForAndroid((List)orderIdDatePage.stream().map(OrderIdDateVO::getId).collect(Collectors.toList()), (List)orderIdDatePage.stream().map(OrderIdDateVO::getOrderDate).collect(Collectors.toList())); + return orderListAndroidVOS.stream().filter((s) -> { + return !DishesStateEnum.ALREADY_TAKE.getKey().equals(s.getDishesState()); + }).map(OrderCallListVO::of).collect(Collectors.toMap((s) -> { + return s.getOrderId().toString(); + }, Function.identity())); + } + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/OrderDishesAndroidBusiness.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/OrderDishesAndroidBusiness.java deleted file mode 100644 index bbcf2086..00000000 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/OrderDishesAndroidBusiness.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.bonus.core.order.android.dto.business; - -import java.time.LocalDate; -import java.util.List; - -public interface OrderDishesAndroidBusiness { -// String createMealCode(Integer orderType, Long canteenId, Long stallId, LocalDate orderDate, Integer mealtimeType); -// -// void initOrderMealCode(OrderInfo orderInfo); -// -// OrderAndroidSignInVO orderSignIn(OrderSignInAndroidDTO param); -// -// void orderUpdateDishesState(OrderDishesUpdateDTO dishesUpdateDTO); -// -// void orderUpdateDishesState(List orderIds, Integer dishesState); - - void didUpdateDishesState(Long orderId, Integer dishesStateBeforeUpdated); - -// OrderTakeAndroidVO custTakeMeal(OrderTakeAndroidDTO takeAndroidDTO); -// -// PageVO queryOrderCallPage(PageDTO pageDTO, OrderCallQueryDTO queryDTO); -// -// void fillDetailMakingPartComplete(Long orderId, Integer dishesState, List orderDetailList); -// -// /** @deprecated */ -// @Deprecated -// void updateCallOrd(OrdCallUpdateDTO ordCallUpdateDTO); -} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/impl/OrderDishesAndroidBusinessImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/impl/OrderDishesAndroidBusinessImpl.java deleted file mode 100644 index 6ba73a75..00000000 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/android/dto/business/impl/OrderDishesAndroidBusinessImpl.java +++ /dev/null @@ -1,527 +0,0 @@ -package com.bonus.core.order.android.dto.business.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.util.ObjectUtil; -import com.bonus.constant.LeConstants; -import com.bonus.core.allocation.api.AllocStallApi; -import com.bonus.core.allocation.canteen.model.AllocStall; -import com.bonus.core.common.redis.RedisUtil; -import com.bonus.core.common.utils.LeCodeUtil; -import com.bonus.core.customer.vo.CustPayVO; -import com.bonus.core.order.android.dto.business.OrderDishesAndroidBusiness; -import com.bonus.core.order.android.vo.OrderCallListVO; -import com.bonus.core.order.android.vo.OrderListAndroidVO; -import com.bonus.core.order.client.OrderModuleClient; -import com.bonus.core.order.client.po.CustPayInfoQueryParam; -import com.bonus.core.order.common.constants.DishesStateEnum; -import com.bonus.core.order.common.constants.OrderCacheConstants; -import com.bonus.core.order.common.constants.OrderStateEnum; -import com.bonus.core.order.common.dto.OrderSearchParam; -import com.bonus.core.order.common.model.OrderInfo; -import com.bonus.core.order.common.query.OrderQueryHelper; -import com.bonus.core.order.common.service.OrderDetailService; -import com.bonus.core.order.common.service.OrderInfoService; -import com.bonus.core.order.common.vo.OrderIdDateVO; -import com.bonus.core.order.custom.OrderCustomBusiness; -import com.bonus.core.order.deprecated.constants.OrderStateOldEnum; -import com.bonus.core.order.deprecated.dto.OrdLeCodeDTO; -import com.bonus.core.order.mq.OrderMessageSend; -import com.bonus.core.order.utils.LeNumUtil; -import com.bonus.core.order.web.dto.OrderUserPermissionDTO; -import org.redisson.api.RLock; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; - -import java.time.LocalDate; -import java.time.LocalTime; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -public class OrderDishesAndroidBusinessImpl implements OrderDishesAndroidBusiness { - private static final Logger log = LoggerFactory.getLogger(OrderDishesAndroidBusinessImpl.class); - @Autowired - @Lazy - protected OrderInfoService orderInfoService; - @Autowired - @Lazy - protected OrderDetailService orderDetailService; -// @Autowired -// @Lazy -// protected OrderDeliveryService orderDeliveryService; -// @Autowired -// @Lazy -// protected OrderWebBusiness orderWebBusiness; -// @Autowired -// @Lazy -// protected OrderInfoAndroidBusiness orderInfoAndroidBusiness; -// @Autowired -// @Lazy -// protected OrderPlaceBusiness orderPlaceBusiness; - @Autowired - @Lazy - protected OrderCustomBusiness orderCustomBusiness; - @Autowired - @Lazy - protected OrderModuleClient orderModuleClient; - @Autowired - @Lazy - protected AllocStallApi allocStallApi; -// @Autowired -// @Lazy -// protected SupermarketApi supermarketApi; -// @Autowired -// @Lazy -// protected AccInfoServiceV3Api accInfoServiceV3Api; -// @Autowired -// @Lazy -// protected DeviceApi deviceApi; -// @Lazy -// @Autowired -// protected LeNumUtil numUtil; -// @Lazy -// @Autowired -// protected MarketApi marketApi; - -// public String createMealCode(Integer orderType, Long canteenId, Long stallId, LocalDate orderDate, Integer mealtimeType) { -// String mealCode = this.orderCustomBusiness.android().willCreateOrderMealCode(canteenId, stallId, orderDate, mealtimeType); -// if (CharSequenceUtil.isNotEmpty(mealCode)) { -// return this.orderCustomBusiness.android().didCreateOrderMealCode(canteenId, stallId, orderDate, mealtimeType, mealCode); -// } else { -// String prefix = null; -// if (OrderTypeEnum.isShopCategory(orderType)) { -// SupermarketInfo supermarketInfoById = this.supermarketApi.getSupermarketInfoById(canteenId); -// prefix = supermarketInfoById != null ? supermarketInfoById.getMealCode() : ""; -// } else if (OrderTypeEnum.isCanteenCategory(orderType) && LeNumUtil.isValidId(stallId)) { -// AllocStall allocStall = this.allocStallApi.getAllocStall(stallId); -// if (allocStall != null) { -// prefix = OrderTypeEnum.isAndroidCategory(orderType) ? allocStall.getOffLineMealCodePrefix() : allocStall.getOnLineMealCodePrefix(); -// } -// } -// -// mealCode = this.numUtil.getMealCode(prefix, canteenId, stallId, orderDate, mealtimeType); -// log.info("创建叫号码:{}", mealCode); -// return this.orderCustomBusiness.android().didCreateOrderMealCode(canteenId, stallId, orderDate, mealtimeType, mealCode); -// } -// } -// -// public void initOrderMealCode(OrderInfo orderInfo) { -// if (!CharSequenceUtil.isNotEmpty(orderInfo.getMealCode())) { -// String mealCode = this.createMealCode(orderInfo.getOrderType(), orderInfo.getCanteenId(), orderInfo.getStallId(), orderInfo.getOrderDate(), orderInfo.getMealtimeType()); -// orderInfo.setMealCode(mealCode); -// } -// } -// -// public OrderAndroidSignInVO orderSignIn(OrderSignInAndroidDTO param) { -// this.addNxWithOrderId(param.getOrderId()); -// -// OrderAndroidSignInVO var7; -// try { -// OrderInfo orderInfo = this.orderInfoService.checkAndGetOrderInfo(param.getOrderId()); -// OrderAndroidSignInVO customVO = this.orderCustomBusiness.android().willSignIn(orderInfo, param); -// if (customVO != null) { -// OrderAndroidSignInVO var11 = this.orderCustomBusiness.android().didSignIn(orderInfo, param, customVO); -// return var11; -// } -// -// if (!LeNumUtil.isValidId(orderInfo.getStallId())) { -// throw new LeException(I18n.getMessage("order.mac.no-stall", new Object[0])); -// } -// -// AllocStall allocStall = this.allocStallApi.getAllocStall(orderInfo.getStallId()); -// if (allocStall == null) { -// throw new LeException(I18n.getMessage("order.mac.no-stall", new Object[0])); -// } -// -// if (!LeConstants.COMMON_YES.equals(allocStall.getIfUseCallNum())) { -// throw new LeException(I18n.getMessage("order.mac.stall-not-use-call", new Object[0])); -// } -// -// if (!OrderStateEnum.isPlaceState(orderInfo.getOrderState())) { -// throw new LeException(OrderTips.orderStateWrong(orderInfo.getOrderState())); -// } -// -// Integer targetDishesState = DishesStateEnum.UN_MAKE.getKey().equals(orderInfo.getDishesState()) ? DishesStateEnum.MAKING.getKey() : orderInfo.getDishesState(); -// this.doUpdateDishesState(orderInfo, OrderDishesUpdateDTO.of(orderInfo.getOrderId(), targetDishesState)); -// OrderAndroidSignInVO result = OrderAndroidSignInVO.of(orderInfo.getMealCode()); -// result = this.orderCustomBusiness.android().didSignIn(orderInfo, param, result); -// var7 = result; -// } finally { -// this.removeNxWithOrderId(param.getOrderId()); -// } -// -// return var7; -// } -// -// public void orderUpdateDishesState(OrderDishesUpdateDTO dishesUpdateDTO) { -// if (CharSequenceUtil.isNotEmpty(dishesUpdateDTO.getQrCode()) && LeCodeUtil.isLeCode(dishesUpdateDTO.getQrCode())) { -// dishesUpdateDTO.setOrderId(LeCodeUtil.getPlatformIdThenExpire(dishesUpdateDTO.getQrCode())); -// } -// -// JavaxValidateUtils.validate(dishesUpdateDTO); -// this.addNxWithOrderId(dishesUpdateDTO.getOrderId()); -// -// try { -// OrderInfo orderInfo = this.orderInfoService.checkAndGetOrderInfo(dishesUpdateDTO.getOrderId()); -// if (!OrderStateEnum.isPlaceState(orderInfo.getOrderState())) { -// throw new LeException(OrderTips.orderStateWrong(orderInfo.getOrderState())); -// } -// -// this.doUpdateDishesState(orderInfo, dishesUpdateDTO); -// } finally { -// this.removeNxWithOrderId(dishesUpdateDTO.getOrderId()); -// } -// -// } -// -// public void orderUpdateDishesState(List orderIds, Integer dishesState) { -// if (!CollUtil.isEmpty(orderIds)) { -// Iterator var3 = CollUtil.newHashSet(orderIds).iterator(); -// -// while(var3.hasNext()) { -// Long orderId = (Long)var3.next(); -// OrderDishesUpdateDTO dishesUpdateDTO = OrderDishesUpdateDTO.of(orderId, dishesState); -// log.info("[批量]订单制作状态更新:{}", dishesUpdateDTO); -// this.orderUpdateDishesState(dishesUpdateDTO); -// } -// -// } -// } - - public void didUpdateDishesState(Long orderId, Integer dishesStateBeforeUpdated) { - OrderInfo orderInfo = this.orderInfoService.getById(orderId); - CustPayVO custInfo = this.orderModuleClient.custPayInfoQuery(CustPayInfoQueryParam.ofCustId(orderInfo.getCustId())); - this.updateCallCacheIfNeed(OrderCallListVO.of(orderInfo, custInfo != null ? custInfo.getCustName() : null)); - if (!ObjectUtil.equal(dishesStateBeforeUpdated, orderInfo.getDishesState())) { - OrderMessageSend.orderV3DishesStateUpdated(orderInfo, dishesStateBeforeUpdated); - } - - this.orderCustomBusiness.android().didUpdateOrderDishesStateV2(orderInfo, dishesStateBeforeUpdated); - } - -// public OrderTakeAndroidVO custTakeMeal(OrderTakeAndroidDTO takeAndroidDTO) { -// OrderTakeAndroidVO customVO = this.orderCustomBusiness.android().willCustTakeMeal(takeAndroidDTO); -// if (customVO != null) { -// customVO = this.orderCustomBusiness.android().didCustTakeMeal(takeAndroidDTO, customVO); -// return customVO; -// } else { -// CustPayVO custPayInfo = this.orderInfoAndroidBusiness.checkCustPayInfo(takeAndroidDTO.getNuClearMode(), takeAndroidDTO.getCustId(), takeAndroidDTO.getOpenId(), takeAndroidDTO.getSerialNum(), takeAndroidDTO.getQrCode()); -// Long orderId = null; -// if (LeConstants.COMMON_YES.equals(takeAndroidDTO.getIfTakeImmediately()) && NuclearModeEnum.isQrCode(takeAndroidDTO.getNuClearMode()) && LeCodeUtil.isLeCode(takeAndroidDTO.getQrCode())) { -// OrdLeCodeDTO ordLeCodeDTO = LeCodeUtil.readLeCode(takeAndroidDTO.getQrCode()); -// if (ordLeCodeDTO.ifTake()) { -// orderId = ordLeCodeDTO.getP(); -// } -// } -// -// AccInfoDetailVO accInfoDetail = this.accInfoServiceV3Api.getAccInfoDetail(custPayInfo.getCustId()); -// boolean isSupermarketDevice = false; -// DeviceInfoVO deviceInfoVO = this.deviceApi.getDeviceInfoVoBySnCacheable(takeAndroidDTO.getMachineSn()); -// List devicePermissionCodes = ListUtil.empty(); -// if (deviceInfoVO != null && CollUtil.isNotEmpty(deviceInfoVO.getBindList())) { -// devicePermissionCodes = (List)deviceInfoVO.getBindList().stream().filter((s) -> { -// return LeNumUtil.isValidId(s.getCanteenId()); -// }).map((s) -> { -// Long var10000 = s.getCanteenId(); -// return "" + var10000 + "_" + (LeNumUtil.isValidId(s.getStallId()) ? s.getStallId().toString() : "-1"); -// }).collect(Collectors.toList()); -// isSupermarketDevice = SourceTypeEnum.DUAL_SCREEN_CASH_REGISTER.getKey().equals(deviceInfoVO.getDeviceType()); -// } -// -// OrderSearchParam orderListAndroidQueryDTO = new OrderSearchParam(); -// orderListAndroidQueryDTO.setCustId(custPayInfo.getCustId()); -// orderListAndroidQueryDTO.setStartDate(LocalDate.now()); -// orderListAndroidQueryDTO.setEndDate(LocalDate.now()); -// orderListAndroidQueryDTO.setOrderStateList(OrderStateEnum.validStateList()); -// orderListAndroidQueryDTO.setExistsRefund(LeConstants.COMMON_NO); -// orderListAndroidQueryDTO.setDeliveryTypeList(CollUtil.toList(new Integer[]{DeliveryTypeEnum.SELF_TAKE.getKey()})); -// orderListAndroidQueryDTO.setOrderIdList(LeNumUtil.isValidId(orderId) ? CollUtil.toList(new Long[]{orderId}) : null); -// if (isSupermarketDevice) { -// orderListAndroidQueryDTO.setOrderTypeList(CollUtil.toList(new Integer[]{OrderTypeEnum.SHOP.getKey(), OrderTypeEnum.RESERVE_SHOP.getKey()})); -// } else { -// AllocMealtimeModel nowMealtime = this.orderModuleClient.mealtimeCheckNow(MealtimeCheckNowParam.of(deviceInfoVO != null ? deviceInfoVO.getFirstCanteenId() : null, deviceInfoVO != null ? deviceInfoVO.getFirstShopstallId() : null)); -// orderListAndroidQueryDTO.setMealtimeTypeList(CollUtil.toList(new Integer[]{nowMealtime.getMealtimeType()})); -// orderListAndroidQueryDTO.setOrderTypeList(CollUtil.toList(new Integer[]{OrderTypeEnum.CURR_MEAL.getKey(), OrderTypeEnum.RESERVE_MEAL.getKey(), OrderTypeEnum.BOOK_MEAL.getKey(), OrderTypeEnum.BOOK_MEAL_3DAY.getKey(), OrderTypeEnum.BOOK_MEAL_7DAY.getKey()})); -// } -// -// OrderTakeAndroidVO vo = OrderTakeAndroidVO.of(custPayInfo, accInfoDetail); -// List orderIdDatePage = this.orderInfoService.queryOrderId(orderListAndroidQueryDTO, (OrderUserPermissionDTO)null); -// List orderInfoList = this.orderInfoService.listOrderForAndroid((List)orderIdDatePage.stream().map(OrderIdDateVO::getId).collect(Collectors.toList()), (List)orderIdDatePage.stream().map(OrderIdDateVO::getOrderDate).collect(Collectors.toList())); -// this.orderInfoAndroidBusiness.fillOrderDetail(orderInfoList, true); -// Iterator var13 = orderInfoList.iterator(); -// -// while(var13.hasNext()) { -// OrderListAndroidVO orderInfo = (OrderListAndroidVO)var13.next(); -// if (this.isIncludePermission(devicePermissionCodes, orderInfo.getPermissionCode())) { -// if (DishesStateEnum.ALREADY_TAKE.getKey().equals(orderInfo.getDishesState())) { -// vo.getAlreadyTakeOrderList().add(orderInfo); -// } else { -// vo.getNeedTakeOrderList().add(orderInfo); -// } -// } -// } -// -// if (CollUtil.isNotEmpty(vo.getNeedTakeOrderList())) { -// RulePriceDTO rulePriceDTO = this.packageRulePriceDTO(vo.getNeedTakeOrderList(), deviceInfoVO); -// this.marketApi.ruleMealCompute(rulePriceDTO); -// if (LeConstants.COMMON_YES.equals(takeAndroidDTO.getIfTakeImmediately())) { -// Iterator var19 = vo.getNeedTakeOrderList().iterator(); -// -// while(var19.hasNext()) { -// OrderListAndroidVO orderListAndroidVO = (OrderListAndroidVO)var19.next(); -// this.orderUpdateDishesState(OrderDishesUpdateDTO.of(orderListAndroidVO.getOrderId(), DishesStateEnum.ALREADY_TAKE.getKey())); -// } -// } -// } -// -// vo = this.orderCustomBusiness.android().didCustTakeMeal(takeAndroidDTO, vo); -// return vo; -// } -// } -// -// public PageVO queryOrderCallPage(PageDTO pageDTO, OrderCallQueryDTO queryDTO) { -// LogUtil.info("[叫号]查询叫号列表", queryDTO); -// if (CharSequenceUtil.isNotBlank(queryDTO.getMachineSn()) && !LeNumUtil.isValidId(queryDTO.getStallId())) { -// log.info("[叫号]未指定档口,根据设备sn查询档口id"); -// DeviceInfoVO deviceInfoVO = this.deviceApi.getDeviceInfoVoBySnCacheable(queryDTO.getMachineSn()); -// if (deviceInfoVO != null) { -// queryDTO.setStallId(deviceInfoVO.getFirstShopstallId()); -// } -// } -// -// if (!LeNumUtil.isValidId(queryDTO.getMealtimeType()) && LeNumUtil.isValidId(queryDTO.getStallId())) { -// log.info("[叫号]未指定餐次,根据档口id查询餐次"); -// AllocMealtimeModel assignTimeMealtime = this.orderModuleClient.mealtimeQuery(MealtimeQueryParam.ofAssignTime(LocalTime.now(), (Long)null, queryDTO.getStallId())); -// if (assignTimeMealtime != null) { -// queryDTO.setMealtimeType(assignTimeMealtime.getMealtimeType()); -// } -// } -// -// if (LeNumUtil.isValidId(queryDTO.getStallId()) && LeNumUtil.isValidId(queryDTO.getMealtimeType())) { -// AllocStall allocStall = this.allocStallApi.getAllocStall(queryDTO.getStallId()); -// if (allocStall != null && LeConstants.COMMON_YES.equals(allocStall.getIfUseCallNum())) { -// List orderCallListVOS = this.readCallCache(queryDTO.getStallId(), queryDTO.getDishesState(), queryDTO.getMealtimeType()); -// PageVO pageVO = PageVO.of(pageDTO, orderCallListVOS); -// this.orderCustomBusiness.android().didQueryOrderCallPage(queryDTO, pageVO); -// return pageVO; -// } else { -// log.warn("[叫号]档口不存在或未开启叫号,返回空数据"); -// return PageVO.empty(); -// } -// } else { -// log.warn("[叫号]档口或餐次为空,返回空数据"); -// return PageVO.empty(); -// } -// } -// -// public void fillDetailMakingPartComplete(Long orderId, Integer dishesState, List orderDetailList) { -// if (DishesStateEnum.MAKING.getKey().equals(dishesState)) { -// if (CollUtil.isNotEmpty(orderDetailList)) { -// Object cacheObj = RedisUtil.getObj(OrderCacheConstants.orderMakingPartCompleteCacheKey(orderId)); -// List makingComplteList = cacheObj instanceof List ? (List)cacheObj : ListUtil.empty(); -// Map detailMakeCompleteMap = (Map)makingComplteList.stream().collect(Collectors.toMap(OrderDishesUpdateDTO.DetailDishesMakeCompleteDTO::getDetailId, OrderDishesUpdateDTO.DetailDishesMakeCompleteDTO::getCompleteMaking, (k1, k2) -> { -// return k1; -// })); -// orderDetailList.forEach((s) -> { -// s.setMakingComplete((Integer)detailMakeCompleteMap.getOrDefault(s.getDetailId(), (Object)null)); -// }); -// } -// } else if (DishesStateEnum.UN_MAKE.getKey().equals(dishesState)) { -// orderDetailList.forEach((s) -> { -// s.setMakingComplete(LeConstants.COMMON_NO); -// }); -// } else { -// orderDetailList.forEach((s) -> { -// s.setMakingComplete(LeConstants.COMMON_YES); -// }); -// } -// -// } -// -// public void updateCallOrd(OrdCallUpdateDTO ordCallUpdateDTO) { -// DeviceInfoVO deviceInfoVO = this.deviceApi.getDeviceInfoVoBySnCacheable(ordCallUpdateDTO.getMachineSn()); -// if (SourceTypeEnum.BUFFET.getKey().equals(deviceInfoVO.getDeviceType()) && OrderStateOldEnum.MAKEING.getKey().equals(ordCallUpdateDTO.getOrdState())) { -// this.orderSignIn((new OrderSignInAndroidDTO()).setOrderId(ordCallUpdateDTO.getOrdId())); -// } else { -// OrderDishesUpdateDTO orderDishesUpdateDTO = new OrderDishesUpdateDTO(); -// orderDishesUpdateDTO.setOrderId(ordCallUpdateDTO.getOrdId()); -// if (OrderStateOldEnum.COMPLETE.getKey().equals(ordCallUpdateDTO.getOrdState())) { -// orderDishesUpdateDTO.setDishesState(DishesStateEnum.ALREADY_TAKE.getKey()); -// } else if (OrderStateOldEnum.WAITTAKE.getKey().equals(ordCallUpdateDTO.getOrdState())) { -// orderDishesUpdateDTO.setDishesState(DishesStateEnum.WAIT_TAKE.getKey()); -// } else if (OrderStateOldEnum.MAKEING.getKey().equals(ordCallUpdateDTO.getOrdState())) { -// orderDishesUpdateDTO.setDishesState(DishesStateEnum.MAKING.getKey()); -// } else { -// orderDishesUpdateDTO.setDishesState(DishesStateEnum.MAKING.getKey()); -// } -// -// this.orderUpdateDishesState(orderDishesUpdateDTO); -// } -// } -// -// public void doUpdateDishesState(OrderInfo orderInfo, OrderDishesUpdateDTO dishesUpdateDTO) { -// Integer dishesStateBeforeUpdated = orderInfo.getDishesState(); -// if (!this.orderCustomBusiness.android().willUpdateOrderDishesStateV2(orderInfo, dishesUpdateDTO)) { -// this.orderCustomBusiness.android().didUpdateOrderDishesStateV2(orderInfo, dishesStateBeforeUpdated); -// } -// -// if (!OrderStateEnum.isPlaceState(orderInfo.getOrderState())) { -// throw new LeException(OrderTips.orderStateWrong(orderInfo.getOrderState())); -// } else { -// if (DishesStateEnum.ALREADY_TAKE.getKey().equals(dishesUpdateDTO.getDishesState())) { -// this.orderInfoService.updateOrderFinishByOrderIds(CollUtil.toList(new Long[]{orderInfo.getOrderId()}), CollUtil.toList(new LocalDate[]{orderInfo.getOrderDate()})); -// } else if (DishesStateEnum.WAIT_TAKE.getKey().equals(dishesUpdateDTO.getDishesState()) && dishesUpdateDTO.ifPartMakeComplete()) { -// String cacheKey = OrderCacheConstants.orderMakingPartCompleteCacheKey(dishesUpdateDTO.getOrderId()); -// List cacheObj = CollUtil.isNotEmpty(dishesUpdateDTO.getDetailDishesMakeList()) ? dishesUpdateDTO.getDetailDishesMakeList() : CollUtil.newArrayList(new OrderDishesUpdateDTO.DetailDishesMakeCompleteDTO[0]); -// RedisUtil.setObj(cacheKey, cacheObj); -// this.orderInfoService.updateOrderState(orderInfo.getOrderId(), orderInfo.getOrderDate(), (Integer)null, (Integer)null, DishesStateEnum.MAKING.getKey(), (String)null); -// } else { -// this.orderInfoService.updateOrderState(orderInfo.getOrderId(), orderInfo.getOrderDate(), (Integer)null, (Integer)null, dishesUpdateDTO.getDishesState(), (String)null); -// } -// -// if (CharSequenceUtil.isNotEmpty(dishesUpdateDTO.getDeliveryCode())) { -// this.orderDeliveryService.updateOrderDeliveryCode(orderInfo.getOrderId(), orderInfo.getOrderDate(), dishesUpdateDTO.getDeliveryCode()); -// } -// -// this.didUpdateDishesState(orderInfo.getOrderId(), dishesStateBeforeUpdated); -// } -// } -// -// protected boolean isIncludePermission(List devicePermissionCodes, String orderPermissionCode) { -// if (CollUtil.isEmpty(devicePermissionCodes)) { -// return false; -// } else { -// String[] var10001 = orderPermissionCode.split("_"); -// return devicePermissionCodes.contains(var10001[0] + "_-1") ? true : devicePermissionCodes.contains(orderPermissionCode); -// } -// } -// -// protected void addNxWithOrderId(Long orderId) { -// String lockKey = OrderCacheConstants.orderHandleLockKey(OrderCacheConstants.orderCallHandleLockKey(orderId)); -// if (!RedisUtil.setNx(lockKey, LeConstants.COMMON_YES, 10)) { -// log.info("[叫号处理中] 处理中 {} ", orderId); -// throw new LeException(I18n.getMessage("order.mobile.order-processing", new Object[0])); -// } else { -// log.info("[叫号处理中] 加锁 {} {}", orderId, 10); -// } -// } -// -// protected void removeNxWithOrderId(Long orderId) { -// log.info("[叫号处理中] 移除锁定 {} ", orderId); -// String lockKey = OrderCacheConstants.orderHandleLockKey(OrderCacheConstants.orderCallHandleLockKey(orderId)); -// RedisUtil.delete(lockKey); -// } - - protected void updateCallCacheIfNeed(OrderCallListVO orderCallListVO) { - if (orderCallListVO != null && LeNumUtil.isValidId(orderCallListVO.getStallId()) && !CharSequenceUtil.isEmpty(orderCallListVO.getMealCode())) { - RLock lock = RedisUtil.getLock(OrderCacheConstants.orderCallCacheLockKey(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType())); - lock.lock(10L, TimeUnit.SECONDS); - - try { - Object obj = RedisUtil.getObj(OrderCacheConstants.orderCallCacheKey(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType())); - Map orderCallMap; - if (obj instanceof Map) { - orderCallMap = (Map)obj; - } else { - orderCallMap = this.queryOrderCallMap(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType()); - } - - if (!OrderStateOldEnum.MAKEING.getKey().equals(orderCallListVO.getOrdState()) && !OrderStateOldEnum.WAITTAKE.getKey().equals(orderCallListVO.getOrdState())) { - orderCallMap.remove(orderCallListVO.getOrderId().toString()); - } else { - orderCallMap.put(orderCallListVO.getOrderId().toString(), orderCallListVO); - } - - RedisUtil.setObj(OrderCacheConstants.orderCallCacheKey(orderCallListVO.getStallId(), orderCallListVO.getMealtimeType()), orderCallMap, OrderCacheConstants.CALL_CACHE_SECONDS); - } finally { - try { - if (lock.isHeldByCurrentThread() && lock.isLocked()) { - lock.unlock(); - } - } catch (Exception var10) { - log.error("解锁异常", var10); - } - - } - - } - } -// -// protected List readCallCache(Long stallId, Integer dishesState, Integer mealtimeType) { -// log.info("[叫号查询]读取缓存 {} {} {}", new Object[]{stallId, dishesState, mealtimeType}); -// Object obj = RedisUtil.getObj(OrderCacheConstants.orderCallCacheKey(stallId, mealtimeType)); -// if (obj instanceof Map orderCallMap) { -// log.info("[叫号查询]从缓存读取 {} 个", CollUtil.size(orderCallMap.values())); -// } else { -// RLock lock = RedisUtil.getLock(OrderCacheConstants.orderCallCacheLockKey(stallId, mealtimeType)); -// lock.lock(10L, TimeUnit.SECONDS); -// -// try { -// orderCallMap = this.queryOrderCallMap(stallId, mealtimeType); -// log.info("[叫号查询]从数据库读取 {} 个", CollUtil.size(orderCallMap.values())); -// RedisUtil.setObj(OrderCacheConstants.orderCallCacheKey(stallId, mealtimeType), orderCallMap, OrderCacheConstants.CALL_CACHE_SECONDS); -// } finally { -// try { -// if (lock.isHeldByCurrentThread() && lock.isLocked()) { -// lock.unlock(); -// } -// } catch (Exception var13) { -// log.error("解锁异常", var13); -// } -// -// } -// } -// -// return (List)orderCallMap.values().stream().filter((s) -> { -// return ObjectUtil.equal(dishesState, s.getDishesState()); -// }).sorted(Comparator.comparing(OrderCallListVO::getMealCode)).collect(Collectors.toList()); -// } - - protected Map queryOrderCallMap(Long stallId, Integer mealtimeType) { - OrderSearchParam androidQueryDTO = new OrderSearchParam(); - androidQueryDTO.setStartDate(LocalDate.now()); - androidQueryDTO.setEndDate(LocalDate.now()); - androidQueryDTO.setOrderStateList(CollUtil.toList(new Integer[]{OrderStateEnum.PLACE.getKey()})); - androidQueryDTO.setDishesStateList(CollUtil.toList(new Integer[]{DishesStateEnum.MAKING.getKey(), DishesStateEnum.WAIT_TAKE.getKey()})); - androidQueryDTO.setMealtimeTypeList(CollUtil.toList(new Integer[]{mealtimeType})); - androidQueryDTO.setStallIdList(CollUtil.toList(new Long[]{stallId})); - if (LeNumUtil.isValidId(stallId)) { - AllocStall allocStall = this.allocStallApi.getAllocStall(stallId); - if (allocStall != null) { - androidQueryDTO.setCanteenIdList(CollUtil.toList(new Long[]{allocStall.getCanteenId()})); - } - } - - OrderQueryHelper.initQueryParam(androidQueryDTO); - List orderIdDatePage = this.orderInfoService.queryOrderId(androidQueryDTO, (OrderUserPermissionDTO)null); - List orderListAndroidVOS = this.orderInfoService.listOrderForAndroid((List)orderIdDatePage.stream().map(OrderIdDateVO::getId).collect(Collectors.toList()), (List)orderIdDatePage.stream().map(OrderIdDateVO::getOrderDate).collect(Collectors.toList())); - return orderListAndroidVOS.stream().filter((s) -> { - return !DishesStateEnum.ALREADY_TAKE.getKey().equals(s.getDishesState()); - }).map(OrderCallListVO::of).collect(Collectors.toMap((s) -> { - return s.getOrderId().toString(); - }, Function.identity())); - } -// -// protected RulePriceDTO packageRulePriceDTO(List orderInfoList, DeviceInfoVO deviceInfoVO) { -// RulePriceDTO rulePriceDTO = new RulePriceDTO(); -// rulePriceDTO.setTryFlag(LeConstants.COMMON_NO); -// rulePriceDTO.setVerifyFlag(LeConstants.COMMON_YES); -// List ruleOrderList = (List)orderInfoList.stream().map((orderInfo) -> { -// return (new RulePriceOrderDTO()).setOrderId(orderInfo.getOrderId()).setMacOrderId(orderInfo.getMacOrderId()).setCustId(LeNumUtil.isValidId(orderInfo.getCustId()) ? orderInfo.getCustId() : LeConstants.DATA_DEFAULT_LONG).setOrderType(orderInfo.getOrderType()).setMealtimeType(orderInfo.getMealtimeType()).setOrderDate(orderInfo.getOrderDate()).setOrderTime(orderInfo.getOrderTime()).setCanteenId(orderInfo.getCanteenId()).setStallId(orderInfo.getStallId()).setPayableAmount(orderInfo.calcNeedPayAmount()).setIfOnline(orderInfo.getIfOnline()).setDeviceSn(deviceInfoVO != null ? deviceInfoVO.getDeviceSn() : null); -// }).collect(Collectors.toList()); -// rulePriceDTO.setOrders(ruleOrderList); -// rulePriceDTO.setCustId(LeNumUtil.isValidId(((OrderListAndroidVO)orderInfoList.get(0)).getCustId()) ? ((OrderListAndroidVO)orderInfoList.get(0)).getCustId() : LeConstants.DATA_DEFAULT_LONG); -// rulePriceDTO.setPayChannel(((OrderListAndroidVO)orderInfoList.get(0)).getPayChannel()); -// return rulePriceDTO; -// } -} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderRefundBusinessImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderRefundBusinessImpl.java index 76fcea7d..73cc6a1f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderRefundBusinessImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderRefundBusinessImpl.java @@ -23,7 +23,7 @@ import com.bonus.core.marketing.v2.api.MarketApi; import com.bonus.core.menu.api.MenuDishesApi; import com.bonus.core.menu.dto.MenuRecipeChangeSurplusNum; import com.bonus.core.menu.model.AllocMealtimeModel; -import com.bonus.core.order.android.dto.business.OrderDishesAndroidBusiness; +import com.bonus.core.order.android.business.OrderDishesAndroidBusiness; import com.bonus.core.order.client.OrderModuleClient; import com.bonus.core.order.client.po.CustPayInfoQueryParam; import com.bonus.core.order.client.po.MealtimeQueryParam;