package com.shlanbao.tzsc.pms.sys.scj.service.impl; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.shlanbao.tzsc.base.dao.SysFavoriteDaoI; import com.shlanbao.tzsc.base.dao.SysResourceDaoI; import com.shlanbao.tzsc.base.mapping.SysFavorite; import com.shlanbao.tzsc.base.mapping.SysResource; import com.shlanbao.tzsc.base.mapping.SysUser; import com.shlanbao.tzsc.pms.sys.scj.service.FivoServiceI; @Service public class FivoServiceImpl implements FivoServiceI { @Autowired private SysFavoriteDaoI sysFavoriteDaoI; @Autowired private SysResourceDaoI resourceDaoI; @Override public boolean saveFaverite(String uid, String rid) { boolean Result = false; List strs = this.getAllRidUid(rid); try { for (String str : strs) { // 查询是否已添加 boolean bool = this.getByrId(str, uid); if (bool) { sysFavoriteDaoI.save(new SysFavorite(new SysResource(str), new SysUser(uid))); } else { continue; } } Result = true; } catch (Exception e) { e.printStackTrace(); } return Result; } @Override public boolean deleteFaverite(String rid, String uid) { boolean result = false; // 查询要删除的是不是父节点 List ids = getdelPRes(rid); for (String prid : ids) { try { sysFavoriteDaoI .deleteByParams( "delete SysFavorite where sysResource.id=? and sysUser.id=?", prid, uid); result = true; } catch (Exception e) { // TODO: handle exception } } return result; } private List getdelPRes(String rid) { List rids = new ArrayList(); SysResource resource = resourceDaoI.findById(SysResource.class, rid); rids.add(resource.getId()); // 判断父节点下是否就这一个如果是则加上父节点一起删 if (resource.getSysResources().size() > 0) { Set subs = resource.getSysResources(); for (SysResource sysResource : subs) { rids.add(sysResource.getId()); } } //判断选中节点下的所有子节点 getSubs(rids, resource); return rids; } @Override public boolean getByrId(String rid, String uid) { List sysfavorites = sysFavoriteDaoI .query("from SysFavorite f where f.sysResource.id='" + rid + "' and f.sysUser.id='" + uid + "'"); if (sysfavorites == null) { return true; } if (sysfavorites.size() > 0) { return false; } else { return true; } } @Override public List getAllRidUid(String rid) { List rids = new ArrayList(); // 1.得到父级集合(typ=1) SysResource resource = resourceDaoI.findById(SysResource.class, rid); rids.add(resource.getId()); // 父节点 getPRes(rids, resource); // 子节点 getSubs(rids, resource); System.out.println(rids); return rids; } private void getSubs(List rids, SysResource resource) { if (resource.getSysResources() != null && resource.getSysResources().size() > 0) { Set subs = resource.getSysResources(); for (SysResource sysResource : subs) { if (sysResource.getDel() == 0 && sysResource.getEnable() == 1 && sysResource.getTyp() == 1) { rids.add(sysResource.getId()); this.getSubs(rids, sysResource); } this.getSubs(rids, sysResource); } } } private void getPRes(List rids, SysResource resource) { if (resource.getSysResource() != null) { SysResource pResource = resource.getSysResource(); rids.add(pResource.getId()); this.getPRes(rids, pResource); } } }