From 59f4aa0fcebf6f7c52e48253cbfa4db7a000c967 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Fri, 10 Apr 2026 18:43:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8B=BC=E5=9B=A2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/serviceimpl/JPushServiceImpl.java | 1 - .../controller/manage/AuthController.java | 7 +- .../MallDeliveryOrderController.java | 20 +++++ .../hiver/mall/controller/ShopController.java | 26 ++++++- .../dao/mapper/MallDeliveryOrderMapper.java | 2 + .../java/cc/hiver/mall/entity/MallOrder.java | 7 ++ .../hiver/mall/entity/MallRefundRecord.java | 8 ++ .../main/java/cc/hiver/mall/entity/Shop.java | 3 + .../cc/hiver/mall/pojo/vo/MallOrderVO.java | 2 +- .../cc/hiver/mall/service/ShopService.java | 3 + .../mybatis/MallDeliveryOrderService.java | 7 ++ .../mall/serviceimpl/ShopServiceImpl.java | 14 ++++ .../mybatis/MallDeliveryOrderServiceImpl.java | 40 ++++++++-- .../mybatis/MallOrderServiceImpl.java | 44 ++++++----- .../mybatis/MallRefundRecordServiceImpl.java | 76 ++++++++++++------- .../mapper/MallDeliveryOrderMapper.xml | 16 ++++ .../mapper/MallRefundRecordMapper.xml | 1 + .../src/main/resources/mapper/ShopMapper.xml | 24 ++++-- 18 files changed, 236 insertions(+), 65 deletions(-) diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/JPushServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/JPushServiceImpl.java index 2e9c7f28..28888cce 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/JPushServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/JPushServiceImpl.java @@ -35,7 +35,6 @@ public class JPushServiceImpl implements JPushService { .addExtra("timestamp", System.currentTimeMillis()) .build()) .build(); - try { // 这里获取的是最后一次登录的设备id,如果没有登录过,那么就不发送订单 if(registrationId != null && !registrationId.isEmpty()){ diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java index bfe7a842..7167762a 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java @@ -127,8 +127,8 @@ public class AuthController { @RequestMapping(value = "/login", method = RequestMethod.POST) @SystemLog(description = "账号登录", type = LogType.LOGIN) @ApiOperation("账号/手机/邮箱登录") - @Transactional(readOnly = true) - public Result login(@RequestParam String username, + @Transactional + public Result login(@RequestParam String username,@RequestParam String clientId, @RequestParam String password, @RequestParam(required = false) String type, @RequestParam(required = false) Boolean saveLogin) { @@ -181,6 +181,9 @@ public class AuthController { for (ShopUser shopUser : shopUsers) { final Shop shop = shopService.findById(shopUser.getShop().getId()); if (shop != null && shop.getShopOwnerId() != null && StringUtils.isNotEmpty(shop.getShopOwnerId())) { + shop.setClientId(clientId); + shopService.update(shop); + shopService.refreshShopCache(shop.getId(), shop.getRegionId()); final User shopOwner = userService.findById(shop.getShopOwnerId()); if(shopOwner != null){ shopUser.setShopOwnerName(shopOwner.getNickname()); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java index d0e653c0..41a85fb7 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java @@ -7,6 +7,7 @@ import cc.hiver.core.common.vo.Result; import cc.hiver.core.entity.User; import cc.hiver.core.entity.Worker; import cc.hiver.core.service.WorkerService; +import cc.hiver.core.serviceimpl.JPushServiceImpl; import cc.hiver.mall.entity.MallDeliveryOrder; import cc.hiver.mall.pojo.query.MallDeliveryOrderPageQuery; import cc.hiver.mall.service.mybatis.MallDeliveryOrderService; @@ -37,6 +38,9 @@ public class MallDeliveryOrderController { @Autowired private SecurityUtil securityUtil; + @Autowired + JPushServiceImpl jPushService; + @Autowired private WorkerService workerService; /** @@ -190,6 +194,7 @@ public class MallDeliveryOrderController { @RequestParam String workerId) { try { mallDeliveryOrderService.workerPickup(deliveryId, workerId); + //jPushService.sendPushNotification("1507bfd3f6e2c0dbc0a", "您有一笔新的订单"); return ResultUtil.success("取货成功"); } catch (Exception e) { log.error("取货失败: {}", e.getMessage(), e); @@ -213,6 +218,21 @@ public class MallDeliveryOrderController { } } + /** + * 取消配送单 + */ + @PostMapping("/reject") + @ApiOperation("配送员拒绝接指派单") + public Result reject(@RequestParam String deliveryId) { + try { + mallDeliveryOrderService.rejectDelivery(deliveryId); + return ResultUtil.success("已拒绝"); + } catch (Exception e) { + log.error("取消配送失败: {}", e.getMessage(), e); + return ResultUtil.error(e.getMessage()); + } + } + /** * 取消配送单 */ diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java index a9f3ff5d..420a296e 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java @@ -460,12 +460,32 @@ public class ShopController { */ @RequestMapping(value = "/getShopInfoById", method = RequestMethod.POST) @ApiOperation("根据店铺id获取店铺信息") - public Result getShopInfoById(String id) { + public Result getShopInfoById(String id,String regionId) { if (StringUtils.isEmpty(id)) { return ResultUtil.error("店铺id不能为空"); } - final Shop shop = shopService.findById(id); - return ResultUtil.data(shop); + String redisKey = "SHOP_CACHE:" + regionId; + String jsonStr = (String) redisTemplateHelper.hGet(redisKey, id); + + if (jsonStr != null) { + // 4. 将 JSON 字符串反序列化为你的 DTO 对象 + // 假设你的工具类是 JSONUtil,且目标类是 ShopCacheDTO.class + ShopCacheDTO result = JSONUtil.toBean(jsonStr, ShopCacheDTO.class); + String productsRedisKey = "SHOP_PRODUCTS:" + id; + String productsJson = redisTemplateHelper.get(productsRedisKey); + List products = JSONUtil.toList(productsJson, ProductPageVO.class); + result.setProducts(products); + return ResultUtil.data(result); + } else { + final Shop shop = shopService.findById(id); + ShopCacheDTO result = new ShopCacheDTO(); + String productsRedisKey = "SHOP_PRODUCTS:" + id; + String productsJson = redisTemplateHelper.get(productsRedisKey); + List products = JSONUtil.toList(productsJson, ProductPageVO.class); + result.setProducts(products); + result.setShop(shop); + return ResultUtil.data(result); + } } /** diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/MallDeliveryOrderMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/MallDeliveryOrderMapper.java index 71fc0edb..d5cf06be 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/MallDeliveryOrderMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/MallDeliveryOrderMapper.java @@ -35,4 +35,6 @@ public interface MallDeliveryOrderMapper extends BaseMapper { List> countOrdersByStatus(@Param("workerId") String workerId); + MallDeliveryOrder selectByGroupId(@Param("orderId") String orderId); + } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java index 75254d59..447effe0 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java @@ -1,6 +1,7 @@ package cc.hiver.mall.entity; import cc.hiver.core.common.utils.SnowFlakeUtil; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -10,6 +11,7 @@ import lombok.Data; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; +import javax.persistence.Transient; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -75,4 +77,9 @@ public class MallOrder implements Serializable { private Date shopMakeTime; @ApiModelProperty(value = "学校id") private String regionId; + + @ApiModelProperty(value = "面对面配送 退款 参团用户订单id集合") + @Transient + @TableField(exist = false) + private String groupOrderIds; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java index 1f5649fa..d1a2bd2f 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallRefundRecord.java @@ -48,6 +48,9 @@ public class MallRefundRecord implements Serializable { private Date createTime; @ApiModelProperty(value = "退款成功时间") private Date successTime; + @ApiModelProperty(value = "面对面配送 退款 参团用户订单id集合") + private String groupOrderIds; + @ApiModelProperty("售后商品列表") @Transient @TableField(exist = false) @@ -63,6 +66,11 @@ public class MallRefundRecord implements Serializable { @TableField(exist = false) private Integer deliveryType; + @ApiModelProperty("订单类型") + @Transient + @TableField(exist = false) + private Integer orderType; + @ApiModelProperty("店铺id") @Transient @TableField(exist = false) diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java index 485c9767..1e9e7ecf 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java @@ -80,6 +80,9 @@ public class Shop extends HiverBaseEntity { @ApiModelProperty(value = "充值时间") private String chargeTime; + @ApiModelProperty(value = "推送机器id") + private String clientId; + @ApiModelProperty(value = "起始日") private String startTime; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/MallOrderVO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/MallOrderVO.java index 737480d6..fdbf50b8 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/MallOrderVO.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/MallOrderVO.java @@ -29,5 +29,5 @@ public class MallOrderVO extends MallOrder { private String addressDetail; @ApiModelProperty("售后信息") - private MallRefundRecord mallRefundRecord; + private List mallRefundRecord; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/ShopService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/ShopService.java index 97fc363d..b75ec58b 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/ShopService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/ShopService.java @@ -17,6 +17,7 @@ package cc.hiver.mall.service; import cc.hiver.core.base.HiverBaseService; import cc.hiver.mall.entity.Shop; +import cc.hiver.mall.pojo.dto.ShopCacheDTO; import cc.hiver.mall.pojo.dto.ShopRevenue; import cc.hiver.mall.pojo.query.ProductPageQuery; import cc.hiver.mall.pojo.vo.ProductPageVO; @@ -49,6 +50,8 @@ public interface ShopService extends HiverBaseService { */ Shop findByShopName(String shopName); + ShopCacheDTO findShop(String shopId,String regionId); + /** * 更新圈层名称 * diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/MallDeliveryOrderService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/MallDeliveryOrderService.java index 2530686f..32896493 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/MallDeliveryOrderService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/MallDeliveryOrderService.java @@ -48,6 +48,11 @@ public interface MallDeliveryOrderService extends IService { */ void cancelDelivery(String deliveryId); + /** + * 拒绝配送单 + */ + void rejectDelivery(String deliveryId); + /** * 统计抢单大厅未被接单的数量 * @param deliveryType 1:外卖 2:快递 @@ -57,4 +62,6 @@ public interface MallDeliveryOrderService extends IService { List> countOrdersByType(String regionId); List> countOrdersByStatus(String workerId); + + MallDeliveryOrder selectByGroupId(String orderId); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java index 6e94fa76..3354dfab 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java @@ -162,6 +162,20 @@ public class ShopServiceImpl implements ShopService { return shopDao.findByShopName(ShopName); } + @Override + public ShopCacheDTO findShop(String shopId,String regionId) { + String redisKey = "SHOP_CACHE:" + regionId; + String jsonStr = (String) redisTemplateHelper.hGet(redisKey, shopId); + if(jsonStr != null){ + return JSONUtil.toBean(jsonStr, ShopCacheDTO.class); + }else{ + ShopCacheDTO result = new ShopCacheDTO(); + final Shop shop = this.findById(shopId); + result.setShop(shop); + return result; + } + } + @Override public void updateShopAreaTitle(String shopArea, String shopAreaTitle) { shopDao.updateShopAreaTitle(shopArea, shopAreaTitle); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java index f6bd22aa..22f41397 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java @@ -184,13 +184,26 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl 配送中 - if (StringUtils.isNotBlank(delivery.getOrderId())) { - LambdaUpdateWrapper oUw = new LambdaUpdateWrapper<>(); - oUw.eq(MallOrder::getId, delivery.getOrderId()) - .set(MallOrder::getStatus, ORDER_STATUS_DELIVERING); - mallOrderService.update(oUw); + //如果groupID有值 ,需要更新所有子订单状态 + if(delivery.getGroupId() != null){ + LambdaQueryWrapper gq = new LambdaQueryWrapper<>(); + gq.eq(MallOrderGroup::getId, delivery.getGroupId()); + MallOrderGroup group = mallOrderGroupMapper.selectOne(gq); + if(group.getIsFace() == 1){ + List orderIds = Arrays.asList(group.getGroupOrderIds().split(",")); + //批量更新 + LambdaUpdateWrapper oUw = new LambdaUpdateWrapper<>(); + oUw.in(MallOrder::getId, orderIds).set(MallOrder::getStatus, ORDER_STATUS_DELIVERING); + mallOrderService.update(oUw); + } + }else{ + // 同步订单状态 -> 配送中 + if (StringUtils.isNotBlank(delivery.getOrderId())) { + LambdaUpdateWrapper oUw = new LambdaUpdateWrapper<>(); + oUw.eq(MallOrder::getId, delivery.getOrderId()) + .set(MallOrder::getStatus, ORDER_STATUS_DELIVERING); + mallOrderService.update(oUw); + } } } @@ -249,6 +262,14 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl uw = new LambdaUpdateWrapper<>(); + uw.eq(MallDeliveryOrder::getId, deliveryId) + .set(MallDeliveryOrder::getWorkerId, null); + this.update(uw); + } + // ================================================================ // 私有工具 // ================================================================ @@ -374,4 +395,9 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl dq = new LambdaQueryWrapper<>(); - dq.eq(MallDeliveryOrder::getOrderId, orderId).last("LIMIT 1"); - vo.setDeliveryInfo(mallDeliveryOrderMapper.selectOne(dq)); - + if(order.getOrderType() == ORDER_TYPE_FACETOFACE){ + vo.setDeliveryInfo(mallDeliveryOrderMapper.selectByGroupId(orderId)); + }else{ + LambdaQueryWrapper dq = new LambdaQueryWrapper<>(); + dq.eq(MallDeliveryOrder::getOrderId, orderId).last("LIMIT 1"); + vo.setDeliveryInfo(mallDeliveryOrderMapper.selectOne(dq)); + } // 拼团信息(拼团订单才查) if (ORDER_TYPE_GROUP == order.getOrderType() || GROUP_STATUS_FACE2FACE == order.getOrderType()) { // 通过 headOrderId 或 groupUserIds 中包含此 userId 查找拼团 @@ -913,21 +916,22 @@ public class MallOrderServiceImpl extends ServiceImpl rq = new LambdaQueryWrapper<>(); - rq.eq(MallRefundRecord::getOrderId, orderId) - .last("LIMIT 1"); - MallRefundRecord sallRefundRecord = mallRefundRecordMapper.selectOne(rq); + rq.eq(MallRefundRecord::getOrderId, orderId); + List sallRefundRecord = mallRefundRecordMapper.selectList(rq); if(sallRefundRecord != null){ - if(sallRefundRecord.getRefundType() == 1){ - //售后商品详情 - sallRefundRecord.setItems(mallReturnOrderGoodsMapper.selectList(new LambdaQueryWrapper() - .eq(MallReturnOrderGoods::getOrderId, orderId))); + sallRefundRecord.forEach(item -> { + if(item.getRefundType() == 1){ + //售后商品详情 + item.setItems(mallReturnOrderGoodsMapper.selectList(new LambdaQueryWrapper() + .eq(MallReturnOrderGoods::getOrderId, orderId))); - } + } + }); + vo.setMallRefundRecord(sallRefundRecord); } - vo.setMallRefundRecord(sallRefundRecord); } return vo; } @@ -1034,7 +1038,6 @@ public class MallOrderServiceImpl extends ServiceImpl duw = new LambdaUpdateWrapper<>(); + duw.eq(MallDeliveryOrder::getOrderId, mallRefundRecord.getOrderId()) + .set(MallDeliveryOrder::getIsReturn, 0); + mallDeliveryOrderMapper.update(null, duw); + }else{ + MallDeliveryOrder delivery = findDeliveryByOrderId(mallRefundRecord.getOrderId()); + if(delivery.getStatus() == STATUS_WAIT_SHOP){ + updateOrderStatusAndReturn(mallRefundRecord.getOrderId(), STATUS_WAIT_PICKUP); + }else if(delivery.getStatus() == DELIVERY_TYPE_SELF){ + updateOrderStatusAndReturn(mallRefundRecord.getOrderId(), STATUS_DELIVERING); + } + //更新配送单isReturn + LambdaUpdateWrapper duw = new LambdaUpdateWrapper<>(); + duw.eq(MallDeliveryOrder::getOrderId, mallRefundRecord.getOrderId()) + .set(MallDeliveryOrder::getIsReturn, 0); + mallDeliveryOrderMapper.update(null, duw); } - //更新配送单isReturn - LambdaUpdateWrapper duw = new LambdaUpdateWrapper<>(); - duw.eq(MallDeliveryOrder::getOrderId, mallRefundRecord.getOrderId()) - .set(MallDeliveryOrder::getIsReturn, 0); - mallDeliveryOrderMapper.update(null, duw); } } } @@ -203,20 +215,32 @@ public class MallRefundRecordServiceImpl extends ServiceImpl duw = new LambdaUpdateWrapper<>(); + duw.eq(MallDeliveryOrder::getOrderId, mallRefundRecord.getOrderId()) + .set(MallDeliveryOrder::getIsReturn, 0); + mallDeliveryOrderMapper.update(null, duw); + }else{ + MallDeliveryOrder delivery = findDeliveryByOrderId(mallRefundRecord.getOrderId()); + if(delivery.getStatus() == STATUS_WAIT_SHOP){ + updateOrderStatusAndReturn(mallRefundRecord.getOrderId(), STATUS_WAIT_PICKUP); + }else if(delivery.getStatus() == DELIVERY_TYPE_SELF){ + updateOrderStatusAndReturn(mallRefundRecord.getOrderId(), STATUS_DELIVERING); + } + //更新配送单isReturn + LambdaUpdateWrapper duw = new LambdaUpdateWrapper<>(); + duw.eq(MallDeliveryOrder::getOrderId, mallRefundRecord.getOrderId()) + .set(MallDeliveryOrder::getIsReturn, 0); + mallDeliveryOrderMapper.update(null, duw); } - //更新配送单isReturn - LambdaUpdateWrapper duw = new LambdaUpdateWrapper<>(); - duw.eq(MallDeliveryOrder::getOrderId, mallRefundRecord.getOrderId()) - .set(MallDeliveryOrder::getIsReturn, 0); - mallDeliveryOrderMapper.update(null, duw); } }else{ //同意退款 diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/MallDeliveryOrderMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/MallDeliveryOrderMapper.xml index 43622523..b57878aa 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/MallDeliveryOrderMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/MallDeliveryOrderMapper.xml @@ -152,6 +152,22 @@ ORDER BY (CASE WHEN d.must_finish_time IS NULL THEN 1 ELSE 0 END) ASC + +