Просмотр исходного кода

feat:修复fby的相关会员电话搜索问题和电话加密展示

caoliqin 5 дней назад
Родитель
Сommit
47f4a09476

+ 25 - 25
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -1,9 +1,6 @@
 package com.fs.his.controller;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
@@ -93,6 +90,9 @@ public class FsUserController extends BaseController
         if (fsUser.getPhoneMk()!=null&&fsUser.getPhoneMk()!=""){
             fsUser.setPhone(encryptPhone(fsUser.getPhoneMk()));
         }
+        if(StringUtils.isNotEmpty(fsUser.getPhone())){
+            fsUser.setPhone(encryptPhone(fsUser.getPhone()));
+        }
         List<FsUserVO> list = fsUserService.selectFsUserListVO(fsUser);
         for (FsUserVO fsUserVO : list) {
             if(fsUserVO.getPhone() != null&&fsUserVO.getPhone()!=""){
@@ -284,26 +284,26 @@ public class FsUserController extends BaseController
         return userIntegralLogsService.addIntegralTemplate(integralTemplateParam);
     }
 
-    @PutMapping("/encryptPhoneTemp")
-    @ApiOperation("临时接口")
-    public void encryptPhoneTemp(){
-        FsUser fsUser = new FsUser();
-        List<FsUser> list = fsUserService.selectFsUserList(fsUser);
-        List<FsUser> fsUserList = list.stream().peek(v -> v.setPhone(encryptPhone(v.getPhone()))).collect(Collectors.toList());
-
-        // 分批次处理,一次提交500条
-        List<List<FsUser>> batches = Lists.partition(fsUserList, 500);
-        batches.forEach(batch -> {
-            SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
-            try {
-                FsUserMapper mapper = sqlSession.getMapper(FsUserMapper.class);
-                batch.forEach(mapper::updateFsUser);
-                sqlSession.commit();
-            } finally {
-                sqlSession.close();
-            }
-        });
-
-    }
+//    @PutMapping("/encryptPhoneTemp")
+//    @ApiOperation("临时接口")
+//    public void encryptPhoneTemp(){
+//        FsUser fsUser = new FsUser();
+//        List<FsUser> list = fsUserService.selectFsUserList(fsUser);
+//        List<FsUser> fsUserList = list.stream().peek(v -> v.setPhone(encryptPhone(v.getPhone()))).collect(Collectors.toList());
+//
+//        // 分批次处理,一次提交500条
+//        List<List<FsUser>> batches = Lists.partition(fsUserList, 500);
+//        batches.forEach(batch -> {
+//            SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
+//            try {
+//                FsUserMapper mapper = sqlSession.getMapper(FsUserMapper.class);
+//                batch.forEach(mapper::updateFsUser);
+//                sqlSession.commit();
+//            } finally {
+//                sqlSession.close();
+//            }
+//        });
+//
+//    }
 
 }

+ 18 - 0
fs-admin/src/main/java/com/fs/his/controller/FsUserOnlineStateController.java

@@ -5,6 +5,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.his.domain.FsUserOnlineState;
 import com.fs.his.service.IFsUserOnlineStateService;
@@ -14,6 +15,9 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import java.util.List;
 
+import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 用户上线情况Controller
  *
@@ -35,7 +39,21 @@ public class FsUserOnlineStateController extends BaseController
     public TableDataInfo list(FsUserOnlineState fsUserOnlineState)
     {
         startPage();
+        if(StringUtils.isNotEmpty(fsUserOnlineState.getPhone())){
+            fsUserOnlineState.setPhone(encryptPhone(fsUserOnlineState.getPhone()));
+        }
         List<FsUserOnlineState> list = fsUserOnlineStateService.selectFsUserOnlineStateList(fsUserOnlineState);
+        if(!list.isEmpty()){
+            for (FsUserOnlineState userOnlineState : list) {
+                if(userOnlineState.getPhone() != null && userOnlineState.getPhone() != ""){
+                    if (userOnlineState.getPhone().length()>11){
+                        userOnlineState.setPhone(decryptPhoneMk(userOnlineState.getPhone()));
+                    }else {
+                        userOnlineState.setPhone(userOnlineState.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                    }
+                }
+            }
+        }
         return getDataTable(list);
     }
 

+ 18 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsUserOnlineStateController.java

@@ -6,6 +6,7 @@ import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
@@ -17,6 +18,9 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
+import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 用户上线情况Controller
  *
@@ -48,7 +52,21 @@ public class FsUserOnlineStateController extends BaseController
         } else{
             fsUserOnlineState.setCompanyUserId( loginUser.getUser().getUserId());
         }
