package com.zteits.sys.biz; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONObject; import com.clouds.common.threadlocal.SysData; import com.clouds.common.utils.*; import com.github.pagehelper.PageInfo; 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.apibase.exception.BizException; import com.zteits.clouds.api.dto.sys.SysOpDTO; import com.zteits.clouds.api.dto.sys.SysResDTO; 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.SysOpOrgSaveOrModifyRequest; 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.clouds.api.service.sys.SysOpService; import com.zteits.sys.dao.SysOpDao; import com.zteits.sys.dao.SysOpOrgDao; import com.zteits.sys.dao.SysOpRoleDao; import com.zteits.sys.dao.SysOrgDao; import com.zteits.sys.domain.SysOp; import com.zteits.sys.domain.SysRes; import com.zteits.sys.pagepaper.PageBeanUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * 系统用户-dubbo服务实现类.
* * Copyright: Copyright (c) 2017 zteits * * @ClassName: SysOpServiceImpl.java * @Description: * @version: v1.0.0 * @author: wangfs * @date: 2017年4月25日 上午9:12:47 * Modification History: * Date Author Version Description * ---------------------------------------------------------* * 2017年4月25日 wangfs v1.0.0 创建 */ @Service("com.zteits.sys.biz.SysOpServiceImpl") public class SysOpServiceImpl implements SysOpService { private static final Logger logger = LoggerFactory.getLogger(SysOpServiceImpl.class); @Autowired private SysOpDao sysOpDao; @Autowired private SysOpOrgDao sysOpOrgDao; @Autowired private SysOpRoleDao sysOpRoleDao; @Autowired private SysOrgDao sysOrgDao; @Override public BizResult querySysOp(SysOpQueryRequest sysOpQueryRequest) throws Exception { logger.info("[{}]开始查询操作员对象,入参={}", ThreadLocalUtil.get(SysData.class).getRequestId(), JSONObject.toJSON(sysOpQueryRequest)); SysOpDTO sysOpDTO = new SysOpDTO(); if (sysOpQueryRequest != null) { SysOp sysOp = sysOpDao.querySysOp(sysOpQueryRequest); if (sysOp != null) { BeanUtils.copyProperties(sysOp, sysOpDTO); } else { throw new BizException(ErrorType.OBJECT_NOT_EXISTS, "用户"); } } else { throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } return new BizResult(sysOpDTO); } @Override public BizResult> queryUserForPage(SysOpForPageRequest sysOpForPageRequest) throws Exception { PageBean pageBean = new PageBean(); if (sysOpForPageRequest != null && StringUtils.isNotEmpty(sysOpForPageRequest.getSysCode())) { SysOp sysOp=new SysOp(); BeanUtils.copyProperties(sysOpForPageRequest, sysOp); sysOp.setSysCode(sysOpForPageRequest.getSysCode()); logger.info("分页查询用户dubbo入参 sysOp={}"+JSONObject.toJSONString(sysOp)); PageInfo pageInfo = sysOpDao.queryUserForPage(sysOp,sysOpForPageRequest.getBaseRequest().getPageSize(), sysOpForPageRequest.getBaseRequest().getPageNum()); if (pageInfo != null) { PageBeanUtil.copyProperties(pageInfo, pageBean, SysOpDTO.class); } } else { throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } return new BizResult>(pageBean); } @Transactional @Override public BizResult deleteSysOp(SysOpDeleteRequest sysOpDeleteRequest) throws Exception { if (sysOpDeleteRequest == null || StringUtils.isEmpty(sysOpDeleteRequest.getSysCode())) { throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } Boolean result=true; List ids=null; ids=sysOpDeleteRequest.getIds(); if(CollectionUtils.isNotEmpty(ids)){ for (Long id : ids) { SysOp sysOp = new SysOp(); BeanUtils.copyProperties(sysOpDeleteRequest, sysOp); sysOp.setId(id); Date date=new Date(); sysOp.setModfiyDate(date); sysOp.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value()); sysOp.setSysCode(sysOpDeleteRequest.getSysCode()); result=sysOpDao.deleteSysOp(sysOp); } }else{ SysOp sysOp = new SysOp(); BeanUtils.copyProperties(sysOpDeleteRequest, sysOp); Date date=new Date(); sysOp.setModfiyDate(date); sysOp.setDataState(DataStatusEnum.DATA_STATUS_NO_VALID.value()); sysOp.setSysCode(sysOpDeleteRequest.getSysCode()); result=sysOpDao.deleteSysOp(sysOp); } return new BizResult(result); } @Transactional @Override public BizResult saveSysOp(SysOpSaveOrModfiyRequest sysOpSaveOrModfiyRequest) throws Exception { BeanValidatorsUtils.validateWithException(sysOpSaveOrModfiyRequest); //校验该用户是否存在 SysOpQueryRequest sysOpQueryRequest = new SysOpQueryRequest(); sysOpQueryRequest.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); sysOpQueryRequest.setLoginCode(sysOpSaveOrModfiyRequest.getLoginCode()); SysOp sysOpQuery = sysOpDao.querySysOp(sysOpQueryRequest); if(sysOpQuery != null){ return new BizResult<>(ErrorType.BIZ_ERROR, "该用户账号已经存在!"); } //1、添加新用户 SysOp sysOp=new SysOp(); BeanUtils.copyProperties(sysOpSaveOrModfiyRequest, sysOp); String pwd="Qwe!@2341"; sysOp.setLoginPassword(MD5Utils.enMD5(pwd)); sysOp.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); Date createDate=new Date(); sysOp.setCreateDate(createDate); sysOp.setAcctStartDate(createDate); sysOp.setModfiyDate(createDate); sysOp.setSysCode(sysOpSaveOrModfiyRequest.getSysCode()); sysOp.setAcctEndDate(sysOpSaveOrModfiyRequest.getAcctEndDate()); Boolean result = sysOpDao.saveSysOp(sysOp); return new BizResult(result); } @Override public BizResult> queryOrgIdsByOpIds(SysOpQueryRequest sysOpQueryRequest) { if(sysOpQueryRequest == null || StringUtils.isEmpty(sysOpQueryRequest.getSysCode())){ throw new BizException(ErrorType.BIZ_ERROR,"入参不能为空"); } List list=sysOpOrgDao.queryOrgIdsByOpIds(sysOpQueryRequest.getIds(), sysOpQueryRequest.getDataState(), sysOpQueryRequest.getSysCode()); return new BizResult>(list); } @Transactional @Override public BizResult modfiySysOp(SysOpSaveOrModfiyRequest sysOpSaveOrModfiyRequest) throws Exception { BeanValidatorsUtils.validateWithException(sysOpSaveOrModfiyRequest); if(StringUtils.isEmpty(sysOpSaveOrModfiyRequest.getSysCode()) || null==sysOpSaveOrModfiyRequest.getId()){ throw new BizException(ErrorType.BIZ_ERROR,"用户ID和sysCode入参不能为空"); } SysOp sysOp=new SysOp(); BeanUtils.copyProperties(sysOpSaveOrModfiyRequest, sysOp); sysOp.setSysCode(sysOpSaveOrModfiyRequest.getSysCode()); sysOp.setModfiyDate(new Date()); Boolean result=sysOpDao.modfiySysOp(sysOp); return new BizResult(result); } @Override public BizResult> queryRoleIdsByOpIds(SysOpQueryRequest sysOpQueryRequest) { if(sysOpQueryRequest == null || StringUtils.isEmpty(sysOpQueryRequest.getSysCode())){ throw new BizException(ErrorType.BIZ_ERROR,"入参不能为空"); } List list=sysOpRoleDao.queryRoleIdsByOpId(sysOpQueryRequest.getIds(), sysOpQueryRequest.getDataState(), sysOpQueryRequest.getSysCode()); return new BizResult>(list); } /** * 保存/修改用户与角色关系.
* 保存修改处理逻辑: * 1.先删除掉用户角色关系主键不为空的关系. * 2.然后全量保存.
* * @param * @return */ @Transactional @Override public BizResult saveOrModfiySysOpAndSysRoleRelation( SysOpRoleSaveOrModfiyRequest sysOpRoleSaveOrModfiyRequest) throws Exception { Boolean ste = sysOpDao.saveOrModfiySysOpAndSysRoleRelation(sysOpRoleSaveOrModfiyRequest); return new BizResult(ste); } @Override public BizResult> queryOrgIdsByOpId(SysOpQueryRequest sysOpQueryRequest) { if(sysOpQueryRequest == null || StringUtils.isEmpty(sysOpQueryRequest.getSysCode())){ throw new BizException(ErrorType.BIZ_ERROR,"入参不能为空"); } if(sysOpQueryRequest.getId() != null){ sysOpQueryRequest.getIds().add(sysOpQueryRequest.getId()); } List list=sysOpOrgDao.queryOrgIdsByOpIds(sysOpQueryRequest.getIds(), sysOpQueryRequest.getDataState(), sysOpQueryRequest.getSysCode()); System.out.println(list); return new BizResult>(list); } @Override public BizResult> queryRoleIdsByOpId(SysOpQueryRequest sysOpQueryRequest) { if(sysOpQueryRequest == null || StringUtils.isEmpty(sysOpQueryRequest.getSysCode())){ throw new BizException(ErrorType.BIZ_ERROR,"入参不能为空"); } List opIds=new ArrayList(); opIds.add(sysOpQueryRequest.getId()); List list=sysOpRoleDao.queryRoleIdsByOpId(opIds, sysOpQueryRequest.getDataState(), sysOpQueryRequest.getSysCode()); System.out.println(list); return new BizResult>(list); } /** * 通过操作员Id+查询菜单.
* * @param sysOpQueryMenuRequest * @return * @throws Exception */ @Override public BizResult> queryMenuBySysOpId(SysOpQueryMenuRequest sysOpQueryMenuRequest) throws Exception { List sysResList = new ArrayList(); List sysResDTOList = new ArrayList(); if (sysOpQueryMenuRequest != null && sysOpQueryMenuRequest.getSysOpId() != null) { sysResList = sysOpDao.queryMenuBySysOpId(sysOpQueryMenuRequest); } else { throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } if (CollectionUtils.isNotEmpty(sysResList)) { for (SysRes sysRes : sysResList) { SysResDTO sysResDTO = new SysResDTO(); BeanUtils.copyProperties(sysRes, sysResDTO); sysResDTOList.add(sysResDTO); } } return new BizResult>(sysResDTOList); } @Transactional @Override public BizResult insertSysOpAndSysRoleRelation( SysOpRoleSaveOrModfiyRequest sysOpRoleSaveOrModfiyRequest) throws Exception { Boolean ste = sysOpDao.insertSysOpAndSysRoleRelation(sysOpRoleSaveOrModfiyRequest); return new BizResult(ste); } @Transactional @Override public BizResult modfiyOpPassword(SysOpUpdatePasswordRequest request) { BeanValidatorsUtils.validateWithException(request); // 密码复杂度检查 if (request != null && StringUtils.isNotEmpty(request.getLoginPassword()) && request.getId() != null) { try { // 查询当前用户信息,获取登录账号 SysOpQueryRequest sysOpQueryRequest = new SysOpQueryRequest(); sysOpQueryRequest.setId(request.getId()); sysOpQueryRequest.setSysCode(request.getSysCode()); SysOp sysOp = sysOpDao.querySysOp(sysOpQueryRequest); if (sysOp != null) { // 检查密码复杂度 PasswordComplexityUtils.checkPasswordComplexity(request.getLoginPassword(), sysOp.getLoginCode()); // 如果密码复杂度检查通过,修改密码 Boolean result = sysOpDao.modfiySysOpPassword(request); return new BizResult(result); } else { throw new BizException(ErrorType.OBJECT_NOT_EXISTS, "用户"); } } catch (Exception e) { // 处理查询异常 if (e instanceof BizException) { throw (BizException) e; } else { throw new BizException(ErrorType.BIZ_ERROR, "查询用户信息失败:" + e.getMessage()); } } } return new BizResult(false); } @Override public BizResult loginCodeIsUsed(SysOpQueryRequest sysOpQueryRequest) throws Exception { if(StringUtils.isEmpty(sysOpQueryRequest.getLoginCode())){ throw new BizException(ErrorType.BIZ_ERROR, "用户名不能为空"); } SysOp sysOp = sysOpDao.loginCodeIsUsed(sysOpQueryRequest.getLoginCode()); SysOpDTO sysOpDTO=new SysOpDTO(); if(null != sysOp){ BeanUtils.copyProperties(sysOp, sysOpDTO); } return new BizResult(sysOpDTO); } /** * 保存/修改用户与组织关系 wangfs Edit.
* 保存修改处理逻辑: * 1.先删除掉用户组织关系主键不为空的关系. * 2.然后全量保存.
* @param SysOpOrgSaveOrModifyRequest * @return */ @Override public BizResult saveOrModifySysOpAndSysOrgRelation( SysOpOrgSaveOrModifyRequest sysOpOrgSaveOrModifyRequest) throws Exception { Boolean insertFlg = false; if(sysOpOrgSaveOrModifyRequest !=null){ insertFlg = sysOrgDao.saveOrModifySysOpAndSysOrgRelation(sysOpOrgSaveOrModifyRequest); }else{ throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } return new BizResult(insertFlg); } @Override public BizResult updateSysOpOrgIdByOpId(UpdateSysOpOrgIdRequest updateSysOpOrgIdRequest) { Boolean updateFlg = false; if(updateSysOpOrgIdRequest !=null){ updateFlg = sysOpDao.updateSysOpOrgIdByOpId(updateSysOpOrgIdRequest); }else{ throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } return new BizResult(updateFlg); } /** * 通过组织ids查询用户信息 * @param request * @return * 2018年4月9日 wangfs.
*/ @Override public BizResult> querySysOpByorgIds(QuerySysOpByorgIdsReq request) { List list = new ArrayList<>(); if(request ==null || CollectionUtils.isEmpty(request.getOrgIds())){ throw new BizException(ErrorType.BIZ_ERROR, "入参不能为空"); } List sysOpList = sysOpDao.querySysOpByorgIds(request.getOrgIds()); ListCopyUtil.listCopyProperties(sysOpList, list, SysOpDTO.class); return new BizResult>(list); } }