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 a03fad7d85..e95563f748 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java @@ -24,6 +24,7 @@ import io.dataease.controller.sys.request.SysUserStateRequest; import io.dataease.controller.sys.response.RoleUserItem; import io.dataease.controller.sys.response.SysUserGridResponse; import io.dataease.plugins.common.base.domain.SysUser; +import io.dataease.plugins.common.base.domain.SysUserAssist; import io.dataease.service.sys.SysRoleService; import io.dataease.service.sys.SysUserService; import io.swagger.annotations.Api; @@ -66,7 +67,7 @@ public class SysUserController { @ApiImplicitParam(name = "request", value = "查询条件", required = true) }) public Pager> userGrid(@PathVariable int goPage, @PathVariable int pageSize, - @RequestBody KeyGridRequest request) { + @RequestBody KeyGridRequest request) { Page page = PageHelper.startPage(goPage, pageSize, true); List users = sysUserService.query(request); users.forEach(user -> { @@ -87,9 +88,9 @@ public class SysUserController { @RequiresPermissions("user:add") @PostMapping("/create") @DeLog( - operatetype = SysLogConstants.OPERATE_TYPE.CREATE, - sourcetype = SysLogConstants.SOURCE_TYPE.USER, - value = "userId" + operatetype = SysLogConstants.OPERATE_TYPE.CREATE, + sourcetype = SysLogConstants.SOURCE_TYPE.USER, + value = "userId" ) public void create(@RequestBody SysUserCreateRequest request) { sysUserService.save(request); @@ -99,9 +100,9 @@ public class SysUserController { @RequiresPermissions("user:edit") @PostMapping("/update") @DeLog( - operatetype = SysLogConstants.OPERATE_TYPE.MODIFY, - sourcetype = SysLogConstants.SOURCE_TYPE.USER, - value = "userId" + operatetype = SysLogConstants.OPERATE_TYPE.MODIFY, + sourcetype = SysLogConstants.SOURCE_TYPE.USER, + value = "userId" ) public void update(@RequestBody SysUserCreateRequest request) { sysUserService.update(request); @@ -112,8 +113,8 @@ public class SysUserController { @PostMapping("/delete/{userId}") @ApiImplicitParam(paramType = "path", value = "用户ID", name = "userId", required = true, dataType = "Integer") @DeLog( - operatetype = SysLogConstants.OPERATE_TYPE.DELETE, - sourcetype = SysLogConstants.SOURCE_TYPE.USER + operatetype = SysLogConstants.OPERATE_TYPE.DELETE, + sourcetype = SysLogConstants.SOURCE_TYPE.USER ) public void delete(@PathVariable("userId") Long userId) { sysUserService.delete(userId); @@ -124,9 +125,9 @@ public class SysUserController { @RequiresRoles("1") @PostMapping("/updateStatus") @DeLog( - operatetype = SysLogConstants.OPERATE_TYPE.MODIFY, - sourcetype = SysLogConstants.SOURCE_TYPE.USER, - value = "userId" + operatetype = SysLogConstants.OPERATE_TYPE.MODIFY, + sourcetype = SysLogConstants.SOURCE_TYPE.USER, + value = "userId" ) public void updateStatus(@RequestBody SysUserStateRequest request) { sysUserService.updateStatus(request); @@ -201,7 +202,7 @@ public class SysUserController { @ApiImplicitParam(name = "request", value = "查询条件", required = true) }) public Pager> roleGrid(@PathVariable int goPage, @PathVariable int pageSize, - @RequestBody BaseGridRequest request) { + @RequestBody BaseGridRequest request) { Page page = PageHelper.startPage(goPage, pageSize, true); Pager> listPager = PageUtils.setPageInfo(page, sysRoleService.query(request)); return listPager; @@ -226,4 +227,9 @@ public class SysUserController { authUserService.unlockAccount(username, one.getFrom()); } + @PostMapping("/assistInfo/{userId}") + public SysUserAssist assistInfo(@PathVariable("userId") Long userId) { + return sysUserService.assistInfo(userId); + } + } diff --git a/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java b/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java index 69b63ee655..5ecc781fc7 100644 --- a/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java +++ b/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java @@ -1,6 +1,7 @@ package io.dataease.controller.sys.request; import io.dataease.plugins.common.base.domain.SysUser; +import io.dataease.plugins.common.base.domain.SysUserAssist; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -14,4 +15,7 @@ public class SysUserCreateRequest extends SysUser { @ApiModelProperty(value = "角色ID集合", required = true, position = 7) private List roleIds; + @ApiModelProperty(value = "辅助信息", required = false, position = 8) + private SysUserAssist sysUserAssist; + } diff --git a/backend/src/main/java/io/dataease/ext/ExtSysUserAssistMapper.java b/backend/src/main/java/io/dataease/ext/ExtSysUserAssistMapper.java deleted file mode 100644 index ad6d042a0b..0000000000 --- a/backend/src/main/java/io/dataease/ext/ExtSysUserAssistMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.dataease.ext; - -import io.dataease.plugins.common.base.domain.SysUserAssist; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface ExtSysUserAssistMapper { - - @Insert("insert into sys_user_assist values(#{po.userId}, #{po.needFirstNoti})") - void save(@Param("po") SysUserAssist po); - - @Select("select * from sys_user_assist where user_id = #{userId}") - SysUserAssist query(@Param("userId") Long userId); -} diff --git a/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java b/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java index 2833af3d71..ce61fc0395 100644 --- a/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java +++ b/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java @@ -14,6 +14,7 @@ import io.dataease.commons.utils.LogUtil; import io.dataease.commons.utils.ServletUtils; import io.dataease.job.sechedule.ScheduleManager; import io.dataease.job.sechedule.strategy.TaskHandler; +import io.dataease.plugins.common.base.domain.SysUserAssist; import io.dataease.plugins.common.entity.GlobalTaskEntity; import io.dataease.plugins.common.entity.GlobalTaskInstance; import io.dataease.plugins.config.SpringContextUtil; @@ -28,6 +29,7 @@ import io.dataease.plugins.xpack.lark.service.LarkXpackService; import io.dataease.plugins.xpack.wecom.dto.entity.WecomMsgResult; import io.dataease.plugins.xpack.wecom.service.WecomXpackService; import io.dataease.service.chart.ViewExportExcel; +import io.dataease.service.sys.SysUserService; import io.dataease.service.system.EmailService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -154,6 +156,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class); AuthUserServiceImpl userService = SpringContextUtil.getBean(AuthUserServiceImpl.class); + SysUserService sysUserService = SpringContextUtil.getBean(SysUserService.class); try { XpackEmailTaskRequest taskForm = emailXpackService.taskForm(taskInstance.getTaskId()); if (ObjectUtils.isEmpty(taskForm) || CronUtils.taskExpire(taskForm.getEndTime())) { @@ -215,17 +218,24 @@ public class EmailTaskHandler extends TaskHandler implements Job { for (int i = 0; i < channels.size(); i++) { String channel = channels.get(i); switch (channel) { - case "email" : + case "email": if (StringUtils.isNotBlank(recipients)) - emailService.sendWithImageAndFiles(recipients, emailTemplateDTO.getTitle(), contentStr, bytes, files); + emailService.sendWithImageAndFiles(recipients, emailTemplateDTO.getTitle(), contentStr, bytes, files); break; - case "wecom" : + case "wecom": if (SpringContextUtil.getBean(AuthUserService.class).supportWecom()) { - - List wecomUsers = reciLists.stream().filter(reci -> { + List wecomUsers = new ArrayList<>(); + for (int j = 0; j < reciLists.size(); j++) { + String reci = reciLists.get(j); SysUserEntity userBySub = userService.getUserBySub(reci, 4); - return ObjectUtils.isNotEmpty(userBySub); - }).collect(Collectors.toList()); + if (ObjectUtils.isEmpty(userBySub)) continue; + Long userId = userBySub.getUserId(); + SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); + if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getLarkId())) + continue; + wecomUsers.add(sysUserAssist.getLarkId()); + } + if (CollectionUtils.isNotEmpty(wecomUsers)) { WecomXpackService wecomXpackService = SpringContextUtil.getBean(WecomXpackService.class); WecomMsgResult wecomMsgResult = wecomXpackService.pushOaMsg(wecomUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); @@ -236,12 +246,20 @@ public class EmailTaskHandler extends TaskHandler implements Job { } break; - case "dingtalk" : + case "dingtalk": if (SpringContextUtil.getBean(AuthUserService.class).supportDingtalk()) { - List dingTalkUsers = reciLists.stream().filter(reci -> { + List dingTalkUsers = new ArrayList<>(); + for (int j = 0; j < reciLists.size(); j++) { + String reci = reciLists.get(j); SysUserEntity userBySub = userService.getUserBySub(reci, 5); - return ObjectUtils.isNotEmpty(userBySub); - }).collect(Collectors.toList()); + if (ObjectUtils.isEmpty(userBySub)) continue; + Long userId = userBySub.getUserId(); + SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); + if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getLarkId())) + continue; + dingTalkUsers.add(sysUserAssist.getLarkId()); + } + if (CollectionUtils.isNotEmpty(dingTalkUsers)) { DingtalkXpackService dingtalkXpackService = SpringContextUtil.getBean(DingtalkXpackService.class); DingtalkMsgResult dingtalkMsgResult = dingtalkXpackService.pushOaMsg(dingTalkUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); @@ -252,12 +270,20 @@ public class EmailTaskHandler extends TaskHandler implements Job { } break; - case "lark" : + case "lark": if (SpringContextUtil.getBean(AuthUserService.class).supportLark()) { - List larkUsers = reciLists.stream().filter(reci -> { + List larkUsers = new ArrayList<>(); + for (int j = 0; j < reciLists.size(); j++) { + String reci = reciLists.get(j); SysUserEntity userBySub = userService.getUserBySub(reci, 6); - return ObjectUtils.isNotEmpty(userBySub); - }).collect(Collectors.toList()); + if (ObjectUtils.isEmpty(userBySub)) continue; + Long userId = userBySub.getUserId(); + SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); + if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getLarkId())) + continue; + larkUsers.add(sysUserAssist.getLarkId()); + } + if (CollectionUtils.isNotEmpty(larkUsers)) { LarkXpackService larkXpackService = SpringContextUtil.getBean(LarkXpackService.class); LarkMsgResult larkMsgResult = larkXpackService.pushOaMsg(larkUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); diff --git a/backend/src/main/java/io/dataease/service/message/service/strategy/SendDingtalk.java b/backend/src/main/java/io/dataease/service/message/service/strategy/SendDingtalk.java index 101bfd973a..3f428d71aa 100644 --- a/backend/src/main/java/io/dataease/service/message/service/strategy/SendDingtalk.java +++ b/backend/src/main/java/io/dataease/service/message/service/strategy/SendDingtalk.java @@ -1,13 +1,17 @@ package io.dataease.service.message.service.strategy; -import io.dataease.auth.entity.SysUserEntity; import io.dataease.auth.service.AuthUserService; +import io.dataease.plugins.common.base.domain.SysUserAssist; import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService; import io.dataease.service.message.service.SendService; +import io.dataease.service.sys.SysUserService; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -17,12 +21,14 @@ public class SendDingtalk implements SendService { @Autowired private AuthUserService authUserService; + @Resource + private SysUserService sysUserService; + @Override public void sendMsg(Long userId, Long typeId, String content, String param) { - SysUserEntity userEntity = authUserService.getUserById(userId); - - if (userEntity.getFrom() == 5 && authUserService.supportDingtalk()) { - String username = userEntity.getUsername(); + SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); + if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getDingtalkId()) && authUserService.supportDingtalk()) { + String username = sysUserAssist.getDingtalkId(); DingtalkXpackService dingtalkXpackService = SpringContextUtil.getBean(DingtalkXpackService.class); List userIds = new ArrayList<>(); userIds.add(username); diff --git a/backend/src/main/java/io/dataease/service/message/service/strategy/SendLark.java b/backend/src/main/java/io/dataease/service/message/service/strategy/SendLark.java index 7793d4c7db..1c400ec3c9 100644 --- a/backend/src/main/java/io/dataease/service/message/service/strategy/SendLark.java +++ b/backend/src/main/java/io/dataease/service/message/service/strategy/SendLark.java @@ -1,13 +1,17 @@ package io.dataease.service.message.service.strategy; -import io.dataease.auth.entity.SysUserEntity; import io.dataease.auth.service.AuthUserService; +import io.dataease.plugins.common.base.domain.SysUserAssist; import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.xpack.lark.service.LarkXpackService; import io.dataease.service.message.service.SendService; +import io.dataease.service.sys.SysUserService; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -17,12 +21,14 @@ public class SendLark implements SendService { @Autowired private AuthUserService authUserService; + @Resource + private SysUserService sysUserService; + @Override public void sendMsg(Long userId, Long typeId, String content, String param) { - SysUserEntity userEntity = authUserService.getUserById(userId); - - if (userEntity.getFrom() == 6 && authUserService.supportLark()) { - String username = userEntity.getUsername(); + SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); + if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getLarkId()) && authUserService.supportLark()) { + String username = sysUserAssist.getLarkId(); LarkXpackService larkXpackService = SpringContextUtil.getBean(LarkXpackService.class); List userIds = new ArrayList<>(); userIds.add(username); diff --git a/backend/src/main/java/io/dataease/service/message/service/strategy/SendWecom.java b/backend/src/main/java/io/dataease/service/message/service/strategy/SendWecom.java index de5481b561..4ccdf141e0 100644 --- a/backend/src/main/java/io/dataease/service/message/service/strategy/SendWecom.java +++ b/backend/src/main/java/io/dataease/service/message/service/strategy/SendWecom.java @@ -1,13 +1,17 @@ package io.dataease.service.message.service.strategy; -import io.dataease.auth.entity.SysUserEntity; import io.dataease.auth.service.AuthUserService; +import io.dataease.plugins.common.base.domain.SysUserAssist; import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.xpack.wecom.service.WecomXpackService; import io.dataease.service.message.service.SendService; +import io.dataease.service.sys.SysUserService; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -16,12 +20,16 @@ public class SendWecom implements SendService { @Autowired private AuthUserService authUserService; + + @Resource + private SysUserService sysUserService; + @Override public void sendMsg(Long userId, Long typeId, String content, String param) { - SysUserEntity userEntity = authUserService.getUserById(userId); + SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); + if (ObjectUtils.isNotEmpty(sysUserAssist) && StringUtils.isNotBlank(sysUserAssist.getWecomId()) && authUserService.supportWecom()) { - if (userEntity.getFrom() == 4 && authUserService.supportWecom()) { - String username = userEntity.getUsername(); + String username = sysUserAssist.getWecomId(); WecomXpackService wecomXpackService = SpringContextUtil.getBean(WecomXpackService.class); List userIds = new ArrayList<>(); userIds.add(username); 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 f9189d80f0..ab70cae6a5 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -5,7 +5,6 @@ import io.dataease.auth.service.AuthUserService; import io.dataease.auth.service.ExtAuthService; import io.dataease.commons.exception.DEException; import io.dataease.controller.sys.request.*; -import io.dataease.ext.ExtSysUserAssistMapper; import io.dataease.ext.ExtSysUserMapper; import io.dataease.ext.query.GridExample; import io.dataease.commons.constants.AuthConstants; @@ -16,6 +15,7 @@ import io.dataease.controller.sys.response.SysUserGridResponse; import io.dataease.controller.sys.response.SysUserRole; import io.dataease.i18n.Translator; import io.dataease.plugins.common.base.domain.*; +import io.dataease.plugins.common.base.mapper.SysUserAssistMapper; import io.dataease.plugins.common.base.mapper.SysUserMapper; import io.dataease.plugins.common.base.mapper.SysUsersRolesMapper; import io.dataease.plugins.common.entity.XpackLdapUserEntity; @@ -36,6 +36,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -57,8 +58,9 @@ public class SysUserService { @Resource private ExtAuthService extAuthService; + @Resource - private ExtSysUserAssistMapper extSysUserAssistMapper; + private SysUserAssistMapper sysUserAssistMapper; @Resource private AuthUserService authUserService; @@ -99,8 +101,15 @@ public class SysUserService { } int insert = sysUserMapper.insert(user); SysUser dbUser = findOne(user); - request.setUserId(dbUser.getUserId()); - saveUserRoles(dbUser.getUserId(), request.getRoleIds());//插入用户角色关联 + Long userId = dbUser.getUserId(); + request.setUserId(userId); + saveUserRoles(userId, request.getRoleIds());//插入用户角色关联 + + SysUserAssist sysUserAssist = request.getSysUserAssist(); + if (ObjectUtils.isNotEmpty(sysUserAssist) && (StringUtils.isNotBlank(sysUserAssist.getWecomId()) || StringUtils.isNotBlank(sysUserAssist.getDingtalkId()) || StringUtils.isNotBlank(sysUserAssist.getLarkId()))) { + saveAssist(userId, sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId()); + } + return insert; } @@ -125,12 +134,12 @@ public class SysUserService { // oidc默认角色是普通员工 List roleIds = new ArrayList(); roleIds.add(2L); - saveUserRoles( dbUser.getUserId(), roleIds); + saveUserRoles(dbUser.getUserId(), roleIds); } } @Transactional - public void saveWecomCUser(Map userMap , String userId, String email) { + public void saveWecomCUser(Map userMap, String userId, String email) { long now = System.currentTimeMillis(); SysUser sysUser = new SysUser(); @@ -148,6 +157,7 @@ public class SysUserService { sysUser.setIsAdmin(false); sysUser.setSub(userId); sysUserMapper.insert(sysUser); + Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), u.getUsername(), null, null)); } @@ -170,7 +180,7 @@ public class SysUserService { sysUser.setSub(dingUserEntity.getUnionid()); sysUser.setPhone(dingUserEntity.getMobile()); sysUserMapper.insert(sysUser); - + Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, u.getUsername(), null)); } @Transactional @@ -192,7 +202,7 @@ public class SysUserService { sysUser.setSub(larkUserInfo.getSub()); sysUser.setPhone(larkUserInfo.getMobile()); sysUserMapper.insert(sysUser); - + Optional.ofNullable(findOne(sysUser)).ifPresent(u -> saveAssist(u.getUserId(), null, null, u.getUsername())); } @Transactional @@ -215,7 +225,7 @@ public class SysUserService { // oidc默认角色是普通员工 List roleIds = new ArrayList(); roleIds.add(2L); - saveUserRoles( dbUser.getUserId(), roleIds); + saveUserRoles(dbUser.getUserId(), roleIds); } } @@ -247,7 +257,7 @@ public class SysUserService { sysUserMapper.insert(sysUser); SysUser dbUser = findOne(sysUser); if (null != dbUser && null != dbUser.getUserId()) { - saveUserRoles( dbUser.getUserId(), request.getRoleIds()); + saveUserRoles(dbUser.getUserId(), request.getRoleIds()); } }); } @@ -285,7 +295,13 @@ public class SysUserService { saveUserRoles(user.getUserId(), request.getRoleIds());//再插入角色关联 if (ObjectUtils.isEmpty(user.getDeptId())) user.setDeptId(0L); authUserService.clearCache(user.getUserId()); - return sysUserMapper.updateByPrimaryKeySelective(user); + int result = sysUserMapper.updateByPrimaryKeySelective(user); + + SysUserAssist sysUserAssist = request.getSysUserAssist(); + if (ObjectUtils.isNotEmpty(sysUserAssist) && (StringUtils.isNotBlank(sysUserAssist.getWecomId()) || StringUtils.isNotBlank(sysUserAssist.getDingtalkId()) || StringUtils.isNotBlank(sysUserAssist.getLarkId()))) { + saveAssist(user.getUserId(), sysUserAssist.getWecomId(), sysUserAssist.getDingtalkId(), sysUserAssist.getLarkId()); + } + return result; } /** @@ -308,6 +324,7 @@ public class SysUserService { * 更新用户基本信息 * 只允许修改 email, nickname, phone * 防止此接口被恶意利用更改不允许更改的信息,新建SysUser对象并只设置部分值 + * * @param request * @return */ @@ -426,33 +443,34 @@ public class SysUserService { SysUserExample example = new SysUserExample(); example.createCriteria().andUsernameEqualTo(userName); List users = sysUserMapper.selectByExample(example); - if(CollectionUtils.isNotEmpty(users)) { - throw new RuntimeException("用户ID【"+userName+"】已存在,请联系管理员"); + if (CollectionUtils.isNotEmpty(users)) { + throw new RuntimeException("用户ID【" + userName + "】已存在,请联系管理员"); } } + public void validateExistUser(String userName, String nickName, String email) { SysUserExample example = new SysUserExample(); if (StringUtils.isNotBlank(userName)) { example.createCriteria().andUsernameEqualTo(userName); List users = sysUserMapper.selectByExample(example); - if(CollectionUtils.isNotEmpty(users)) { - throw new RuntimeException("用户ID【"+userName+"】已存在,请联系管理员"); + if (CollectionUtils.isNotEmpty(users)) { + throw new RuntimeException("用户ID【" + userName + "】已存在,请联系管理员"); } } if (StringUtils.isNotBlank(nickName)) { example.createCriteria().andNickNameEqualTo(nickName); List users = sysUserMapper.selectByExample(example); - if(CollectionUtils.isNotEmpty(users)) { - throw new RuntimeException("用户姓名【"+nickName+"】已存在,请联系管理员"); + if (CollectionUtils.isNotEmpty(users)) { + throw new RuntimeException("用户姓名【" + nickName + "】已存在,请联系管理员"); } } example.clear(); if (StringUtils.isNotBlank(email)) { example.createCriteria().andEmailEqualTo(email); List users = sysUserMapper.selectByExample(example); - if(CollectionUtils.isNotEmpty(users)) { - throw new RuntimeException("用户邮箱【"+email+"】已存在,请联系管理员"); + if (CollectionUtils.isNotEmpty(users)) { + throw new RuntimeException("用户邮箱【" + email + "】已存在,请联系管理员"); } } } @@ -510,16 +528,43 @@ public class SysUserService { } public boolean needPwdNoti(Long userId) { - SysUserAssist userAssist = extSysUserAssistMapper.query(userId); + SysUserAssist userAssist = sysUserAssistMapper.selectByPrimaryKey(userId); return ObjectUtils.isEmpty(userAssist) || userAssist.getNeedFirstNoti(); } public void saveUserAssist(Boolean noti) { Long userId = AuthUtils.getUser().getUserId(); + SysUserAssist existAssist = sysUserAssistMapper.selectByPrimaryKey(userId); + if (ObjectUtils.isNotEmpty(existAssist)) { + existAssist.setNeedFirstNoti(noti); + sysUserAssistMapper.updateByPrimaryKey(existAssist); + return; + } SysUserAssist sysUserAssist = new SysUserAssist(); sysUserAssist.setUserId(userId); sysUserAssist.setNeedFirstNoti(noti); - extSysUserAssistMapper.save(sysUserAssist); + sysUserAssistMapper.insertSelective(sysUserAssist); + } + + public void saveAssist(Long userId, String wecomId, String dingtlkId, String larkId) { + SysUserAssist existAssist = sysUserAssistMapper.selectByPrimaryKey(userId); + if (ObjectUtils.isNotEmpty(existAssist)) { + existAssist.setWecomId(wecomId); + existAssist.setDingtalkId(dingtlkId); + existAssist.setLarkId(larkId); + sysUserAssistMapper.updateByPrimaryKey(existAssist); + return; + } + SysUserAssist sysUserAssist = new SysUserAssist(); + sysUserAssist.setUserId(userId); + sysUserAssist.setWecomId(wecomId); + sysUserAssist.setDingtalkId(dingtlkId); + sysUserAssist.setLarkId(larkId); + sysUserAssistMapper.insert(sysUserAssist); + } + + public SysUserAssist assistInfo(Long userId) { + return sysUserAssistMapper.selectByPrimaryKey(userId); } } diff --git a/frontend/src/api/system/user.js b/frontend/src/api/system/user.js index 4e4ee78512..cdfc543a6d 100644 --- a/frontend/src/api/system/user.js +++ b/frontend/src/api/system/user.js @@ -10,7 +10,8 @@ const pathMap = { updatePath: '/api/user/update', editPasswordPath: '/api/user/adminUpdatePwd', editStatusPath: '/api/user/updateStatus', - unlockPath: '/api/user/unlock/' + unlockPath: '/api/user/unlock/', + queryAssistPath: '/api/user/assistInfo/' } export function userLists(page, size, data) { return request({ @@ -142,4 +143,12 @@ export function unLock(username) { }) } -export default { editPassword, delUser, editUser, addUser, userLists, editStatus, personInfo, updatePerson, updatePersonPwd, allRoles, roleGrid, ldapUsers, saveLdapUser, existLdapUsers, unLock } +export function queryAssist(userId) { + return request({ + url: pathMap.queryAssistPath + userId, + method: 'post', + loading: false + }) +} + +export default { editPassword, delUser, editUser, addUser, userLists, editStatus, personInfo, updatePerson, updatePersonPwd, allRoles, roleGrid, ldapUsers, saveLdapUser, existLdapUsers, unLock, queryAssist } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index c5923c6fdf..ea90af461c 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -132,11 +132,10 @@ export default { }, commons: { - unlock: 'Unlock', unlock_success: 'Unlock success', - uninstall:'Uninstall', + uninstall: 'Uninstall', no_result: 'No Result', manage_member: 'Managing members', @@ -674,7 +673,13 @@ export default { filter: 'Screen', list: 'List item', list_info: 'Please select the information to be displayed in the list', - sure_delete: 'Are you sure to delete this user?' + sure_delete: 'Are you sure to delete this user?', + wecom_id: 'Wecom Account', + dingtalk_id: 'Dingtalk Account', + lark_id: 'Lark Account', + input_wecom_id: 'Please input wecom account', + input_dingtalk_id: 'Please input dingtalk account', + input_lark_id: 'Please input lark account' }, ldap: { url: 'LDAP url', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 43e2b36f90..cb6c2df8eb 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -132,11 +132,10 @@ export default { }, commons: { - unlock: '解鎖', unlock_success: '解鎖成功', - uninstall:'卸载', + uninstall: '卸载', no_result: '没有找到相关内容', manage_member: '管理成員', @@ -674,7 +673,13 @@ export default { filter: '篩選', list: '列表項', list_info: '請選擇列表中要展示的信息', - sure_delete: '確定刪除該用戶嗎?' + sure_delete: '確定刪除該用戶嗎?', + wecom_id: '企業微信賬號', + dingtalk_id: '釘釘賬號', + lark_id: '飛書賬號', + input_wecom_id: '請輸入企業微信賬號', + input_dingtalk_id: '請輸入釘釘賬號', + input_lark_id: '請輸入飛書賬號' }, ldap: { url: 'LDAP地址', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index f511e030c8..511dba8785 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -134,7 +134,7 @@ export default { unlock: '解锁', unlock_success: '解锁成功', - uninstall:'卸载', + uninstall: '卸载', no_result: '没有找到相关内容', manage_member: '管理成员', @@ -672,7 +672,13 @@ export default { filter: '筛选', list: '列表项', list_info: '请选择列表中要展示的信息', - sure_delete: '确定删除该用户吗?' + sure_delete: '确定删除该用户吗?', + wecom_id: '企业微信账号', + dingtalk_id: '钉钉账号', + lark_id: '飞书账号', + input_wecom_id: '请输入企业微信账号', + input_dingtalk_id: '请输入钉钉账号', + input_lark_id: '请输入飞书账号' }, ldap: { url: 'LDAP地址', diff --git a/frontend/src/views/system/user/userEditer.vue b/frontend/src/views/system/user/userEditer.vue index 0407833d85..f790ada9c0 100644 --- a/frontend/src/views/system/user/userEditer.vue +++ b/frontend/src/views/system/user/userEditer.vue @@ -9,7 +9,7 @@ :before-close="reset" >
- + {{ $t("commons.default_pwd") + ":" + defaultPWD }} @@ -36,16 +36,16 @@ @@ -55,24 +55,24 @@ - + @@ -82,14 +82,13 @@ - - - - + + + @@ -100,37 +99,37 @@ prop="deptId" > - - - - - + + + + + @@ -165,14 +164,24 @@ /> + + + + + + + + + + + - + /> @@ -187,280 +196,328 @@