From cf17c2f7012fc4351f66c71d66a4aa3a9fe9e34a Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 30 四月 2026 15:24:17 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  299 ++++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 213 insertions(+), 86 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index aec4757..04cd73b 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -1,15 +1,19 @@
 package com.doumee.service.business.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.biz.system.AreasBiz;
+import com.doumee.config.xyy.XyyConfig;
+import com.doumee.config.xyy.dto.PrintRequest;
 import com.doumee.biz.system.OperationConfigBiz;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.config.wx.WxMiniConfig;
 import com.doumee.config.wx.WxPayProperties;
 import com.doumee.config.wx.WxPayV3Service;
+import com.doumee.core.utils.jpush.JPushUtil;
 import com.wechat.pay.java.service.refund.model.Refund;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.constants.ResponseStatus;
@@ -55,6 +59,7 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.text.SimpleDateFormat;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -129,6 +134,9 @@
     private AreasService areasService;
 
     @Autowired
+    private AreasMapper aareasMapper;
+
+    @Autowired
     private NoticeService noticeService;
 
     @Autowired
@@ -139,6 +147,12 @@
 
     @Autowired
     private WxPayProperties wxPayProperties;
+
+    @Autowired
+    private XyyConfig xyyConfig;
+
+    @Autowired
+    private PrintService printService;
 
     @Override
     public Integer create(Orders orders) {
@@ -216,14 +230,13 @@
                 .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID");
                 ;
         Utils.MP.blankToNull(pageWrap.getModel());
-        pageWrap.getModel().setDeleted(Constants.ZERO);
         queryWrapper.eq(pageWrap.getModel().getDeleted() != null, Orders::getDeleted, pageWrap.getModel().getDeleted());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()), Orders::getCode, pageWrap.getModel().getCode());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()),  "s2.name",  pageWrap.getModel().getTakeShopName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsInfo()), Orders::getGoodsInfo, pageWrap.getModel().getGoodsInfo());
-        queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
-        queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+        queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateStartTime());
+        queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateEndTime());
         queryWrapper.eq(pageWrap.getModel().getDepositShopId() != null, Orders::getDepositShopId, pageWrap.getModel().getDepositShopId());
         queryWrapper.eq(pageWrap.getModel().getType() != null, Orders::getType, pageWrap.getModel().getType());
         queryWrapper.eq(pageWrap.getModel().getStatus() != null, Orders::getStatus, pageWrap.getModel().getStatus());
@@ -231,13 +244,10 @@
         queryWrapper.and(pageWrap.getModel().getDriverKeyword() != null, i->i.like(DriverInfo::getName, pageWrap.getModel().getDriverKeyword())
                 .or().like(DriverInfo::getTelephone, pageWrap.getModel().getDriverKeyword()));
         queryWrapper.eq(pageWrap.getModel().getSettlementStatus() != null, Orders::getSettlementStatus, pageWrap.getModel().getSettlementStatus());
-        for (PageWrap.SortData sortData : pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
+        queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver());
+        queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId())
+                .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId()));
+        queryWrapper.orderByDesc(Orders::getId);
         PageData<Orders> pageData = PageData.from(ordersMapper.selectJoinPage(page, Orders.class, queryWrapper));
         for (Orders o : pageData.getRecords()) {
             if (o.getStatus() != null) {
@@ -263,8 +273,8 @@
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()),  "s2.name",  pageWrap.getModel().getTakeShopName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsInfo()), Orders::getGoodsInfo, pageWrap.getModel().getGoodsInfo());
-        queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
-        queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+        queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateStartTime());
+        queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateEndTime());
         queryWrapper.eq(pageWrap.getModel().getDepositShopId() != null, Orders::getDepositShopId, pageWrap.getModel().getDepositShopId());
         queryWrapper.eq(pageWrap.getModel().getType() != null, Orders::getType, pageWrap.getModel().getType());
         queryWrapper.eq(pageWrap.getModel().getStatus() != null, Orders::getStatus, pageWrap.getModel().getStatus());
@@ -272,6 +282,9 @@
         queryWrapper.and(pageWrap.getModel().getDriverKeyword() != null, i->i.like(DriverInfo::getName, pageWrap.getModel().getDriverKeyword())
                 .or().like(DriverInfo::getTelephone, pageWrap.getModel().getDriverKeyword()));
         queryWrapper.eq(pageWrap.getModel().getSettlementStatus() != null, Orders::getSettlementStatus, pageWrap.getModel().getSettlementStatus());
