PermissionServiceImpl.java 3.68 KB
package com.uccc.admin.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.uccc.admin.domain.Permission;
import com.uccc.admin.mapper.PermissonMapper;
import com.uccc.admin.service.PermissionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;

/**
 * Created by bert on 2021-09-13 14:53
 */
@Service
public class PermissionServiceImpl implements PermissionService {

    final private Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private PermissonMapper permissonMapper;


    @Override
    public List<Permission> getPermissionByUserId(Long id) {
        return permissonMapper.selectUserPermission(id);
    }


    /**
     *
     * 'role': {
     *                         'name': '管理员',
     *                         'describe': '拥有所有权限',
     *                         'permissions': [ ] // 菜单数组
     *                         'companu':company
     *                     },
     * @param permissions
     * @return
     */
    @Override
    public JSONArray formatPermissionList(List<Permission> permissions) {
        JSONArray arr = new JSONArray();


        permissions.forEach( d1-> {
            if (d1.getParentId() == 0) { //一级
                JSONObject json1 = new JSONObject();
                json1.put("label", d1.getName());
                json1.put("value", d1.getSubClass());
                JSONArray jsonArray = new JSONArray();
                json1.put("children", jsonArray);
                permissions.forEach( d2-> { //二级
                    if (d2.getParentId() == d1.getId()) {
                        JSONObject json2 = new JSONObject();
                        json2.put("label", d2.getName());
                        json2.put("value", d2.getSubClass());
                        jsonArray.add(json2);
                    }
                });
                arr.add(json1);
            }
        });

        return arr;
    }

    @Override
    public List<Permission> selectAllUserPermission(int type) {
        return permissonMapper.selectAllUserPermission(type);
    }

    @Override
    public JSONArray formatPermissions(List<Permission> permissions) {
        JSONArray jsonArray = new JSONArray();
        permissions.forEach(d->{
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("roleId", d.getRoleName());
            jsonObject.put("permissionId", d.getSubClass());
            jsonObject.put("permissionName", d.getName());
            jsonArray.add(jsonObject);
        });
        return jsonArray;
    }

    @Override
    public boolean createRolePermission(int[] permissions, Long userId) {
        AtomicBoolean result = new AtomicBoolean(true);
        Arrays.stream(permissions).forEach(permissionId->{
            int permissionCount = permissonMapper.createRolePermission(permissionId, userId);
            if (!(permissionCount > 0)) {
                result.set(false);
            }
        });

        return result.get();
    }

    @Override
    public boolean updateRolePermission(Long roleId, int[] permissions) {
        AtomicBoolean result = new AtomicBoolean(true);
        permissonMapper.deleteRolePermissionByUserId(roleId);
        Arrays.stream(permissions).forEach(permissionId->{
            int permissionCount = permissonMapper.createRolePermission(permissionId, roleId);
            if (!(permissionCount > 0)) {
                result.set(false);
            }
        });
        return result.get();
    }
}