|
|
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
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 shop.alien.entity.result.R;
|
|
|
@@ -25,6 +26,7 @@ import shop.alien.store.service.StoreMenuService;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -33,6 +35,7 @@ import java.util.stream.Collectors;
|
|
|
* @author ssk
|
|
|
* @since 2024-12-05
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
|
public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu> implements StoreMenuService {
|
|
|
@@ -48,33 +51,52 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
|
|
|
/**
|
|
|
* 获取门店菜单
|
|
|
*
|
|
|
- * @param storeId 门店id
|
|
|
- * @param dishType 菜品类型, 0:菜单, 1:推荐
|
|
|
- * @param phoneId 消息标识
|
|
|
+ * @param storeId 门店id
|
|
|
+ * @param dishType 菜品类型, 0:非推荐, 1:推荐
|
|
|
+ * @param phoneId 消息标识
|
|
|
+ * @param dishMenuType 菜单类型:1-菜单,2-酒水
|
|
|
* @return list
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<StoreMenuVo> getStoreMenu(Integer storeId, Integer dishType, String phoneId) {
|
|
|
+ public List<StoreMenuVo> getStoreMenu(Integer storeId, Integer dishType, String phoneId, Integer dishMenuType) {
|
|
|
+ // 查询菜单列表
|
|
|
+ Integer queryDishType = (dishType != null && dishType == 0) ? null : dishType;
|
|
|
+ List<StoreMenuVo> menuList = storeMenuMapper.getStoreMenuList(storeId, queryDishType, dishMenuType);
|
|
|
|
|
|
- if (dishType == 0) {
|
|
|
- List<StoreMenuVo> collect = storeMenuMapper.getStoreMenuList(storeId, null);
|
|
|
- return collect.stream().sorted(Comparator.comparing(StoreMenuVo::getSort)).collect(Collectors.toList());
|
|
|
- } else {
|
|
|
- List<StoreMenuVo> collect = storeMenuMapper.getStoreMenuList(storeId, dishType);
|
|
|
- collect.forEach(item -> {
|
|
|
- if (StringUtils.isNotEmpty(phoneId)) {
|
|
|
- LambdaQueryWrapper<LifeLikeRecord> query = new LambdaQueryWrapper<>();
|
|
|
- query.eq(LifeLikeRecord::getDianzanId, phoneId).eq(LifeLikeRecord::getHuifuId, item.getId());
|
|
|
- Integer i = lifeLikeRecordMapper.selectCount(query);
|
|
|
- if (i > 0) {
|
|
|
- item.setIsLike(1);
|
|
|
- } else {
|
|
|
- item.setIsLike(0);
|
|
|
- }
|
|
|
+ // 如果是推荐菜且有用户标识,批量查询点赞状态
|
|
|
+ if (dishType != null && dishType == 1 && StringUtils.isNotEmpty(phoneId)
|
|
|
+ && CollectionUtils.isNotEmpty(menuList)) {
|
|
|
+ // 将菜单ID转换为String集合,用于查询点赞记录
|
|
|
+ Set<String> menuIdStrSet = menuList.stream()
|
|
|
+ .map(item -> String.valueOf(item.getId()))
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 批量查询点赞记录
|
|
|
+ LambdaQueryWrapper<LifeLikeRecord> likeQuery = new LambdaQueryWrapper<>();
|
|
|
+ likeQuery.eq(LifeLikeRecord::getDianzanId, phoneId)
|
|
|
+ .in(LifeLikeRecord::getHuifuId, menuIdStrSet);
|
|
|
+ List<LifeLikeRecord> likeRecordList = lifeLikeRecordMapper.selectList(likeQuery);
|
|
|
+
|
|
|
+ // 构建已点赞的菜单ID集合
|
|
|
+ Set<String> likedMenuIdSet = likeRecordList.stream()
|
|
|
+ .map(LifeLikeRecord::getHuifuId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 设置点赞状态
|
|
|
+ menuList.forEach(item -> {
|
|
|
+ String menuIdStr = String.valueOf(item.getId());
|
|
|
+ if (likedMenuIdSet.contains(menuIdStr)) {
|
|
|
+ item.setIsLike(1);
|
|
|
+ } else {
|
|
|
+ item.setIsLike(0);
|
|
|
}
|
|
|
});
|
|
|
- return collect.stream().sorted(Comparator.comparing(StoreMenuVo::getSort)).collect(Collectors.toList());
|
|
|
}
|
|
|
+
|
|
|
+ // 按排序字段排序
|
|
|
+ return menuList.stream()
|
|
|
+ .sorted(Comparator.comparing(StoreMenuVo::getSort))
|
|
|
+ .collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -198,7 +220,7 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
|
|
|
boolean flag = false;
|
|
|
if (CollectionUtil.isNotEmpty(storeMenuVo.getSortList())) {
|
|
|
for (int i = 0; i < storeMenuVo.getSortList().size(); i++) {
|
|
|
- LambdaQueryWrapper<StoreMenu> lambdaQueryWrapper = new LambdaQueryWrapper();
|
|
|
+ LambdaQueryWrapper<StoreMenu> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(StoreMenu::getId, storeMenuVo.getSortList().get(i).getId());
|
|
|
StoreMenu storeMenu = this.getOne(lambdaQueryWrapper);
|
|
|
storeMenu.setSort(i + 1);
|
|
|
@@ -221,7 +243,7 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public R deleteMenu(List<Integer> ids, int dishType) {
|
|
|
+ public R<String> deleteMenu(List<Integer> ids, int dishType) {
|
|
|
QueryWrapper<StoreMenu> queryWrapperMenu = new QueryWrapper<>();
|
|
|
boolean flag = false;
|
|
|
if (dishType == 0) {
|