RoleServiceImpl.java 3.14 KB
package com.bsth.service.sys.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bsth.common.ResponseCode;
import com.bsth.entity.sys.Module;
import com.bsth.entity.sys.Role;
import com.bsth.entity.sys.SysUser;
import com.bsth.repository.sys.ModuleRepository;
import com.bsth.repository.sys.RoleRepository;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.service.sys.RoleService;

@Service
public class RoleServiceImpl extends BaseServiceImpl<Role, Integer> implements
		RoleService {

	Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired
	RoleRepository roleRepository;

	@Autowired
	ModuleRepository moduleRepository;

	SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm");

	@Override
	public Map<String, Object> save(Role t) {
		if (t.getId() != null) {
			// 更新
			Map<String, Object> map = new HashMap<>();
			try {
				roleRepository.update(t.getCodeName(), t.getRoleName(),
						t.isEnable(), t.getDescriptions(), t.getId());
				map.put("status", ResponseCode.SUCCESS);
			} catch (Exception e) {
				map.put("status", ResponseCode.ERROR);
			}
			return map;
		}
		return super.save(t);
	}

	@Override
	public Map<String, Object> settRoleModules(Integer roleId, String mIds) {

		Map<String, Object> map = new HashMap<>();
		try {
			Role role = roleRepository.findOne(roleId);

			List<Integer> idList = new ArrayList<>();
			String[] array = mIds.split(",");
			for (String id : array) {
				if (null == id || id.trim().equals(""))
					continue;
				idList.add(Integer.parseInt(id));
			}

			Set<Module> mList = moduleRepository.findByIds(idList);
			role.setModules(mList);
			roleRepository.save(role);
			map.put("status", ResponseCode.SUCCESS);
		} catch (Exception e) {
			logger.error("", e);
			map.put("status", ResponseCode.ERROR);
		}
		return map;
	}

	@Override
	public Map<String, Object> roleInfo(Integer id) {
		Map<String, Object> map = new HashMap<>();
		Role role = roleRepository.findOne(id);
		map.put("codeName", role.getCodeName());
		map.put("roleName", role.getRoleName());
		map.put("createDate", sdfMinute.format(role.getCreateDate()));
		map.put("updateDate", sdfMinute.format(role.getUpdateDate()));
		map.put("enable", role.isEnable()==true?1:0);
		map.put("descriptions", role.getDescriptions());
		map.put("modules", role.getModules().size());
		map.put("resources", role.getResources().size());
		String userNames = "";
		Set<SysUser> users = role.getUsers();
		if(!users.isEmpty()){
			Iterator<SysUser> it = users.iterator();
			while(it.hasNext()){
				SysUser user = it.next();
				userNames = user.getUserName()+"...";
			}
		}
		map.put("userNames", userNames);
		return map;
	}

	@Override
	public List<Role> findAllByIds(String ids) {
		return roleRepository.findAllById(ids);
	}
}