package com.moral.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.github.pagehelper.PageHelper; import com.moral.common.bean.Constants; import com.moral.common.bean.PageBean; import com.moral.common.util.ExampleUtil; import com.moral.common.util.MyBatisBaseMapUtil; import com.moral.entity.AccountRole; import com.moral.entity.Menu; import com.moral.entity.Role; import com.moral.entity.RoleMenu; import com.moral.mapper.AccountRoleMapper; import com.moral.mapper.MenuMapper; import com.moral.mapper.RoleMapper; import com.moral.mapper.RoleMenuMapper; import com.moral.service.RoleService; import com.moral.util.TkMybatisUtils; import tk.mybatis.mapper.entity.Example; @Service public class RoleServiceImpl implements RoleService { private static Class ENTITY_CLASS = Role.class; @Resource RoleMapper roleMapper; @Resource RoleMenuMapper roleMenuMapper; @Resource MenuMapper menuMapper; @Resource AccountRoleMapper accountRoleMapper; @Override @Transactional public void addOrModify(Role role) { try { role.setUpdateTime(new Date()); role.setUpdateUser(role.getUpdateUser()); if (role.getId() != null) { roleMapper.updateByPrimaryKeySelective(role); } else { Role roleQuery = new Role(); roleQuery.setRoleCode(role.getRoleCode()); roleQuery.setIsDelete(Constants.IS_DELETE_FALSE); Role roleResult = roleMapper.selectOne(roleQuery); if (roleResult == null) { role.setIsDelete(Constants.IS_DELETE_FALSE); role.setCreateTime(new Date()); role.setCreateUser(role.getCreateUser()); roleMapper.insertSelective(role); } } } catch (Exception ex) { throw ex; } } @Override public int countByExample(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean); TkMybatisUtils.addDeletesToExample(example); return roleMapper.selectCountByExample(example); } @Override public PageBean getRoleList(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean); TkMybatisUtils.addDeletesToExample(example); if (pageBean.getPageSize() > 0) { PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize()); } List roleList = roleMapper.getRoleList(example); return new PageBean(roleList); } @Override @Transactional public void deleteByIds(Integer... ids) { Role role = new Role(); role.setIsDelete(Constants.IS_DELETE_TRUE); Example example = new Example(ENTITY_CLASS); example.or().andIn("id", Arrays.asList(ids)); roleMapper.updateByExampleSelective(role, example); } @Override public List getRoleIds(int accountId) { AccountRole accountRole = new AccountRole(); accountRole.setAccountId(accountId); List accountRoleList = accountRoleMapper.select(accountRole); List roleIds = new ArrayList<>(); for (AccountRole accRole : accountRoleList) { roleIds.add(accRole.getRoleId()); } return roleIds; } @Override public void allotRole(Integer accountId, Integer[] roleIds) { Example example = new Example(AccountRole.class); example.or().andEqualTo("accountId", accountId); accountRoleMapper.deleteByExample(example); if (roleIds != null && roleIds.length > 0) { List accountRoleList = new ArrayList<>(); for (int roleId : roleIds) { AccountRole accountRole = new AccountRole(); accountRole.setAccountId(accountId); accountRole.setRoleId(roleId); accountRoleList.add(accountRole); } accountRoleMapper.insertList(accountRoleList); } } @Override public void allotMenu(Integer roleId, Integer[] menuOrders) { Example example = new Example(RoleMenu.class); example.or().andEqualTo("roleId", roleId); roleMenuMapper.deleteByExample(example); List menuListInfo = menuMapper.getMenuListInfo(); Map menuMap = new HashMap<>(); for (Menu m : menuListInfo) { menuMap.put(m.getMenuOrder(), m.getId()); } if (menuOrders != null && menuOrders.length > 0) { List roleMenuList = new ArrayList<>(); for (Integer menuOrder : menuOrders) { if (menuOrder > 10) { RoleMenu roleMenu = new RoleMenu(); roleMenu.setRoleId(roleId); roleMenu.setChannelId(Integer.valueOf(menuOrder.toString().substring(0, 1))); roleMenu.setMenuId(menuMap.get(menuOrder)); roleMenuList.add(roleMenu); } else { RoleMenu roleMenu = new RoleMenu(); roleMenu.setRoleId(roleId); roleMenu.setChannelId(menuOrder); roleMenu.setMenuId(0); roleMenuList.add(roleMenu); } } roleMenuMapper.insertList(roleMenuList); } } @Override public PageBean queryByPageBean(PageBean pageBean) { return MyBatisBaseMapUtil.queryPage(roleMapper, pageBean, ENTITY_CLASS); } }