Explorar o código

Merge branch 'sit' into uat-20260202

dujian hai 1 mes
pai
achega
162fb042ca

+ 1 - 1
alien-dining/src/main/java/shop/alien/dining/controller/StoreOrderController.java

@@ -229,7 +229,7 @@ public class StoreOrderController {
         }
     }
 
-    @ApiOperation(value = "创建订单(下单)", notes = "从购物车创建订单,不立即支付")
+    @ApiOperation(value = "创建订单(下单)", notes = "从购物车创建订单,不立即支付。备注:创建/更新时传入,更新订单(加餐)时为覆盖")
     @PostMapping("/create")
     public R<shop.alien.entity.store.vo.OrderSuccessVO> createOrder(@Valid @RequestBody CreateOrderDTO dto) {
         log.info("StoreOrderController.createOrder?dto={}", dto);

+ 62 - 45
alien-dining/src/main/java/shop/alien/dining/service/impl/StoreOrderServiceImpl.java

@@ -186,7 +186,6 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         StoreOrder order = null;
         String orderNo = null;
         boolean isUpdate = false; // 是否是更新订单
-        boolean isFirstAddDish = false; // 是否是首次加餐(首次订单发生变化)
         
         // 检查桌号是否已绑定订单
         if (table.getCurrentOrderId() != null) {
@@ -199,15 +198,6 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
                 orderNo = order.getOrderNo(); // 使用原订单号
                 log.info("桌号已绑定订单,更新订单信息, orderId={}, orderNo={}", order.getId(), orderNo);
                 
-                // 在更新订单之前,检查订单明细中是否已经有 is_add_dish=1 的记录
-                // 如果没有,说明这是首次加餐(首次订单发生变化)
-                LambdaQueryWrapper<StoreOrderDetail> checkBeforeAddDishWrapper = new LambdaQueryWrapper<>();
-                checkBeforeAddDishWrapper.eq(StoreOrderDetail::getOrderId, order.getId())
-                        .eq(StoreOrderDetail::getDeleteFlag, 0)
-                        .eq(StoreOrderDetail::getIsAddDish, 1);
-                Integer addDishCountBefore = orderDetailMapper.selectCount(checkBeforeAddDishWrapper);
-                isFirstAddDish = (addDishCountBefore == null || addDishCountBefore == 0);
-                
                 // 更新订单信息(完全采用前端传参,不做金额校验)
                 order.setDinerCount(dto.getDinerCount());
                 order.setContactPhone(dto.getContactPhone());
@@ -283,7 +273,6 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         final StoreOrder finalOrder = order;
         final String finalOrderNo = orderNo;
         final boolean finalIsUpdate = isUpdate; // 用于 lambda 表达式
-        final boolean finalIsFirstAddDish = isFirstAddDish; // 用于后续判断
 
         // 更新优惠券使用记录状态为已下单
         if (dto.getCouponId() != null) {
@@ -391,21 +380,31 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         // 记录订单变更日志
         recordOrderChangeLog(finalOrder.getId(), finalOrderNo, cart.getItems(), finalIsUpdate ? 3 : 1, now, userId, userPhone);
 
-        // 更新桌号的当前订单ID和状态
+        // 更新桌号的当前订单ID和状态(显式用 LambdaUpdateWrapper 写入,避免 updateById 忽略更新)
+        // 约定:首次下单 → 餐桌状态=就餐中(1);后续下单(更新订单/加餐) → 餐桌状态=加餐(3)
+        Integer tableId = table.getId();
         if (!finalIsUpdate) {
-            // 新订单:设置订单ID,状态为就餐中(1)
-            table.setCurrentOrderId(finalOrder.getId());
-            table.setStatus(1); // 就餐中
-            storeTableMapper.updateById(table);
-        } else if (finalIsFirstAddDish) {
-            // 更新订单且是首次加餐:更新餐桌状态为加餐状态(3)
-            table.setStatus(3); // 加餐状态
-            table.setUpdatedTime(now);
+            // 首次下单:设置订单ID,餐桌状态为就餐中(1)
+            LambdaUpdateWrapper<StoreTable> newTableWrapper = new LambdaUpdateWrapper<>();
+            newTableWrapper.eq(StoreTable::getId, tableId)
+                    .set(StoreTable::getCurrentOrderId, finalOrder.getId())
+                    .set(StoreTable::getStatus, 1)
+                    .set(StoreTable::getUpdatedTime, now);
+            if (userId != null) {
+                newTableWrapper.set(StoreTable::getUpdatedUserId, userId);
+            }
+            storeTableMapper.update(null, newTableWrapper);
+        } else {
+            // 后续下单(更新订单/加餐):餐桌状态设为加餐(3)
+            LambdaUpdateWrapper<StoreTable> addDishTableWrapper = new LambdaUpdateWrapper<>();
+            addDishTableWrapper.eq(StoreTable::getId, tableId)
+                    .set(StoreTable::getStatus, 3)
+                    .set(StoreTable::getUpdatedTime, now);
             if (userId != null) {
-                table.setUpdatedUserId(userId);
+                addDishTableWrapper.set(StoreTable::getUpdatedUserId, userId);
             }
-            storeTableMapper.updateById(table);
-            log.info("首次加餐(通过更新订单),更新餐桌状态为加餐状态, tableId={}, orderId={}", table.getId(), finalOrder.getId());
+            storeTableMapper.update(null, addDishTableWrapper);
+            log.info("更新订单(加餐),设置餐桌状态为加餐, tableId={}, orderId={}", tableId, finalOrder.getId());
         }
 
         // 锁定购物车商品数量(禁止减少或删除已下单的商品)
@@ -544,20 +543,24 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         // 清除优惠券使用标记
         cartService.clearCouponUsed(order.getTableId());
 
-        // 更新桌号状态(检查购物车是否为空,如果为空则设为空闲并清空就餐人数)
-        StoreTable table = storeTableMapper.selectById(order.getTableId());
+        // 更新桌号状态:显式清空 currentOrderId(updateById 会忽略 null,必须用 LambdaUpdateWrapper)
+        Integer tableId = order.getTableId();
+        StoreTable table = storeTableMapper.selectById(tableId);
         if (table != null) {
-            table.setCurrentOrderId(null);
-            // 检查购物车是否为空,如果为空则设为空闲
-            CartDTO cart = cartService.getCart(order.getTableId());
+            LambdaUpdateWrapper<StoreTable> tableWrapper = new LambdaUpdateWrapper<>();
+            tableWrapper.eq(StoreTable::getId, tableId)
+                    .set(StoreTable::getCurrentOrderId, null)
+                    .set(StoreTable::getUpdatedTime, new Date());
+            CartDTO cart = cartService.getCart(tableId);
             if (cart.getItems() == null || cart.getItems().isEmpty()) {
-                table.setStatus(0); // 空闲
-                table.setDinerCount(null);
+                tableWrapper.set(StoreTable::getStatus, 0).set(StoreTable::getDinerCount, null);
             } else {
-                // 购物车还有商品,保持当前状态或设为就餐中
-                table.setStatus(1); // 就餐中
+                tableWrapper.set(StoreTable::getStatus, 1); // 就餐中
+            }
+            if (userId != null) {
+                tableWrapper.set(StoreTable::getUpdatedUserId, userId);
             }
-            storeTableMapper.updateById(table);
+            storeTableMapper.update(null, tableWrapper);
         }
 
         log.info("订单取消成功, orderId={}", orderId);
@@ -823,13 +826,20 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
 
         this.updateById(order);
 
-        // 更新桌号状态
-        StoreTable table = storeTableMapper.selectById(order.getTableId());
+        // 更新桌号状态:显式清空 currentOrderId(updateById 会忽略 null,必须用 LambdaUpdateWrapper)
+        Integer tableId = order.getTableId();
+        StoreTable table = storeTableMapper.selectById(tableId);
         if (table != null) {
-            table.setCurrentOrderId(null);
-            table.setStatus(0); // 空闲
-            table.setDinerCount(null);
-            storeTableMapper.updateById(table);
+            LambdaUpdateWrapper<StoreTable> tableWrapper = new LambdaUpdateWrapper<>();
+            tableWrapper.eq(StoreTable::getId, tableId)
+                    .set(StoreTable::getCurrentOrderId, null)
+                    .set(StoreTable::getStatus, 0)
+                    .set(StoreTable::getDinerCount, null)
+                    .set(StoreTable::getUpdatedTime, new Date());
+            if (userId != null) {
+                tableWrapper.set(StoreTable::getUpdatedUserId, userId);
+            }
+            storeTableMapper.update(null, tableWrapper);
         }
 
         log.info("订单完成成功, orderId={}", orderId);
@@ -857,13 +867,20 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
 
         this.updateById(order);
 
-        // 更新桌号状态
-        StoreTable table = storeTableMapper.selectById(order.getTableId());
+        // 更新桌号状态:显式清空 currentOrderId(updateById 会忽略 null,必须用 LambdaUpdateWrapper)
+        Integer tableId = order.getTableId();
+        StoreTable table = storeTableMapper.selectById(tableId);
         if (table != null) {
-            table.setCurrentOrderId(null);
-            table.setStatus(0); // 空闲
-            table.setDinerCount(null);
-            storeTableMapper.updateById(table);
+            LambdaUpdateWrapper<StoreTable> tableWrapper = new LambdaUpdateWrapper<>();
+            tableWrapper.eq(StoreTable::getId, tableId)
+                    .set(StoreTable::getCurrentOrderId, null)
+                    .set(StoreTable::getStatus, 0)
+                    .set(StoreTable::getDinerCount, null)
+                    .set(StoreTable::getUpdatedTime, new Date());
+            if (userId != null) {
+                tableWrapper.set(StoreTable::getUpdatedUserId, userId);
+            }
+            storeTableMapper.update(null, tableWrapper);
         }
 
         log.info("商家手动完成订单成功, orderId={}", orderId);

+ 5 - 1
alien-dining/src/main/java/shop/alien/dining/strategy/payment/impl/WeChatPaymentMininProgramStrategyImpl.java

@@ -111,7 +111,11 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
         }
         LambdaQueryWrapper<StorePaymentConfig> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(StorePaymentConfig::getWechatPayPublicKeyId, wechatPayPublicKeyId);
-        return storePaymentConfigMapper.selectList(wrapper).getFirst();
+        List<StorePaymentConfig> storePaymentConfigs = storePaymentConfigMapper.selectList(wrapper);
+        if (storePaymentConfigs.isEmpty()) {
+            return null;
+        }
+        return storePaymentConfigs.get(0);
     }
 
     /**

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreBusinessInfo.java

@@ -68,4 +68,8 @@ public class StoreBusinessInfo {
     @TableField("updated_user_id")
     private Integer updatedUserId;
 
+    @ApiModelProperty(value = "关联essential_holiday_comparison 表id")
+    @TableField("essential_id")
+    private String essentialId;
+
 }

+ 1 - 1
alien-entity/src/main/java/shop/alien/entity/store/dto/CreateOrderDTO.java

@@ -41,7 +41,7 @@ public class CreateOrderDTO {
     @ApiModelProperty(value = "联系电话")
     private String contactPhone;
 
-    @ApiModelProperty(value = "备注(限30字)")
+    @ApiModelProperty(value = "备注(限30字)。创建/更新订单时传入;更新订单(加餐)时为覆盖,不拼接")
     private String remark;
 
     @ApiModelProperty(value = "是否立即支付(0:否,创建订单但不支付; 1:是,创建订单并支付)")

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreBusinessInfoVo.java

@@ -3,6 +3,7 @@ package shop.alien.entity.store.vo;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import shop.alien.entity.store.EssentialHolidayComparison;
 import shop.alien.entity.store.StoreBusinessInfo;
 
 import java.util.List;
@@ -19,4 +20,7 @@ public class StoreBusinessInfoVo extends StoreBusinessInfo {
 
     @ApiModelProperty(value = "营业时间基本信息")
     private List<StoreBusinessInfo> businessInfos;
+
+    @ApiModelProperty(value = "关联的节假日信息")
+    private EssentialHolidayComparison holidayInfo;
 }

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreInfoVo.java

@@ -181,6 +181,9 @@ public class StoreInfoVo extends StoreInfo {
     private StoreBusinessInfo storeBusinessInfo;
     private List<StoreBusinessInfo> storeBusinessInfos;
 
+    @ApiModelProperty(value = "门店营业时间列表(包含节假日信息)")
+    private List<StoreBusinessInfoVo> storeBusinessInfoVos;
+
     @ApiModelProperty(value = "是否营业中(0否1是)")
     private Integer yyFlag;
 

+ 3 - 3
alien-entity/src/main/resources/mapper/LifeUserDynamicsMapper.xml

@@ -114,7 +114,7 @@
         -- 4. GROUP BY 仅保留主键 id(因 dyna.id 是唯一主键,ANY_VALUE() 包裹的列在同一 id 下值唯一)
         GROUP BY dyna.id
         ) dyna1
-        LEFT JOIN life_fans lf1 ON lf1.followed_id = dyna1.phoneId
+        LEFT JOIN life_fans lf1 ON lf1.followed_id = dyna1.phoneId AND lf1.delete_flag = 0
         WHERE 1=1
         <if test="nickName != null and nickName != ''">
             AND dyna1.userName LIKE CONCAT('%', #{nickName}, '%')
@@ -169,7 +169,7 @@
         left join store_comment sc on sc.business_id = dyna.id and sc.business_type = 2 and sc.delete_flag = 0
         left join life_message lm on lm.business_id = dyna.id
         GROUP BY dyna.id order by  dyna.created_time desc) dyna1
-        left join life_fans lf1 on lf1.followed_id =  dyna1.phoneId
+        left join life_fans lf1 on lf1.followed_id = dyna1.phoneId and lf1.delete_flag = 0
         GROUP by dyna1.id order by dyna1.top_status desc, dyna1.top_time desc
     </select>
 
@@ -308,7 +308,7 @@
         order by
         dyna.created_time desc) dyna1
         left join life_fans lf1 on
-        lf1.followed_id = dyna1.phoneId
+        lf1.followed_id = dyna1.phoneId and lf1.delete_flag = 0
         GROUP by
         dyna1.id
         order by

+ 30 - 23
alien-store/src/main/java/shop/alien/store/controller/AiSearchController.java

@@ -23,6 +23,7 @@ import org.springframework.web.client.RestTemplate;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.StoreBannerVo;
+import shop.alien.entity.store.vo.StoreBusinessInfoVo;
 import shop.alien.entity.store.vo.StoreBusinessStatusVo;
 import shop.alien.entity.store.vo.StoreInfoVo;
 import shop.alien.mapper.*;
@@ -389,7 +390,7 @@ public class AiSearchController {
 
     /**
      * 批量填充营业时间到StoreInfoVo列表中
-     * 通过调用storeInfoService.getStoreBusinessStatus方法获取营业时间
+     * 通过调用storeInfoService.getStoreInfoBusinessHours方法获取营业时间(包含节假日信息)
      *
      * @param result StoreInfoVo列表
      */
@@ -398,32 +399,38 @@ public class AiSearchController {
             return;
         }
 
-        // 遍历result集合,为每个门店调用getStoreBusinessStatus方法
+        // 遍历result集合,为每个门店调用getStoreInfoBusinessHours方法
         for (StoreInfoVo storeInfo : result) {
             if (storeInfo.getId() != null) {
                 try {
-                    // 调用getStoreBusinessStatus方法获取营业时间
-                    StoreBusinessStatusVo businessStatus = storeInfoService.getStoreBusinessStatus(String.valueOf(storeInfo.getId()));
-                    if (businessStatus != null) {
-                        // 设置营业时间信息到StoreInfoVo中
-                        if (businessStatus.getStoreBusinessInfos() != null && !businessStatus.getStoreBusinessInfos().isEmpty()) {
-                            storeInfo.setStoreBusinessInfos(businessStatus.getStoreBusinessInfos());
-                            // 同时设置到openTime字段(格式化为字符串列表)
-                            List<String> openTimeList = businessStatus.getStoreBusinessInfos().stream()
-                                    .map(info -> {
-                                        if (info.getBusinessDate() != null && info.getStartTime() != null && info.getEndTime() != null) {
-                                            return info.getBusinessDate() + " " + info.getStartTime() + "-" + info.getEndTime();
-                                        }
-                                        return null;
-                                    })
-                                    .filter(time -> time != null)
-                                    .collect(Collectors.toList());
-                            storeInfo.setOpenTime(openTimeList);
-                        }
-                        // 设置营业状态
-                        if (businessStatus.getYyFlag() != null) {
-                            storeInfo.setYyFlag(businessStatus.getYyFlag());
+                    // 调用getStoreInfoBusinessHours方法获取营业时间(包含节假日信息)
+                    List<StoreBusinessInfoVo> storeBusinessInfoVos = storeInfoService.getStoreInfoBusinessHours(storeInfo.getId());
+                    if (storeBusinessInfoVos != null && !storeBusinessInfoVos.isEmpty()) {
+                        // 设置包含节假日信息的营业时间列表
+                        storeInfo.setStoreBusinessInfoVos(storeBusinessInfoVos);
+                        // 转换为 List<StoreBusinessInfo> 用于兼容原有字段(StoreBusinessInfoVo 继承自 StoreBusinessInfo)
+                        List<StoreBusinessInfo> storeBusinessInfos = new ArrayList<>(storeBusinessInfoVos);
+                        storeInfo.setStoreBusinessInfos(storeBusinessInfos);
+                        // 设置第一个营业时间信息到 storeBusinessInfo 字段
+                        if (!storeBusinessInfos.isEmpty()) {
+                            storeInfo.setStoreBusinessInfo(storeBusinessInfos.get(0));
                         }
+                        // 同时设置到openTime字段(格式化为字符串列表)
+                        List<String> openTimeList = storeBusinessInfoVos.stream()
+                                .map(info -> {
+                                    if (info.getBusinessDate() != null && info.getStartTime() != null && info.getEndTime() != null) {
+                                        return info.getBusinessDate() + " " + info.getStartTime() + "-" + info.getEndTime();
+                                    }
+                                    return null;
+                                })
+                                .filter(time -> time != null)
+                                .collect(Collectors.toList());
+                        storeInfo.setOpenTime(openTimeList);
+                    }
+                    // 获取营业状态(通过getStoreBusinessStatus方法)
+                    StoreBusinessStatusVo businessStatus = storeInfoService.getStoreBusinessStatus(String.valueOf(storeInfo.getId()));
+                    if (businessStatus != null && businessStatus.getYyFlag() != null) {
+                        storeInfo.setYyFlag(businessStatus.getYyFlag());
                     }
                 } catch (Exception e) {
                     log.error("获取门店营业时间失败,storeId: {}", storeInfo.getId(), e);

+ 1 - 1
alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java

@@ -756,7 +756,7 @@ public class StoreInfoController {
     @ApiOperation(value = "门店装修-门店营业时间")
     @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "门店id", dataType = "Long", paramType = "query", required = true)})
     @GetMapping("/getStoreInfoBusinessHours")
-    public R<List<StoreBusinessInfo>> getStoreInfoBusinessHours(Integer id) {
+    public R<List<StoreBusinessInfoVo>> getStoreInfoBusinessHours(Integer id) {
         log.info("StoreInfoController.getStoreInfoBusinessHours?id={}", id);
         return R.data(storeInfoService.getStoreInfoBusinessHours(id));
     }

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/StoreInfoService.java

@@ -39,7 +39,7 @@ public interface StoreInfoService extends IService<StoreInfo> {
     /**
      *
      */
-    List<StoreBusinessInfo>  getStoreInfoBusinessHours(Integer id);
+    List<shop.alien.entity.store.vo.StoreBusinessInfoVo>  getStoreInfoBusinessHours(Integer id);
 
     /**
      * 门店信息-修改后展示

+ 58 - 11
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -180,6 +180,8 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 
     private final LifeUserViolationMapper lifeUserViolationMapper;
 
+    private final EssentialHolidayComparisonMapper essentialHolidayComparisonMapper;
+
     private final StorePaymentConfigService storePaymentConfigService;
 
 
@@ -439,10 +441,40 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
     }
 
     @Override
-    public List<StoreBusinessInfo> getStoreInfoBusinessHours(Integer id) {
-        //营业时间
-        List<StoreBusinessInfo> storeBusinessInfoList = storeBusinessInfoMapper.selectList(new LambdaQueryWrapper<StoreBusinessInfo>().eq(StoreBusinessInfo::getStoreId, id));
-        return storeBusinessInfoList;
+    public List<StoreBusinessInfoVo> getStoreInfoBusinessHours(Integer id) {
+        // 查询营业时间(包含正常时间和特殊时间)
+        List<StoreBusinessInfo> storeBusinessInfoList = storeBusinessInfoMapper.selectList(
+                new LambdaQueryWrapper<StoreBusinessInfo>()
+                        .eq(StoreBusinessInfo::getStoreId, id)
+                        .eq(StoreBusinessInfo::getDeleteFlag, 0)
+                        .orderByAsc(StoreBusinessInfo::getBusinessType) // 先按类型排序:1-正常时间,2-特殊时间
+                        .orderByAsc(StoreBusinessInfo::getBusinessDate) // 再按日期排序
+        );
+        
+        // 转换为 VO 并关联节假日信息
+        List<StoreBusinessInfoVo> resultList = new ArrayList<>();
+        for (StoreBusinessInfo businessInfo : storeBusinessInfoList) {
+            StoreBusinessInfoVo vo = new StoreBusinessInfoVo();
+            // 复制基本信息
+            BeanUtils.copyProperties(businessInfo, vo);
+            
+            // 如果有关联的节假日ID,查询节假日信息
+            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);
+                    }
+                } catch (NumberFormatException e) {
+                    log.warn("门店营业时间关联的节假日ID格式错误,storeId={}, essentialId={}", id, businessInfo.getEssentialId());
+                }
+            }
+            
+            resultList.add(vo);
+        }
+        
+        return resultList;
     }
 
     /**
@@ -1370,6 +1402,21 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
             tagStoreRelationMapper.insert(tagStoreRelation);
         }
 
+        // 保存门店营业时间
+        if (storeInfoDto.getStoreBusinessTime() != null && !storeInfoDto.getStoreBusinessTime().isEmpty()) {
+            List<StoreBusinessInfo> storeBusinessTimeList = storeInfoDto.getStoreBusinessTime();
+            for (StoreBusinessInfo businessInfo : storeBusinessTimeList) {
+                // 设置门店ID
+                businessInfo.setStoreId(storeInfo.getId());
+                // 新增门店时,所有营业时间都是新增,清空ID确保是新增
+                businessInfo.setId(null);
+            }
+            // 批量保存营业时间
+            for (StoreBusinessInfo businessInfo : storeBusinessTimeList) {
+                storeBusinessInfoMapper.insert(businessInfo);
+            }
+            log.info("保存门店营业时间成功,门店ID:{},营业时间数量:{}", storeInfo.getId(), storeBusinessTimeList.size());
+        }
 
         // 发送通知
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -6026,13 +6073,13 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
 //        // 获取店铺动态总数
 //        result.setTotalDynamicsNum(storeDynamicslist.size());
 
-        //营业时间
-        List<StoreBusinessInfo> storeBusinessInfos = storeBusinessInfoMapper.selectList(
-                new LambdaQueryWrapper<StoreBusinessInfo>()
-                        .eq(StoreBusinessInfo::getStoreId, storeId)
-                        .eq(StoreBusinessInfo::getDeleteFlag, 0)
-        );
-        // 回显所有营业时间信息(特殊营业时间和正常营业时间)
+        //营业时间(通过 getStoreInfoBusinessHours 方法获取,包含节假日信息)
+        List<StoreBusinessInfoVo> storeBusinessInfoVos = this.getStoreInfoBusinessHours(Integer.parseInt(storeId));
+        // 设置包含节假日信息的营业时间列表
+        result.setStoreBusinessInfoVos(storeBusinessInfoVos);
+        // 转换为 List<StoreBusinessInfo> 用于后续判断(StoreBusinessInfoVo 继承自 StoreBusinessInfo)
+        List<StoreBusinessInfo> storeBusinessInfos = new ArrayList<>(storeBusinessInfoVos);
+        // 回显所有营业时间信息(特殊营业时间和正常营业时间,包含节假日信息
         if (ObjectUtils.isNotEmpty(storeBusinessInfos)) {
             result.setStoreBusinessInfo(storeBusinessInfos.get(0));
             result.setStoreBusinessInfos(storeBusinessInfos);

+ 14 - 14
alien-store/src/main/java/shop/alien/store/util/FileUploadUtil.java

@@ -153,20 +153,20 @@ public class FileUploadUtil {
                     String cacheVideoPath = copyFile(uploadDir, multipartFile);
                     filePathList.add(aliOSSUtil.uploadFile(multipartFile, prefix + videoFileName + "." + fileNameAndType.get("type")));
                     //缓存视频截图使用
-                    File videoFile = new File(cacheVideoPath);
-                    //获取视频某帧截图
-                    log.info("FileUpload.uploadMoreFile 视频文件复制完毕, 获取第一秒图片 {}", videoFile.getName());
-                    String videoPath = videoUtils.getImg(uploadDir + videoFile.getName());
-                    log.info("FileUpload.uploadMoreFile 视频文件复制完毕, 图片位置 {}", videoPath);
-                    if (!videoPath.isEmpty()) {
-                        File videoImgFile = new File(videoPath);
-                        Map<String, String> videoImg = FileUtil.getFileNameAndType(videoImgFile);
-                        filePathList.add(aliOSSUtil.uploadFile(videoImgFile, prefix + videoFileName + "." + videoImg.get("type")));
-                        videoImgFile.delete();
-                        videoFile.delete();
-                    } else {
-                        throw new RuntimeException("视频截图失败");
-                    }
+//                    File videoFile = new File(cacheVideoPath);
+//                    //获取视频某帧截图
+//                    log.info("FileUpload.uploadMoreFile 视频文件复制完毕, 获取第一秒图片 {}", videoFile.getName());
+//                    String videoPath = videoUtils.getImg(uploadDir + videoFile.getName());
+//                    log.info("FileUpload.uploadMoreFile 视频文件复制完毕, 图片位置 {}", videoPath);
+//                    if (!videoPath.isEmpty()) {
+//                        File videoImgFile = new File(videoPath);
+//                        Map<String, String> videoImg = FileUtil.getFileNameAndType(videoImgFile);
+//                        filePathList.add(aliOSSUtil.uploadFile(videoImgFile, prefix + videoFileName + "." + videoImg.get("type")));
+//                        videoImgFile.delete();
+//                        videoFile.delete();
+//                    } else {
+//                        throw new RuntimeException("视频截图失败");
+//                    }
                 } else if (voiceFileType.contains(fileNameAndType.get("type").toLowerCase())) {
                     uploadDir += "/voice";
                     prefix = "voice/";