Pu Zhibing
2024-12-17 df8f39e810649e5735416800ec67c6386b0ea48e
修改第三方账号
1 文件已重命名
1个文件已添加
17个文件已修改
643 ■■■■■ 已修改文件
DriverAHTravel/guns-admin/pom.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiApiUtil.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiSendSms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HuaWeiSMSUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ObsUploadUtil.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SmsUtil.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/resources/application.yml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/resources/logback-spring.xml 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/resources/redis.properties 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
# Á¬½Ó³Ø×î´ó×èÈûµÈ´ýʱ¼ä£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£©