FrontMenuServiceImpl.java 6.43 KB
package com.lhcredit.project.business.frontMenu.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.framework.web.domain.Ztree;
import com.lhcredit.project.system.menu.domain.Menu;
import com.lhcredit.project.system.role.domain.Role;
import com.lhcredit.project.system.user.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lhcredit.project.business.frontMenu.mapper.FrontMenuMapper;
import com.lhcredit.project.business.frontMenu.domain.FrontMenu;
import com.lhcredit.project.business.frontMenu.service.IFrontMenuService;
import com.lhcredit.common.utils.text.Convert;

/**
 * 前端菜单权限 服务层实现
 *
 * @author lhcredit
 * @date 2024-05-11
 */
@Service
public class FrontMenuServiceImpl implements IFrontMenuService {
    @Autowired
    private FrontMenuMapper frontMenuMapper;

    /**
     * 查询前端菜单权限信息
     *
     * @param menuId 前端菜单权限ID
     * @return 前端菜单权限信息
     */
    @Override
    public FrontMenu selectFrontMenuById(Long menuId) {
        return frontMenuMapper.selectFrontMenuById(menuId);
    }

    /**
     * 查询前端菜单权限列表
     *
     * @param frontMenu 前端菜单权限信息
     * @return 前端菜单权限集合
     */
    @Override
    public List<FrontMenu> selectFrontMenuList(FrontMenu frontMenu) {


        return frontMenuMapper.selectFrontMenuList(frontMenu);
    }

    /**
     * 字段转换
     * @param frontMenu 前端菜单权限信息
     * @return 前端菜单权限信息
     */
    @Override
    public FrontMenu changeModel(FrontMenu frontMenu) {
//        //这里写各字段转换逻辑
//        if(frontMenu!=null){
//            if(StringUtils.isNotEmpty(frontMenu.getXXX())){
//               frontMenu.setXXX(frontMenu.getXXX());
//            }
//        }
        return frontMenu;
    }

    /**
     * 列表转换
     *
     * @param frontMenuList 前端菜单权限集合
     * @return 前端菜单权限集合
     */
    @Override
    public List<FrontMenu> changeModel(List<FrontMenu> frontMenuList) {
        List<FrontMenu> result = new ArrayList<FrontMenu>();
        if (frontMenuList.size() > 0) {
            for (FrontMenu frontMenu:frontMenuList){
                result.add(changeModel(frontMenu));
            }
        }
        return result;
    }

    /**
     * 新增前端菜单权限
     *
     * @param frontMenu 前端菜单权限信息
     * @return 结果
     */
    @Override
    public int insertFrontMenu(FrontMenu frontMenu) {
        return frontMenuMapper.insertFrontMenu(frontMenu);
    }

    /**
     * 修改前端菜单权限
     *
     * @param frontMenu 前端菜单权限信息
     * @return 结果
     */
    @Override
    public int updateFrontMenu(FrontMenu frontMenu) {
        return frontMenuMapper.updateFrontMenu(frontMenu);
    }

    /**
     * 删除前端菜单权限对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteFrontMenuByIds(String ids) {
        return frontMenuMapper.deleteFrontMenuByIds(Convert.toStrArray(ids));
    }

    @Override
    public FrontMenu selectMenuById(Long menuId) {
        return frontMenuMapper.selectMenuById(menuId);
    }

    @Override
    public String checkMenuNameUnique(FrontMenu menu) {
        Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
        FrontMenu info = frontMenuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId());
        if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
            return UserConstants.MENU_NAME_NOT_UNIQUE;
        }
        return UserConstants.MENU_NAME_UNIQUE;
    }

    @Override
    public List<Ztree> roleMenuTreeData(Role role) {
        Long roleId = role.getRoleId();
        List<Ztree> ztrees = new ArrayList<Ztree>();
        List<FrontMenu> menuList = selectMenuAll();
        if (StringUtils.isNotNull(roleId)) {
            List<String> roleMenuList = frontMenuMapper.selectMenuTree(roleId);
            ztrees = initZtree(menuList, roleMenuList, true);
        } else {
            ztrees = initZtree(menuList, null, true);
        }
        return ztrees;
    }

    @Override
    public List<FrontMenu> selectMenuAll() {
        List<FrontMenu> menuList = null;
        User user = ShiroUtils.getSysUser();
        if (user.isAdmin()) {
            menuList = frontMenuMapper.selectMenuAll();
        } else {
            menuList = frontMenuMapper.selectMenuAllByUserId(user.getUserId());
        }
        return menuList;
    }

    @Override
    public List<Ztree> initZtree(List<FrontMenu> menuList) {
        return initZtree(menuList, null, false);
    }

    @Override
    public List<Ztree> menuTreeData() {
        List<FrontMenu> menuList = selectMenuAll();
        List<Ztree> ztrees = initZtree(menuList);
        return ztrees;
    }


    /**
     * 对象转菜单树
     *
     * @param menuList     菜单列表
     * @param roleMenuList 角色已存在菜单列表
     * @param permsFlag    是否需要显示权限标识
     * @return 树结构列表
     */
    public List<Ztree> initZtree(List<FrontMenu> menuList, List<String> roleMenuList, boolean permsFlag) {
        List<Ztree> ztrees = new ArrayList<Ztree>();
        boolean isCheck = StringUtils.isNotNull(roleMenuList);
        for (FrontMenu menu : menuList) {
            Ztree ztree = new Ztree();
            ztree.setId(menu.getMenuId());
            ztree.setpId(menu.getParentId());
            ztree.setName(transMenuName(menu, roleMenuList, permsFlag));
            ztree.setTitle(menu.getMenuName());
            if (isCheck) {
                System.out.println(menu.getMenuId());
                System.out.println(roleMenuList.contains(menu.getMenuId()+""));
                ztree.setChecked(roleMenuList.contains(menu.getMenuId()+""));
            }
            ztrees.add(ztree);
        }
        return ztrees;
    }

    public String transMenuName(FrontMenu menu, List<String> roleMenuList, boolean permsFlag) {
        StringBuffer sb = new StringBuffer();
        sb.append(menu.getMenuName());
        if (permsFlag) {
            sb.append("<font color=\"#888\">&nbsp;&nbsp;&nbsp;" + menu.getPerms() + "</font>");
        }
        return sb.toString();
    }
}