import cn.hutool.core.io.FileUtil; import com.ltkj.LtkjApplication; import com.ltkj.framework.config.MatchUtils; import com.ltkj.hosp.idutil.IdUtils; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.Dimension; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.WebDriverWait; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.openqa.selenium.*; import java.io.File; import java.io.IOException; /** * @Author: 西安路泰科技有限公司/赵佳豪 * @Date: 2022/12/12 9:05 */ @RunWith(SpringRunner.class) @SpringBootTest(classes = LtkjApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Slf4j @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) public class zjhTest { @Autowired private IdUtils idUtils; @Value("${token.secret_key}") private String secret; @Test public void test() throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(20); // 20个线程池 Set numbers = Collections.synchronizedSet(new HashSet<>()); // 线程安全的Set,存放生成的编号 // 并发执行 for (int i = 0; i < 20; i++) { executorService.execute(() -> { try { String number = idUtils.getNewTjNumberRedisLock(); // 调用获取编号的方法 numbers.add(number); // 添加到 Set } catch (RuntimeException e) { throw new RuntimeException(e); } }); } System.out.println(numbers); executorService.shutdown(); // 关闭线程池 } public static void main(String[] args) throws Exception { System.out.println(MatchUtils.isIdCard("622723197401030409")); System.out.println(MatchUtils.isMobileNO("15346732733")); } /** * 执行生成 * @param filePath 图片生成路径 * @return 是否成功 */ private void chrome(String filePath) throws IOException { System.setProperty("webdriver.chrome.driver", "D:\\tools\\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.setBinary("D:\\tools\\124063440\\chrome.exe"); options.addArguments("--headless"); // 启用无头模式 options.addArguments("--disable-gpu"); // 禁用GPU加速 options.addArguments("--no-sandbox"); // 禁用沙盒模式(可选,适用于某些Linux环境) System.setProperty("webdriver.chrome.verboseLogging", "true"); WebDriver driver = null; try { driver = new ChromeDriver(options); driver.manage().window().setSize(new Dimension(600, 730)); driver.get("www.baidu.com"); WebDriverWait wait = new WebDriverWait(driver,10); File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); FileUtil.copyFile(screenshot, new File("D:\\"+filePath)); }catch (Exception e){ log.error("玩家信息异常 ->{}",String.valueOf(e)); }finally { if (driver != null) driver.quit(); } } /** * 将科学计数法文本转换成字符文本 * @param number * @return */ public static String translateToPlainStr(String number) { return getString(number); } private static String getString(String number) { if (null == number || number.trim().length() == 0) { return number; } String regEx="^([\\+|-]?\\d+(.{0}|.\\d+))[Ee]{1}([\\+|-]?\\d+)$"; // 编译正则表达式 Pattern pattern = Pattern.compile(regEx); // 忽略大小写的写法 // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(number); // 字符串是否与正则表达式相匹配 boolean rs = matcher.matches(); // 判断是否为字符串的科学计数法 if(rs){ // 科学计数法转数字 BigDecimal originValue = new BigDecimal(number); System.out.println("手机号为 ==> " + originValue.toPlainString()); // 数字转字符串 return originValue.toPlainString(); } return number; } public static void forwardUrl(String targetUrl, String forwardUrl) throws Exception { // 创建URL对象 URL url = new URL(forwardUrl); // 打开连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方法 connection.setRequestMethod("GET"); // 设置请求头,例如Referer或其他你需要转发的头信息 connection.setRequestProperty("Referer", targetUrl); // 连接 connection.connect(); // 检查响应代码 int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 读取服务器响应 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 打印服务器响应 System.out.println(response.toString()); } else { System.out.println("GET request not worked"); } // 关闭连接 connection.disconnect(); } // // public static String getAdd(String log, String lat ){ // //lat 小 log 大 // //参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项) // String urlString = "http://gc.ditu.aliyun.com/regeocoding?l="+lat+","+log+"&type=010"; // JSONObject salerJson=JSONObject.parseObject(getUrl(urlString)); // JSONObject jsonData=JSONObject.parseObject(String.valueOf(salerJson)); // /* JSONArray fileItemsjson = JSONArray.fromObject(jsonData.get("addrList").toString()); // System.out.println("地区"+fileItemsjson); // JSONObject job = fileItemsjson.getJSONObject(0);*/ // return jsonData.toString(); // } // // public static String getUrl(String url) // { // String resData = null; // StringBuffer s = new StringBuffer(); // BufferedReader bReader = null; // try { // //114.55.248.182 // URL urlWeb = new URL(url); // URLConnection connection = urlWeb.openConnection(); // bReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); // while (null != (resData = bReader.readLine())) { // s.append(resData); // } // bReader.close(); // } catch (MalformedURLException e) { // e.printStackTrace(); // } catch (IOException e) { // e.printStackTrace(); // } // System.out.println(s); // return s.toString(); // } }