SysRuleContorller.java 13.1 KB
package com.server.web.controller;

import com.server.shiro.context.PermissionManage;
import com.server.shiro.persistent.bean.SysPermission;
import com.server.shiro.persistent.bean.SysPermissionQuery;
import com.server.shiro.persistent.bean.SysRule;
import com.server.shiro.persistent.bean.SysRuleQuery;
import com.server.shiro.persistent.repository.SysPermissionRepository;
import com.server.shiro.persistent.repository.SysRuleRepository;
import com.server.shiro.persistent.service.SysRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.util.*;

/**
 * 权限contorller
 */
@RestController
@RequestMapping(BaseController.OSS_NAMESPACE + "/rule")
public class SysRuleContorller extends BaseController {
    @Autowired
    SysRuleService ruleService;
    @Autowired
    SysPermissionRepository sysPermissionRepository;
    @Autowired
    SysRuleRepository ruleRepository;

    @Autowired
    PermissionManage permissionManage;

    /**
     * 权限查询分页
     * @param request
     * @param ruleQuery
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/queryRule", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
    public Map<String,Object> queryRule(HttpServletRequest request, SysRuleQuery ruleQuery){
        try{
           return success(ruleService.findSysRulePage(getPageable(request),ruleQuery));
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }

    /**
     * 权限保存
     * @param request
     * @param rule
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/saveRule", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("rule:save")
    public Map<String,Object> saveRule(HttpServletRequest request,SysRule rule){
        try{
            if(StringUtils.hasText(rule.getRuleCode())&&StringUtils.hasText(rule.getRuleName())){
                List ruleList =this.ruleRepository.findByRuleCode(rule.getRuleCode());
                if(ruleList!=null&&ruleList.size()>0){
                    return  error("-1", "权限编码已被使用", "");
                }else{
                    rule.setStatus("1");
                    rule.setCreateTime(new Timestamp(new Date().getTime()));
                    rule.setUpdateTime(new Timestamp(new Date().getTime()));
                    this.ruleRepository.save(rule);
                    return  success(rule.getId());
                }
            }else{
                return  error("-1", "权限编码和名称不能为空", "");
            }
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }

    /**
     * 权限修改
     * @param request
     * @param rule
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/updateRule", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("rule:update")
    public Map<String,Object> updateRule(HttpServletRequest request,SysRule rule){
        try{
            if(StringUtils.hasText(rule.getRuleCode())&&StringUtils.hasText(rule.getRuleName())){
                SysRule oldRule = this.ruleRepository.findOne(rule.getId());
                if(oldRule.getRuleCode().equals(rule.getRuleCode())){
                    rule.setCreateTime(oldRule.getCreateTime());
                    rule.setUpdateTime(new Timestamp(new Date().getTime()));
                    this.ruleRepository.save(rule);
                    return  success(rule.getId());
                }else{
                    List ruleList =this.ruleRepository.findByRuleCode(rule.getRuleCode());
                    if(ruleList!=null&&ruleList.size()>0){
                        return  error("-1", "权限编码已被使用", "");
                    }else{
                        rule.setCreateTime(oldRule.getCreateTime());
                        rule.setUpdateTime(new Timestamp(new Date().getTime()));
                        this.ruleRepository.save(rule);
                        return  success(rule.getId());
                    }
                }
            }else{
                return  error("-1", "权限编码和名称不能为空", "");
            }
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }

    /**
     * 根据权限id查询权限信息
     * @param request
     * @param ruleId
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/getRuleById", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("rule:info")
    public Map<String,Object> getRuleById(HttpServletRequest request,@RequestParam String ruleId){
        try{
            if(StringUtils.hasText(ruleId)){
                SysRule sysRule =this.ruleRepository.findOne(Long.valueOf(ruleId.trim()));
                if(sysRule!=null){
                    return success(sysRule);
                }else{
                    return error("-1","权限不存在","");
                }
            }else{
                return error("-1","权限不存在","");
            }
        }catch (Exception e){
            e.printStackTrace();
            return error("-1","操作失败","");
        }
    }

    /**
     * 根据权限id查询资源id
     * @param request
     * @param ruleId
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/getPermissionByRuleId", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
    public Map<String,Object> getPermissionByRuleId(HttpServletRequest request,@RequestParam("id") String ruleId){
        try{
            if(StringUtils.hasText(ruleId)){
                SysRule sysRule =this.ruleRepository.findOne(Long.valueOf(ruleId.trim()));
                if(sysRule!=null){
                    String permissionId ="";
                    if(sysRule.getPermissions()!=null){
                        for (SysPermission permission:sysRule.getPermissions()){
                            if(StringUtils.hasText(permissionId)){
                                permissionId =permissionId+","+String.valueOf(permission.getId());
                            }else{
                                permissionId = String.valueOf(permission.getId());
                            }
                        }
                    }
                    return success(permissionId);
                }else{
                    return error("-1","权限不存在","");
                }
            }else{
                return error("-1","权限不存在","");
            }
        }catch (Exception e){
            e.printStackTrace();
            return error("-1","操作失败","");
        }
    }

    /**
     * 给权限设置资源
     * @param request
     * @param ruleId
     * @param permissionIds
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/updateRulePermission", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("rule:updateRulePermission")
    public Map<String,Object> updateRulePermission(HttpServletRequest request,@RequestParam("id") String ruleId,@RequestParam("roles") String permissionIds){
        try{
            if(StringUtils.hasText(ruleId)&&StringUtils.hasText(permissionIds)){
                SysRule sysRule =this.ruleRepository.findOne(Long.valueOf(ruleId.trim()));
                if(sysRule!=null){
                    String[] permissionIdList = permissionIds.split(",");
                    Set<SysPermission> permissionSet = new HashSet<SysPermission>();
                    for(String permissionId:permissionIdList){
                        SysPermission sysPermission= this.sysPermissionRepository.findOne(Long.valueOf(permissionId.trim()));
                        if(sysPermission!=null){
                            permissionSet.add(sysPermission);
                        }
                    }
                    sysRule.setPermissions(permissionSet);
                    this.ruleRepository.save(sysRule);
                    permissionManage.reloadPermission();
                    return success(sysRule.getId());
                }else{
                    return error("-1","权限不存在","");
                }
            }else{
                return error("-1","操作失败,缺少参数","");
            }
        }catch (Exception e){
            e.printStackTrace();
            return error("-1","操作失败","");
        }
    }

    /**
     * 资源查询分页
     * @param request
     * @param permissionQuery
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/queryPermissionPage", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
    public Map<String,Object> queryPermissionPage(HttpServletRequest request,SysPermissionQuery permissionQuery){
        try{
            return success(ruleService.findSysPermissionPage(getPageable(request),permissionQuery));
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }

    /**
     * 资源保存
     * @param request
     * @param permission
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/savePermission", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("permission:save")
    public Map<String,Object> savePermission(HttpServletRequest request,SysPermission permission){
        try{
            if(StringUtils.hasText(permission.getPermissionCode())&&StringUtils.hasText(permission.getPermissionName())){
                List permissionList =this.sysPermissionRepository.findByPermissionCode(permission.getPermissionCode());
                if(permissionList!=null&&permissionList.size()>0){
                    return  error("-1", "资源编码已被使用", "");
                }else{
                    if(permission.getStatus()==null){
                        permission.setStatus(1L);
                    }
                    this.sysPermissionRepository.save(permission);
                    return  success(permission.getId());
                }
            }else{
                return  error("-1", "资源编码和名称不能为空", "");
            }
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }

    /**
     * 根据资源id,查询资源信息
     * @param request
     * @param permissionId
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/getSysPermissioneById", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("permission:info")
    public Map<String,Object> getSysPermissioneById(HttpServletRequest request,@RequestParam String permissionId){
        try{
            if(StringUtils.hasText(permissionId)){
                SysPermission permission =this.sysPermissionRepository.findOne(Long.valueOf(permissionId.trim()));
                if(permission!=null){
                    return success(permission);
                }else{
                    return error("-1","资源不存在","");
                }
            }else{
                return error("-1","资源不存在","");
            }
        }catch (Exception e){
            e.printStackTrace();
            return error("-1","操作失败","");
        }
    }

    /**
     * 资源修改
     * @param request
     * @param permission
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/updatePermission", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("permission:update")
    public Map<String,Object> updatePermission(HttpServletRequest request,SysPermission permission){
        try{
            if(StringUtils.hasText(permission.getPermissionCode())&&StringUtils.hasText(permission.getPermissionName())){
                SysPermission oldPermission = this.sysPermissionRepository.findOne(permission.getId());
                if(oldPermission.getPermissionCode().equals(permission.getPermissionCode())){
                    this.sysPermissionRepository.save(permission);
                    return  success(permission.getId());
                }else{
                    List permissionList =this.sysPermissionRepository.findByPermissionCode(permission.getPermissionCode());
                    if(permissionList!=null&&permissionList.size()>0){
                        return  error("-1", "资源编码已被使用", "");
                    }else{
                        this.sysPermissionRepository.save(permission);
                        return  success(permission.getId());
                    }
                }
            }else{
                return  error("-1", "资源编码和名称不能为空", "");
            }
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }


}