package com.zteits.sys.dao.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.apache.commons.collections4.CollectionUtils;
import com.clouds.common.utils.MD5Utils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.dto.sys.param.QuerySysOpByorgIdsReq;
import com.zteits.clouds.api.dto.sys.param.SysOpDeleteRequest;
import com.zteits.clouds.api.dto.sys.param.SysOpForPageRequest;
import com.zteits.clouds.api.dto.sys.param.SysOpQueryMenuRequest;
import com.zteits.clouds.api.dto.sys.param.SysOpQueryRequest;
import com.zteits.clouds.api.dto.sys.param.SysOpRoleSaveOrModfiyRequest;
import com.zteits.clouds.api.dto.sys.param.SysOpSaveOrModfiyRequest;
import com.zteits.clouds.api.dto.sys.param.SysOpUpdatePasswordRequest;
import com.zteits.clouds.api.dto.sys.param.UpdateSysOpOrgIdRequest;
import com.zteits.sys.biz.SysOpServiceImpl;
import com.zteits.sys.dao.SysOpDao;
import com.zteits.sys.domain.SysOp;
import com.zteits.sys.domain.SysRes;
import com.zteits.sys.mapper.SysOpMapper;
import com.zteits.sys.mapper.smapper.SysOpOrgSmapper;
import com.zteits.sys.mapper.smapper.SysOpRoleSmapper;
import com.zteits.sys.mapper.smapper.SysOpSmapper;
/**
* 系统用户dao接口实现类.
*
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: UserDao.java
* @Description:
* @version: v1.0.0
* @author: wangfs
* @date: 2017年4月21日 下午5:47:27
* Modification History:
* Date Author Version Description
*---------------------------------------------------------*
* 2017年4月21日 wangfs v1.0.0 创建
*/
@Component
public class SysOpDaoImpl implements SysOpDao {
private static final Logger logger = LoggerFactory.getLogger(SysOpDaoImpl.class);
@Autowired
private SysOpSmapper sysOpSmapper;
@Autowired
private SysOpMapper sysOpMapper;
/**
* 用户角色关系smapper.
*/
@Autowired
private SysOpRoleSmapper sysOpRoleSmapper;
@Autowired
private SysOpOrgSmapper sysOpOrgSmapper;
@Override
public List querySysOpByIds(List opIds, Integer dataStatus, String sysCode) throws Exception {
return sysOpSmapper.querySysOpByIds(opIds, dataStatus, sysCode);
}
@Override
public SysOp querySysOp(SysOpQueryRequest sysOpQueryRequest) throws Exception {
SysOp sysOp = new SysOp();
BeanUtils.copyProperties(sysOpQueryRequest, sysOp);
return sysOpSmapper.querySysOp(sysOp);
}
@Override
public PageInfo queryUserForPage(SysOp sysOp,Integer pageSize,Integer pageNum) throws Exception {
// 1.设置分页信息
PageHelper.startPage(pageNum,pageSize);
//2.查询数据
List list = sysOpSmapper.querySysOpForList(sysOp);
return (list != null && list.size() >0) ? new PageInfo(list):new PageInfo(new ArrayList());
}
@Transactional
@Override
public Boolean deleteSysOp(SysOp sysOp) throws Exception {
int updateCount = sysOpSmapper.updateByPrimaryKeySelective(sysOp);
return updateCount >0 ? true :false;
}
@Transactional
@Override
public Boolean saveSysOp(SysOp sysOp) throws Exception {
int saveCount = sysOpSmapper.saveSysOp(sysOp);
return saveCount >0 ? true :false;
}
@Transactional
@Override
public Boolean modfiySysOp(SysOp sysOp) throws Exception {
int updateCount = sysOpSmapper.updateByPrimaryKeySelective(sysOp);
return updateCount >0 ? true :false;
}
/**
* 保存/修改用户与角色关系.
* 保存修改处理逻辑:
* 1.先删除掉用户角色关系.
* 2.然后全量保存.
* @param SysOpRoleSaveOrModfiyRequest
* @return
*/
@Transactional
@Override
public Boolean saveOrModfiySysOpAndSysRoleRelation(SysOpRoleSaveOrModfiyRequest sysOpRoleSaveOrModfiyRequest)
throws Exception {
int insertCount = 1;
logger.info("--begin通过操作员id删除用户角色关系,入参={}",sysOpRoleSaveOrModfiyRequest.getSysOpId());
//1.通过操作员id + sysCode删除用户角色关系
int deleteCount = sysOpRoleSmapper.deleteSysOpRoleByOpId(sysOpRoleSaveOrModfiyRequest.getSysOpId());
logger.info("--end通过操作员id删除用户角色关系,结果={} 条.",deleteCount );
logger.info("--begin插入用户角色关系信息...");
if(sysOpRoleSaveOrModfiyRequest.getSysRoleIdList() != null && sysOpRoleSaveOrModfiyRequest.getSysRoleIdList().size() >0){
//2.插入用户角色关系
insertCount = sysOpRoleSmapper.batchSaveSysOpRole(sysOpRoleSaveOrModfiyRequest.getSysCode(), sysOpRoleSaveOrModfiyRequest.getSysOpId(),
sysOpRoleSaveOrModfiyRequest.getSysRoleIdList(),sysOpRoleSaveOrModfiyRequest.getCreateEmpid(),
sysOpRoleSaveOrModfiyRequest.getCreateDate(),sysOpRoleSaveOrModfiyRequest.getModfiyEmpid(),
sysOpRoleSaveOrModfiyRequest.getModfiyDate());
}
logger.info("--end插入用户角色关系信息...成功插入{}条.",insertCount);
return insertCount > 0 ? true :false;
}
/**
* 通过操作员Id查询菜单.
* 步骤:
* 1.通过操作员id 查询职能list.
* 2.通过职能listId 查询菜单.
* @param sysOpQueryMenuRequest
* @return
* @throws Exception
*/
@Override
public List queryMenuBySysOpId(SysOpQueryMenuRequest sysOpQueryMenuRequest) throws Exception {
List resList = new ArrayList();
//1.通过操作员id 查询职能list
List jobfuncIdList = sysOpSmapper.querySysJobfuncBySysOpId(sysOpQueryMenuRequest.getSysOpId());
if(CollectionUtils.isNotEmpty(jobfuncIdList)){
//2.通过职能listId 查询菜单
resList = sysOpSmapper.queryMenuByJobIdList(jobfuncIdList);
}
return resList;
}
/**
* 添加用户与角色关系.
*
* @param sysOpRoleSaveOrModfiyRequest
* @return
*/
@Transactional
@Override
public Boolean insertSysOpAndSysRoleRelation(SysOpRoleSaveOrModfiyRequest sysOpRoleSaveOrModfiyRequest)
throws Exception {
int insertCount = 0;
//插入用户角色关系
insertCount = sysOpRoleSmapper.batchSaveSysOpRole(sysOpRoleSaveOrModfiyRequest.getSysCode(), sysOpRoleSaveOrModfiyRequest.getSysOpId(),
sysOpRoleSaveOrModfiyRequest.getSysRoleIdList(),sysOpRoleSaveOrModfiyRequest.getCreateEmpid(),
sysOpRoleSaveOrModfiyRequest.getCreateDate(),sysOpRoleSaveOrModfiyRequest.getModfiyEmpid(),
sysOpRoleSaveOrModfiyRequest.getModfiyDate());
return insertCount > 0 ? true :false;
}
@Transactional
@Override
public Boolean modfiySysOpPassword(SysOpUpdatePasswordRequest request) {
SysOp sysOp = new SysOp();
BeanUtils.copyProperties(request, sysOp);
sysOp.setLoginPassword(MD5Utils.enMD5(request.getLoginPassword()));
// 更新密码最后修改时间
sysOp.setLastPasswordUpdateTime(new Date());
int updateCount = sysOpMapper.updateByPrimaryKeySelective(sysOp);
return updateCount >0 ? true :false;
}
@Override
public SysOp loginCodeIsUsed(String loginCode) throws Exception {
return sysOpSmapper.loginCodeIsUsed(loginCode);
}
@Override
public Boolean updateSysOpOrgIdByOpId(UpdateSysOpOrgIdRequest updateSysOpOrgIdRequest) {
SysOp sysOp = new SysOp();
sysOp.setId(updateSysOpOrgIdRequest.getOpId());
sysOp.setOrgId(updateSysOpOrgIdRequest.getOrgId());
int updateCount = sysOpMapper.updateByPrimaryKeySelective(sysOp);
return updateCount > 0 ? true : false;
}
/**
* 通过组织ids查询用户信息
* @param request
* @return
* 2018年4月9日 wangfs.
*/
@Override
public List querySysOpByorgIds(List orgIds) {
return sysOpSmapper.querySysOpByorgIds(orgIds);
}
}