+        if(StringUtils.isNotEmpty(fsUserOnlineState.getPhone())){
+            fsUserOnlineState.setPhone(encryptPhone(fsUserOnlineState.getPhone()));
+        }
         List<FsUserOnlineState> list = fsUserOnlineStateService.selectFsUserOnlineStateList(fsUserOnlineState);
+        if(!list.isEmpty()){
+            for (FsUserOnlineState userOnlineState : list) {
+                if(userOnlineState.getPhone() != null && userOnlineState.getPhone() != ""){
+                    if (userOnlineState.getPhone().length()>11){
+                        userOnlineState.setPhone(decryptPhoneMk(userOnlineState.getPhone()));
+                    }else {
+                        userOnlineState.setPhone(userOnlineState.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                    }
+                }
+            }
+        }
         return getDataTable(list);
     }
 

+ 6 - 0
fs-company/src/main/java/com/fs/user/FsUserAdminController.java

@@ -8,6 +8,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.company.cache.ICompanyUserCacheService;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
@@ -28,6 +29,8 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 @Api(tags = "会员管理接口")
 @RestController
 @Slf4j
@@ -63,6 +66,9 @@ public class FsUserAdminController extends BaseController {
 //        if(param.getCompanyUserId() == null) {
 //            throw new IllegalArgumentException("当前销售不存在!");
 //        }
+        if(StringUtils.isNotEmpty(param.getPhone())){
+            param.setPhone(encryptPhone(param.getPhone()));
+        }
         return fsUserService.selectFsUserPageListNew(param);
     }
 

+ 11 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -81,6 +81,7 @@ import com.fs.his.service.IFsUserService;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import static com.fs.his.utils.PhoneUtil.decryptPhoneMk;
 import static com.fs.his.utils.PhoneUtil.encryptPhone;
 
 /**
@@ -686,6 +687,16 @@ public class FsUserServiceImpl implements IFsUserService
 //                    item.setIsRepeat(isRepeat);
 //                }
             }
+
+            // 解密
+            if(item.getPhone() != null && item.getPhone() != ""){
+                if (item.getPhone().length()>11){
+                    item.setPhone(decryptPhoneMk(item.getPhone()));
+                }else {
+                    item.setPhone(item.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+                }
+            }
+
         }
 
         TableDataInfo rspData = new TableDataInfo();

+ 153 - 0
fs-service/src/main/resources/application-druid-fby-test.yml

@@ -0,0 +1,153 @@
+# 数据源配置
+spring:
+    profiles:
+        include: config-druid-fby,common
+    # redis 配置
+    redis:
+        # 地址
+        host: 127.0.0.1
+        # 端口,默认为6379
+        port: 6379
+        # 数据库索引
+        database: 0
+        # 密码
+        password:
+        # 连接超时时间
+        timeout: 20s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 8
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
+    datasource:
+        #        clickhouse:
+        #            type: com.alibaba.druid.pool.DruidDataSource
+        #            driverClassName: com.clickhouse.jdbc.ClickHouseDriver
+        #            url: jdbc:clickhouse://cc-2vc8zzo26w0l7m2l6.public.clickhouse.ads.aliyuncs.com/sop?compress=0&use_server_time_zone=true&use_client_time_zone=false&timezone=Asia/Shanghai
+        #            username: rt_2024
+        #            password: Yzx_19860213
+        #            initialSize: 10
+        #            maxActive: 100
+        #            minIdle: 10
+        #            maxWait: 6000
+        mysql:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://120.46.11.55:2345/fs_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Ylrztek250218!3@.
+                # 从库数据源
+                slave:
+                    # 从数据源开关/默认关闭
+                    enabled: false
+                    url:
+                    username:
+                    password:
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+        sop:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://120.46.11.55:2345/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: Ylrztek250218!3@.
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+rocketmq:
+    name-server: rmq-1243b25nj.rocketmq.gz.public.tencenttdmq.com:8080 # RocketMQ NameServer 地址
+    producer:
+        group: my-producer-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+    consumer:
+        group: test-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+openIM:
+    secret: openIM123
+    userID: imAdmin