package com.template.controller;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.template.api.UsersMenuAPI;
import com.template.model.dto.SaveParentDto;
import com.template.model.dto.SaveParentUserDto;
import com.template.model.dto.SaveSecondaryUserDto;
import com.template.model.pojo.AdminMenu;
import com.template.model.pojo.PermissionSetting;
import com.template.model.pojo.UsersMenu;
import com.template.model.result.CommonResult;
import com.template.model.vo.AdminMenuTreeVo;
import com.template.services.PermissionSettingService;
import com.template.services.UsersMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 前端控制器
*
*
* @author ceshi
* @since 2023-12-13
*/
@RestController
public class UsersMenuController implements UsersMenuAPI {
@Autowired
UsersMenuService usersMenuService;
@Autowired
PermissionSettingService permissionSettingService;
public static void main(String[] args) {
String s = "1,2";
boolean contains = s.contains("3");
System.out.println("contains = " + contains);
}
@Override
public CommonResult saveUserParent(SaveParentUserDto saveParentUserDto) {
if (ObjectUtils.isEmpty(saveParentUserDto)) {
return CommonResult.fail();
}
int adminId = saveParentUserDto.getAdminMenuId();
PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String roleManagement = permissionSetting.getRoleManagement();
if (!"0".equals(roleManagement) && !roleManagement.contains("1")) {
return CommonResult.fail("此账号暂无该权限");
}
String name = saveParentUserDto.getName();
LambdaQueryWrapper wrapperUm = new LambdaQueryWrapper<>();
wrapperUm.eq(UsersMenu::getName, name);
UsersMenu one = usersMenuService.getOne(wrapperUm);
if (ObjectUtils.isNotEmpty(one)) {
return CommonResult.fail("已有该角色");
}
UsersMenu usersMenu = new UsersMenu();
usersMenu.setParentId(0);
usersMenu.setName(name);
usersMenuService.save(usersMenu);
return CommonResult.ok();
}
@Override
public CommonResult saveUserSecondary(SaveSecondaryUserDto saveSecondaryUserDto) {
if (ObjectUtils.isEmpty(saveSecondaryUserDto)) {
return CommonResult.fail();
}
int adminId = saveSecondaryUserDto.getAdminMenuId();
PermissionSetting permissionSetting = permissionSettingService.getById(adminId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String roleManagement = permissionSetting.getRoleManagement();
if (!"0".equals(roleManagement) && !roleManagement.contains("1")) {
return CommonResult.fail("此账号暂无该权限");
}
String name = saveSecondaryUserDto.getName();
LambdaQueryWrapper wrapperUm = new LambdaQueryWrapper<>();
wrapperUm.eq(UsersMenu::getName, name);
UsersMenu one = usersMenuService.getOne(wrapperUm);
if (ObjectUtils.isNotEmpty(one)) {
return CommonResult.fail("已有该角色");
}
UsersMenu usersMenu = new UsersMenu();
usersMenu.setParentId(saveSecondaryUserDto.getParentId());
usersMenu.setName(name);
usersMenuService.save(usersMenu);
return CommonResult.ok();
}
@Override
public CommonResult getUserRole() {
Wrapper wrapper = new LambdaQueryWrapper<>();
List adminMenus = usersMenuService.list(wrapper);
List adminMenuTreeVos = QueryAreaTreeRecords(0, adminMenus);
return CommonResult.ok(adminMenuTreeVos);
}
@Override
public CommonResult userListPage(int adminMenuId,int page, int size, String keyWord, String startTime, String endTime) {
PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String roleManagement = permissionSetting.getRoleManagement();
if (!"0".equals(roleManagement) && !roleManagement.contains("4")) {
return CommonResult.fail("此账号暂无该权限");
}
if (ObjectUtils.isEmpty(page) && page <= 0) {
page = 1;
}
if (ObjectUtils.isEmpty(size) && size <= 0) {
size = 10;
}
LambdaQueryWrapper wrapperUM = new LambdaQueryWrapper<>();
wrapperUM.like(ObjectUtils.isNotEmpty(keyWord), UsersMenu::getName, keyWord)
.between(ObjectUtils.isNotEmpty(startTime) && ObjectUtils.isNotEmpty(endTime), UsersMenu::getCreateTime, startTime, endTime);
IPage page1 = usersMenuService.page(new Page<>(page, size), wrapperUM);
return CommonResult.ok(page1);
}
/**
* 根据父类ID获取树形菜单数据
*
* @param parentID 父级ID
* @param lists 数据集合
* @return
*/
private List QueryAreaTreeRecords(Integer parentID, List lists) {
List newTrees = new ArrayList<>();
List datas = lists.stream().filter(e -> e.getParentId().equals(parentID)).collect(Collectors.toList());
for (UsersMenu data : datas) {
AdminMenuTreeVo item = AdminMenuTreeVo.builder()
.id(data.getId())
.parentId(data.getParentId())
.name(data.getName())
.build();
List news = QueryAreaTreeRecords(item.getId(), lists);
if (news == null || news.size() == 0) {
newTrees.add(item);
continue;
} else {
item.setChildren(news);
newTrees.add(item);
}
}
return newTrees;
}
}