yangdamao 1 tahun lalu
induk
melakukan
369285791b

+ 3 - 0
zhongzheng-admin-saas/src/main/resources/application.yml

@@ -248,6 +248,9 @@ feign:
   hystrix:
     enabled: true
 
+phone:
+  conceal: true
+
 poliv:
   sdk:
     userid: egsxlptzdq

+ 3 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -248,6 +248,9 @@ feign:
   hystrix:
     enabled: true
 
+phone:
+  conceal: true
+
 poliv:
   sdk:
     userid: egsxlptzdq

+ 3 - 0
zhongzheng-api/src/main/resources/application.yml

@@ -245,6 +245,9 @@ feign:
   hystrix:
     enabled: true
 
+phone:
+  conceal: true
+
 poliv:
   sdk:
     userid: egsxlptzdq

+ 4 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysRole.java

@@ -103,6 +103,10 @@ public class SysRole implements Serializable
 
     private String tenantId;
 
+    /** 手机号查看标识:1可以查到 0隐藏 */
+    @ApiModelProperty(value ="手机号查看标识:1可以查到 0隐藏")
+    private Integer phoneConceal;
+
     /**
      * 请求参数
      */

+ 5 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginUser.java

@@ -68,6 +68,11 @@ public class LoginUser implements UserDetails
      */
     private SysUser user;
 
+    /**
+     * 手机号隐藏标识 1,不隐藏
+     */
+    private Integer phoneConcealSign;
+
 
     public LoginUser(SysUser user, Set<String> permissions)
     {

+ 21 - 2
zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java

@@ -2,7 +2,15 @@ package com.zhongzheng.common.type;
 
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.symmetric.AES;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.TelPhoneUtils;
 import org.apache.ibatis.type.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.core.token.Token;
+import org.springframework.security.core.token.TokenService;
 import org.springframework.util.StringUtils;
 
 import java.nio.charset.StandardCharsets;
@@ -19,7 +27,8 @@ public class EncryptHandler  implements TypeHandler<String> {
 
     public static final boolean ENCRYPT_STATUS = true; //是否开启字段加密
 
-
+    @Value("${phone.conceal:false}")
+    private static boolean phoneConceal;
 
     public static String decrypt(String value) {
         if (null == value) {
@@ -28,7 +37,16 @@ public class EncryptHandler  implements TypeHandler<String> {
         if (value.length()<=20 ) {
             return value;
         }
-        return SecureUtil.aes(KEYS).decryptStr(value);
+        String s = SecureUtil.aes(KEYS).decryptStr(value);
+        if (phoneConceal){
+            //开启手机号码加密
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            if (s.length() <= 11 &&
+                    (ObjectUtils.isNull(loginUser.getPhoneConcealSign()) || loginUser.getPhoneConcealSign() != 1)){
+                return TelPhoneUtils.hideTelPhone(s);
+            }
+        }
+        return s;
     }
 
     public static String encrypt(String value){
@@ -38,6 +56,7 @@ public class EncryptHandler  implements TypeHandler<String> {
         if(ENCRYPT_STATUS){
             AES aes = SecureUtil.aes(KEYS);
             String encrypt = aes.encryptHex(value);
+
             return encrypt;
         }else{
             return value;

+ 17 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java

@@ -3,6 +3,7 @@ package com.zhongzheng.framework.web.service;
 import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.entity.SysRole;
@@ -40,6 +41,7 @@ import javax.annotation.Resource;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 登录校验方法
@@ -143,7 +145,22 @@ public class SysLoginService
         }
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        loginUser.setPhoneConcealSign(0);
         SysUser user = iSysUserService.updateLoginTimeIp(loginUser.getUser().getUserId());
+        //查看用户权限是否可以查看手机号码
+        if (user.getUserName().equals("admin")){
+            loginUser.setPhoneConcealSign(1);
+        }else {
+            List<SysUserRole> list = iSysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
+                    .eq(SysUserRole::getUserId, user.getUserId()).eq(SysUserRole::getTenantId,user.getTenantId()));
+            if (CollectionUtils.isNotEmpty(list)){
+                List<SysRole> sysRoles = iSysRoleService.listByIds(list.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()));
+                if (sysRoles.stream().anyMatch(x -> x.getPhoneConceal() == 1)){
+                    loginUser.setPhoneConcealSign(1);
+                }
+            }
+
+        }
         String dualAuth = configService.selectConfigByKey("login.dual.auth");
         if(Validator.isNotEmpty(dualAuth)&&dualAuth.equals("1")){
             if(Validator.isEmpty(tel)){