/*
* 版权声明 .
* 此文档的版权归通联支付网络服务有限公司所有
* Powered By [Allinpay-Boss-framework]
*/
package com.allinpay.its.boss.system.permission.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.allinpay.its.boss.framework.utils.Page;
import com.allinpay.its.boss.framework.utils.SessionUtil;
import com.allinpay.its.boss.framework.utils.WebConstant;
import com.allinpay.its.boss.system.menu.model.FrameworkSysMenu;
import com.allinpay.its.boss.system.menu.service.FrameworkSysMenuServiceImpl;
import com.allinpay.its.boss.system.permission.dao.IFrameworkSysRoleDao;
import com.allinpay.its.boss.system.permission.dao.impl.FrameworkSysRoleDaoImpl;
import com.allinpay.its.boss.system.permission.model.FrameworkPermAssign;
import com.allinpay.its.boss.system.permission.model.FrameworkSysPermission;
import com.allinpay.its.boss.system.permission.model.FrameworkSysRole;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
@Service
// 默认将类中的所有函数纳入事务管理.
@Transactional
public class FrameworkSysRoleServiceImpl {
@Autowired
private IFrameworkSysRoleDao frameworkSysRoleDao;
@Resource
private FrameworkSysRoleDaoImpl myBatisDao;
@Resource
private FrameworkPermAssignServiceImpl frameworkPermAssignService;
@Resource
private FrameworkSysMenuServiceImpl menuService;
@Autowired
private FrameworkSysPermissionServiceImpl frameworkSysPermissionService;
/**
* 新增
*
* @param POJO对象
* @return String
*/
public String add(FrameworkSysRole frameworkSysRole) {
// 保存申请信息
myBatisDao.save(frameworkSysRole);
return null;
}
/**
* 删除
*
* @param POJO对象
* @return String
*/
public String delete(int pk_id) {
myBatisDao.deleteById(pk_id);
return null;
}
/**
* 新增修改 有唯一主键,且主键自动生成不可编辑时
*
* @param POJO对象
* @return String
*/
// public String saveOrUpdate(FrameworkSysRole frameworkSysRole) {
//
// // 保存申请信息
// if(frameworkSysRole.getPk() != null)
// frameworkSysRoleDao.update(frameworkSysRole);
// else
// frameworkSysRoleDao.save(frameworkSysRole);
//
// return null;
// }
/**
* 新增修改
*
* @param POJO对象
* @return String
*/
public String update(FrameworkSysRole frameworkSysRole) {
// 保存申请信息
myBatisDao.update(frameworkSysRole);
return null;
}
/**
* 分页查询
*
* @param POJO对象
* @param pageIndex
* 当前页页数
* @param pageSize
* 每页记录数
* @return Page
*/
public Page findFrameworkSysRoles(FrameworkSysRole frameworkSysRole,
int pageIndex, int pageSize) {
frameworkSysRole.setState(WebConstant.DATA_EXIST);
return myBatisDao.pageBy(null, null, frameworkSysRole, pageIndex,
pageSize);
}
/**
* 根据主键对象获取信息
*
* @param POJO对象
* @return FrameworkSysRole
*/
public List<FrameworkSysRole> getFrameworkSysRoleListByObj(
FrameworkSysRole frameworkSysRole) {
return frameworkSysRoleDao.findListByObj(frameworkSysRole);
}
/**
* 根据主键获取信息
*
* @param POJO对象
* @return FrameworkSysRole
*/
public FrameworkSysRole getFrameworkSysRoleByPk(int pk_Id) {
return frameworkSysRoleDao.findByPKId(pk_Id);
}
/**
* 根据条件获取信息
*
* @param POJO对象
* @return FrameworkSysRole返回第一个符合条件的对象,适合条件能唯一定位记录的应用场景
*/
public List<FrameworkSysRole> getFrameworkSysRoleListBySql(
FrameworkSysRole frameworkSysRole) {
return frameworkSysRoleDao.findListBySqlId("selectFrameworkSysRoles",
frameworkSysRole);
}
/**
* 保存系统角色操作
*
* @param model
*/
public void saveSysRole(FrameworkSysRole model) {
model.setState(WebConstant.DATA_EXIST);
// model.setCreateUserId();
// model.setModifyUserId("");
add(model);
String[] permits = null;
String pmcheckStrs = model.getPmcheckStrs();
if(StringUtils.isNotBlank(pmcheckStrs)){
permits = pmcheckStrs.split(",");// 权限集合
}
if (permits != null && permits.length > 0) {// 添加角色权限
FrameworkPermAssign permAssign = null;
for (String permitId : permits) {
permAssign = new FrameworkPermAssign();
permAssign.setUserDepId(model.getId());
permAssign.setUserDepType(WebConstant.PERMASSIGN_ROLE);
permAssign.setPermId(Long.valueOf(permitId));
permAssign.setState(WebConstant.DATA_EXIST);
permAssign.setCreateTime(new Date());
// permAssign.setCreateUserId(getCurrentUserId());
permAssign.setModifyTime(new Date());
// permAssign.setModifyUserId(getCurrentUserId());
// FrameworkSysPermission permit = frameworkSysPermissionService
// .getFrameworkSysPermissionByPk(permAssign.getPermId()
// .intValue());
frameworkPermAssignService.add(permAssign);
permAssign = null;
}
}
}
public void modifySysRole(FrameworkSysRole model) {
model.setState(WebConstant.DATA_EXIST);
model.setModifyTime(new Date());
// model.setModifyUserId(this.getCurrentUserId());
myBatisDao.update(model);
String[] permits = null;
String pmcheckStrs = model.getPmcheckStrs();
if(StringUtils.isNotBlank(pmcheckStrs)){
permits = pmcheckStrs.split(",");// 权限集合
}
if (permits != null && permits.length > 0) {// 修改角色权限
// 先进行删除操作
frameworkPermAssignService.delPermAssign(model.getId());
for (String permitId : permits) {
FrameworkPermAssign permAssign = frameworkPermAssignService
.findPermAssign(model.getId(), Long.parseLong(permitId));
if (permAssign == null || permAssign.getId() == null) {
permAssign = new FrameworkPermAssign();
}
permAssign.setUserDepId(model.getId()); // 角色ID
permAssign.setUserDepType(WebConstant.PERMASSIGN_ROLE);
permAssign.setPermId(Long.valueOf(permitId));
permAssign.setState(WebConstant.DATA_EXIST);
permAssign.setModifyTime(new Date());
// permAssign.setModifyUserId(this.getCurrentUserId());
if (permAssign == null || permAssign.getId() == null) {
permAssign.setCreateTime(new Date());
// permAssign.setCreateUserId(this.getCurrentUserId());
frameworkPermAssignService.add(permAssign);
} else {
frameworkPermAssignService.update(permAssign);
}
}
}
}
public void initModifySysRole(int pk_Id, Model springModel,Map<String, Object> userInfMap) {
//当前登录用户信息
String userName = SessionUtil.getLoginUserName(userInfMap);
Long userId = SessionUtil.getLoginUserId(userInfMap);
FrameworkSysRole frameworkSysRole = getFrameworkSysRoleByPk(pk_Id);
List<FrameworkPermAssign> listPermAssign = frameworkPermAssignService
.getFrameworkPermAssignListByObj(new FrameworkPermAssign(
frameworkSysRole.getId(), WebConstant.PERMASSIGN_ROLE,
WebConstant.DATA_EXIST));
StringBuffer rolePermitsBuffer = new StringBuffer();
for (FrameworkPermAssign permAssign : listPermAssign) {
rolePermitsBuffer.append(permAssign.getPermId() + ",");
}
springModel.addAttribute("rolePermits", rolePermitsBuffer.toString());
// 权限列表查询
List<FrameworkSysMenu> listMenu = menuService.getMenuList();
List<FrameworkSysMenu> parentListMenu = menuService
.getMenuList(new FrameworkSysMenu(Long.parseLong("0")));// 一级菜单
// List<FrameworkSysMenu> nlistMenu = new ArrayList<FrameworkSysMenu>();
HashMap<Long, List<FrameworkSysMenu>> hashMap = new HashMap<Long, List<FrameworkSysMenu>>();
if(StringUtils.isNotBlank(userName) && userId != null){
FrameworkSysPermission permission = null;
List<FrameworkSysPermission> listPermission = null;
for (FrameworkSysMenu menu : listMenu) {
if (!StringUtils.equals("0", String.valueOf(menu.getPid()))) {// 除了一级菜单
//针对超级管理员不过滤
if(StringUtils.endsWithIgnoreCase(userName, SessionUtil.SUPPERUSERS)){
permission = new FrameworkSysPermission(null, menu.getId());
listPermission = frameworkSysPermissionService
.getFrameworkSysPermissionListByObj(permission);
}else{
listPermission = frameworkSysPermissionService
.getPermListByUserIdOrMenuId(userId.intValue(), menu.getId().intValue());
}
if (listPermission != null && listPermission.size() > 0) {
menu.setListPermission(listPermission);
}
List<FrameworkSysMenu> childList = new ArrayList<FrameworkSysMenu>();
if (hashMap.get(menu.getPid()) != null) {
childList = (List<FrameworkSysMenu>) hashMap.get(menu
.getPid());
}
childList.add(menu);
hashMap.put(menu.getPid(), childList);
permission = null;
}
// nlistMenu.add(menu);
}
}
springModel.addAttribute("parentListMenu", parentListMenu);// 一级菜单
springModel.addAttribute("hashMap", hashMap);// 三级菜单
springModel.addAttribute("infos", frameworkSysRole);
}
/**
* 新增界面初始化数据
*
* @param model
*/
public void addFrameworkSysRoleToPage(Model model,Map<String, Object> userInfMap) {
//当前登录用户信息
String userName = SessionUtil.getLoginUserName(userInfMap);
Long userId = SessionUtil.getLoginUserId(userInfMap);
List<FrameworkSysMenu> listMenu = null;
List<FrameworkSysMenu> parentListMenu = menuService
.getMenuList(new FrameworkSysMenu(Long.parseLong("0")));// 一级菜单
HashMap<Long, List<FrameworkSysMenu>> hashMap = new HashMap<Long, List<FrameworkSysMenu>>();
if(StringUtils.isNotBlank(userName) && userId != null){
listMenu = menuService.getMenuList();
// List<FrameworkSysMenu> nlistMenu = new ArrayList<FrameworkSysMenu>();
FrameworkSysPermission permission = null;
List<FrameworkSysPermission> listPermission = null;
//
for (FrameworkSysMenu menu : listMenu) {
if (!StringUtils.equals("0", String.valueOf(menu.getPid()))) {// 除了一级菜单
//针对超级管理员不过滤
if(StringUtils.endsWithIgnoreCase(userName, SessionUtil.SUPPERUSERS)){
permission = new FrameworkSysPermission(null, menu.getId());
listPermission = frameworkSysPermissionService
.getFrameworkSysPermissionListByObj(permission);
}else{
listPermission = frameworkSysPermissionService
.getPermListByUserIdOrMenuId(userId.intValue(), menu.getId().intValue());
}
}
if (listPermission != null && listPermission.size() > 0) {
menu.setListPermission(listPermission);
}
List<FrameworkSysMenu> childList = new ArrayList<FrameworkSysMenu>();
if (hashMap.get(menu.getPid()) != null) {
childList = (List<FrameworkSysMenu>) hashMap.get(menu
.getPid());
}
childList.add(menu);
hashMap.put(menu.getPid(), childList);
permission = null;
}
// nlistMenu.add(menu);
}
model.addAttribute("parentListMenu", parentListMenu);// 一级菜单
model.addAttribute("hashMap", hashMap);// 三级菜单
}
/**
* 删除角色
* @param pk_Id
*/
public void deleteSysRole(int pk_Id) {
// 先进行删除操作
frameworkPermAssignService.delPermAssign(Long.parseLong(String
.valueOf(pk_Id)));
deleteSysrole(pk_Id);
}
/**
* 逻辑删除角色
* @param pk_Id
*/
public void deleteSysrole(int pk_Id){
FrameworkSysRole sysRole = new FrameworkSysRole();
sysRole.setId(Long.parseLong(String.valueOf(pk_Id)));
sysRole.setState(WebConstant.DATA_DEL);
update(sysRole);
}
}