package com.jeff.tianti.org.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import com.jeff.tianti.common.service.CommonService;
import com.jeff.tianti.org.dao.ResourceDao;
import com.jeff.tianti.org.entity.Resource;
@Service
public class ResourceService extends CommonService<Resource,String>{
@Autowired
private ResourceDao resourceDao;
@Autowired
public void setResourceDao(ResourceDao resourceDao) {
super.setCommonDao(resourceDao);
}
public List<Resource> getRootResourceList(){
return resourceDao.getRootResourceList();
}
/**
* 根据类型取所有资源
* @param type
* @return
*/
public List<Resource> getSystemResourceList(){
return this.resourceDao.getSystemResourceList();
}
public List<Map<String, Object>> getMap(){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
List<Resource> resources = getSystemResourceList();
if(resources != null && !resources.isEmpty()){
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", "all");
map.put("name", "所有菜单");
map.put("pId", "0");
map.put("open", true);
list.add(map);
for(Resource r : resources){
map = new HashMap<String, Object>();
map.put("id", r.getId());
map.put("name", r.getName());
String pId = "all";
if(r.getParent() != null){
pId = r.getParent().getId();
}else{
}
map.put("pId", pId);
list.add(map);
}
}
return list;
}
//@Cacheable(value = "org_cache", key="'allMenu'")
public List<Resource> findAllMenu(){
List<Resource> resources = new ArrayList<Resource>();
Map<String, Object> params = new HashMap<String, Object>();
params.put("deleteFlag", Resource.DELETE_FLAG_NORMAL);
List<Resource> list = resourceDao.findMenuResource(params);
if(list != null && !list.isEmpty()){
Map<String, Resource> map = new HashMap<String, Resource>();
for(Resource r : list){
map.put(r.getId(), r);
}
for(Resource r : list){
if(r.getParent() == null){
resources.add(r);
}else{
Resource parentResource = map.get(r.getParent().getId());
if(parentResource == null){
resources.add(r);
}else{
if(parentResource.getChildren() == null){
parentResource.setChildren(new ArrayList<Resource>());
}
parentResource.getChildren().add(r);
}
}
}
}
return resources;
}
@CacheEvict(value="org_cache", key="'allMenu'")
public void updateDeleteFlag(String[] ids, String deleteFlag){
if(ids != null){
for(String id : ids){
Resource resource = this.find(id);
resource.setDeleteFlag(deleteFlag);
this.update(resource);
}
}
}
@CacheEvict(value="org_cache", key="'allMenu'")
public void saveResource(Resource resource){
if(StringUtils.isNotBlank(resource.getId())){
this.update(resource);
}else{
this.save(resource);
}
}
public List<Resource> findMenuResource(Map<String, Object> params) {
return resourceDao.findMenuResource(params);
}
}