|
|
@@ -21,8 +21,9 @@ import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
- * 酒水餐食信息表 服务实现类
|
|
|
- * 基于 store_menu 表实现(dish_menu_type: 2=酒水,3=餐食)
|
|
|
+ * 酒水餐食信息 服务实现类
|
|
|
+ * 基于 store_menu 表实现
|
|
|
+ * dish_menu_type: 1=餐食(菜单/菜品),2=酒水
|
|
|
* 注意:drink_info 表已废弃,现在使用 store_menu 表
|
|
|
*
|
|
|
* @author ssk
|
|
|
@@ -39,13 +40,11 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
|
|
|
/**
|
|
|
* 菜单类型常量
|
|
|
- * 1 = 菜单(菜品)
|
|
|
+ * 1 = 餐食(菜单/菜品)
|
|
|
* 2 = 酒水
|
|
|
- * 3 = 餐食
|
|
|
*/
|
|
|
- private static final String MENU_TYPE_DISH = "1";
|
|
|
+ private static final String MENU_TYPE_FOOD = "1";
|
|
|
private static final String MENU_TYPE_DRINK = "2";
|
|
|
- private static final String MENU_TYPE_FOOD = "3";
|
|
|
|
|
|
/**
|
|
|
* 菜单图片类型
|
|
|
@@ -56,12 +55,12 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
public IPage<DrinkInfoVo> getDrinkInfoPage(int page, int size, Integer storeId, Integer type, String category, String name, Integer createUserId) {
|
|
|
LambdaQueryWrapper<StoreMenu> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
|
- // type 参数:2=酒水,3=餐食
|
|
|
+ // type 参数:1=餐食,2=酒水
|
|
|
if (type != null) {
|
|
|
queryWrapper.eq(StoreMenu::getDishMenuType, type.toString());
|
|
|
} else {
|
|
|
- // 不传则查询酒水和餐食(排除菜品)
|
|
|
- queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD);
|
|
|
+ // 不传则查询所有(餐食和酒水)
|
|
|
+ queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_FOOD, MENU_TYPE_DRINK);
|
|
|
}
|
|
|
|
|
|
// 筛选条件
|
|
|
@@ -96,8 +95,9 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
@Override
|
|
|
public DrinkInfoVo getDrinkInfoById(Integer id) {
|
|
|
StoreMenu menu = storeMenuMapper.selectById(id);
|
|
|
- // 验证是否为酒水或餐食类型(排除菜品)
|
|
|
- if (menu == null || MENU_TYPE_DISH.equals(menu.getDishMenuType())) {
|
|
|
+ // 验证是否为餐食或酒水类型
|
|
|
+ if (menu == null ||
|
|
|
+ (!MENU_TYPE_FOOD.equals(menu.getDishMenuType()) && !MENU_TYPE_DRINK.equals(menu.getDishMenuType()))) {
|
|
|
return null;
|
|
|
}
|
|
|
return convertMenuToVo(menu);
|
|
|
@@ -111,7 +111,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
menu.setDishName(drinkInfo.getName());
|
|
|
menu.setDishPrice(drinkInfo.getPrice());
|
|
|
menu.setCostPrice(drinkInfo.getCostPrice());
|
|
|
- // type: 2=酒水, 3=餐食,默认为酒水
|
|
|
+ // type: 1=餐食,2=酒水,默认为酒水
|
|
|
menu.setDishMenuType(drinkInfo.getType() != null ? drinkInfo.getType().toString() : MENU_TYPE_DRINK);
|
|
|
menu.setCategory(drinkInfo.getCategory());
|
|
|
menu.setAlcoholVolume(drinkInfo.getAlcoholVolume() != null ? drinkInfo.getAlcoholVolume().toString() : "0");
|
|
|
@@ -132,7 +132,8 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
img.setImgType(IMG_TYPE_MENU);
|
|
|
img.setImgUrl(drinkInfo.getPicUrl());
|
|
|
img.setBusinessId(menu.getId());
|
|
|
- img.setImgDescription((MENU_TYPE_DRINK.equals(menu.getDishMenuType()) ? "酒水" : "餐食") + "图片-" + menu.getDishName());
|
|
|
+ String typeDesc = MENU_TYPE_DRINK.equals(menu.getDishMenuType()) ? "酒水" : "餐食";
|
|
|
+ img.setImgDescription(typeDesc + "图片-" + menu.getDishName());
|
|
|
img.setImgSort(1);
|
|
|
storeImgMapper.insert(img);
|
|
|
|
|
|
@@ -150,10 +151,11 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- // 验证是否为酒水或餐食类型(排除菜品)
|
|
|
+ // 验证是否为餐食或酒水类型
|
|
|
StoreMenu existMenu = storeMenuMapper.selectById(drinkInfo.getId());
|
|
|
- if (existMenu == null || MENU_TYPE_DISH.equals(existMenu.getDishMenuType())) {
|
|
|
- log.warn("该商品不是酒水/餐食类型,无法修改");
|
|
|
+ if (existMenu == null ||
|
|
|
+ (!MENU_TYPE_FOOD.equals(existMenu.getDishMenuType()) && !MENU_TYPE_DRINK.equals(existMenu.getDishMenuType()))) {
|
|
|
+ log.warn("该商品不是餐食/酒水类型,无法修改");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -169,9 +171,6 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
if (drinkInfo.getCostPrice() != null) {
|
|
|
menu.setCostPrice(drinkInfo.getCostPrice());
|
|
|
}
|
|
|
- if (drinkInfo.getType() != null) {
|
|
|
- menu.setDishMenuType(drinkInfo.getType().toString());
|
|
|
- }
|
|
|
if (StringUtils.hasText(drinkInfo.getCategory())) {
|
|
|
menu.setCategory(drinkInfo.getCategory());
|
|
|
}
|
|
|
@@ -204,7 +203,9 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
img.setImgType(IMG_TYPE_MENU);
|
|
|
img.setImgUrl(drinkInfo.getPicUrl());
|
|
|
img.setBusinessId(drinkInfo.getId());
|
|
|
- img.setImgDescription((MENU_TYPE_DRINK.equals(existMenu.getDishMenuType()) ? "酒水" : "餐食") + "图片-" + menu.getDishName());
|
|
|
+ String typeDesc = MENU_TYPE_DRINK.equals(existMenu.getDishMenuType()) ? "酒水" : "餐食";
|
|
|
+ String dishName = menu.getDishName() != null ? menu.getDishName() : existMenu.getDishName();
|
|
|
+ img.setImgDescription(typeDesc + "图片-" + dishName);
|
|
|
img.setImgSort(1);
|
|
|
storeImgMapper.insert(img);
|
|
|
|
|
|
@@ -216,10 +217,11 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
|
|
|
@Override
|
|
|
public boolean deleteDrinkInfo(Integer id) {
|
|
|
- // 验证是否为酒水或餐食类型(排除菜品)
|
|
|
+ // 验证是否为餐食或酒水类型
|
|
|
StoreMenu menu = storeMenuMapper.selectById(id);
|
|
|
- if (menu == null || MENU_TYPE_DISH.equals(menu.getDishMenuType())) {
|
|
|
- log.warn("该商品不是酒水/餐食类型,无法删除");
|
|
|
+ if (menu == null ||
|
|
|
+ (!MENU_TYPE_FOOD.equals(menu.getDishMenuType()) && !MENU_TYPE_DRINK.equals(menu.getDishMenuType()))) {
|
|
|
+ log.warn("该商品不是餐食/酒水类型,无法删除");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -232,7 +234,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
// 注意:store_menu 表有 status 字段了,但 StoreMenu 实体类暂未映射
|
|
|
LambdaUpdateWrapper<StoreMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
updateWrapper.eq(StoreMenu::getId, id)
|
|
|
- .in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD); // 只允许修改酒水和餐食
|
|
|
+ .in(StoreMenu::getDishMenuType, MENU_TYPE_FOOD, MENU_TYPE_DRINK); // 允许修改餐食和酒水
|
|
|
// TODO: 在 StoreMenu 实体类中添加 status 字段映射后启用
|
|
|
// .set(StoreMenu::getStatus, status);
|
|
|
return true; // 暂时返回 true
|
|
|
@@ -242,7 +244,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
public boolean updateIsRecommended(Integer id, Integer isRecommended) {
|
|
|
LambdaUpdateWrapper<StoreMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
updateWrapper.eq(StoreMenu::getId, id)
|
|
|
- .in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD) // 支持酒水和餐食
|
|
|
+ .eq(StoreMenu::getDishMenuType, MENU_TYPE_DRINK) // 只支持酒水
|
|
|
.set(StoreMenu::getDishType, isRecommended);
|
|
|
return storeMenuMapper.update(null, updateWrapper) > 0;
|
|
|
}
|
|
|
@@ -251,7 +253,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
public boolean updateSort(Integer id, Integer sort) {
|
|
|
LambdaUpdateWrapper<StoreMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
updateWrapper.eq(StoreMenu::getId, id)
|
|
|
- .in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD) // 支持酒水和餐食
|
|
|
+ .eq(StoreMenu::getDishMenuType, MENU_TYPE_DRINK) // 只支持酒水
|
|
|
.set(StoreMenu::getSort, sort);
|
|
|
return storeMenuMapper.update(null, updateWrapper) > 0;
|
|
|
}
|
|
|
@@ -265,8 +267,8 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
if (type != null) {
|
|
|
queryWrapper.eq(StoreMenu::getDishMenuType, type.toString());
|
|
|
} else {
|
|
|
- // 不传则查询酒水和餐食(排除菜品)
|
|
|
- queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD);
|
|
|
+ // 不传则查询所有(餐食和酒水)
|
|
|
+ queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_FOOD, MENU_TYPE_DRINK);
|
|
|
}
|
|
|
|
|
|
queryWrapper.orderByAsc(StoreMenu::getSort);
|
|
|
@@ -281,7 +283,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
@Override
|
|
|
public List<DrinkInfoVo> getRecommendedList(Integer storeId, Integer createUserId) {
|
|
|
LambdaQueryWrapper<StoreMenu> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD) // 查询酒水和餐食
|
|
|
+ queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_FOOD, MENU_TYPE_DRINK) // 查询餐食和酒水
|
|
|
.eq(StoreMenu::getDishType, 1); // 推荐
|
|
|
|
|
|
// 只查询指定用户创建的商品
|
|
|
@@ -311,7 +313,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
if (drinkInfo.getId() != null && drinkInfo.getSort() != null) {
|
|
|
LambdaUpdateWrapper<StoreMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
updateWrapper.eq(StoreMenu::getId, drinkInfo.getId())
|
|
|
- .in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD) // 支持酒水和餐食
|
|
|
+ .in(StoreMenu::getDishMenuType, MENU_TYPE_FOOD, MENU_TYPE_DRINK) // 支持餐食和酒水
|
|
|
.set(StoreMenu::getSort, drinkInfo.getSort());
|
|
|
storeMenuMapper.update(null, updateWrapper);
|
|
|
}
|
|
|
@@ -322,59 +324,6 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- @Override
|
|
|
- public java.util.Map<String, Long> getStatistics(Integer storeId) {
|
|
|
- LambdaQueryWrapper<StoreMenu> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.in(StoreMenu::getDishMenuType, MENU_TYPE_DRINK, MENU_TYPE_FOOD); // 查询酒水和餐食
|
|
|
-
|
|
|
- if (storeId != null) {
|
|
|
- queryWrapper.eq(StoreMenu::getStoreId, storeId);
|
|
|
- }
|
|
|
-
|
|
|
- List<StoreMenu> allList = storeMenuMapper.selectList(queryWrapper);
|
|
|
-
|
|
|
- java.util.Map<String, Long> statistics = new java.util.HashMap<>();
|
|
|
- statistics.put("total", (long) allList.size());
|
|
|
- statistics.put("drink", allList.stream().filter(d -> MENU_TYPE_DRINK.equals(d.getDishMenuType())).count());
|
|
|
- statistics.put("food", allList.stream().filter(d -> MENU_TYPE_FOOD.equals(d.getDishMenuType())).count());
|
|
|
- statistics.put("recommended", allList.stream().filter(d -> d.getDishType() != null && d.getDishType() == 1).count());
|
|
|
-
|
|
|
- return statistics;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean batchDelete(List<Integer> ids) {
|
|
|
- if (ids == null || ids.isEmpty()) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- try {
|
|
|
- for (Integer id : ids) {
|
|
|
- deleteDrinkInfo(id);
|
|
|
- }
|
|
|
- return true;
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("批量删除失败", e);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean batchUpdateStatus(List<Integer> ids, Integer status) {
|
|
|
- if (ids == null || ids.isEmpty()) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- try {
|
|
|
- for (Integer id : ids) {
|
|
|
- updateStatus(id, status);
|
|
|
- }
|
|
|
- return true;
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("批量更新状态失败", e);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 将 StoreMenu 转换为 DrinkInfoVo
|
|
|
*
|
|
|
@@ -387,7 +336,7 @@ public class DrinkInfoServiceImpl implements DrinkInfoService {
|
|
|
vo.setName(menu.getDishName());
|
|
|
vo.setPrice(menu.getDishPrice());
|
|
|
vo.setCostPrice(menu.getCostPrice());
|
|
|
- // 转换类型为数字:2=酒水,3=餐食
|
|
|
+ // 转换类型为数字:1=餐食,2=酒水
|
|
|
vo.setType(menu.getDishMenuType() != null ? Integer.parseInt(menu.getDishMenuType()) : 2);
|
|
|
vo.setCategory(menu.getCategory());
|
|
|
vo.setAlcoholVolume(menu.getAlcoholVolume() != null ? new java.math.BigDecimal(menu.getAlcoholVolume()) : java.math.BigDecimal.ZERO);
|