From f38f5b76f10c3ac776cf7128839753b78b1870fc Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Tue, 23 May 2023 16:45:19 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=A1=B5=E9=9D=A2=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/application-dev.properties | 9 +- .../com/adc/da/sys/dao/mysql/OrgEODao.java | 2 + .../com/adc/da/sys/dao/mysql/UserEODao.java | 3 + .../java/com/adc/da/sys/entity/OrgEO.java | 6 ++ .../adc/da/sys/service/UserEOServiceImpl.java | 86 ++++++++++++++++--- .../java/com/adc/da/sys/vo/UserImportVO.java | 8 ++ .../mybatis/mapper/sys/mysql/OrgEOMapper.xml | 6 +- .../mybatis/mapper/sys/mysql/UserEOMapper.xml | 4 + 8 files changed, 107 insertions(+), 17 deletions(-) diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index df4ad6f..bbe9413 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -35,10 +35,15 @@ #spring.datasource.mysql.password = root spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver -spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +#spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai #spring.datasource.url = jdbc:mysql://121.36.69\ -# .172:3307/report-library_test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false\ +# .172:3307/report_library_new?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false\ # &allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +#spring.datasource.url = jdbc:mysql://121.36.69\ +# .172:3307/report-library-dev?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false\ +# &allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library_test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false + &allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai spring.datasource.username = root spring.datasource.password = hzwlsoft.com diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/OrgEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/OrgEODao.java index 15e00b3..945c497 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/OrgEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/OrgEODao.java @@ -17,4 +17,6 @@ public interface OrgEODao extends BaseMapper { IPage selectPageByVO(Page page,@Param("pageVO")OrgEOPage orgEOPage); long selectCountByOrgCode(@Param("pageVO")OrgEO orgEO); + + List selectNameAll(OrgEO orgEO); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/UserEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/UserEODao.java index fc74d38..5672503 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/UserEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/UserEODao.java @@ -50,4 +50,7 @@ public interface UserEODao extends BaseMapper { List getOwnLeader(@Param("Vo") List orgEOList); long listCount(@Param("account") String account, @Param("roleName") String roleName); + + List selectAccout(); + } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java index bedb84b..22cb25b 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java @@ -46,6 +46,12 @@ public class OrgEO extends BaseEntity implements Serializable { @TableField("PARENT_ID") private String ParentID; + /** + * 父部门 编码 + */ + @TableField(exist = false) + private String ParentCode; + /** * 部门路径 */ diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java index 266d6bd..3d369b5 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil; import com.adc.da.sys.constant.SsoConstants; import com.adc.da.sys.constant.SysConstants; import com.adc.da.sys.constant.UserBelongEnum; +import com.adc.da.sys.dao.mysql.OrgEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.dao.mysql.UserOrgEODao; import com.adc.da.sys.dao.mysql.UserRoleEODao; @@ -29,6 +30,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.binding.MapperMethod; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -67,6 +69,9 @@ public class UserEOServiceImpl implements IUserEoService { @Resource private UserOrgEODao userOrgEODao; + @Autowired + private OrgEODao orgEODao; + @Resource private RoleEOService roleEOService; @@ -366,9 +371,11 @@ public class UserEOServiceImpl implements IUserEoService { List userEOArrayList = dataMap.get(key); ArrayList addList = new ArrayList<>(); ArrayList addRoleList = new ArrayList<>(); + ArrayList addOrgList = new ArrayList<>(); userEOArrayList.forEach(userImportVO -> { UserEO userEO = new UserEO(); BeanUtils.copyProperties(userImportVO, userEO); + userEO.setUsid(UUID.randomUUID().toString().replace("-","")); userEO.setDelFlag(0); userEO.setIsSelf(UserBelongEnum.LOCAL.getValue()); userEO.setUsid(com.adc.da.util.utils.UUID.randomUUID10()); @@ -379,7 +386,16 @@ public class UserEOServiceImpl implements IUserEoService { userEO.setUpdateTime(simpleDateFormat.format(date)); userEO.setRoleId(userImportVO.getRoleId()); addList.add(userEO); - + //部门 + if (StringUtils.isNotEmpty(userImportVO.getOrgId())){ + String[] split = userImportVO.getOrgId().split(","); + for (String s : split) { + UserOrgEO userOrgEO = new UserOrgEO(); + userOrgEO.setUserId(userEO.getUsid()); + userOrgEO.setOrgId(s); + addOrgList.add(userOrgEO); + } + } }); saveBatch(addList); //添加角色 @@ -391,6 +407,9 @@ public class UserEOServiceImpl implements IUserEoService { addRoleList.add(userRoleEO); }); userRoleEODao.insertBatch(addRoleList); + if (addOrgList.size()>0){ + userOrgEODao.insertBatch(addOrgList); + } } //更新 @@ -398,6 +417,7 @@ public class UserEOServiceImpl implements IUserEoService { List userEOArrayList = dataMap.get(key); ArrayList userIDList = new ArrayList<>(); ArrayList userRoleList = new ArrayList<>(); + ArrayList addOrgList = new ArrayList<>(); userEOArrayList.forEach(userImportVO -> { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("ACCOUNT", userImportVO.getAccount()); @@ -414,12 +434,28 @@ public class UserEOServiceImpl implements IUserEoService { userRoleEO.setUserId(userEO.getUsid()); userRoleEO.setRoleId(userImportVO.getRoleId()); userRoleList.add(userRoleEO); + + if (StringUtils.isNotEmpty(userImportVO.getOrgId())){ + String[] split = userImportVO.getOrgId().split(","); + for (String s : split) { + UserOrgEO userOrgEO = new UserOrgEO(); + userOrgEO.setUserId(userEO.getUsid()); + userOrgEO.setOrgId(s); + addOrgList.add(userOrgEO); + } + } } }); QueryWrapper deleteWapper = new QueryWrapper<>(); deleteWapper.in("user_id", userIDList); userRoleEODao.delete(deleteWapper); userRoleEODao.insertBatch(userRoleList); + + //保存用户部门关系表 + userOrgEODao.deleteBatchByUserIds(userIDList); + if (addOrgList.size()>0){ + userOrgEODao.insertBatch(addOrgList); + } } }); } @@ -503,6 +539,8 @@ public class UserEOServiceImpl implements IUserEoService { return user.getAccount(); } + + void checkExcel(List list) { if (CollectionUtils.isEmpty(list)) { throw new AdcDaBaseException("数据不能为空"); @@ -516,25 +554,27 @@ public class UserEOServiceImpl implements IUserEoService { //所有用户 List existUserAccounts = new ArrayList<>(); List existUserAccountsUpdate = new ArrayList<>(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("del_flag", 0); - List allUsers = dao.selectList(queryWrapper); - for (UserEO userEO : allUsers) { - existUserAccounts.add(userEO.getAccount()); - existUserAccountsUpdate.add(userEO.getAccount()); - } - + List accoutList = dao.selectAccout(); + existUserAccounts = accoutList; + existUserAccountsUpdate = accoutList; + //所有部门 + List orgEOList = orgEODao.selectNameAll(new OrgEO()); + Map orgEOMap = orgEOList.stream().collect(Collectors.toMap(OrgEO::getLongName, e -> e, + (k1,k2)->k1)); for (int i = 0; i < list.size(); i++) { UserImportVO userImportVO = list.get(i); if (StringUtils.isEmpty(userImportVO.getAccount())) { throw new AdcDaBaseException("第"+(i+1)+"行"+"用户名不能为空"); } + if (userImportVO.getAccount().length() > 20) { + throw new AdcDaBaseException("第"+(i+1)+"行"+"用户名不能超过20字符"); + } if (StringUtils.isEmpty(userImportVO.getUsname())) { throw new AdcDaBaseException("第"+(i+1)+"行"+"姓名不能为空"); } if (userImportVO.getUsname().length() > 20) { - throw new AdcDaBaseException("第"+(i+1)+"行"+"姓名不超过20字符"); + throw new AdcDaBaseException("第"+(i+1)+"行"+"姓名不能超过20字符"); } if ("admin".equals(userImportVO.getAccount()) || "root".equals(userImportVO.getAccount()) || @@ -544,11 +584,28 @@ public class UserEOServiceImpl implements IUserEoService { throw new AdcDaBaseException("第"+(i+1)+"行"+"用户名不符合规则"); } if (StringUtils.isNotBlank(userImportVO.getEmail())) { +// if (!(userImportVO.getEmail().matches("^[\\w-.]+@[a-z\\d-]+(\\.[a-z\\d-]+)*\\.[a-z\\d]{2,6}$/i"))) { + if (!(userImportVO.getEmail().matches("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"))) { + throw new AdcDaBaseException("第"+(i+1)+"行"+"邮箱不符合规则!"); + } userImportVO.setEmail(userImportVO.getEmail().replace("amp;", "")); } if (StringUtils.isNotBlank(userImportVO.getCellPhoneNumber())) { - if (!userImportVO.getCellPhoneNumber().matches("^[1][3,4,5,7,8,9][0-9]{9}$")) { - throw new AdcDaBaseException("第"+(i+1)+"行"+"手机号不符合规则"); + if (!(userImportVO.getCellPhoneNumber().matches("^(?:\\+86)?-(1[3456789]\\d)\\d{8}$") || + userImportVO.getCellPhoneNumber().matches("^1(3\\d|4[5-9]|5[0-35-9]|6[56]|7[0135678]|8\\d|9[89])\\d{8}$"))) { + throw new AdcDaBaseException("第"+(i+1)+"行"+"手机号不符合规则!"); + } + } + if (StringUtils.isNotEmpty(userImportVO.getOrgName())) { + String[] split = userImportVO.getOrgName().split(","); + for (String s : split) { + OrgEO orgEO = orgEOMap.get(s); + if (orgEO == null){ + throw new AdcDaBaseException("第"+(i+1)+"行"+s+"部门不存在"); + }else { + userImportVO.setOrgId(StringUtils.isEmpty(userImportVO.getOrgId()) ? orgEO.getId() + : "," + orgEO.getId()); + } } } if (StringUtils.isEmpty(userImportVO.getOperation())) { @@ -560,6 +617,9 @@ public class UserEOServiceImpl implements IUserEoService { if (!roleEOMap.keySet().contains(userImportVO.getRoleName())) { throw new AdcDaBaseException("第"+(i+1)+"行"+"角色:" + userImportVO.getRoleName() + "不存在,请检查"); } + if(StringUtils.isNotEmpty(userImportVO.getOperation()) && !"add".equals(userImportVO.getOperation()) && !"full".equals(userImportVO.getOperation())){ + throw new AdcDaBaseException("第"+(i+1)+"行"+"操作(add添加、full覆盖角色)只能填写add和full"); + } if ("add".equals(userImportVO.getOperation())) { if (existUserAccounts.contains(userImportVO.getAccount())) { throw new AdcDaBaseException("第"+(i+1)+"行"+"用户名:" + userImportVO.getAccount() + "已存在,请检查"); @@ -573,8 +633,6 @@ public class UserEOServiceImpl implements IUserEoService { } } userImportVO.setRoleId(roleEOMap.get(userImportVO.getRoleName()).getId()); - - } } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/UserImportVO.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/UserImportVO.java index 7aaf92a..e75e994 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/vo/UserImportVO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/UserImportVO.java @@ -37,6 +37,14 @@ public class UserImportVO { @Excel(name = "邮箱", width = 20) private String email; + + private String orgId; + /** + * 部门 + */ + @Excel(name = "部门", width = 20) + private String orgName; + /** * 创建时间 */ diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml index 1093a10..054842d 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml @@ -32,7 +32,8 @@ + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml index f662eeb..23731fe 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml @@ -290,6 +290,10 @@ and u.del_flag = 0 +