FrontRoleServiceImpl.java 6.28 KB
package com.lhcredit.project.business.frontRole.service;

import java.util.List;
import java.util.ArrayList;

import com.lhcredit.common.constant.UserConstants;
import com.lhcredit.common.utils.StringUtils;
import com.lhcredit.common.utils.security.ShiroUtils;
import com.lhcredit.project.business.frontRoleMenu.domain.FrontRoleMenu;
import com.lhcredit.project.business.frontRoleMenu.mapper.FrontRoleMenuMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lhcredit.project.business.frontRole.mapper.FrontRoleMapper;
import com.lhcredit.project.business.frontRole.domain.FrontRole;
import com.lhcredit.common.utils.text.Convert;

/**
 * 前端用户角色 服务层实现
 *
 * @author lhcredit
 * @date 2024-05-11
 */
@Service
public class FrontRoleServiceImpl implements IFrontRoleService {
    @Autowired
    private FrontRoleMapper frontRoleMapper;

    @Autowired
    private FrontRoleMenuMapper frontRoleMenuMapper;

    /**
     * 查询前端用户角色信息
     *
     * @param roleId 前端用户角色ID
     * @return 前端用户角色信息
     */
    @Override
    public FrontRole selectFrontRoleById(Long roleId) {
        return frontRoleMapper.selectFrontRoleById(roleId);
    }

    /**
     * 查询前端用户角色列表
     *
     * @param frontRole 前端用户角色信息
     * @return 前端用户角色集合
     */
    @Override
    public List<FrontRole> selectFrontRoleList(FrontRole frontRole) {
        return frontRoleMapper.selectFrontRoleList(frontRole);
    }

    /**
     * 字段转换
     * @param frontRole 前端用户角色信息
     * @return 前端用户角色信息
     */
    @Override
    public FrontRole changeModel(FrontRole frontRole) {
//        //这里写各字段转换逻辑
//        if(frontRole!=null){
//            if(StringUtils.isNotEmpty(frontRole.getXXX())){
//               frontRole.setXXX(frontRole.getXXX());
//            }
//        }
        return frontRole;
    }

    /**
     * 列表转换
     *
     * @param frontRoleList 前端用户角色集合
     * @return 前端用户角色集合
     */
    @Override
    public List<FrontRole> changeModel(List<FrontRole> frontRoleList) {
        List<FrontRole> result = new ArrayList<FrontRole>();
        if (frontRoleList.size() > 0) {
            for (FrontRole frontRole:frontRoleList){
                result.add(changeModel(frontRole));
            }
        }
        return result;
    }

    /**
     * 新增前端用户角色
     *
     * @param frontRole 前端用户角色信息
     * @return 结果
     */
    @Override
    public int insertFrontRole(FrontRole frontRole) {
        //新增角色
        frontRoleMapper.insertFrontRole(frontRole);
        //角色权限关联
        int rows = 1;
        // 新增用户与角色管理
        List<FrontRoleMenu> list = new ArrayList<FrontRoleMenu>();
        for (Long menuId : frontRole.getMenuIds()) {
            FrontRoleMenu rm = new FrontRoleMenu();
            rm.setRoleId(frontRole.getRoleId());
            rm.setMenuId(menuId);
            list.add(rm);
        }
        if (list.size() > 0) {
            rows = frontRoleMenuMapper.batchRoleMenu(list);
        }

        return rows;
    }

    /**
     * 修改前端用户角色
     *
     * @param frontRole 前端用户角色信息
     * @return 结果
     */
    @Override
    public int updateFrontRole(FrontRole frontRole) {
        frontRole.setUpdateBy(ShiroUtils.getLoginName());
        // 修改角色信息
        frontRoleMapper.updateFrontRole(frontRole);
        // 删除角色与菜单关联
        frontRoleMenuMapper.deleteRoleMenuByRoleId(frontRole.getRoleId());

        return insertRoleMenu(frontRole);
    }

    /**
     * 新增角色菜单信息
     *
     * @param frontRole 角色对象
     */
    public int insertRoleMenu(FrontRole frontRole) {
        int rows = 1;
        // 新增用户与角色管理
        List<FrontRoleMenu> list = new ArrayList<FrontRoleMenu>();
        for (Long menuId : frontRole.getMenuIds()) {
            FrontRoleMenu rm = new FrontRoleMenu();
            rm.setRoleId(frontRole.getRoleId());
            rm.setMenuId(menuId);
            list.add(rm);
        }
        if (list.size() > 0) {
            rows = frontRoleMenuMapper.batchRoleMenu(list);
        }
        return rows;
    }

    /**
     * 删除前端用户角色对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteFrontRoleByIds(String ids) {

        return frontRoleMapper.deleteFrontRoleByIds(Convert.toStrArray(ids));
    }

    @Override
    public int changeStatus(FrontRole frontRole) {
         return frontRoleMapper.updateFrontRole(frontRole);
    }

    @Override
    public String checkRoleNameUnique(FrontRole frontRole) {
        Long roleId = StringUtils.isNull(frontRole.getRoleId()) ? -1L : frontRole.getRoleId();
        FrontRole info = frontRoleMapper.checkRoleNameUnique(frontRole.getRoleName());
        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
            return UserConstants.ROLE_NAME_NOT_UNIQUE;
        }
        return UserConstants.ROLE_NAME_UNIQUE;
    }

    @Override
    public String checkRoleKeyUnique(FrontRole frontRole) {
        Long roleId = StringUtils.isNull(frontRole.getRoleId()) ? -1L : frontRole.getRoleId();
        FrontRole info = frontRoleMapper.checkRoleKeyUnique(frontRole.getRoleKey());
        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
            return UserConstants.ROLE_KEY_NOT_UNIQUE;
        }
        return UserConstants.ROLE_KEY_UNIQUE;
    }

    @Override
    public int countUserRoleByRoleId(Long roleId) {
        return 0;
    }

    @Override
    public List<FrontRole> selectRolesByUserId(Long userId) {
        List<FrontRole> userRoles = frontRoleMapper.selectRolesByUserId(userId);
        //查询所有角色
        List<FrontRole> roles = selectFrontRoleList(new FrontRole());
        for (FrontRole role : roles) {
            for (FrontRole userRole : userRoles) {
                if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) {
                    role.setFlag(true);
                    break;
                }
            }
        }
        return roles;
    }
}