DriverAHTravel/guns-admin/pom.xml
@@ -17,6 +17,11 @@ <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.17</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>facebody20191230</artifactId> <version>3.0.7</version> @@ -180,6 +185,12 @@ <version>4.4.3</version> </dependency> <!--华为云的obs--> <dependency> <groupId>com.huaweicloud</groupId> <artifactId>esdk-obs-java</artifactId> <version>3.19.5</version> </dependency> <!-- 计算两坐标间的直线距离 --> <dependency> <groupId>org.gavaghan</groupId> DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -403,8 +403,7 @@ orderLogistics.setPickUpCode(random); this.updateById(orderLogistics); //发送短信 // HuaWeiSMSUtil.sendSms("[\"" + random + "\"]", orderLogistics.getRecipientPhone(), "8822072510762", "3f8a36fe5265433783655dcb6fb51465"); aLiSendSms.sendSms(orderLogistics.getRecipientPhone(), "SMS_147415322", "{\"code\":\"" + random + "\"}"); SmsUtil.sendZTHYSms(orderLogistics.getRecipientPhone(), "您的验证码是:" + random + ",请勿将验证码透露给他人!"); } @Override DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -152,7 +152,7 @@ sb.append((int) (random.nextDouble() * 10)); } String authCode = sb.toString(); String sms = "短信验证码【" + authCode + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!"; String sms = "您的验证码是:" + authCode + ",请勿将验证码透露给他人!"; //发送验证码短信 redisUtil.setStrValue(phone, authCode, 5 * 60);//设置五分钟过期 @@ -171,13 +171,7 @@ templateCode = "c230a6b92504473c97c17741e1cc0b9d";//修改密码 break; } // HuaWeiSMSUtil.sendSms("[\"" + authCode + "\"]", phone, "8822061324669", templateCode); String sData = aLiSendSms.sendSms(phone, "SMS_467580138", "{\"code\":\"" + authCode + "\"}"); // JSONObject jsonObject = JSON.parseObject(sData); // String message = jsonObject.getString("Message"); // if(!"OK".equals(message)){ // return ResultUtil.error(""); // } SmsUtil.sendZTHYSms(phone, sms); System.out.println(sms); return ResultUtil.success(); } @@ -507,9 +501,9 @@ loginWarpper.setAppid(UUIDUtil.getRandomCode()); //创建高德猎鹰的终端数据 String tid = gdFalconUtil.createTerminal(phone); loginWarpper.setServerId(gdFalconUtil.getServerId()); loginWarpper.setTerminalId(tid); // String tid = gdFalconUtil.createTerminal(phone); // loginWarpper.setServerId(gdFalconUtil.getServerId()); // loginWarpper.setTerminalId(tid); return ResultUtil.success(loginWarpper); } @@ -1278,9 +1272,9 @@ loginWarpper.setAppid(UUIDUtil.getRandomCode()); //创建高德猎鹰的终端数据 String tid = gdFalconUtil.createTerminal(driver.getPhone()); loginWarpper.setServerId(gdFalconUtil.getServerId()); loginWarpper.setTerminalId(tid); // String tid = gdFalconUtil.createTerminal(driver.getPhone()); // loginWarpper.setServerId(gdFalconUtil.getServerId()); // loginWarpper.setTerminalId(tid); return ResultUtil.success(loginWarpper); } @@ -1374,9 +1368,9 @@ loginWarpper.setAppid(UUIDUtil.getRandomCode()); //创建高德猎鹰的终端数据 String tid = gdFalconUtil.createTerminal(driver.getPhone()); loginWarpper.setServerId(gdFalconUtil.getServerId()); loginWarpper.setTerminalId(tid); // String tid = gdFalconUtil.createTerminal(driver.getPhone()); // loginWarpper.setServerId(gdFalconUtil.getServerId()); // loginWarpper.setTerminalId(tid); return ResultUtil.success(loginWarpper); } @@ -1460,9 +1454,9 @@ loginWarpper.setAppid(UUIDUtil.getRandomCode()); //创建高德猎鹰的终端数据 String tid = gdFalconUtil.createTerminal(driver.getPhone()); loginWarpper.setServerId(gdFalconUtil.getServerId()); loginWarpper.setTerminalId(tid); // String tid = gdFalconUtil.createTerminal(driver.getPhone()); // loginWarpper.setServerId(gdFalconUtil.getServerId()); // loginWarpper.setTerminalId(tid); return ResultUtil.success(loginWarpper); } DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -878,8 +878,7 @@ Integer muoth = Long.valueOf((orderTaxi.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue(); //发送短信提醒 // HuaWeiSMSUtil.sendSms("[\"" + orderTaxi.getStartAddress() + "\",\"" + orderTaxi.getEndAddress() + "\",\"" + muoth + "\"]", driver.getPhone(), "8822072510762", "d1585000f09b40b784c9e22c8c34a24a"); aLiSendSms.sendSms(driver.getPhone(), "SMS_273850089", "{\"data\":\"" + orderTaxi.getStartAddress() + "\",\"data1\":\"" + orderTaxi.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}"); SmsUtil.sendZTHYSms(driver.getPhone(), "司机您好!您有一个预约单即将开始,预约出发时间剩余" + muoth + "分钟,出发点:" + orderTaxi.getStartAddress() + ",目的地:" + orderTaxi.getEndAddress()); } //专车 List<OrderPrivateCar> list1 = orderPrivateCarService.queryMaturity(); @@ -891,8 +890,7 @@ Integer muoth = Long.valueOf((orderPrivateCar.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue(); //发送短信提醒 // HuaWeiSMSUtil.sendSms("[\"" + orderPrivateCar.getStartAddress() + "\",\"" + orderPrivateCar.getEndAddress() + "\",\"" + muoth + "\"]", driver.getPhone(), "8822072510762", "d1585000f09b40b784c9e22c8c34a24a"); aLiSendSms.sendSms(driver.getPhone(), "SMS_273850089", "{\"data\":\"" + orderPrivateCar.getStartAddress() + "\",\"data1\":\"" + orderPrivateCar.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}"); SmsUtil.sendZTHYSms(driver.getPhone(), "司机您好!您有一个预约单即将开始,预约出发时间剩余" + muoth + "分钟,出发点:" + orderPrivateCar.getStartAddress() + ",目的地:" + orderPrivateCar.getEndAddress()); } //跨城 List<OrderCrossCity> orderCrossCities = orderCrossCityService.queryMaturity(); @@ -904,8 +902,7 @@ Integer muoth = Long.valueOf((orderCrossCity.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue(); //发送短信提醒 // HuaWeiSMSUtil.sendSms("[\"" + orderCrossCity.getStartAddress() + "\",\"" + orderCrossCity.getEndAddress() + "\",\"" + muoth + "\"]", driver.getPhone(), "8822072510762", "d1585000f09b40b784c9e22c8c34a24a"); aLiSendSms.sendSms(driver.getPhone(), "SMS_273850089", "{\"data\":\"" + orderCrossCity.getStartAddress() + "\",\"data1\":\"" + orderCrossCity.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}"); SmsUtil.sendZTHYSms(driver.getPhone(), "司机您好!您有一个预约单即将开始,预约出发时间剩余" + muoth + "分钟,出发点:" + orderCrossCity.getStartAddress() + ",目的地:" + orderCrossCity.getEndAddress()); } //小件物流 List<OrderLogistics> orderLogistics = orderLogisticsService.queryMaturity(); @@ -915,8 +912,7 @@ Integer muoth = Long.valueOf((orderLogistics1.getTravelTime().getTime() - System.currentTimeMillis()) / (1000 * 60)).intValue(); //发送短信提醒 // HuaWeiSMSUtil.sendSms("[\"" + orderLogistics1.getStartAddress() + "\",\"" + orderLogistics1.getEndAddress() + "\",\"" + muoth + "\"]", driver.getPhone(), "8822072510762", "d1585000f09b40b784c9e22c8c34a24a"); aLiSendSms.sendSms(driver.getPhone(), "SMS_273850089", "{\"data\":\"" + orderLogistics1.getStartAddress() + "\",\"data1\":\"" + orderLogistics1.getEndAddress() + "\",\"data2\":\"" + muoth + "\"}"); SmsUtil.sendZTHYSms(driver.getPhone(), "司机您好!您有一个预约单即将开始,预约出发时间剩余" + muoth + "分钟,出发点:" + orderLogistics1.getStartAddress() + ",目的地:" + orderLogistics1.getEndAddress()); } if(drivers.size() > 0){ driverService.updateBatchById(drivers);//批量修改状态为服务中 DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiApiUtil.java
@@ -28,10 +28,10 @@ public boolean authentication(String name, String code){ String url = "https://safrvcert.market.alicloudapi.com/safrv_2meta_id_name/"; Map<String, String> header = new HashMap<>(); header.put("Authorization", "APPCODE b7d32437d08149099457dcb50fb57df2"); header.put("Authorization", "111"); Map<String, Object> param = new HashMap<>(); param.put("__userId", "1732960796168165"); param.put("verifyKey", "IVO4js5kValcdt"); param.put("__userId", "111"); param.put("verifyKey", "111"); param.put("userName", name); param.put("identifyNum", code); String get = httpClientUtil.pushHttpRequset("GET", url, param, header, "form"); DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiSendSms.java
@@ -21,8 +21,8 @@ // 设置鉴权参数,初始化客户端 private DefaultProfile profile = DefaultProfile.getProfile( "cn-hangzhou",// 地域ID "LTAI5tR4whv88Y5CUucCJEu6",// 您的AccessKey ID "2fObO6LE6U2OzrUfXw9YBlQWHohFvg");// 您的AccessKey Secret "111",// 您的AccessKey ID "111");// 您的AccessKey Secret private IAcsClient client = new DefaultAcsClient(profile); private static void log_print(String functionName, Object result) { DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java
@@ -15,9 +15,9 @@ @Component public class ChinaMobileUtil { private String APIKey = "zj42494b1bdd416b9762229af6b5cbbd"; private String APIKey = "111"; private String SecretKey = "30323561316534653735613230316339"; private String SecretKey = "111"; @Autowired private HttpClientUtil httpClientUtil; DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java
@@ -23,7 +23,7 @@ @Component public class GDFalconUtil implements ApplicationRunner { private String key = "8fc6a7da12d64696e9727605d81f72de"; private String key = "b186a87ff13d88eb08fac9997519af5e"; @Autowired private RestTemplate restTemplate; DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java
@@ -33,7 +33,7 @@ @Autowired private IGDInterfaceService gdInterfaceService; private String key = "8fc6a7da12d64696e9727605d81f72de"; private String key = "b186a87ff13d88eb08fac9997519af5e"; private JSONArray jsonArray = new JSONArray(); DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java
@@ -20,7 +20,7 @@ @Component public class GDMapGeocodingUtil { private String key = "8fc6a7da12d64696e9727605d81f72de"; private String key = "b186a87ff13d88eb08fac9997519af5e"; @Autowired private RestTemplate restTemplate; DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HuaWeiSMSUtil.java
@@ -40,8 +40,8 @@ public static void sendSms(String code,String phone,String sender,String templateId) throws Exception{ //必填,请参考"开发准备"获取如下数据,替换为实际值 String url = "https://smsapi.cn-north-4.myhuaweicloud.com:443/sms/batchSendSms/v1"; //APP接入地址+接口访问URI String appKey = "7TK0Mo5YEF220G1pNF6fOwH6uEql"; //APP_Key String appSecret = "HTqSmIR0buStzPwSQrhfFNE7psCm"; //APP_Secret String appKey = "111"; //APP_Key String appSecret = "111"; //APP_Secret //条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称 //国际/港澳台短信不用关注该参数 DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ObsUploadUtil.java
File was renamed from ManagementAHTravel/guns-admin/src/main/java/com/stylefeng/guns/core/util/ObsUploadUtil.java @@ -1,4 +1,4 @@ package com.stylefeng.guns.core.util; package com.stylefeng.guns.modular.system.util; import com.obs.services.ObsClient; import com.obs.services.model.ObjectMetadata; @@ -11,18 +11,17 @@ public class ObsUploadUtil { //OBS图片访问域名 public static String endPoint = "obs.cn-north-9.myhuaweicloud.com"; public static String accessKeyId = "OELF1ZVCZ5BGRYE5IGPX"; public static String accessKeySecret = "D3ZQCQda8tlSPTO9OPWTPJ51kLQFDu7hI6NX4u96"; public static String bucketName = "kuaiyuncx"; public static String oss_domain = "https://kuaiyuncx.obs.cn-north-9.myhuaweicloud.com/"; public static String endPoint = "obs.cn-north-4.myhuaweicloud.com"; public static String accessKeyId = "9L2JQW43N6QSKCSHXOHH"; public static String accessKeySecret = "svg1NDBIwAYuiOee4gQB9rw1c87ug2mv7jYkH8o5"; public static String bucketName = "anhenew"; public static String oss_domain = "https://anhenew.obs.cn-north-4.myhuaweicloud.com/"; // 创建ObsClient实例 public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint); public static String obsUpload(HttpServletRequest request, MultipartFile file) throws IOException{ //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile; public static String obsUpload(MultipartFile file) throws IOException{ String fileName = ""; if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){ InputStream content = file.getInputStream();//获得指定文件的输入流 DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java
@@ -12,9 +12,9 @@ public class OssUploadUtil { //OSS图片访问域名 public static String oss_domain = "http://bao-weiqing.oss-cn-hangzhou.aliyuncs.com/"; public static String accessKeyId = "LTAI5tR4whv88Y5CUucCJEu6"; public static String accessKeySecret = "2fObO6LE6U2OzrUfXw9YBlQWHohFvg"; public static String bucketName="bao-weiqing"; public static String accessKeyId = "111"; public static String accessKeySecret = "11"; public static String bucketName="111"; public static String endpoint = "oss-cn-hangzhou.aliyuncs.com"; public static OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret); DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java
@@ -71,11 +71,11 @@ @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 private String app_cert_path = "/usr/local/server/cer/zhifubao/driver/app_cert_path.crt";//应用公钥证书路径 private String app_cert_path = "/root/server/app/cert/ali/appCertPublicKey_2021003115600201.crt";//应用公钥证书路径 private String alipay_cert_path = "/usr/local/server/cer/zhifubao/driver/alipay_cert_path.crt";//支付宝公钥证书文件路径 private String alipay_cert_path = "/root/server/app/cert/ali/alipayCertPublicKey_RSA2.crt";//支付宝公钥证书文件路径 private String alipay_root_cert_path = "/usr/local/server/cer/zhifubao/driver/alipay_root_cert_path.crt";//支付宝CA根证书文件路径 private String alipay_root_cert_path = "/root/server/app/cert/ali/alipayRootCert.crt";//支付宝CA根证书文件路径 @Autowired private HttpClientUtil httpClientUtil; @@ -87,69 +87,42 @@ * 支付宝支付 */ public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl){ // //构造client // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); // //设置网关地址 // certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); // //设置应用Id // certAlipayRequest.setAppId(aliAppid); // //设置应用私钥 // certAlipayRequest.setPrivateKey(appPrivateKey); // //设置请求格式,固定值json // certAlipayRequest.setFormat("json"); // //设置字符集 // certAlipayRequest.setCharset("UTF-8"); // //设置签名类型 // certAlipayRequest.setSignType("RSA2"); // //设置应用公钥证书路径 // certAlipayRequest.setCertPath(app_cert_path); // //设置支付宝公钥证书路径 // certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); // //设置支付宝根证书路径 // certAlipayRequest.setRootCertPath(alipay_root_cert_path); // //构造client // AlipayClient alipayClient = null; // try { // alipayClient = new DefaultAlipayClient(certAlipayRequest); // } catch (AlipayApiException e) { // e.printStackTrace(); // } // //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay // AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest (); // //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 // AlipayTradeAppPayModel model = new AlipayTradeAppPayModel (); // model.setBody(body); // model.setSubject (subject); // model.setOutTradeNo (outTradeNo); // model.setTimeoutExpress ("30m" ); // model.setTotalAmount (amount); // model.setProductCode ( "QUICK_MSECURITY_PAY" ); // model.setPassbackParams(passbackParams);//自定义参数 // request.setBizModel ( model ); // request.setNotifyUrl (callbackPath + notifyUrl); // try { // //这里和普通的接口调用不同,使用的是sdkExecute // AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); // Map<String, String> map = new HashMap<>(); // map.put("orderString", response.getBody()); // System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 // return ResultUtil.success(map); // } catch (AlipayApiException e ) { // e.printStackTrace(); // } //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //构造client CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); //设置网关地址 certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); //设置应用Id certAlipayRequest.setAppId(aliAppid); //设置应用私钥 certAlipayRequest.setPrivateKey(appPrivateKey); //设置请求格式,固定值json certAlipayRequest.setFormat("json"); //设置字符集 certAlipayRequest.setCharset("UTF-8"); //设置签名类型 certAlipayRequest.setSignType("RSA2"); //设置应用公钥证书路径 certAlipayRequest.setCertPath(app_cert_path); //设置支付宝公钥证书路径 certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); //设置支付宝根证书路径 certAlipayRequest.setRootCertPath(alipay_root_cert_path); //构造client AlipayClient alipayClient = null; try { alipayClient = new DefaultAlipayClient(certAlipayRequest); } catch (AlipayApiException e) { e.printStackTrace(); } //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。 model.setOutTradeNo(outTradeNo);//商户网站唯一订单号 model.setBody(body); model.setSubject (subject); model.setOutTradeNo (outTradeNo); model.setTimeoutExpress("30m"); model.setTotalAmount(amount);//付款金额 model.setTotalAmount (amount); model.setProductCode("QUICK_MSECURITY_PAY"); model.setPassbackParams(passbackParams);//自定义参数 request.setBizModel(model); @@ -164,6 +137,33 @@ } catch (AlipayApiException e) { e.printStackTrace(); } //实例化客户端 // AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); // //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay // AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); // //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 // AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); // model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 // model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。 // model.setOutTradeNo(outTradeNo);//商户网站唯一订单号 // model.setTimeoutExpress("30m"); // model.setTotalAmount(amount);//付款金额 // model.setProductCode("QUICK_MSECURITY_PAY"); // model.setPassbackParams(passbackParams);//自定义参数 // request.setBizModel(model); // request.setNotifyUrl(callbackPath + notifyUrl); // try { // //这里和普通的接口调用不同,使用的是sdkExecute // AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); // Map<String, String> map = new HashMap<>(); // map.put("orderString", response.getBody()); // System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 // return ResultUtil.success(map); // } catch (AlipayApiException e) { // e.printStackTrace(); // } return null; } @@ -599,7 +599,7 @@ Map<String, String> map1 = null; String body1 = null; try { String certPath = "/usr/local/server/cert/weixin/apiclient_cert.p12"; String certPath = "/root/server/app/cert/weixin/apiclient_cert.p12"; body1 = httpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); } catch (Exception e) { e.printStackTrace(); @@ -829,7 +829,7 @@ xmlString.append("</xml>"); Map<String, String> map1 = null; String certPath = "/usr/local/server/cert/weixin/apiclient_cert.p12";//证书地址 String certPath = "/root/server/app/cert/weixin/apiclient_cert.p12";//证书地址 String body1 = httpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); //将结果xml解析成map body1 = body1.replaceAll("<!\\[CDATA\\[",""); @@ -906,7 +906,7 @@ xmlString.append("</xml>"); Map<String, String> map1 = null; String certPath = "/usr/local/server/cert/weixin/apiclient_cert.p12";//证书地址 String certPath = "/root/server/app/cert/weixin/apiclient_cert.p12";//证书地址 String body1 = httpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); //将结果xml解析成map body1 = body1.replaceAll("<!\\[CDATA\\[",""); DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SmsUtil.java
New file @@ -0,0 +1,44 @@ package com.stylefeng.guns.modular.system.util; import cn.hutool.crypto.SecureUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; /** * @author zhibing.pu * @Date 2024/12/17 9:25 */ public class SmsUtil { /** * 发送短信 * https://doc.zthysms.com/web/#/1/14 * @param mobile * @param content */ public static void sendZTHYSms(String mobile, String content){ HttpRequest post = HttpUtil.createPost("https://api-shss.zthysms.com/v2/sendSms"); post.contentType("application/json"); JSONObject body = new JSONObject(); Long tKey = System.currentTimeMillis() / 1000; body.put("username", "GZAHKJhy"); body.put("password", SecureUtil.md5(SecureUtil.md5("@zLa@cB0") + tKey)); body.put("tKey", tKey); body.put("mobile", mobile); body.put("content", "【安合出行】" + content); post.body(body.toJSONString()); HttpResponse execute = post.execute(); JSONObject result = JSON.parseObject(execute.body()); if(200 != result.getInteger("code")){ throw new RuntimeException(result.getString("msg")); } } public static void main(String[] args) { SmsUtil.sendZTHYSms("15828353127", "this is test sms"); } } DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
@@ -183,11 +183,8 @@ byte[] bytes = rep.getBody(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); MultipartFile file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), byteArrayInputStream); // ResultUtil resultUtil = userInfoController.uploadImg(file, null, null); String s = OssUploadUtil.ossUpload(file,driverId); String s = ObsUploadUtil.obsUpload(file); System.err.println("===url"+s); // StringBuilder sb = new StringBuilder(stringApiResult); // stringApiResult = sb.toString(); return s; } catch (Exception e) { DriverAHTravel/guns-admin/src/main/resources/application.yml
@@ -50,27 +50,14 @@ spring: datasource: url: jdbc:mysql://1.95.6.206:3306/nttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/ahtravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: Xiwang2024! password: 123456 db-name: guns #用来搜集数据库的所有表 filters: wall,mergeStat #spring: # datasource: # url: jdbc:mysql://192.168.110.34:3306/nttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai # username: root # password: 123456 # db-name: guns #用来搜集数据库的所有表 # filters: wall,mergeStat #spring: # datasource: # url: jdbc:mysql://120.27.134.189:10633/nttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai # username: weilai # password: WeiLaiChuXing@2024! # db-name: guns #用来搜集数据库的所有表 # filters: wall,mergeStat #多数据源情况的配置 guns: @@ -89,25 +76,25 @@ wx: grantType: authorization_code #填authorization_code appid: wxc89ecab90d24edd8 #应用唯一标识,在微信开放平台提交应用审核通过后获得 appSecret: bca863174d22736a4a9758a67484947e #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 appletsAppid: #小程序APPid appletsAppSecret: # mchId: 1677823911 #微信支付分配的商户号 key: CnqmrOgKqOiEyytQtoyxuaRgRGjcWFnD #key为商户平台设置的密钥key: appid: wx2d643fa565035848 #应用唯一标识,在微信开放平台提交应用审核通过后获得 appSecret: 7c7409548a9bbe001af87578709ef360 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 appletsAppid: 111 #小程序APPid appletsAppSecret: 111 # mchId: 1618978168 #微信支付分配的商户号 key: BTisLYCrwstKZRTBZef5pe51SCA7Kxe1 #key为商户平台设置的密钥key: --- alipay: appid: 2021004148610407 #应用程序唯一标识 appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqpEBIZU+2eAOSGq0AjUQL3Od/F7mNomIUlrKrO0teG9HFY8QNhFbz7cWCbhSXdYu0u9tjsvTfvtEmiuV08qEFKHisRYEorm/stCkIiJvph6v8CJwWWsXErJ9vG1Y4ijw18IoQEvE66mUJfIc1qTeUhE2lPLjHyZ1Sli6ddHpvxC5dE4J9Sq5KfKpRhcRWzsVA3RwXi3E/0YeascVzx7C9vgJYPPw5nL7vCORa1o4zlem5LVl13PHte60y8b4fIGrhOY4HLo12VX0vxDrKD7BFH+J4CqUAK2155EMUrf2tgAhel091AR/KO7KdvNaLFpeVu28UkUUUC0q7mUt2+ph9AgMBAAECggEAIIX7xpCgt8t6Cr/Q13kVThmFeeDAufEINppeZWqAu+gbfD6+oEDn/cgEzA5FGHUL8p+XehIiv/5ziKASic6wx/XlwhfhPSq6JGhWJc07wi/cpMXTUiNs7EZmgNu5/D7EqRc2iUfC+JKyPTOh5aVh9Ymd7u963IFd3d7H9bS8nU58Ryz/5vwLv5rHyHhOMuzPZ8KNfM04hRCsPwI3w4k95VFAJ+YeD9iZ6Dc+GVhr6HhFwyMBajCPJ/h+FB06ASkj9nT0P3gMpAY8wT+yyuISOkBqxiZ1wVTQifGvaxDQ7epvjV+ByhYdabv+UweWPQQMMm7+hw0Q1LaKQxfvTJ+0wQKBgQDSNcOavnH07cuDE6yyRqRRK4WojdlxYB7TdEiDCaCBaYB3dMxe01ZmsCHVRU98WWPHYTfnQq6RGRieDxEGfkyHi7ru1KRjCQzDcdv4lwT2bPhKqQE2oGWgf4akdZI/l7Hick0SHaNIeGbdY1znE9MhCdWdm/zADT+yPzALn5bPMQKBgQDPz/pwxhUQ7D83CbUb6plIRj4yW3cSC/u4W6WkQvzK+avLbGFY2GWAdc4RwcE/yIaRWvStLgmagvKvdUwWPp0k3Svue6Nu+veCZWGQ8uVnGbREu1tpgCnG2uGT8ugYiLY93WOb2daQwmFYASz63n1ge/gpbv83vs9jP4RlmgyDDQKBgF8VSqEYO9uaJE/p+le5dGHy2cZgQ1bxL4BePN5o4F0pJ57hCgBqf857JRKfA1Ev7d4lr2+/zc58F5KHJiBVyLAXGDsnnCPf2BIf0mwjg28j4zuCLrZS3yU2CeUh+UEikKfpI8tp9I23SHAjncY4RWvQUvuzryP/2iv6QPVA/qpBAoGAWdXTsuq+cpleXoGQzGenKcpL2uMVXzTU9YaQ3aijtW8nKAJLNugdQOIsWhrDWrpqCe4i9baAKk5PcTAo2zjoH+aItki2hyRw2OrQuaN3LhG7jzbbNolUBgXbHGUWlnyLI8VP6TDLg7qz8CJZ+n0yAAK3bdnw9H1FE+eCaZWlsQUCgYEAxWAzNHpNMqM6zCCjR3ynKH6acknPuzEtbGoSXdqP+5Pz9j0MA0Oc2cIRoitM5/BNdWxXoXxq6wmiH3bKEpxjtY3tdJQQA3aEmZtkn7w7vBhxiIBejIlJ3bygBDGOPkO1CDS3i3NtG7cbyhbCGl7a77Vyr+CxBN9VROZansQoKIw= #开发者应用私钥 alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqRASGVPtngDkhqtAI1EC9znfxe5jaJiFJayqztLXhvRxWPEDYRW8+3Fgm4Ul3WLtLvbY7L0377RJorldPKhBSh4rEWBKK5v7LQpCIib6Yer/AicFlrFxKyfbxtWOIo8NfCKEBLxOuplCXyHNak3lIRNpTy4x8mdUpYunXR6b8QuXROCfUquSnyqUYXEVs7FQN0cF4txP9GHmrHFc8ewvb4CWDz8OZy+7wjkWtaOM5XpuS1Zddzx7XutMvG+HyBq4TmOBy6NdlV9L8Q6yg+wRR/ieAqlACtteeRDFK39rYAIXpdPdQEfyjuynbzWixaXlbtvFJFFFAtKu5lLdvqYfQIDAQAB #应用公钥 alipay_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh6DotQ6+AR2etHXyfeN89PrCO/GIVFsgNCupDa64+3m6JJqigUQOMh16eDEAkT4Pk6jTqnTuiYQN0NFyzVZeBFW1/iAKNhctd/oK7mvQDdpvIcpXzBizG2DCg8iBVlK1h6mgZH6OVj1q4kmljaEYvFw2Y/MXwSxPiMW5FE9CfPM4ca11JEFhsNMZAzKER+9gSCCg/FtCOUmj6OofA/+4gi15cmCkxYU1FY6AEp544q3FDwMx+ejC/Zw03FD2YS+jX/jkp10lIZo6G9DOLkA3jviBO/Q/MFZUH2XEqddrGOGeT220h6XYEvgJUcxGoxnf0qF5LE5Ef13kQbO6CqnXSwIDAQAB #支付宝公钥 appid: 2021003115600201 #应用程序唯一标识 appPrivateKey: 111 #开发者应用私钥 alipayPublicKey: 111 #应用公钥 alipay_public_key: 111 #支付宝公钥 --- juhe: #聚合数据 appKey: 75897e3a893ed777055efc44b7b68914 # appKey: 93444ad1bc813182acbc1240ba80f5c7 # --- @@ -121,19 +108,12 @@ --- filePath: /usr/local/server/orderPostionFile/ #存储订单轨迹文件路径 #filePath: C:/orderPostionFile/ #存储订单轨迹文件路径 filePath: /root/server/app/orderPostionFile/ #存储订单轨迹文件路径 #支付回调地址 #正式环境 callbackPath: https://weilaigo.cn/driver #测试环境 #callbackPath: http://221.182.45.100:8999/driver callbackPath: http://1.95.8.79:81/driver --- #交通部推送数据功能开关 pushMinistryOfTransport: false alikey: LTAI5tR4whv88Y5CUucCJEu6 alisecret: 2fObO6LE6U2OzrUfXw9YBlQWHohFvg DriverAHTravel/guns-admin/src/main/resources/logback-spring.xml
@@ -1,118 +1,230 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <!--文件名称需要采取官方规定的方式 带后缀--> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 --> <!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> <!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="10 seconds"> <contextName>logback</contextName> <!-- 定义日志的根目录 --> <property name="LOG_HOME" value="/usr/local/server/logs/" /> <!-- 定义日志文件名称 --> <property name="LOG_FILE_NAME" value="driver_log"></property> <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> <property name="log.path" value="/root/server/app/logs/driver"/> <!--按照官方规定 采用带后缀的命名方式,可以使用其高级Profile功能--> <springProfile name="dev"> <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 --> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志输出格式: %d表示日期时间, %thread表示线程名, %-5level:级别从左显示5个字符宽度 %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息, %n是换行符 --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern> </layout> <!--0. 日志格式和颜色渲染 --> <!-- 彩色日志依赖的渲染类 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> <!-- 彩色日志格式 --> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <!--1. 输出到控制台--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!-- logger主要用于存放日志对象,也可以定义日志类型、级别 name:表示匹配的logger类型前缀,也就是包的前半部分 level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, false:表示只用当前logger的appender-ref,true: 表示当前logger的appender-ref和rootLogger的appender-ref都有效 --> <!-- hibernate logger --> <!-- <logger name="xxxx" level="debug" /> --> <!-- Spring framework logger --> <logger name="org.springframework" level="debug" additivity="false"></logger> <!-- mybatis日志打印--> <logger name="org.apache.ibatis" level="DEBUG" /> <logger name="java.sql" level="DEBUG" /> <logger name="com.stylefeng.guns.modular.system.dao" level="DEBUG"></logger> <!-- root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 --> <root level="info"> <appender-ref ref="stdout" /> </root> </springProfile> <springProfile name="produce"> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 --> <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 指定日志文件的名称 --> <file>${LOG_HOME}/${LOG_FILE_NAME}.log</file> <!-- 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名 TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动。 --> <!--2. 输出到文档--> <!-- 2.1 level为 DEBUG 日志,时间滚动输出 --> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/debug.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 %i:当文件大小超过maxFileSize时,按照i进行文件滚动 --> <fileNamePattern>${LOG_HOME}/${LOG_FILE_NAME}/%d{yyyy-MM-dd}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动, 且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是, 那些为了归档而创建的目录也会被删除。 --> <MaxHistory>10</MaxHistory> <!-- 当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy --> <!-- 日志归档 --> <fileNamePattern>${log.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 日志输出格式: --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern> </layout> <!-- 此日志文档只记录debug级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.2 level为 INFO 日志,时间滚动输出 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/info.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天日志归档路径以及格式 --> <fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.3 level为 WARN 日志,时间滚动输出 --> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/warn.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档只记录warn级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.4 level为 ERROR 日志,时间滚动输出 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/error.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档只记录ERROR级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件 --> <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/all.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>DENY</onMatch> <onMismatch>ACCEPT</onMismatch> </filter> </appender> <!-- logger主要用于存放日志对象,也可以定义日志类型、级别 name:表示匹配的logger类型前缀,也就是包的前半部分 level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, false:表示只用当前logger的appender-ref,true: 表示当前logger的appender-ref和rootLogger的appender-ref都有效 <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 以及指定<appender>。<logger>仅有一个name属性, 一个可选的level和一个可选的addtivity属性。 name:用来指定受此logger约束的某一个包或者具体的某一个类。 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。 如果未设置此属性,那么当前logger将会继承上级的级别。 addtivity:是否向上级logger传递打印信息。默认是true。 <logger name="org.springframework.web" level="info"/> <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> --> <!-- hibernate logger --> <!-- <logger name="xxxx" level="debug" /> --> <!-- Spring framework logger --> <logger name="org.springframework" level="debug" additivity="false"></logger> <!-- mybatis日志打印--> <logger name="org.apache.ibatis" level="DEBUG" /> <logger name="java.sql" level="DEBUG" /> <logger name="com.stylefeng.guns.modular.system.dao" level="DEBUG"></logger> <!-- root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能设置为INHERITED或者同义词NULL。默认是DEBUG 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 --> <!-- 4 最终的策略: 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)--> <springProfile name="dev"> <root level="info"> <appender-ref ref="appLogAppender" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> <appender-ref ref="ALL_FILE" /> </root> <logger name="com.baomidou.mybatisplus" level="info"/> <logger name="com.stylefeng.guns.modular.system.dao" level="info"/> <logger name="business-log" level="warn"/> </springProfile> <springProfile name="fat"> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> <appender-ref ref="ALL_FILE" /> </root> <logger name="com.baomidou.mybatisplus" level="debug"/> <logger name="com.stylefeng.guns.modular.system.dao" level="error"/> <logger name="business-log" level="warn"/> </springProfile> <springProfile name="produce"> <root level="info"> <!-- 生产环境最好不配置console写文件 --> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> <appender-ref ref="ALL_FILE" /> </root> <logger name="com.baomidou.mybatisplus" level="error"/> <logger name="com.stylefeng.guns.modular.system.dao" level="debug"/> <logger name="business-log" level="warn"/> </springProfile> </configuration> DriverAHTravel/guns-admin/src/main/resources/redis.properties
@@ -6,8 +6,7 @@ # Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú spring.redis.port=6379 # Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£© #spring.redis.password=123456 spring.redis.password=Xiwang2024! spring.redis.password=123456 # Á¬½Ó³Ø×î´óÁ¬½ÓÊý£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£© spring.redis.jedis.pool.max-active=1024 # Á¬½Ó³Ø×î´ó×èÈûµÈ´ýʱ¼ä£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£©