package com.kidgrow.usercenter.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kidgrow.common.constant.CommonConstant;
import com.kidgrow.common.context.ClientContextHolder;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysMenu;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.usercenter.mapper.SysMenuMapper;
import com.kidgrow.usercenter.model.SysRoleMenu;
import com.kidgrow.usercenter.service.ISysMenuService;
import com.kidgrow.usercenter.service.ISysRoleMenuService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
*
* @Description:
* @Project:
* @CreateDate: Created in 2020/2/13 16:33
* @Author: liuke
*/
@Slf4j
@Service
public class SysMenuServiceImpl extends SuperServiceImpl implements ISysMenuService {
@Resource
private ISysRoleMenuService roleMenuService;
@Transactional(rollbackFor = Exception.class)
@Override
public void setMenuToRole(Long roleId, Set menuIds) {
roleMenuService.delete(roleId, null);
if (!CollectionUtils.isEmpty(menuIds)) {
List roleMenus = new ArrayList<>(menuIds.size());
menuIds.forEach(menuId -> roleMenus.add(new SysRoleMenu(roleId, menuId)));
roleMenuService.saveBatch(roleMenus);
}
}
/**
* 角色菜单列表
* @param roleIds
* @return
*/
@Override
public List findByRoles(Set roleIds) {
return roleMenuService.findMenusByRoleIds(roleIds, null);
}
/**
* 角色菜单列表
* @param roleIds 角色ids
* @param roleIds 是否菜单
* @return
*/
@Override
public List findByRoles(Set roleIds, Integer type) {
return roleMenuService.findMenusByRoleIds(roleIds, type);
}
@Override
public List findByRoleCodes(Set roleCodes, Integer type) {
String tentid=ClientContextHolder.getClient();
if (roleCodes.contains(CommonConstant.SYSTEM_ADMIN_ROLE_CODE)) {
tentid="";
}
return roleMenuService.findMenusByRoleCodes(roleCodes, type,tentid);
}
/**
* 查询所有菜单
*/
@Override
public List findAll(Map params) {
// return baseMapper.selectList(
// new QueryWrapper().orderByAsc("sort")
// );
return baseMapper.findAll(params);
}
/**
* 查询所有一级菜单
*/
@Override
public List findOnes(String tenantId) {
return baseMapper.selectList(
new QueryWrapper()
.eq("type", 1).eq("tenant_id",tenantId)
.orderByAsc("sort")
);
}
@Override
public ResultBody updateEnabled(Map params) {
Long id = MapUtils.getLong(params, "id");
Boolean enabled = MapUtils.getBoolean(params, "enabled");
SysMenu sysMenu = baseMapper.selectById(id);
if (sysMenu == null) {
return ResultBody.failed("菜单不存在");
}
sysMenu.setEnabled(enabled);
sysMenu.setUpdateTime(new Date());
int i = baseMapper.updateById(sysMenu);
log.info("修改菜单:{}", sysMenu);
return i > 0 ? ResultBody.ok().data(sysMenu).msg("更新成功") : ResultBody.failed("更新失败");
}
}