SysRoleServiceImpl.java 8.48 KB
package com.zteits.sys.biz;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

import com.zteits.clouds.api.apibase.exception.BizException;
import org.apache.commons.lang3.StringUtils;
import com.clouds.common.log.LogSelf;
import com.clouds.common.utils.BeanValidatorsUtils;
import com.clouds.common.utils.ListCopyUtil;
import com.clouds.common.utils.LogSelfFactory;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.bean.PageBean;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.dto.sys.SysRoleDTO;
import com.zteits.clouds.api.dto.sys.param.QueryRoleExistByRoleNameRequest;
import com.zteits.clouds.api.dto.sys.param.QueryRolesByUserIdRequest;
import com.zteits.clouds.api.dto.sys.param.SysRoleDeleteRequest;
import com.zteits.clouds.api.dto.sys.param.SysRolePageQueryRequest;
import com.zteits.clouds.api.dto.sys.param.SysRoleQueryByIdRequest;
import com.zteits.clouds.api.dto.sys.param.SysRoleQueryByOpIdRequest;
import com.zteits.clouds.api.dto.sys.param.SysRoleSaveRequest;
import com.zteits.clouds.api.dto.sys.param.SysRoleUpdateRequest;
import com.zteits.clouds.api.service.sys.SysRoleService;
import com.zteits.sys.dao.SysOpRoleDao;
import com.zteits.sys.dao.SysRoleDao;
import com.zteits.sys.domain.SysRole;
import com.zteits.sys.pagepaper.PageBeanUtil;

/**
 * Copyright: Copyright (c) 2017  zteits
 *
 * @ClassName: com.zteits.sys.biz
 * @Description:
 * @version: v1.0.0
 * @author: atao
 * @date: 2017/4/24   上午10:44
 * Modification History:
 * Date         Author          Version      Description
 * ---------------------------------------------------------*
 * 2017/4/24      atao          v1.0.0          创建
 */
@Service("com.zteits.sys.biz.SysRoleServiceImpl")
public class SysRoleServiceImpl implements SysRoleService {

    private static final LogSelf log = LogSelfFactory.getLogSelf(SysRoleServiceImpl.class);

    @Autowired
    private SysRoleDao sysRoleDao;
    @Autowired
    private SysOpRoleDao sysOpRoleDao;

    @Override
    public BizResult<Integer> deleteSysRole(SysRoleDeleteRequest request)  {
    	//验证参数
    	BeanValidatorsUtils.validateWithException(request);
        //逻辑删除
        int num = sysRoleDao.logicDeleteBatchSysRoleByIds(request.getOpId(),request.getRoleIds(), request.getSysCode());
        
        return new BizResult<>(num);
    }

    @Override
    @Transactional
    public BizResult<Integer> saveSysRole(SysRoleSaveRequest request)  {
    	//验证参数
    	BeanValidatorsUtils.validateWithException(request);
        //保存角色信息
        SysRole sysRole = new SysRole();
        sysRole.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
        sysRole.setRoleName(request.getRoleName());
        sysRole.setCreateEmpid(request.getOperId());
        sysRole.setCreateEmpname(request.getOperName());
        sysRole.setCreateDate(new Date());
        sysRole.setModfiyDate(new Date());
        sysRole.setModfiyEmpid(request.getOperId());
        sysRole.setRoleDesc(request.getRoleDesc());
        sysRole.setSysCode(request.getSysCode());
        sysRole.setOrgId(request.getOrgId());
        int num = sysRoleDao.saveSysRole(sysRole);
        return new BizResult<>(num);
    }

    @Override
    @Transactional
    public BizResult<Integer> updateSysRole(SysRoleUpdateRequest request)  {
    	//验证参数
    	BeanValidatorsUtils.validateWithException(request);

        SysRole sysRole = sysRoleDao.querySysRoleById(request.getId(), request.getSysCode());
        if (null == sysRole) {
            throw new BizException(ErrorType.OBJECT_NOT_EXISTS, "角色ID[" + request.getId() + "]");
        }
        if (!request.getSysCode().equals(sysRole.getSysCode())) {
        	throw new BizException(ErrorType.OBJECT_BELONG_ERROR,
                    String.format("角色ID[%s]不存在或不归属于系统编码[%s]", request.getId(), request.getSysCode()));
        }
        //更新角色
        sysRole.setRoleName(request.getRoleName());
        sysRole.setModfiyDate(new Date());
        sysRole.setModfiyEmpid(request.getOperId());
        sysRole.setRoleDesc(request.getRoleDesc());
        sysRole.setSysCode(request.getSysCode());
        sysRole.setId(request.getId());
         sysRole.setOrgId(request.getOrgId());
        
        int num = sysRoleDao.updateSysRole(sysRole);
        return new BizResult<>(num);
    }


