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<Role> 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<Integer> getRoleIds(int accountId) {
|
AccountRole accountRole = new AccountRole();
|
accountRole.setAccountId(accountId);
|
List<AccountRole> accountRoleList = accountRoleMapper.select(accountRole);
|
List<Integer> 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<AccountRole> 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<Menu> menuListInfo = menuMapper.getMenuListInfo();
|
Map<Integer, Integer> menuMap = new HashMap<>();
|
for (Menu m : menuListInfo) {
|
menuMap.put(m.getMenuOrder(), m.getId());
|
}
|
if (menuOrders != null && menuOrders.length > 0) {
|
List<RoleMenu> 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<Role> queryByPageBean(PageBean pageBean) {
|
return MyBatisBaseMapUtil.queryPage(roleMapper, pageBean, ENTITY_CLASS);
|
}
|
|
}
|