package edu.travel.tenant.web;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import edu.travel.remote.feign.mode.dto.tenant.AddMenuDto;
import edu.travel.remote.feign.mode.dto.tenant.SysMenuPageDto;
import edu.travel.remote.feign.mode.vo.tenant.AddMenuVo;
import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
import edu.travel.resp.BaseResponse;
import edu.travel.resp.PageResponse;
import edu.travel.tenant.SysMenuRemoteController;
import edu.travel.tenant.entity.SysMenu;
import edu.travel.tenant.service.ISysMenuService;
import edu.travel.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* SysMenuController 类。
*
* 描述:
*
* @author huangwenwen
* @date 2025/2/6
*/
@RestController
@RequestMapping("/sysMenu")
public class SysMenuController extends BaseController implements SysMenuRemoteController {
@Autowired
private ISysMenuService sysMenuService;
/**
* 新增菜单
*
* @param addMenuDto
* @return
*/
@PostMapping("/addMenu")
@PreAuthorize("hasRole('超级管理员')")
public BaseResponse addMenu(@RequestBody AddMenuDto addMenuDto) {
AddMenuVo addMenuVo = sysMenuService.addMenu(addMenuDto);
return new BaseResponse<>(200,"sucess", addMenuVo);
}
/**
* 删除菜单单个
* @param id
* @return
*/
@PostMapping("/deleteMenuById")
@PreAuthorize("hasRole('超级管理员')")
public BaseResponse deleteMenuById(@RequestParam Long id) {
Set longs = new HashSet<>();
longs.add(id);
sysMenuService.deleteMenuByIds(longs);
return new BaseResponse<>(200,"sucess",true);
}
/**
* 删除菜单多个
* @param ids
* @return
*/
@PostMapping("/deleteMenuByIds")
@PreAuthorize("hasRole('超级管理员')")
public BaseResponse deleteMenuByIds(@RequestBody List ids ){
HashSet set = new HashSet<>(ids);
sysMenuService.deleteMenuByIds(set);
return new BaseResponse<>(200,"sucess",true);
}
/**
* 获取菜单分页树形列表
* @param sysMenuPageDto
* @return
*/
@GetMapping("/getMenuTreeListAll")
@PreAuthorize("hasRole('超级管理员')")
public BaseResponse> getMenuTreeListAll(SysMenuPageDto sysMenuPageDto) {
IPage page = new Page<>(sysMenuPageDto.getPageNum(), sysMenuPageDto.getPageSize());
IPage sysMenuIPage = sysMenuService.page(page, new LambdaQueryWrapper().eq(SysMenu::getDeleteFlag, 0).like(StringUtils.isNotBlank(sysMenuPageDto.getName()),SysMenu::getName,sysMenuPageDto.getName()));
List treeList= sysMenuService.getMenuTreeListAll(sysMenuIPage.getRecords());
return PageResponse.out(200, "success", treeList, (int) sysMenuIPage.getTotal(), (int) sysMenuIPage.getSize());
}
/**
* 通过菜单id修改菜单
* @param updateMenuDto
* @return
*/
@PostMapping("/updateMenuById")
@PreAuthorize("hasRole('超级管理员')")
public BaseResponse updateMenuById( @RequestBody AddMenuDto updateMenuDto) {
sysMenuService.updateMenuById(updateMenuDto);
return new BaseResponse<>(200,"sucess",true);
}
}