From 3250c79ee357625712297141d0f95c5605870faa Mon Sep 17 00:00:00 2001 From: nies Date: Wed, 18 May 2022 10:23:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=92=8C=E6=A0=B9=E6=8D=AE=E7=94=A8=E6=88=B7=E5=90=8D?= =?UTF-8?q?=E5=8F=91=E9=80=81=E9=92=89=E9=92=89=E6=B6=88=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/ISysUserService.java | 27 ++++++++ .../controller/base/WhiteController.java | 39 ++++++++++- .../controller/busi/SysUserController.java | 37 +++++++++++ .../serviceimpl/busi/SysUserService.java | 75 ++++++++++++++++------ 4 files changed, 157 insertions(+), 21 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 90e3052..542b2ab 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -3,6 +3,8 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken; +import cn.estsh.i3plus.pojo.model.platform.AndonQueryUserModel; +import cn.estsh.i3plus.pojo.model.platform.AndonQueryUserResultModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.ApiOperation; @@ -406,4 +408,29 @@ public interface ISysUserService { */ @ApiOperation(value = "获取用户菜单信息") void packUser(SysUser user); + + + /** + * 根据andon查询model查询用户信息 + * @param andonQueryUserModel + * @param pager + * @return + */ + @ApiOperation(value = "根据andon查询model查询用户信息") + ListPager findUserByAndonQueryUserModel(AndonQueryUserModel andonQueryUserModel, Pager pager); + + /** + * 转换sysUser to AndonQueryUserResultModel + * @param sysUserList + * @return + */ + List packAndonQueryUserResultModel(List sysUserList); + + /** + * 根据用户名列表批量查询用户 + * @param userLoginNamegenList + * @return + */ + @ApiOperation(value = "获取批量账号信息", notes = "查询用户信息-批量根据登录名称查询") + List findSysUserByLoginName(List userLoginNamegenList); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index f2d6c05..a1a324b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -62,6 +62,7 @@ import com.google.common.cache.CacheBuilder; import com.taobao.api.ApiException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.*; import org.slf4j.Logger; @@ -1110,6 +1111,42 @@ public class WhiteController extends CoreBaseController { * @param dingSendBatchRequestModel * @return */ + @PostMapping(value = "/dingRobot/sendBatchRequestByUserLoginName") + @ApiOperation(value = "根据登录用户名 钉钉单聊机器人批量发送消息", notes = "根据登录用户名 钉钉单聊机器人批量发送消息") + public ResultBean singleRobotsendBatchRequestByUserLoginName(@RequestBody DingSendBatchRequestModel dingSendBatchRequestModel ) { + if(ObjectUtils.isEmpty(dingSendBatchRequestModel)){ + return ResultBean.fail("消息内容不能为空"); + } + if(ObjectUtils.isEmpty(dingSendBatchRequestModel.getUserLoginNameList())){ + return ResultBean.fail("登录用户名不能为空"); + } + List userLoginNameList = dingSendBatchRequestModel.getUserLoginNameList(); + userLoginNameList = userLoginNameList.stream().filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList()); + if(ObjectUtils.isEmpty(userLoginNameList)){ + return ResultBean.fail("登录用户名不能为空"); + } + List userList = userService.findSysUserByLoginName(userLoginNameList); + if(ObjectUtils.isEmpty(userList)){ + return ResultBean.fail("登录用户名没有对应的账号"); + } + List phoneNumberList =userList.stream().map(SysUser::getUserPhone).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList()); + if(ObjectUtils.isEmpty(userList)){ + return ResultBean.fail("登录用户名没有对应的手机号"); + } + dingSendBatchRequestModel.setPhoneNumberList(phoneNumberList); + return singleRobotsendBatchRequest(dingSendBatchRequestModel); + + } + + /** + * 批量发送的最大值 + */ + private final int MAX_DINGROBOT_SEND_NUM = 1000; + /** + * 钉钉单聊机器人批量发送消息 + * @param dingSendBatchRequestModel + * @return + */ @PostMapping(value = "/dingRobot/sendBatchRequest") @ApiOperation(value = "根据手机号 钉钉单聊机器人批量发送消息", notes = "根据手机号 钉钉单聊机器人批量发送消息") public ResultBean singleRobotsendBatchRequest(@RequestBody DingSendBatchRequestModel dingSendBatchRequestModel ) { @@ -1125,7 +1162,7 @@ public class WhiteController extends CoreBaseController { if (ObjectUtils.isEmpty(phoneNumberList)) { return ResultBean.fail("手机号不能为空"); } - phoneNumberList = phoneNumberList.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList()); + phoneNumberList = phoneNumberList.stream().filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList()); if (ObjectUtils.isEmpty(phoneNumberList)) { return ResultBean.fail("手机号不能为空"); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index facbd68..cce9d99 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -23,6 +23,8 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.AccountExportModel; +import cn.estsh.i3plus.pojo.model.platform.AndonQueryUserModel; +import cn.estsh.i3plus.pojo.model.platform.AndonQueryUserResultModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; @@ -35,6 +37,7 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.text.StrBuilder; import org.apache.commons.lang3.RandomStringUtils; import org.slf4j.Logger; @@ -872,4 +875,38 @@ public class SysUserController extends CoreBaseController { } } + @GetMapping(value = "/query-user-andonQueryUserModel") + @ApiOperation(value = "根据andonQueryUserModel查询系统用户") + public ResultBean queryUserByAndonQueryUserModel(AndonQueryUserModel andonQueryUserModel, Pager pager) { + try { + ValidatorBean.checkNotNull(andonQueryUserModel); + if (StringUtils.isBlank(andonQueryUserModel.getOrganizeCode())) { + andonQueryUserModel.setOrganizeCode(AuthUtil.getOrganizeCode()); + } + if (ObjectUtils.isEmpty(pager)) { + pager = Pager.defaultPager(); + } + ListPager resultList = sysUserService.findUserByAndonQueryUserModel(andonQueryUserModel, pager); + return ResultBean.success("操作成功").setListPager(resultList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + + @GetMapping(value = "/query-user-by-org") + @ApiOperation(value = "根据orgCode查询Sysuser用户") + public ResultBean queryUserByOrg(String organizeCode) { + try { + List sysUsers = sysUserService.querySysUserByOrganizeCode(organizeCode); + return ResultBean.success("操作成功").setResultList(sysUserService.packAndonQueryUserResultModel(sysUsers)).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 9b1e223..cea00bb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -19,6 +19,8 @@ import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.HqlPack; +import cn.estsh.i3plus.pojo.model.platform.AndonQueryUserModel; +import cn.estsh.i3plus.pojo.model.platform.AndonQueryUserResultModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRefUserDepartmentRepository; @@ -157,11 +159,10 @@ public class SysUserService implements ISysUserService { AuthUtil.setSessionUser(sessionUser); AuthUtil.online(sessionUser); resultBean = ResultBean.success().setResultObject(sessionUser); - }catch (ImppBusiException e) { + } catch (ImppBusiException e) { e.printStackTrace(); resultBean = ResultBean.fail(e); - } - catch (CredentialsException e) { + } catch (CredentialsException e) { // 用户名或密码错误 e.printStackTrace(); resultBean = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); @@ -173,7 +174,7 @@ public class SysUserService implements ISysUserService { // 用户信息不存在 e.printStackTrace(); resultBean = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_INFO_NULL); - }catch (AuthenticationException e) { + } catch (AuthenticationException e) { // 系统异常 resultBean = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getDescription()).setCode(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getCode()); if (e.getCause() != null) { @@ -187,8 +188,7 @@ public class SysUserService implements ISysUserService { resultBean.setErrorMsg(e.getMessage()); } LOGGER.warn("Impp业务异常AuthenticationException 登录失败 ", e); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); resultBean = ResultBean.fail(e); if (e.getCause() != null) { @@ -198,7 +198,7 @@ public class SysUserService implements ISysUserService { } } finally { //如果登录成功,刷新登录成功次数和上次登录时间 - try{ + try { if (resultBean.isSuccess()) { this.refreshUserLoginInformation(user.getId()); } else { @@ -207,8 +207,7 @@ public class SysUserService implements ISysUserService { this.refreshUserLoginDateTime(user.getId(), user.getUserInfoId()); } } - } - catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } @@ -265,9 +264,9 @@ public class SysUserService implements ISysUserService { //判断条件,如果有authPlatform限制,则进行校验,没有,按照原有登录 //authPlatform限制,如果不包含平台权限,则不能登录,这里可以扩展多个登录权限限制。 String authPlatform = user.getAuthPlatform(); - if (Strings.isNotBlank(authPlatform)){ + if (Strings.isNotBlank(authPlatform)) { List authPlatforms = Arrays.stream(authPlatform.split(",")).map(Integer::parseInt).collect(Collectors.toList()); - if (!authPlatforms.contains(loginPlatform)){ + if (!authPlatforms.contains(loginPlatform)) { throw ImppExceptionBuilder.newInstance().setErrorDetail("此账号没有权限登录此平台,请联系管理员!").build(); } } @@ -386,19 +385,19 @@ public class SysUserService implements ISysUserService { @Override public void updateSysUserPwdByLoginName(String loginName, String password) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getStringEqualPack(loginName,"userLoginName",ddlPackBean); + DdlPreparedPack.getStringEqualPack(loginName, "userLoginName", ddlPackBean); List sysUsers = userRDao.findByHqlWhere(ddlPackBean); - if (Objects.isNull(sysUsers)){ + if (Objects.isNull(sysUsers)) { throw ImppExceptionBuilder.newInstance().setErrorDetail("修改密码失败,账号在系统中不存在!").build(); } - if (sysUsers.size() > 1){ + if (sysUsers.size() > 1) { throw ImppExceptionBuilder.newInstance().setErrorDetail("登录名不唯一,修改失败!").build(); } SysUser sysUser = sysUsers.get(0); Long pwdId = sysUser.getUserLoginPasswordId(); - userPasswordService.updatePasswordByPwdIdAndNewPwd(pwdId,password); + userPasswordService.updatePasswordByPwdIdAndNewPwd(pwdId, password); } @@ -693,7 +692,7 @@ public class SysUserService implements ISysUserService { .collect(Collectors.toList()); if (CollectionUtils.isEmpty(distinctUserIds)) { - return null; + return new ArrayList(); } DdlPackBean packBean = DdlPackBean.getDdlPackBean(); DdlPreparedPack.getInPackList(distinctUserIds, "id", packBean); @@ -740,15 +739,15 @@ public class SysUserService implements ISysUserService { @Override public SysUser getSysUserByLoginNameAndEmail(String loginName, String email) { - LOGGER.debug("平台用户 SYS_USER find By Login Name :{},and email:{}", loginName,email); + LOGGER.debug("平台用户 SYS_USER find By Login Name :{},and email:{}", loginName, email); SysUser sysUser = userRDao.getByProperty(new String[]{"userLoginName", "isValid", "isDeleted"}, new Object[]{loginName, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); - if (!Objects.isNull(sysUser)){ + if (!Objects.isNull(sysUser)) { String emails = sysUser.getUserEmail(); - if (Strings.isNotBlank(emails)){ + if (Strings.isNotBlank(emails)) { List emailList = Arrays.asList(emails.split(",")); - if (emailList.contains(email)){ + if (emailList.contains(email)) { return sysUser; } } @@ -1027,6 +1026,42 @@ public class SysUserService implements ISysUserService { } + @Override + public ListPager findUserByAndonQueryUserModel(AndonQueryUserModel andonQueryUserModel, Pager pager) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(andonQueryUserModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(andonQueryUserModel.getOrganizeCode(), "organizeCode", ddlPackBean); + DdlPreparedPack.getStringLikerPack(andonQueryUserModel.getDepartment(), "departmentNameRdd", ddlPackBean); + DdlPreparedPack.getStringLikerPack(andonQueryUserModel.getUserLoginName(), "userLoginName", ddlPackBean); + DdlPreparedPack.getStringLikerPack(andonQueryUserModel.getUserName(), "userName", ddlPackBean); + pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(ddlPackBean)); + return new ListPager(packAndonQueryUserResultModel(userRDao.findByHqlWherePage(ddlPackBean, pager)), pager); + } + + @Override + public List packAndonQueryUserResultModel(List sysUserList) { + if (ObjectUtils.isEmpty(sysUserList)) { + return new ArrayList<>(); + } + + return sysUserList.stream().map(el -> { + AndonQueryUserResultModel andonQueryUserModel = new AndonQueryUserResultModel(); + andonQueryUserModel.setDepartment(el.getDepartmentNameRdd()); + andonQueryUserModel.setLoginName(el.getUserLoginName()); + andonQueryUserModel.setUserId(el.getId()); + andonQueryUserModel.setUserInfoId(el.getUserInfoId()); + andonQueryUserModel.setUserName(el.getUserName()); + return andonQueryUserModel; + }).collect(Collectors.toList()); + } + + @Override + public List findSysUserByLoginName(List userLoginNamegenList) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getInPackList(userLoginNamegenList,"userLoginName",ddlPackBean); + return userRDao.findByHqlWhere(ddlPackBean); + } + + /** * 账号数据排序 * 创建时间 角色升序