    @Override
    public BizResult<SysRoleDTO> querySysRoleById(SysRoleQueryByIdRequest request)  {

    	//验证参数
    	BeanValidatorsUtils.validateWithException(request);

        SysRole sysRole = sysRoleDao.querySysRoleById(request.getId(), request.getSysCode());
        SysRoleDTO dto = new SysRoleDTO();
        BeanUtils.copyProperties(sysRole, dto);
        return new BizResult<>(dto);
    }



    /**
     * 根据系统编码查询所有角色wangfs Edit .<br>
     *
     * @param request
     * @return 
     */
    @Override
    public BizResult<List<SysRoleDTO>> queryRoleBySysCode(SysRoleQueryByOpIdRequest request)  {
    	List<SysRoleDTO> list = new ArrayList<SysRoleDTO>();
    	if(request == null || StringUtils.isEmpty(request.getSysCode())){
    		throw new BizException(ErrorType.PARAMM_NULL, "入参系统编码为空");
    	}else{
    		List<SysRole> roleDOList = sysRoleDao.queryRoleBySysCode(request);
    		if(!CollectionUtils.isEmpty(roleDOList)){
    			for(SysRole sysRole:roleDOList){
    				if(sysRole != null){
    					SysRoleDTO sysRoleDTO = new SysRoleDTO();
    					BeanUtils.copyProperties(sysRole, sysRoleDTO);
    					list.add(sysRoleDTO);
    				}
    			}
    		}
    	}
        return new BizResult<List<SysRoleDTO>>(list);
    }

	@Override
	public BizResult<PageBean<SysRoleDTO>> pageQuerySysRole(SysRolePageQueryRequest request) {
		SysRole sysRole = new SysRole();
		BeanUtils.copyProperties(request, sysRole);
		PageInfo<SysRole> pageInfo = sysRoleDao.queryPageSysRole(sysRole , request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize(), request.getSysCode());
		
		PageBean<SysRoleDTO> pageBean = new PageBean<SysRoleDTO>();
		PageBeanUtil.copyProperties(pageInfo, pageBean, SysRoleDTO.class);
		return new BizResult<PageBean<SysRoleDTO>>(pageBean);
	}

	@Override
	public BizResult<PageBean<SysRoleDTO>> queryPageSysRoleForList(SysRolePageQueryRequest request) {
		SysRole sysRole = new SysRole();
		BeanUtils.copyProperties(request, sysRole);
		PageInfo<SysRole> pageInfo = sysRoleDao.queryPageSysRoleForList(sysRole, request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize(), request.getSysCode());
		
		PageBean<SysRoleDTO> pageBean = new PageBean<SysRoleDTO>();
		PageBeanUtil.copyProperties(pageInfo, pageBean, SysRoleDTO.class);
		return new BizResult<PageBean<SysRoleDTO>>(pageBean);
	}

	@Override
	public BizResult<Boolean> isUsedForRoleByRoleId(SysRoleQueryByIdRequest request) {
		//验证参数
    	BeanValidatorsUtils.validateWithException(request);
    	List<Long> ids = Lists.newArrayList();
    	ids.add(request.getId());
        List<Long> opIds = sysOpRoleDao.queryOpIdsByRoleId(ids,DataStatusEnum.DATA_STATUS_VALID.value(), request.getSysCode());
        return new BizResult<Boolean>(!CollectionUtils.isEmpty(opIds));
	}

	@Override
	public BizResult<List<SysRoleDTO>> queryRolesByUserId(QueryRolesByUserIdRequest queryRolesByUserIdRequest)
			throws Exception {
		List<SysRoleDTO>  list = new ArrayList<SysRoleDTO>();
		if(queryRolesByUserIdRequest == null){
    		throw new BizException(ErrorType.PARAMM_NULL, "入参系统编码为空");
    	}else{
    		List<SysRole> roleList = sysRoleDao.queryRolesByUserId(queryRolesByUserIdRequest);
    		ListCopyUtil.listCopyProperties(roleList, list, SysRoleDTO.class);
    	}
		return new BizResult<List<SysRoleDTO>>(list);
	}

	@Override
	public BizResult<Boolean> queryRoleExistByRoleName(
			QueryRoleExistByRoleNameRequest queryRoleExistByRoleNameRequest) {
		Boolean  flg = sysRoleDao.queryRoleExistByRoleName(queryRoleExistByRoleNameRequest);
		return new BizResult<Boolean>(flg);
	}

	@Override
	public BizResult<Integer> updateSysRoleOrgIdByOpOrgId(SysRoleUpdateRequest request) {
		
		return sysRoleDao.updateSysRoleOrgIdByOpOrgId(request);
	}   

}