package com.bonus.sys.service; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.bonus.sys.BaseServiceImp; import com.bonus.sys.beans.ResourcesBean; import com.bonus.sys.beans.RoleResBean; import com.bonus.sys.beans.UserBean; import com.bonus.sys.beans.ZNode; import com.bonus.sys.dao.ResourcesDao; import com.bonus.sys.dao.RoleResDao; @Service("ResourcesService") public class ResourcesServiceImp extends BaseServiceImp implements ResourcesService { @Autowired public RoleResDao roleResDao; @Autowired public ResourcesDao resDao; @Autowired protected JdbcTemplate jdbcTemplate; protected Logger logger = LoggerFactory .getLogger(ResourcesServiceImp.class); @Override public List resAuthorized(int userId, String type) { return ((ResourcesDao) baseDao).resAuthorized(userId, type); } @Override public List findMenuTree(int userId, String layer) { return ((ResourcesDao) baseDao).findMenuTree(userId, layer); } @Override public List getResources(int roleId) { return ((ResourcesDao) baseDao).getResources(roleId); } @Override @Transactional public void updateResouces(int roleId, String chks) { String val = ""; ResourcesDao resDao = (ResourcesDao) baseDao; // 事务删除 if (StringUtils.isNotBlank(chks)) { String[] chk = chks.split(","); try { resDao.deleteRoleResouces(roleId); for (int i = 0; i < chk.length; i++) { val += "("+roleId+","+chk[i]+"),"; } val = val.substring(0,val.length() - 1); String sql = " insert into pm_role_resources (ROLE_ID,RES_ID) values"+val; System.out.println(sql); jdbcTemplate.execute(sql); /*int resId = Integer.parseInt(s); resDao.insertRoleResouce(roleId, resId);*/ } catch (Exception e) { logger.error("插入角色资源表失败!", e); throw e; } } } @Override public List listResources(ResourcesBean o) { return ((ResourcesDao) baseDao).listResources(o); } @Override public int tranDeleteBatch(List os) { int res = 0; ResourcesDao dao = (ResourcesDao) baseDao; int childCount = dao.childBatchCount(os); if (childCount == 0) { dao.deleteBatch(os); res = 1; } return res; } @Override public synchronized int updateMenu(ResourcesBean o) { int res = 0; if (!StringUtils.equals(o.getId() + "", o.getParentId())) { ResourcesDao dao = ((ResourcesDao) baseDao); o.setUrl(StringUtils.trim(o.getUrl())); // 只有父级为0的菜单才能修改层级 ResourcesBean r = dao.findAndson(o); // 层级发生改变才修改层级,优化速度 if (o.getLayer() != r.getLayer()) { List rs = new ArrayList(); setAllSonRes(rs, r); dao.updateBatchLayer(rs, String.valueOf(o.getLayer())); } dao.updateByPrimaryKeySelective(o); res = 1; } else { res = 2; } return res; } private void setAllSonRes(List list, ResourcesBean res) { list.add(res.getId() + ""); List nodes = res.getNodes(); if (nodes != null && nodes.size() > 0) { for (ResourcesBean r : nodes) { setAllSonRes(list, r); } } } @Override public int tranDelete(ResourcesBean o) { int res = 0; ResourcesDao dao = (ResourcesDao) baseDao; String resId = o.getId() + ""; int childCount = dao.childCount(resId); if (childCount == 0) { dao.deleteByPrimaryKey(o.getId()); res = 1; } return res; } @Override public RoleResBean[] getUnreadInfo(RoleResBean o) { return roleResDao.findListByRoleId(o); } @Override public List findBtns(UserBean o) { return resDao.findBtnsList(o); } }