diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/ShopNumberSeqService.java b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/ShopNumberSeqService.java index 662505bb..cb5bd39a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/ShopNumberSeqService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/ShopNumberSeqService.java @@ -2,6 +2,7 @@ package com.suisung.mall.shop.number.service; import com.suisung.mall.common.modules.number.ShopNumberSeq; import com.suisung.mall.core.web.service.IBaseService; +import org.springframework.data.util.Pair; import java.util.List; @@ -17,6 +18,14 @@ public interface ShopNumberSeqService extends IBaseService { String createNextSeq(String prefix); + /** + * 创建下一个编号(键值对) + * + * @param prefix 前缀 + * @return 序号和完整编号 + */ + Pair createNextSeqPair(String prefix); + Long createNextNo(String prefix); List batchCreateNextNo(String seqName, int batchSize); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java index 20b9bb23..a2ead0e8 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java @@ -27,6 +27,7 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -125,6 +126,44 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl createNextSeqPair(String prefix) { + String ymd = DateUtil.format(new Date(), "yyyyMMdd"); + String id = String.format("%s_%s_", prefix, ymd); + ShopNumberSeq shopNumberSeq = this.baseMapper.selectById(id); + if (shopNumberSeq == null) { + shopNumberSeq = new ShopNumberSeq(); + shopNumberSeq.setPrefix(id); + shopNumberSeq.setNumber(1L); + if (!save(shopNumberSeq)) { + return null; + } + } + + String order_id = String.format("%s_%s_%s", prefix, ymd, shopNumberSeq.getNumber()); + shopNumberSeq.setPrefix(id); + boolean flag = edit(shopNumberSeq); + if (flag) { + return Pair.of(shopNumberSeq.getNumber(), order_id); + } + + return null; + } + /** * 得到下一个Id * @@ -280,12 +319,12 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl getBatchSpecItemId(int batchSize) { + public List getBatchSpecItemId(int batchSize) { // 定义锁的key,这个key在所有服务实例中必须一致 String lockKey = "LOCK:" + RedisKey.STOREDATASPECITEMID; // 2. 获取分布式锁对象 @@ -330,12 +369,12 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl getBatchLibraryProductId(int batchSize) { + public List getBatchLibraryProductId(int batchSize) { // 定义锁的key,这个key在所有服务实例中必须一致 String lockKey = "LOCK:" + RedisKey.STOREDATALIBRARYID; // 2. 获取分布式锁对象 @@ -434,7 +473,7 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.select("max(page_id) as page_id"); ShopPageBase shopPageBase = shopPageBaseService.getOne(queryWrapper); @@ -493,41 +532,41 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl shopNumberSeqList=new ArrayList<>(); - QueryWrapper baseWrapper=new QueryWrapper<>(); + private void syncPrimaryKey() { + List shopNumberSeqList = new ArrayList<>(); + QueryWrapper baseWrapper = new QueryWrapper<>(); baseWrapper.select("MAX(product_id) as product_id"); - ShopProductBase shopProductBase= shopProductBaseService.getOne(baseWrapper); - Long productId= shopProductBase.getProduct_id(); + ShopProductBase shopProductBase = shopProductBaseService.getOne(baseWrapper); + Long productId = shopProductBase.getProduct_id(); //QueryWrapper baseSeWrapper=new QueryWrapper(); //baseSeWrapper.eq("prefix", "product_id"); - ShopNumberSeq shopNumberSeqBase= new ShopNumberSeq(); + ShopNumberSeq shopNumberSeqBase = new ShopNumberSeq(); shopNumberSeqBase.setPrefix("product_id"); shopNumberSeqBase.setNumber(productId); //shopNumberSeqServiceImpl.edit(shopNumberSeqBase,baseWrapper); //查询产品item - QueryWrapper itemQuery=new QueryWrapper<>(); + QueryWrapper itemQuery = new QueryWrapper<>(); itemQuery.select("MAX(item_id) as item_id"); - ShopProductItem shopProductItem= shopProductItemService.getOne(itemQuery); - Long itemtId=1L; - if(null!=shopProductItem){ - itemtId= shopProductItem.getItem_id(); + ShopProductItem shopProductItem = shopProductItemService.getOne(itemQuery); + Long itemtId = 1L; + if (null != shopProductItem) { + itemtId = shopProductItem.getItem_id(); } // QueryWrapper itemWrapper=new QueryWrapper(); //itemWrapper.eq("prefix", "item_id"); - ShopNumberSeq shopNumberSeqItem= new ShopNumberSeq(); + ShopNumberSeq shopNumberSeqItem = new ShopNumberSeq(); shopNumberSeqItem.setNumber(itemtId); shopNumberSeqItem.setPrefix("item_id"); shopNumberSeqList.add(shopNumberSeqBase); @@ -537,5 +576,4 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl seqPair = shopNumberSeqService.createNextSeqPair(type_code);// 位数的序号: DD_20251205_1 2025-12-05 1 + String order_id = seqPair.getSecond(); + Long seqNo = seqPair.getFirst(); // 序号: DD_20251205_1 得出 1 RootContext.bind(xid); List item_rows = new ArrayList(); @@ -6666,6 +6668,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); // 已发货,已签收 queryWrapper.in("order_state_id", StateCode.ORDER_STATE_SHIPPED, StateCode.ORDER_STATE_RECEIVED); - queryWrapper.eq("order_is_received",CommonConstant.Disable); + queryWrapper.eq("order_is_received", CommonConstant.Disable); // 默认7天,自动收货 // 配置了发货或已签收的订单,1天自动收货 Float order_autofinish_time = accountBaseConfigService.getConfig("order_autofinish_time", 7f); @@ -372,8 +372,8 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl