Răsfoiți Sursa

商家PC端 门店营业时间显示

qinxuyang 1 lună în urmă
părinte
comite
601df14801

+ 3 - 2
alien-store-platform/src/main/java/shop/alien/storeplatform/controller/StorePlatformBusinessInfoController.java

@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.StoreBusinessInfo;
+import shop.alien.entity.store.vo.StoreBusinessInfoVo;
 import shop.alien.mapper.StoreBusinessInfoMapper;
 import shop.alien.storeplatform.service.StorePlatformBusinessInfoService;
 
@@ -35,13 +36,13 @@ public class StorePlatformBusinessInfoController {
 
     private final StoreBusinessInfoMapper storeBusinessInfoMapper;
 
-    @ApiOperation("获取门店营业信息")
+    @ApiOperation("获取门店营业信息(包含正常营业时间和特殊营业时间,特殊营业时间关联节假日信息)")
     @ApiOperationSupport(order = 1)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "storeId", value = "门店id", dataType = "Long", paramType = "query", required = true)
     })
     @GetMapping("/getByStoreId")
-    public R<List<StoreBusinessInfo>> getByStoreId(Long storeId) {
+    public R<List<StoreBusinessInfoVo>> getByStoreId(Long storeId) {
         log.info("StorePlatformBusinessInfoController.getByStoreId?storeId={}", storeId);
         return R.data(storeBusinessInfoService.getStoreBusinessInfo(storeId));
     }

+ 3 - 2
alien-store-platform/src/main/java/shop/alien/storeplatform/service/StorePlatformBusinessInfoService.java

@@ -2,6 +2,7 @@ package shop.alien.storeplatform.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.StoreBusinessInfo;
+import shop.alien.entity.store.vo.StoreBusinessInfoVo;
 
 import java.util.List;
 
@@ -14,11 +15,11 @@ import java.util.List;
 public interface StorePlatformBusinessInfoService extends IService<StoreBusinessInfo> {
 
     /**
-     * 获取门店营业信息
+     * 获取门店营业信息(包含正常营业时间和特殊营业时间,特殊营业时间关联节假日信息)
      *
      * @param storeId 门店信息
      * @return list
      */
-    List<StoreBusinessInfo> getStoreBusinessInfo(Long storeId);
+    List<StoreBusinessInfoVo> getStoreBusinessInfo(Long storeId);
 
 }

+ 51 - 7
alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/StorePlatformBusinessInfoServiceImpl.java

@@ -2,12 +2,19 @@ package shop.alien.storeplatform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import shop.alien.entity.store.EssentialHolidayComparison;
 import shop.alien.entity.store.StoreBusinessInfo;
+import shop.alien.entity.store.vo.StoreBusinessInfoVo;
+import shop.alien.mapper.EssentialHolidayComparisonMapper;
 import shop.alien.mapper.StoreBusinessInfoMapper;
 import shop.alien.storeplatform.service.StorePlatformBusinessInfoService;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -16,23 +23,60 @@ import java.util.List;
  * @author ssk
  * @since 2024-12-05
  */
+@Slf4j
 @Transactional
 @Service
+@RequiredArgsConstructor
 public class StorePlatformBusinessInfoServiceImpl extends ServiceImpl<StoreBusinessInfoMapper, StoreBusinessInfo> implements StorePlatformBusinessInfoService {
 
+    private final EssentialHolidayComparisonMapper essentialHolidayComparisonMapper;
+
     /**
-     * 获取门店营业信息
+     * 获取门店营业信息(包含正常营业时间和特殊营业时间,特殊营业时间关联节假日信息)
      *
      * @param storeId 门店信息
      * @return list
      */
     @Override
-    public List<StoreBusinessInfo> getStoreBusinessInfo(Long storeId) {
-        LambdaQueryWrapper<StoreBusinessInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper
-                .eq(StoreBusinessInfo::getStoreId, storeId)
-                .orderByDesc(StoreBusinessInfo::getCreatedTime);
-        return this.list(lambdaQueryWrapper);
+    public List<StoreBusinessInfoVo> getStoreBusinessInfo(Long storeId) {
+        // 查询营业时间(包含正常时间和特殊时间)
+        List<StoreBusinessInfo> storeBusinessInfoList = this.list(
+                new LambdaQueryWrapper<StoreBusinessInfo>()
+                        .eq(StoreBusinessInfo::getStoreId, storeId)
+                        .eq(StoreBusinessInfo::getDeleteFlag, 0)
+                        .orderByAsc(StoreBusinessInfo::getBusinessType) // 先按类型排序:1-正常时间,2-特殊时间
+                        .orderByAsc(StoreBusinessInfo::getBusinessDate) // 再按日期排序
+        );
+
+        // 转换为 VO 并关联节假日信息
+        // store_business_info 的 essential_id 关联 essential_holiday_comparison 的 id
+        List<StoreBusinessInfoVo> resultList = new ArrayList<>();
+        for (StoreBusinessInfo businessInfo : storeBusinessInfoList) {
+            StoreBusinessInfoVo vo = new StoreBusinessInfoVo();
+            // 复制基本信息
+            BeanUtils.copyProperties(businessInfo, vo);
+
+            // 如果有关联的节假日ID(essential_id),查询 essential_holiday_comparison 表的节假日信息
+            if (businessInfo.getEssentialId() != null && !businessInfo.getEssentialId().trim().isEmpty()) {
+                try {
+                    Integer essentialId = Integer.parseInt(businessInfo.getEssentialId().trim());
+                    EssentialHolidayComparison holiday = essentialHolidayComparisonMapper.selectById(essentialId);
+                    if (holiday != null) {
+                        vo.setHolidayInfo(holiday);
+                    } else {
+                        log.warn("门店营业时间关联的节假日信息不存在,storeId={}, essentialId={}", storeId, essentialId);
+                    }
+                } catch (NumberFormatException e) {
+                    log.warn("门店营业时间关联的节假日ID格式错误,storeId={}, essentialId={}", storeId, businessInfo.getEssentialId());
+                } catch (Exception e) {
+                    log.error("查询节假日信息失败,storeId={}, essentialId={}", storeId, businessInfo.getEssentialId(), e);
+                }
+            }
+
+            resultList.add(vo);
+        }
+
+        return resultList;
     }
 
 }