+        queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver());
+        queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId())
+                .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId()));
 
         queryWrapper.select(
                 "IFNULL(SUM(t.total_amount), 0) as total_amount_sum",
@@ -362,7 +375,7 @@
         for (Category c : categories) {
             categoryNameMap.put(c.getId(), c.getName());
             categoryDetailMap.put(c.getId(), c.getDetail());
-            categoryOtherFieldMap.put(c.getId(),c.getOtherField());
+            categoryOtherFieldMap.put(c.getId(),c.getRemark());
         }
 
         // 璁$畻姣忛」鐗╁搧璐圭敤锛氬皬璁� = 鍗曚环 脳 鏁伴噺 脳 澶╂暟
@@ -484,7 +497,7 @@
         for (Category c : categories) {
             categoryNameMap.put(c.getId(), c.getName());
             categoryDetailMap.put(c.getId(), c.getDetail());
-            categoryOtherFieldMap.put(c.getId(),c.getOtherField());
+            categoryOtherFieldMap.put(c.getId(),c.getRemark());
         }
 
         // 3. 閫愰」璁$畻杩愯垂锛氳捣姝ヤ环 + 瓒呭嚭閮ㄥ垎闃舵浠�
@@ -544,18 +557,26 @@
             insuranceFeeFen = insuranceFeeYuan.multiply(new BigDecimal(100)).longValue();
         }
 
-        // 5. 鍔犳�ヨ垂鐢細鐗╁搧浠锋牸 脳 鍔犳�ョ郴鏁�(瀛楀吀 URGENT_COEFFICIENT)
+        // 5. 鍔犳�ヨ垂鐢細鐗╁搧浠锋牸 脳 (鍔犳�ョ郴鏁�-1)锛屽150%琛ㄧず澧炲姞50%
         long urgentFeeFen = 0L;
         String urgentRateStr = systemDictDataBiz.queryByCode(
                 Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode();
         BigDecimal urgentRate = new BigDecimal(urgentRateStr);
-        urgentFeeFen = new BigDecimal(itemPriceTotal).multiply(urgentRate)
+        BigDecimal urgentIncreaseRate = urgentRate.subtract(BigDecimal.ONE);
+        urgentFeeFen = new BigDecimal(itemPriceTotal).multiply(urgentIncreaseRate)
                 .setScale(0, RoundingMode.HALF_UP).longValue();
 
         // 6. 鎬讳环鏍� = 鐗╁搧浠锋牸 + 淇濅环璐圭敤 + 鍔犳�ヨ垂鐢紙鍔犳�ユ椂鎵嶅寘鍚姞鎬ヨ垂锛�
         long totalPrice = itemPriceTotal + insuranceFeeFen;
         if (Boolean.TRUE.equals(dto.getUrgent())) {
             totalPrice += urgentFeeFen;
+            // 鍔犳�ユ椂鏇存柊鐗╁搧鏄庣粏鍗曚环鍜屽皬璁�
+            for (ItemPriceVO vo : itemList) {
+                long adjustedUnitPrice = new BigDecimal(vo.getUnitPrice()).multiply(urgentRate)
+                        .setScale(0, RoundingMode.HALF_UP).longValue();
+                vo.setUnitPrice(adjustedUnitPrice);
+                vo.setSubtotal(adjustedUnitPrice * vo.getQuantity());
+            }
         }
 
         PriceCalculateVO result = new PriceCalculateVO();
@@ -830,6 +851,12 @@
         orders.setEstimatedAmount(priceResult.getTotalPrice());
         orders.setTotalAmount(priceResult.getTotalPrice());
         orders.setUrgentAmount(priceResult.getUrgentFee());
+        // 瀛樺偍鍔犳�ョ郴鏁�
+        if (Constants.ONE.equals(dto.getType()) && Constants.ONE.equals(dto.getIsUrgent())) {
+            String urgentRateStr = systemDictDataBiz.queryByCode(
+                    Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode();
+            orders.setUrgentRata(new BigDecimal(urgentRateStr));
+        }
         if (dto.getDeclaredAmount() != null && dto.getDeclaredAmount().compareTo(BigDecimal.ZERO) > 0) {
             orders.setDeclaredAmount(dto.getDeclaredAmount().multiply(new BigDecimal(100)).longValue());
         } else {
@@ -861,6 +888,13 @@
         orderLogService.create(createLog);
 
         // ========== 7. 鍒涘缓璁㈠崟鏄庣粏 ==========
+        // 寮傚湴瀵勫瓨鏋侀�熻揪鏃讹紝鎸夊姞鎬ユ瘮渚嬭绠楁槑缁嗚鍗曚环
+        BigDecimal urgentIncreaseRate = null;
+        if (Constants.ONE.equals(dto.getType()) && Constants.ONE.equals(dto.getIsUrgent())) {
+            String urgentRateStr = systemDictDataBiz.queryByCode(
+                    Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode();
+            urgentIncreaseRate = new BigDecimal(urgentRateStr).subtract(BigDecimal.ONE);
+        }
         for (ItemPriceVO itemVO : priceResult.getItemList()) {
             OrdersDetail detail = new OrdersDetail();
             detail.setOrderId(orderId);
@@ -868,11 +902,29 @@
             detail.setLuggageName(itemVO.getCategoryName());
             detail.setLuggageDetail(itemVO.getDetail());
             detail.setNum(itemVO.getQuantity());
-            detail.setUnitPrice(itemVO.getUnitPrice());
+            long detailUnitPrice = itemVO.getUnitPrice();
+            if (urgentIncreaseRate != null) {
+                detailUnitPrice = new BigDecimal(detailUnitPrice)
+                        .multiply(BigDecimal.ONE.add(urgentIncreaseRate))
+                        .setScale(0, RoundingMode.HALF_UP).longValue();
+            }
+            detail.setUnitPrice(detailUnitPrice);
             detail.setStartDistance(itemVO.getStartDistance());
-            detail.setStartPrice(itemVO.getStartPrice());
+            if (urgentIncreaseRate != null && itemVO.getStartPrice() != null) {
+                detail.setStartPrice(new BigDecimal(itemVO.getStartPrice())
+                        .multiply(BigDecimal.ONE.add(urgentIncreaseRate))
+                        .setScale(0, RoundingMode.HALF_UP).longValue());
+            } else {
+                detail.setStartPrice(itemVO.getStartPrice());
+            }
             detail.setExtraDistance(itemVO.getExtraDistance());
-            detail.setExtraPrice(itemVO.getExtraPrice());
+            if (urgentIncreaseRate != null && itemVO.getExtraPrice() != null) {
+                detail.setExtraPrice(new BigDecimal(itemVO.getExtraPrice())
+                        .multiply(BigDecimal.ONE.add(urgentIncreaseRate))
+                        .setScale(0, RoundingMode.HALF_UP).longValue());
+            } else {
+                detail.setExtraPrice(itemVO.getExtraPrice());
+            }
             detail.setLocallyPrice(itemVO.getLocallyPrice());
             detail.setDeleted(Constants.ZERO);
             detail.setCreateTime(now);
@@ -1555,12 +1607,13 @@
         // 闂ㄥ簵寰呭鐞嗚鍗曪細鎸変笟鍔$幆鑺傚尯鍒嗛棬搴楄鑹�
         if (combinedStatus != null && Constants.equalsInteger(combinedStatus, Constants.SEVEN)) {
             wrapper.and(w -> w
-                    .and(w1 -> w1.eq(Orders::getDepositShopId, shopId)
+                    .and(w1 -> w1.eq(Orders::getType, Constants.ZERO).eq(Orders::getDepositShopId, shopId)
                             .in(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus(),
-                                    Constants.OrderStatus.deposited.getStatus()))
-                    .or(w2 -> w2.eq(Orders::getTakeShopId, shopId)
-                            .in(Orders::getStatus, Constants.OrderStatus.delivering.getStatus(),
-                                    Constants.OrderStatus.arrived.getStatus()))
+                                    Constants.OrderStatus.arrived.getStatus())
+                    .or(w3-> w3.eq(Orders::getType, Constants.ONE).eq(Orders::getDepositShopId, shopId)
+                            .eq(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus()))
+                    .or(w2 -> w2.eq(Orders::getType, Constants.ONE).eq(Orders::getTakeShopId, shopId)
+                            .eq(Orders::getStatus, Constants.OrderStatus.arrived.getStatus())))
             );
         } else {
             wrapper.and(w -> w.eq(Orders::getDepositShopId, shopId).or().eq(Orders::getTakeShopId, shopId));
@@ -1816,46 +1869,17 @@
             vo.setMemberVerifyCode(order.getMemberVerifyCode());
         }
 
-        // 寮傚湴瀵勫瓨缁忕含搴︼紙灏卞湴瀵勫瓨涓嶈繑鍥烇級
-        if (Constants.ONE.equals(order.getType())) {
-            // status=3(宸叉帴鍗�)锛氳繑鍥炲瓨浠堕棬搴楃粡绾害 + 鍙告満缁忕含搴�
-            if (Constants.equalsInteger(status, Constants.OrderStatus.accepted.getStatus())) {
-                ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
-                if (depositShop != null) {
-                    vo.setDepositShopLng(depositShop.getLongitude());
-                    vo.setDepositShopLat(depositShop.getLatitude());
-                }
-                if (order.getAcceptDriver() != null) {
-                    DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
-                    if (driver != null) {
-                        vo.setDriverLng(driver.getLongitude());
-                        vo.setDriverLat(driver.getLatitude());
-                    }
-                }
-            }
-            // status=4(閰嶉�佷腑)锛氳繑鍥炲彇浠剁偣缁忕含搴� + 鍙告満缁忕含搴�
-            if (Constants.equalsInteger(status, Constants.OrderStatus.delivering.getStatus())) {
-                // 鍙栦欢鐐圭粡绾害锛堜紭鍏堝彇浠堕棬搴楋紝鍚﹀垯璁㈠崟涓婄殑鍙栦欢鍧愭爣锛�
-                if (order.getTakeShopId() != null) {
-                    ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId());
-                    if (takeShop != null) {
-                        vo.setTakeLng(takeShop.getLongitude());
-                        vo.setTakeLat(takeShop.getLatitude());
-                    }
-                } else if (order.getTakeLgt() != null && order.getTakeLat() != null) {
-                    vo.setTakeLng(order.getTakeLgt().doubleValue());
-                    vo.setTakeLat(order.getTakeLat().doubleValue());
-                }
-                if (order.getAcceptDriver() != null) {
-                    DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
-                    if (driver != null) {
-                        vo.setDriverLng(driver.getLongitude());
-                        vo.setDriverLat(driver.getLatitude());
-                    }
-                }
-            }
+        vo.setDepositShopLng(order.getDepositLgt().doubleValue());
+        vo.setDepositShopLat(order.getDepositLat().doubleValue());
+        // 鍙栦欢鐐圭粡绾害
+        vo.setTakeLng(order.getTakeLgt().doubleValue());
+        vo.setTakeLat(order.getTakeLat().doubleValue());
+        //鍙告満缁忕含搴�
+        DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver());
+        if (driver != null) {
+            vo.setDriverLng(driver.getLongitude());
+            vo.setDriverLat(driver.getLatitude());
         }
-
         // 璇勪环淇℃伅
         vo.setCommentStatus(order.getCommentStatus());
         if (Constants.equalsInteger(order.getCommentStatus(), Constants.ONE)) {
@@ -2308,6 +2332,7 @@
     public PayResponse payShopDeposit(Integer memberId) {
         // 1. 鏌ヨ闂ㄥ簵淇℃伅
         ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+                .eq(ShopInfo::getDeleted,Constants.ZERO)
                 .eq(ShopInfo::getRegionMemberId,memberId));
         if (shopInfo == null) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "闂ㄥ簵涓嶅瓨鍦�");
@@ -2393,18 +2418,17 @@
         sendSmsNotify(shopInfo.getTelephone(),
                 Constants.SmsNotify.SHOP_AUTH_SUCCESS,
                 "storeName", shopInfo.getName(),
-                "phone", shopInfo.getTelephone() != null ? shopInfo.getTelephone() : "",
                 "password", rawPassword);
 
         // 6. 鎶奸噾鏀粯瀹屾垚鍚庯紝鑻ュ煄甯傛湭寮�閫氬垯鑷姩寮�閫�
         if (shopInfo.getAreaId() != null) {
-            Areas shopArea = areasBiz.resolveArea(shopInfo.getAreaId());
+            Areas shopArea = aareasMapper.selectById(shopInfo.getAreaId());
             if (shopArea != null && shopArea.getParentId() != null) {
-                Areas cityArea = areasBiz.resolveArea(shopArea.getParentId());
+                Areas cityArea = aareasMapper.selectById(shopArea.getParentId());
                 if (cityArea != null && !Constants.equalsInteger(cityArea.getStatus(), Constants.ONE)) {
                     cityArea.setStatus(Constants.ONE);
                     cityArea.setEditDate(now);
-                    areasService.updateById(cityArea);
+                    aareasMapper.updateById(cityArea);
                     areasService.cacheData();
                 }
             }
@@ -2430,7 +2454,8 @@
                 .eq(Orders::getDeleted, Constants.ZERO)
                 .eq(Orders::getStatus, Constants.OrderStatus.finished.getStatus())
                 .eq(Orders::getSettlementStatus, Constants.ZERO)
-                .le(Orders::getFinishTime, deadline));
+                .le(Orders::getFinishTime, deadline)
+        );
         if (ordersList == null || ordersList.isEmpty()) {
             return;
         }
@@ -2475,7 +2500,7 @@
                 } else if (Constants.equalsInteger(revenue.getMemberType(), Constants.TWO)) {
                     // 闂ㄥ簵锛氶�氳繃 memberId 鏌� ShopInfo(regionMemberId)锛屾洿鏂� balance / totalBalance
                     ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
-                            .eq(ShopInfo::getRegionMemberId, revenue.getMemberId())
+                            .eq(ShopInfo::getId, revenue.getMemberId())
                             .eq(ShopInfo::getDeleted, Constants.ZERO)
                             .last("limit 1"));
                     if (shop != null) {
@@ -2741,6 +2766,8 @@
                 // 寮傚湴瀵勫瓨 鈫� 寰呮姠鍗�
                 sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(),
                         "orderNo", order.getCode());
+                // 鎺ㄩ�侀�氱煡鍙告満
+                pushDriverNewOrder(order);
             } else {
                 // 灏卞湴瀵勫瓨 鈫� 寰呭彇浠舵彁閱�
                 sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
@@ -2900,6 +2927,8 @@
                 // 寮傚湴瀵勫瓨 鈫� 寰呮姠鍗�
                 sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(),
                         "orderNo", order.getCode());
+                // 鎺ㄩ�侀�氱煡鍙告満
+                pushDriverNewOrder(order);
             } else {
                 // 灏卞湴瀵勫瓨 鈫� 寰呭彇浠舵彁閱�
                 sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
@@ -3182,8 +3211,8 @@
         // 瀛樹欢闂ㄥ簵鏀剁泭
         if (depositShopFee > 0 && order.getDepositShopId() != null) {
             ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
-            if (depositShop != null && depositShop.getRegionMemberId() != null) {
-                revenueMapper.insert(buildRevenue(depositShop.getRegionMemberId(), Constants.TWO,
+            if (depositShop != null && depositShop.getId() != null) {
+                revenueMapper.insert(buildRevenue(depositShop.getId(), Constants.TWO,
                         depositShopFee, orderId, order.getCode()));
             }
         }
@@ -3191,8 +3220,8 @@
         // 鍙栦欢闂ㄥ簵鏀剁泭锛堝紓鍦板瘎瀛樹笖鏈夊彇浠堕棬搴楋級
         if (takeShopFee > 0 && order.getTakeShopId() != null) {
             ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId());
-            if (takeShop != null && takeShop.getRegionMemberId() != null) {
-                revenueMapper.insert(buildRevenue(takeShop.getRegionMemberId(), Constants.TWO,
+            if (takeShop != null && takeShop.getId() != null) {
+                revenueMapper.insert(buildRevenue(takeShop.getId(), Constants.TWO,
                         takeShopFee, orderId, order.getCode()));
             }
         }
@@ -3563,7 +3592,10 @@
      * 渚涘垎椤电瓑宸叉煡璇㈡槑缁嗙殑涓氬姟鍦烘櫙澶嶇敤锛岄伩鍏嶉噸澶嶆煡璇�
      */
     private OverdueFeeVO calculateOverdueFeeInternal(Orders order, List<OrdersDetail> details) {
-        if (CollectionUtils.isEmpty(details)) {
+        if (CollectionUtils.isEmpty(details)||
+                Constants.equalsInteger(order.getStatus(),Constants.ZERO)
+        || Constants.equalsInteger(order.getStatus(),Constants.ONE)
+        ) {
             OverdueFeeVO vo = new OverdueFeeVO();
             vo.setOverdue(false);
             vo.setOverdueDays(0);
@@ -3729,7 +3761,7 @@
         QueryWrapper<Orders> wrapper = new QueryWrapper<>();
         wrapper.eq("MEMBER_ID", memberId)
                 .in("STATUS", 0, 1, 2, 3, 4, 5)
-                .orderByDesc("CREATE_TIME")
+                .orderByAsc("CREATE_TIME")
                 .last("LIMIT 1");
         Orders order = ordersMapper.selectOne(wrapper);
         if (order == null) {
@@ -4061,31 +4093,28 @@
             for (int i = 0; i < paramPairs.length - 1; i += 2) {
                 templateParam.put(paramPairs[i], paramPairs[i + 1]);
             }
-            boolean result = AliSmsService.sendSms(phone, smsNotify.getTemplateCode(),
+            String error = AliSmsService.sendSms(phone, smsNotify.getTemplateCode(),
                     templateParam.toJSONString());
-            if (result) {
-                log.info("鐭俊鍙戦�佹垚鍔�: phone={}, template={}", phone, smsNotify.name());
-            } else {
-                log.warn("鐭俊鍙戦�佸け璐�: phone={}, template={}", phone, smsNotify.name());
-            }
-            // 瀛樺偍鐭俊璁板綍
             Smsrecord record = new Smsrecord();
             record.setPhone(phone);
             record.setContent(content);
-            record.setType(Constants.ONE); // 1=璁㈠崟閫氱煡
-            record.setStatus(result ? Constants.ONE : Constants.ZERO); // 1=宸插彂閫�, 0=鍙戦�佸け璐�
+            record.setType(Constants.ONE);
+            record.setStatus(error == null ? Constants.ONE : Constants.ZERO);
+            if (error != null) {
+                record.setRemark(error);
+            }
             record.setCreateTime(new Date());
             record.setDeleted(Constants.ZERO);
             smsrecordMapper.insert(record);
         } catch (Exception e) {
             log.error("鐭俊鍙戦�佸紓甯�: phone={}, template={}, error={}", phone, smsNotify.name(), e.getMessage());
-            // 寮傚父涔熻褰�
             try {
                 Smsrecord record = new Smsrecord();
                 record.setPhone(phone);
                 record.setContent(content);
                 record.setType(Constants.ONE);
-                record.setStatus(Constants.ZERO); // 鍙戦�佸け璐�
+                record.setStatus(Constants.ZERO);
+                record.setRemark(e.getMessage());
                 record.setCreateTime(new Date());
                 record.setDeleted(Constants.ZERO);
                 smsrecordMapper.insert(record);
@@ -4093,4 +4122,102 @@
         }
     }
 
+    @Override
+    public void printOrderLabel(Integer orderId, Integer shopId) {
+        Orders orders = ordersMapper.selectById(orderId);
+        if (orders == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "璁㈠崟涓嶅瓨鍦�");
+        }
+        if (!Constants.equalsInteger(orders.getDepositShopId(), shopId)) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠闂ㄥ簵涓嶆槸璇ヨ鍗曠殑瀛樹欢闂ㄥ簵");
+        }
+        if (orders.getStatus() < 2 || orders.getStatus() > 5) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽鎵撳嵃");
+        }
+        ShopInfo shop = shopInfoMapper.selectById(shopId);
+        if (shop == null) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀛樹欢闂ㄥ簵涓嶅瓨鍦�");
+        }
+        if (StringUtils.isBlank(shop.getPrinterSn())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀛樹欢闂ㄥ簵鏈粦瀹氭墦鍗版満");
+        }
+        List<OrdersDetail> detailList = ordersDetailMapper.selectList(
+                new QueryWrapper<OrdersDetail>().lambda().eq(OrdersDetail::getOrderId, orderId));
+        // 鎷兼帴瀹㈡埛淇℃伅
+        String userInfo = "";
+        if (StringUtils.isNotBlank(orders.getTakeUser())) {
+            String phone = orders.getTakePhone();
+            userInfo = orders.getTakeUser();
+            if (StringUtils.isNotBlank(phone) && phone.length() >= 4) {
+                userInfo += "锛�" + phone.substring(phone.length() - 4) + "锛�";
+            }
+        }
+        String content = printService.getPrintContent(shop.getName(), detailList, userInfo, orders.getCode(), orders.getRemark(),
+                orders.getTakeLocationRemark(),
+                orders.getPayTime() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm").format(orders.getPayTime()) : "",
+                orders.getExpectedTakeTime() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm").format(orders.getExpectedTakeTime()) : "");
+        if (StringUtils.isBlank(content)) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎵撳嵃鍐呭涓虹┖");
+        }
+        PrintRequest request = new PrintRequest();
+        xyyConfig.createRequestHeader(request);
+        request.setSn(shop.getPrinterSn());
+        request.setContent(content);
+        request.setCopies(1);
+        request.setVoice(2);
+        request.setMode(0);
+        com.doumee.config.xyy.vo.ObjectRestResponse<String> resp = printService.printLabel(request);
+        if (resp.getCode() != 0) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎵撳嵃澶辫触锛�" + resp.getMsg());
+        }
+        log.info("璁㈠崟鏍囩鎵撳嵃鎴愬姛: orderId={}, orderIndex={}", orderId, resp.getData());
+    }
+
+    /**
+     * 寮傚湴璁㈠崟瀵勫瓨鎴愬姛鍚庢帹閫侀�氱煡缁欏徃鏈�
+     * 1銆佹湭鍔犳�ワ細鎺ㄩ�佸悓鍩庝笖闂ㄥ簵閰嶉�佽寖鍥村唴鎺ュ崟涓殑鍙告満
+     * 2銆佸姞鎬ワ細鎺ㄩ�佸悓鍩庢墍鏈夋帴鍗曚腑鐨勫徃鏈�
+     * 鍩庡競鍖归厤锛氬徃鏈篈REA_ID鍏宠仈areas琛紝閫愮骇parent_id鎵惧埌鍩庡競绾э紝涓庤鍗昪ityId鍖归厤
+     */
+    private void pushDriverNewOrder(Orders order) {
+        ShopInfo shop = shopInfoMapper.selectById(order.getDepositShopId());
+        if (shop == null || shop.getLongitude() == null || shop.getLatitude() == null) {
+            return;
+        }
+        String orderCityId = order.getCityId();
+        if (StringUtils.isBlank(orderCityId)) {
+            return;
+        }
+        String distSql = "(ST_Distance_Sphere(POINT(t.LONGITUDE, t.LATITUDE), POINT(" + shop.getLongitude() + ", " + shop.getLatitude() + ")) / 1000)";
+        // MPJ鍏宠仈鏌ヨ锛氬徃鏈� 鈫� areas(鍖哄幙) 鈫� areas_city(鍩庡競)锛屽尮閰嶈鍗昪ityId
+        MPJLambdaWrapper<DriverInfo> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(DriverInfo.class)
+                .leftJoin(Areas.class,Areas::getId,DriverInfo::getAreaId)
+                .eq(DriverInfo::getAcceptingStatus, Constants.ONE)
+                .eq(DriverInfo::getStatus, Constants.ZERO)
+                .eq(DriverInfo::getDeleted, Constants.ZERO)
+                .eq(DriverInfo::getAuditStatus, Constants.THREE)
+                .eq(Areas::getParentId, orderCityId);
+        if (!Constants.equalsInteger(order.getIsUrgent(), Constants.ONE)) {
+            // 鏈姞鎬ワ細闂ㄥ簵閰嶉�佽寖鍥村唴
+            double rangeKm = shop.getDeliveryArea() != null ? shop.getDeliveryArea().doubleValue() : 5.0;
+            wrapper.apply(distSql + " <= {0}", rangeKm);
+        }
+        List<DriverInfo> drivers = driverInfoMapper.selectJoinList(DriverInfo.class, wrapper);
+        if (drivers.isEmpty()) {
+            return;
+        }
+        List<String> aliases = new ArrayList<>();
+        for (DriverInfo d : drivers) {
+            aliases.add(org.springframework.util.DigestUtils.md5DigestAsHex(d.getTelephone().getBytes()));
+        }
+        String title = Constants.equalsInteger(order.getIsUrgent(), Constants.ONE) ? "鏂板姞鎬ヨ鍗�" : "鏂拌鍗�";
+        String content = "璁㈠崟鍙凤細" + order.getCode();
+        java.util.Map<String, String> extras = new java.util.HashMap<>();
+        extras.put("orderId", String.valueOf(order.getId()));
+        extras.put("orderCode", order.getCode());
+        extras.put("type", "new_order");
+        JPushUtil.sendByAliases(aliases, title, content, extras);
+    }
+
 }

--
Gitblit v1.9.3