package com.vincent.rsf.server.system.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.common.utils.Utils; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.manager.entity.MatnrGroup; import com.vincent.rsf.server.manager.entity.MenuPda; import com.vincent.rsf.server.manager.service.MatnrGroupService; import com.vincent.rsf.server.system.controller.param.RoleScopeParam; import com.vincent.rsf.server.system.entity.MatnrRoleMenu; import com.vincent.rsf.server.system.entity.PdaRoleMenu; import com.vincent.rsf.server.system.service.MatnrRoleMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController public class MatnrRoleMenuController extends BaseController { @Autowired private MatnrRoleMenuService matnrRoleMenuService; @Autowired private MatnrGroupService matnrGroupService; @GetMapping("/roleMatnr/scope/list") public R scopeList(@RequestParam Long roleId) { return R.ok().add(matnrRoleMenuService.listStrictlyMenuByRoleId(roleId)); } @PostMapping("/menuMatnrGroup/tree") public R tree(@RequestBody Map map) { List menuList = matnrGroupService.list(new LambdaQueryWrapper().orderByAsc(MatnrGroup::getSort)); List treeData = Utils.toTreeData(menuList, 0L, MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren); if (!Cools.isEmpty(map.get("condition"))) { Utils.treeRemove(treeData, String.valueOf(map.get("condition")), MatnrGroup::getName, MatnrGroup::getChildren); Utils.treeRemove(treeData, String.valueOf(map.get("condition")), MatnrGroup::getName, MatnrGroup::getChildren); } return R.ok().add(treeData); } @PreAuthorize("hasAuthority('system:role:update')") @OperationLog("Assign Permissions") @PostMapping("/roleMatnr/scope/update") @Transactional public R scopeUpdate(@RequestBody RoleScopeParam param) { Long roleId = param.getId(); List menuIds = new ArrayList<>(param.getMenuIds().getChecked()); menuIds.addAll(param.getMenuIds().getHalfChecked()); matnrRoleMenuService.remove(new LambdaQueryWrapper().eq(MatnrRoleMenu::getRoleId, roleId)); for (Long menuId : menuIds) { if (!matnrRoleMenuService.save(new MatnrRoleMenu(roleId, menuId))) { throw new CoolException("Internal Server Error!"); } } return R.ok("Assign Success"); } }