package com.ruoyi.web.controller.api;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.domain. TBoard;
import com.ruoyi.system.domain.TOrderMeal;
import com.ruoyi.system.service.TBoardService;
import com.ruoyi.system.service.TOrderMealService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.parameters.P;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 餐桌 前端控制器
*
*
* @author xiaochen
* @since 2024-08-14
*/
@Api(tags = "餐桌")
@RestController
@RequestMapping("/t-board")
public class TBoardController {
private final TBoardService boardService;
private final TokenService tokenService;
private final TOrderMealService orderMealService;
@Autowired
public TBoardController(TBoardService boardService, TokenService tokenService, TOrderMealService orderMealService) {
this. boardService = boardService;
this.tokenService = tokenService;
this.orderMealService = orderMealService;
}
/**
* 查询 餐桌列表
*/
@ApiOperation( value = "查询餐桌列表")
@PostMapping(value = "/list")
public AjaxResult> list() {
Long objectId = tokenService.getLoginUser().getObjectId();
List list = boardService.list(Wrappers.lambdaQuery(TBoard.class)
.eq(TBoard::getShopId, objectId));
// 不等于空闲状态的
List ids = list.stream().filter(e -> !e.getStatus().equals(1)).map(TBoard::getId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(ids)){
List orderMeals = orderMealService.list(Wrappers.lambdaQuery(TOrderMeal.class)
.in(TOrderMeal::getBoardId, ids)
.isNotNull(TOrderMeal::getMealTime)
.orderByDesc(TOrderMeal::getCreateTime));
for (TBoard board : list) {
List collect = orderMeals.stream().filter(e -> board.getId().equals(e.getBoardId())).sorted(Comparator.comparing(TOrderMeal::getCreateTime).reversed()).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(collect)){
board.setMealType(collect.get(0).getMealType());
board.setMealPerson(collect.get(0).getMealPerson());
board.setOrderMoney(collect.get(0).getOrderMoney());
board.setOrderMealId(collect.get(0).getId());
}
}
}
return AjaxResult.success(list);
}
/**
* 添加 餐桌管理
*/
@ApiOperation( value = "添加餐桌")
@PostMapping(value = "/add")
public AjaxResult add(@RequestBody TBoard dto) {
dto.setShopId(tokenService.getLoginUser().getObjectId());
return AjaxResult.success( boardService.save(dto));
}
/**
* 修改 餐桌
*/
@ApiOperation( value = "修改餐桌")
@PostMapping(value = "/update")
public AjaxResult update(@RequestBody TBoard dto) {
return AjaxResult.success( boardService.updateById(dto));
}
/**
* 根据店铺id查询餐桌列表
*/
@ApiOperation( value = "根据店铺id查询餐桌列表")
@GetMapping(value = "/getBoardByShopId")
public AjaxResult> getBoardByShopId(@RequestParam("shopId") Long shopId) {
return AjaxResult.success( boardService.list(Wrappers.lambdaQuery(TBoard.class)
.eq(TBoard::getShopId,shopId)));
}
/**
* 查看 餐桌详情
*/
@ApiOperation( value = "查看餐桌详情")
@GetMapping(value = "/getDetailById")
public AjaxResult getDetailById(@RequestParam("id") Long id) {
return AjaxResult.success( boardService.getById(id));
}
/**
* 删除 餐桌
*/
@ApiOperation( value = "删除餐桌")
@DeleteMapping(value = "/deleteById")
public AjaxResult deleteById(@RequestParam("id") Long id) {
return AjaxResult.success( boardService.removeById(id));
}
/**
* 批量删除 餐桌
*/
@ApiOperation( value = "批量删除餐桌")
@DeleteMapping(value = "/deleteByIds")
public AjaxResult deleteByIds(@RequestBody List ids) {
return AjaxResult.success( boardService.removeByIds(ids));
}
}