diff --git a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java index a3074b4366..8c8f4d0f87 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java @@ -258,7 +258,7 @@ public class SysUserController { } @PostMapping("/unbindAssist/{type}") - public void unbindAssist(String type) { + public void unbindAssist(@PathVariable("type") String type) { Boolean valid = StringUtils.equals(WECOM, type) || StringUtils.equals(DINGTALK, type) || StringUtils.equals(LARK, type); if (!valid) { @@ -275,6 +275,9 @@ public class SysUserController { if (StringUtils.equals(LARK, type)) { sysUserAssist.setLarkId(null); } + if (StringUtils.isBlank(sysUserAssist.getWecomId()) && StringUtils.isBlank(sysUserAssist.getDingtalkId()) && StringUtils.isBlank(sysUserAssist.getLarkId())) { + sysUserService.changeUserFrom(userId, 0); + } sysUserService.saveAssist(userId, sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId()); } diff --git a/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java b/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java index 474ae29640..d88341ac51 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XDingtalkServer.java @@ -159,10 +159,12 @@ public class XDingtalkServer { SysUserEntity userEntity = authUserService.getUserById(Long.parseLong(state)); if (ObjectUtils.isEmpty(userEntity)) { bindError(response, url, "绑定用户不存在"); + return; } SysUserAssist sysUserAssist = sysUserService.assistInfo(Long.parseLong(state)); if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getWecomId())) { bindError(response, url, "目标用户已绑定其他钉钉账号"); + return; } Boolean isOpen = authUserService.supportDingtalk(); if (!isOpen) { @@ -177,6 +179,7 @@ public class XDingtalkServer { SysUserEntity sysUserEntity = authUserService.getUserByDingtalkId(userId); if (null != sysUserEntity) { bindError(response, url, "当前钉钉账号已绑定其他DE用户"); + return; } if (ObjectUtils.isEmpty(sysUserAssist)) { sysUserAssist = new SysUserAssist(); diff --git a/backend/src/main/java/io/dataease/plugins/server/XLarkServer.java b/backend/src/main/java/io/dataease/plugins/server/XLarkServer.java index 5e6711324e..26521964b2 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XLarkServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XLarkServer.java @@ -158,10 +158,12 @@ public class XLarkServer { SysUserEntity userEntity = authUserService.getUserById(Long.parseLong(state)); if (ObjectUtils.isEmpty(userEntity)) { bindError(response, url, "绑定用户不存在"); + return; } SysUserAssist sysUserAssist = sysUserService.assistInfo(Long.parseLong(state)); if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getWecomId())) { bindError(response, url, "目标用户已绑定其他飞书账号"); + return; } Boolean isOpen = authUserService.supportLark(); @@ -176,6 +178,7 @@ public class XLarkServer { SysUserEntity sysUserEntity = authUserService.getUserByLarkId(userId); if (null != sysUserEntity) { bindError(response, url, "当前飞书账号已绑定其他DE用户"); + return; } if (ObjectUtils.isEmpty(sysUserAssist)) { diff --git a/backend/src/main/java/io/dataease/plugins/server/XWecomServer.java b/backend/src/main/java/io/dataease/plugins/server/XWecomServer.java index c92d31c1ed..7ff7678cdb 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XWecomServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XWecomServer.java @@ -165,15 +165,18 @@ public class XWecomServer { SysUserEntity userEntity = authUserService.getUserById(Long.parseLong(state)); if (ObjectUtils.isEmpty(userEntity)) { bindError(response, url, "绑定用户不存在"); + return; } SysUserAssist sysUserAssist = sysUserService.assistInfo(Long.parseLong(state)); if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getWecomId())) { bindError(response, url, "目标用户已绑定其他企业微信账号"); + return; } Boolean supportWecom = authUserService.supportWecom(); if (!supportWecom) { DEException.throwException("未开启企业微信"); + return; } wecomXpackService = SpringContextUtil.getBean(WecomXpackService.class); WecomAuthResult authResult = wecomXpackService.auth(code); @@ -183,6 +186,7 @@ public class XWecomServer { SysUserEntity sysUserEntity = authUserService.getUserByWecomId(userId); if (null != sysUserEntity) { bindError(response, url, "当前企业微信账号已绑定其他DE用户"); + return; } if (ObjectUtils.isEmpty(sysUserAssist)) { sysUserAssist = new SysUserAssist(); diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java index ab70cae6a5..52192680a5 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -529,7 +529,7 @@ public class SysUserService { public boolean needPwdNoti(Long userId) { SysUserAssist userAssist = sysUserAssistMapper.selectByPrimaryKey(userId); - return ObjectUtils.isEmpty(userAssist) || userAssist.getNeedFirstNoti(); + return ObjectUtils.isEmpty(userAssist) || ObjectUtils.isEmpty(userAssist.getNeedFirstNoti()) || userAssist.getNeedFirstNoti(); } public void saveUserAssist(Boolean noti) { @@ -567,4 +567,11 @@ public class SysUserService { return sysUserAssistMapper.selectByPrimaryKey(userId); } + public void changeUserFrom(Long userId, Integer from) { + SysUser sysUser = new SysUser(); + sysUser.setUserId(userId); + sysUser.setFrom(from); + sysUserMapper.updateByPrimaryKeySelective(sysUser); + } + } diff --git a/frontend/src/views/system/user/privateForm.vue b/frontend/src/views/system/user/privateForm.vue index a4ff64871f..a41ebc3924 100644 --- a/frontend/src/views/system/user/privateForm.vue +++ b/frontend/src/views/system/user/privateForm.vue @@ -91,6 +91,7 @@ import { allRoles } from '@/api/system/user' import { updatePerson, personInfo } from '@/api/system/user' import { pluginLoaded } from '@/api/user' import PluginCom from '@/views/system/plugin/PluginCom' +import Cookies from 'js-cookie' export default { components: { LayoutContent, Treeselect, PluginCom }, @@ -173,6 +174,7 @@ export default { }, created() { this.$store.dispatch('app/toggleSideBarHide', true) + this.showError() this.queryPerson() this.initRoles() }, @@ -183,7 +185,16 @@ export default { }) }, methods: { - + showError() { + const errKeys = ['WecomError', 'DingtalkError', 'LarkError'] + errKeys.forEach(key => { + const msg = Cookies.get(key) + if (msg) { + this.$error(msg) + Cookies.remove(key) + } + }) + }, queryPerson() { personInfo().then(res => { const info = res.data