From af9cce0db15dcd3d51abc31722585057b079170b Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Tue, 11 Nov 2025 21:05:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/common/constant/CommonConstant.java | 8 +- .../common/modules/store/ShopStoreBase.java | 2 +- .../impl/ShopActivityCutpriceServiceImpl.java | 2 +- .../impl/ShopBaseConfigServiceImpl.java | 38 ++-- .../service/impl/LakalaApiServiceImpl.java | 13 +- .../impl/ShopOrderBaseServiceImpl.java | 6 +- .../impl/ShopOrderInfoServiceImpl.java | 36 +++- .../impl/ShopProductBaseServiceImpl.java | 168 +++++++++--------- .../impl/ShopProductItemServiceImpl.java | 4 +- .../impl/ShopStoreBaseServiceImpl.java | 39 ++-- .../service/impl/ShopUserCartServiceImpl.java | 11 +- 11 files changed, 192 insertions(+), 135 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java index 58e7f635..c111bb39 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java +++ b/mall-common/src/main/java/com/suisung/mall/common/constant/CommonConstant.java @@ -129,10 +129,12 @@ public class CommonConstant { public final static Integer MIN_DELAY_MINUTES_FOR_BOOKING_ORDER = 50; - // 店铺营业状态:1-营业中;2-已打烊;3-开业(活动)筹备中; - //1-营业中; + // 店铺营业状态:1-开业营业中(且在营业时间内);12-开业打烊中(但在营业时间外);2-停业中;3-开业(或活动)筹备中; + // 1-开业营业中(且在营业时间内) public final static Integer Store_Biz_State_Opening = 1; - //2-已打烊; + // 12-开业打烊中(但在营业时间外) ; + public final static Integer Store_Biz_State_Opening2 = 12; + //2-停业中; public final static Integer Store_Biz_State_Closed = 2; //3-开业(活动)筹备中; public final static Integer Store_Biz_State_PreActivity = 3; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreBase.java b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreBase.java index 43d0142c..b6b4d9ba 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreBase.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/store/ShopStoreBase.java @@ -80,7 +80,7 @@ public class ShopStoreBase implements Serializable { @ApiModelProperty(value = "店铃声开关:1-开启;2-关闭;") private Integer ringtone_is_enable; - @ApiModelProperty(value = "店铺营业状态:1-营业中;2-已打烊;3-开业(活动)筹备中;") + @ApiModelProperty(value = "店铺营业状态:1-开业营业中(且在营业时间内);12-开业打烊中(但在营业时间外);2-停业中;3-开业(或活动)筹备中;") private Integer store_biz_state; @ApiModelProperty(value = "开业(活动)筹备日期 yyyy-MM-dd") diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/activity/service/impl/ShopActivityCutpriceServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/activity/service/impl/ShopActivityCutpriceServiceImpl.java index 91a2ad45..5a24d642 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/activity/service/impl/ShopActivityCutpriceServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/activity/service/impl/ShopActivityCutpriceServiceImpl.java @@ -744,7 +744,7 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl 状态4(砍价过期失效) updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("state", CommonConstant.CutPrice_Order_State_ING) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseConfigServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseConfigServiceImpl.java index a1b0a688..0b5a7131 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseConfigServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseConfigServiceImpl.java @@ -169,32 +169,44 @@ public class ShopBaseConfigServiceImpl extends BaseServiceImpl 0) { + if (CheckUtil.isNotEmpty(refCanSeparateAmt)) { lklSeparateDTO.setRefCanSeparateAmount(refCanSeparateAmt); - log.debug("[分账参数计算] 设置参考可分账金额: {}", refCanSeparateAmt); + log.debug("[分账参数计算] 拉卡拉的参考可分账金额: {}", refCanSeparateAmt); + } else { + log.error("[分账参数计算] 注意:拉卡拉的参考可分账金额无效:{}", refCanSeparateAmt); } try { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java index 5819ad5b..2fdabee4 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java @@ -5323,7 +5323,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl 0 ? quantity_frozen : 0); @@ -6325,9 +6325,9 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl storeBizState = shopStoreBaseService.getStoreBizState(currStoreId); - if (storeBizState != null && CommonConstant.Disable2.equals(storeBizState.getFirst())) { + if (storeBizState != null && CommonConstant.Store_Biz_State_Closed.equals(storeBizState.getFirst())) { throw new ApiException(I18nUtil._(storeBizState.getSecond() + ",无法提交订单。")); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java index 8e1e757f..46dc2bb2 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java @@ -26,6 +26,7 @@ import com.suisung.mall.common.modules.order.ShopOrderStateLog; import com.suisung.mall.common.modules.pay.PayPlantformResource; import com.suisung.mall.common.modules.plantform.ShopPlantformFeedback; import com.suisung.mall.common.modules.product.ShopProductComment; +import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.store.ShopStoreInfo; import com.suisung.mall.common.pojo.dto.BookingArgDTO; import com.suisung.mall.common.pojo.res.ThirdApiRes; @@ -59,6 +60,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; @@ -967,16 +969,24 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl storeBaseQueryWrapper = new QueryWrapper<>(); + storeBaseQueryWrapper.select("store_id") + .eq("store_is_open", CommonConstant.Enable) + .ne("store_biz_state", CommonConstant.Store_Biz_State_Closed) + .in("store_id", uniqueStoreIds); + List validStoreIds = shopStoreBaseService.findKey(storeBaseQueryWrapper); + + if (validStoreIds.isEmpty()) { + return Collections.emptyList(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("store_opening_hours", "store_close_hours"); // 只查询必要字段 - queryWrapper.in("store_id", storeIds); + queryWrapper.in("store_id", validStoreIds); + List shopStoreInfos = shopStoreInfoService.find(queryWrapper); // 4. 转换为营业时间映射列表 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java index 63ad5d0d..54540f52 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java @@ -478,13 +478,13 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl store_biz_state = shopStoreBaseService.getStoreBizState(Convert.toInt(product_base_row.get("store_id"))); +// product_base_row.put("store_biz_state", store_biz_state.getFirst()); +// } + //虚拟销量 // todo 是否为商家后台访问 if (null == user || !(user.isAdmin())) { @@ -5377,7 +5383,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl newIds=new ArrayList<>(); - synchronized (this){ + List newIds = new ArrayList<>(); + synchronized (this) { newIds = shopNumberSeqService.batchCreateNextNo("product_id", newProducts.size()); } if (newIds == null || newIds.size() != newProducts.size()) { @@ -5936,8 +5942,8 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl newShopProductInfoList) { List itemIds = new ArrayList<>(); if (CollUtil.isEmpty(items)) return itemIds; - List generatedIds =new ArrayList<>(); - synchronized (this){ + List generatedIds = new ArrayList<>(); + synchronized (this) { generatedIds = shopNumberSeqService.batchCreateNextNo("item_id", items.size()); } // Map cacheMap=new HashMap<>(); @@ -6460,99 +6466,99 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl findPageMapping(Integer store_id, Integer pageNum, Integer pageSize) { - return shopProductBaseMapper.findPageMapping(store_id,(pageNum-1)*pageSize,pageSize); + return shopProductBaseMapper.findPageMapping(store_id, (pageNum - 1) * pageSize, pageSize); } @Override public Map getProductByProductNumber(String productNumber) { - UserDto userDto= ContextUtil.getCurrentUser(); - String store_id=userDto.getStore_id(); + UserDto userDto = ContextUtil.getCurrentUser(); + String store_id = userDto.getStore_id(); Map data = new HashMap(); QueryWrapper cond_row = new QueryWrapper<>(); if (StrUtil.isNotBlank(productNumber)) { cond_row.eq("product_number", productNumber); } - cond_row.eq("store_id",store_id); + cond_row.eq("store_id", store_id); List lists = shopProductIndexService.list(cond_row); - if(lists.isEmpty()){ + if (lists.isEmpty()) { return null; } - ShopProductIndex shopProductIndexFind=lists.get(0); + ShopProductIndex shopProductIndexFind = lists.get(0); // todo lc - // data.put("productBase",shopProductIndexFind); + // data.put("productBase",shopProductIndexFind); //判断是否为商家,且开启供应商,判断是否已经加入分销中 - Long productId= shopProductIndexFind.getProduct_id(); - List product_ids= Collections.singletonList(Math.toIntExact(productId)); - data.put("baseInfo", getProduct(product_ids)); - List baseInfo = (List) data.get("baseInfo"); + Long productId = shopProductIndexFind.getProduct_id(); + List product_ids = Collections.singletonList(Math.toIntExact(productId)); + data.put("baseInfo", getProduct(product_ids)); + List baseInfo = (List) data.get("baseInfo"); - baseInfo.forEach(s -> { - String str_product_spec = (String) s.get("product_spec"); - if (StrUtil.isNotBlank(str_product_spec) && StrUtil.equals(str_product_spec, "[]")) { - s.put("product_spec", JSONUtil.parseArray(str_product_spec)); - } - - String str_product_assist = (String) s.get("product_assist"); - if (StrUtil.isNotBlank(str_product_assist) && StrUtil.equals(str_product_assist, "{}")) { - s.put("product_assist", JSONUtil.parseObj(str_product_assist)); - } - }); - - QueryWrapper itemQueryWrapper = new QueryWrapper<>(); - itemQueryWrapper.eq("product_id", productId); - List productItems = shopProductItemService.find(itemQueryWrapper); - - if (CollectionUtil.isNotEmpty(productItems)) { - for (Map item : baseInfo) { - List shopProductItems = productItems.stream().filter(s -> ObjectUtil.equal(s.getProduct_id(), productId)).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(shopProductItems)) { - BigDecimal product_advice_price = shopProductItems.stream().map(ShopProductItem::getItem_advice_price).min(BigDecimal::compareTo).get(); - item.put("product_advice_price", product_advice_price); - } - } + baseInfo.forEach(s -> { + String str_product_spec = (String) s.get("product_spec"); + if (StrUtil.isNotBlank(str_product_spec) && StrUtil.equals(str_product_spec, "[]")) { + s.put("product_spec", JSONUtil.parseArray(str_product_spec)); } - List productItemS = productItems.stream().filter(distinctByKey(o -> o.getProduct_id())).collect(Collectors.toList()); - data.put("items",productItemS);//商品规格列表 - // shop_product_info - ShopProductInfo shopProductInfo = shopProductInfoService.get(productId); - // shop_product_detail - ShopProductDetail shopProductDetail = shopProductDetailService.get(productId); - // shop_product_index - ShopProductIndex shopProductIndex = shopProductIndexService.get(productId); - // shop_product_image - QueryWrapper imageQueryWrapper = new QueryWrapper<>(); - imageQueryWrapper.eq("product_id", productId); - List shopProductImages = shopProductImageService.find(imageQueryWrapper); - // shop_product_assist_index - QueryWrapper indexQueryWrapper = new QueryWrapper<>(); - indexQueryWrapper.eq("product_id", productId); - List assistIndexList = assistIndexService.find(indexQueryWrapper); - - HashMap map = new HashMap<>(); - if(com.suisung.mall.common.utils.StringUtils.isEmpty(shopProductInfo.getProduct_spec())){ - shopProductInfo.setProduct_spec("[]"); + String str_product_assist = (String) s.get("product_assist"); + if (StrUtil.isNotBlank(str_product_assist) && StrUtil.equals(str_product_assist, "{}")) { + s.put("product_assist", JSONUtil.parseObj(str_product_assist)); } - map.put("shop_product_info", shopProductInfo); - map.put("shop_product_image", shopProductImages); - map.put("shop_product_detail", shopProductDetail); - map.put("shop_product_index", shopProductIndex); - map.put("shop_product_assist_index", assistIndexList); + }); - // 虚拟商品信息表 - Integer kind_id = shopProductIndex.getKind_id(); - if (ObjectUtil.equal(kind_id, StateCode.PRODUCT_KIND_FUWU)) { - ShopProductValidPeriod validPeriod = shopProductValidPeriodService.get(productId); - map.put("shop_product_valid_period", validPeriod); + QueryWrapper itemQueryWrapper = new QueryWrapper<>(); + itemQueryWrapper.eq("product_id", productId); + List productItems = shopProductItemService.find(itemQueryWrapper); + + if (CollectionUtil.isNotEmpty(productItems)) { + for (Map item : baseInfo) { + List shopProductItems = productItems.stream().filter(s -> ObjectUtil.equal(s.getProduct_id(), productId)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopProductItems)) { + BigDecimal product_advice_price = shopProductItems.stream().map(ShopProductItem::getItem_advice_price).min(BigDecimal::compareTo).get(); + item.put("product_advice_price", product_advice_price); + } } - data.put("productInfo",map); - Integer category_id=productItems.get(0).getCategory_id(); - ShopBaseProductCategory shopBaseProductCategory= shopBaseProductCategoryService.get(category_id); - data.put("category",shopBaseProductCategory); - Integer typeId=shopBaseProductCategory.getType_id(); - data.put("shopBaseProductType",shopBaseProductTypeService.getType(String.valueOf(typeId), productId)) ; + } + + List productItemS = productItems.stream().filter(distinctByKey(o -> o.getProduct_id())).collect(Collectors.toList()); + data.put("items", productItemS);//商品规格列表 + // shop_product_info + ShopProductInfo shopProductInfo = shopProductInfoService.get(productId); + // shop_product_detail + ShopProductDetail shopProductDetail = shopProductDetailService.get(productId); + // shop_product_index + ShopProductIndex shopProductIndex = shopProductIndexService.get(productId); + // shop_product_image + QueryWrapper imageQueryWrapper = new QueryWrapper<>(); + imageQueryWrapper.eq("product_id", productId); + List shopProductImages = shopProductImageService.find(imageQueryWrapper); + // shop_product_assist_index + QueryWrapper indexQueryWrapper = new QueryWrapper<>(); + indexQueryWrapper.eq("product_id", productId); + List assistIndexList = assistIndexService.find(indexQueryWrapper); + + HashMap map = new HashMap<>(); + if (com.suisung.mall.common.utils.StringUtils.isEmpty(shopProductInfo.getProduct_spec())) { + shopProductInfo.setProduct_spec("[]"); + } + map.put("shop_product_info", shopProductInfo); + map.put("shop_product_image", shopProductImages); + map.put("shop_product_detail", shopProductDetail); + map.put("shop_product_index", shopProductIndex); + map.put("shop_product_assist_index", assistIndexList); + + // 虚拟商品信息表 + Integer kind_id = shopProductIndex.getKind_id(); + if (ObjectUtil.equal(kind_id, StateCode.PRODUCT_KIND_FUWU)) { + ShopProductValidPeriod validPeriod = shopProductValidPeriodService.get(productId); + map.put("shop_product_valid_period", validPeriod); + } + data.put("productInfo", map); + Integer category_id = productItems.get(0).getCategory_id(); + ShopBaseProductCategory shopBaseProductCategory = shopBaseProductCategoryService.get(category_id); + data.put("category", shopBaseProductCategory); + Integer typeId = shopBaseProductCategory.getType_id(); + data.put("shopBaseProductType", shopBaseProductTypeService.getType(String.valueOf(typeId), productId)); return data; } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java index 4a3c07ff..79ce3eff 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java @@ -487,7 +487,7 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl q.eq("store_id", store_id).eq("item_number", productNumber)); }); queryWrapper.eq("store_id", store_id); - queryWrapper.groupBy("product_id","category_id"); + queryWrapper.groupBy("product_id", "category_id"); List shopProductItems = this.list(queryWrapper); // Map map=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,shopProductItem->shopProductItem.getMergedItemId() // +"_"+shopProductItem.getMergedUnitPrices())); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java index 32a77669..c0807867 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java @@ -312,8 +312,12 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl retPair = getStoreBizState(Convert.toInt(row.get("store_id"))); + row.put("store_biz_state", retPair.getFirst()); + + } String default_image = accountBaseConfigService.getConfig("default_image"); if (CollUtil.isNotEmpty(rows)) { @@ -1504,7 +1508,7 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl= 1) { base.setStore_biz_state(storeBizState); @@ -2542,7 +2546,7 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl= 1) { base.setStore_biz_state(storeBizState); @@ -4213,14 +4217,14 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl getStoreBizState(Integer storeId) { @@ -4283,18 +4291,18 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl storeBizState = shopStoreBaseService.getStoreBizState(storeId); -// if (storeBizState != null && CommonConstant.Disable2.equals(storeBizState.getFirst())) { -// throw new ApiException(I18nUtil._(storeBizState.getSecond() + ",无法加购商品。")); -// } + // 判断店铺是否歇业(停业)?歇业不能放入购物车 + Pair storeBizState = shopStoreBaseService.getStoreBizState(storeId); + if (storeBizState != null && CommonConstant.Store_Biz_State_Closed.equals(storeBizState.getFirst())) { + throw new ApiException(I18nUtil._(storeBizState.getSecond() + ",无法加购商品。")); + } Integer cart_type = Convert.toInt(data.get("cart_type")); // 判断是新增还是更新