Explorar o código

跑腿订单可展示逻辑改为支付成功后即展示

codingliang hai 10 meses
pai
achega
dced77b8bd

+ 6 - 0
src/main/java/com/sqx/modules/errand/service/TbIndentService.java

@@ -154,4 +154,10 @@ public interface TbIndentService extends IService<TbIndent> {
     void riderUploadDeliveryImg(Long userId, String indentNumber, String imgs);
 
     TbIndent getByOrderId(String orderId);
+
+    /**
+     * 系统取消跑腿订单
+     * @param indentNumber 跑腿订单号
+     */
+    void sysCancelOrder(String indentNumber);
 }

+ 19 - 1
src/main/java/com/sqx/modules/errand/service/impl/TbIndentServiceImpl.java

@@ -77,6 +77,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.DefaultTransactionDefinition;
 
@@ -316,7 +317,12 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
         tbIndent.setErrandMoney(errandMoney);
         tbIndent.setRiderMoney(errandMoney);
         tbIndent.setPlatformMoney(platformMoney);
-        tbIndent.setIndentState("11");
+        // 配送订单,直接改为2
+        if (goodsShop.getAutoSendOrder() == 0) {
+            tbIndent.setIndentState("2");
+        } else {
+            tbIndent.setIndentState("11");
+        }
         tbIndent.setUserId(order.getUserId());
         tbIndent.setShopId(order.getShopId());
         baseMapper.insert(tbIndent);
@@ -1214,6 +1220,18 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
         return tbIndent;
     }
 
+    @Override
+    @Transactional(propagation = Propagation.SUPPORTS)
+    public void sysCancelOrder(String indentNumber) {
+        TbIndent tbIndent = tbIndentDao.findIndentByNumber(indentNumber);
+        if (ObjectUtil.isNotNull(tbIndent)) {
+            TbIndent newIndent = new TbIndent();
+            newIndent.setIndentId(tbIndent.getIndentId());
+            newIndent.setIndentState("10");
+            tbIndentDao.updateById(newIndent);
+        }
+    }
+
     @Transactional
     @Override
     public Result riderCancleIndent(String indentNumber, Integer type) {

+ 21 - 26
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -124,7 +124,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -1838,17 +1837,18 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                 messageInfo.setContent("您的餐品已制作完成,请及时取餐");
             } else if (tbOrder.getOrderType() == 2) {
                 messageInfo.setContent("您的餐品已制作完成,正在配送中");
+                // 用户支付成功后,即创建跑腿状态为2的订单
                 //如果是外卖订单,则修改外卖订单的状态
-                GoodsShop goodsShop = goodsShopDao.selectById(tbOrder.getShopId());
-                if (goodsShop.getAutoSendOrder() == 0) {
-                    TbIndent tbIndent = tbIndentDao.selectOne(new QueryWrapper<TbIndent>().eq("order_id", tbOrder.getOrderId()));
-                    TbIndent tbIndent1 = new TbIndent();
-                    tbIndent1.setIndentId(tbIndent.getIndentId());
-                    tbIndent1.setCreateTime(format1);
-                    tbIndent1.setIndentState("2");
-                    tbIndentService.updateById(tbIndent1);
-                    tbIndentService.sendNewIndentMsg(tbIndent);
-                }
+                // GoodsShop goodsShop = goodsShopDao.selectById(tbOrder.getShopId());
+                // if (goodsShop.getAutoSendOrder() == 0) {
+                //     TbIndent tbIndent = tbIndentDao.selectOne(new QueryWrapper<TbIndent>().eq("order_id", tbOrder.getOrderId()));
+                //     TbIndent tbIndent1 = new TbIndent();
+                //     tbIndent1.setIndentId(tbIndent.getIndentId());
+                //     tbIndent1.setCreateTime(format1);
+                //     tbIndent1.setIndentState("2");
+                //     tbIndentService.updateById(tbIndent1);
+                //     tbIndentService.sendNewIndentMsg(tbIndent);
+                // }
             }
             messageInfo.setCreateAt(format1);
             messageInfo.setUserId(tbOrder.getUserId().toString());
@@ -1969,6 +1969,8 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                 tbCouponUserDao.updateById(tbCouponUser);
             }
 
+            // 取消跑腿订单
+            tbIndentService.sysCancelOrder(tbOrder.getOrderNumber());
 
             //设置小程序消息推送
             CommonInfo one = commonInfoService.findOne(266);
@@ -2356,15 +2358,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         }
         Calendar cal = Calendar.getInstance();
         cal.add(Calendar.MINUTE, -1);
-        Date parse = null;
-        if (tbOrder.getStatus() == 6) {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            try {
-                parse = sdf.parse(tbOrder.getShopReceivingTime());
-            } catch (ParseException e) {
-                e.printStackTrace();
-            }
-        }
+
         MessageInfo messageInfo1 = new MessageInfo();
         messageInfo1.setTitle("用户取消订单");
         messageInfo1.setCreateAt(DateUtils.format(new Date()));
@@ -2463,6 +2457,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                 goodsShopDao.updateShopSales(2, goodsNum, goodsShopRelevancy.getShopId());
             }
 
+            // 取消跑腿订单
+            tbIndentService.sysCancelOrder(tbOrder.getOrderNumber());
+
             return Result.success("取消订单成功!");
         }
         return Result.error("餐品正在制作中,无法退款!");
@@ -2555,12 +2552,10 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             //            退款状态需要改成8
             tbOrder.setStatus(8);
             appOrderDao.updateById(tbOrder);
-            //取消跑腿订单
-            TbIndent tbIndent = new TbIndent();
-            TbIndent tbIndent1 = tbIndentDao.selectOne(new QueryWrapper<TbIndent>().eq("order_id", orderId));
-            tbIndent.setIndentId(tbIndent1.getIndentId());
-            tbIndent.setIndentState("10");
-            tbIndentDao.updateById(tbIndent);
+
+            // 取消跑腿订单
+            tbIndentService.sysCancelOrder(tbOrder.getOrderNumber());
+
             //添加退款记录
             UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
             userMoneyDetails.setUserId(tbOrder.getUserId());