Pu Zhibing
2 天以前 56d6af7c8b64c8b477296c591364559c2d8b9a0c
修改bug
2个文件已添加
7个文件已修改
393 ■■■■ 已修改文件
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SendSmsRequest.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/resources/application-dev.yml 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -17,7 +17,6 @@
import com.stylefeng.guns.modular.system.util.ALiSendSms;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.util.WeChatUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
@@ -263,7 +262,7 @@
                    break;
            }
//            String s = aLiSendSms.sendSms(driver.getPhone(), templateCode, "{}");
            SMSUtil.sendVerifyCode(driver.getPhone());
//            SMSUtil.sendVerifyCode(driver.getPhone());
            return ResultUtil.success();
        }catch (Exception e){
            e.printStackTrace();
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java
@@ -287,6 +287,11 @@
     */
    @TableField("OnCall")
    private String OnCall;
    /**
     * 中台企业编号
     */
    @TableField("enterCode")
    private String enterCode;
    public String getDetailAddress() {
        return detailAddress;
@@ -745,6 +750,14 @@
        OnCall = onCall;
    }
    public String getEnterCode() {
        return enterCode;
    }
    public void setEnterCode(String enterCode) {
        this.enterCode = enterCode;
    }
    @Override
    public String toString() {
        return "Company{" +
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -16,6 +16,7 @@
import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.EditStaffNodeRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.GetStaffNodeRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.SendSmsRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.StaffNodeInfo;
import com.stylefeng.guns.modular.system.warpper.ActivityWarpper;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
@@ -152,25 +153,23 @@
            sb.append((int) (random.nextDouble() * 10));
        }
        String authCode = sb.toString();
        String sms = "短信验证码【" + authCode + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!";
        //发送验证码短信
        redisTemplate.opsForValue().set(phone, authCode, 5, TimeUnit.MINUTES);//设置五分钟过期
        String templateCode = "";
        switch (type) {
            case 1:
                templateCode = "SMS_154775435";//身份验证
                break;
            case 2:
                templateCode = "SMS_154775434";//登录确认
                break;
            case 3:
                templateCode = "SMS_154775432";//用户注册
                break;
            case 4:
                templateCode = "SMS_154775431";//修改密码
                break;
        }
//        //发送验证码短信
//        redisTemplate.opsForValue().set(phone, authCode, 5, TimeUnit.MINUTES);//设置五分钟过期
//        String templateCode = "";
//        switch (type) {
//            case 1:
//                templateCode = "SMS_154775435";//身份验证
//                break;
//            case 2:
//                templateCode = "SMS_154775434";//登录确认
//                break;
//            case 3:
//                templateCode = "SMS_154775432";//用户注册
//                break;
//            case 4:
//                templateCode = "SMS_154775431";//修改密码
//                break;
//        }
//        String sData = aLiSendSms.sendSms(phone, "SMS_229715276", "{\"code\":\"" + authCode + "\"}");
//        JSONObject jsonObject = JSON.parseObject(sData);
//        String message = jsonObject.getString("Message");
@@ -178,7 +177,16 @@
//            return ResultUtil.error("");
//        }
//        System.out.println(sms);
        SMSUtil.sendVerifyCode(phone);
        SendSmsRequest request = new SendSmsRequest();
        request.setDestAddress(phone);
        request.setTemplateId("TPL202410290001");
        Map<String, String> templateParams = new HashMap<>();
        templateParams.put("code", authCode);
        request.setTemplateParams(templateParams);
        request.setCode("code");
        request.setSpId("T8d5hdfg");
        SMSUtil.sendSms(request);
        redisTemplate.opsForValue().set(phone, authCode, 5, TimeUnit.MINUTES);//设置五分钟过期
        return ResultUtil.success();
    }
@@ -465,11 +473,12 @@
        if (null == driver) {
            return ResultUtil.error("账号未注册");
        }
        Company company = companyMapper.selectById(driver.getCompanyId());
        //查询中台员工数据
        GetStaffNodeRequest request = new GetStaffNodeRequest();
        request.setEmpId(driver.getEmpId());
        request.setEntercode(driver.getEntercode());
        request.setMobile(driver.getPhone());
        request.setEntercode(company.getEnterCode());
        request.setMobile(company.getPrincipalPhone());
        StaffNodeInfo staffNode = EmployeeUtil.getStaffNode(request);
        if (null == staffNode || staffNode.getIsValid().equals("0")) {
            return ResultUtil.error("账号未注册");
@@ -781,6 +790,7 @@
            return ResultUtil.error("验证码无效");
        }
        Driver driver1 = this.selectById(uid);
        Company company = companyMapper.selectById(driver1.getCompanyId());
        GetStaffNodeRequest request = new GetStaffNodeRequest();
        request.setEmpId(driver1.getEmpId());
        request.setEntercode(driver1.getEntercode());
@@ -791,8 +801,8 @@
        }
        EditStaffNodeRequest editStaffNodeRequest = new EditStaffNodeRequest();
        editStaffNodeRequest.setEmpId(staffNode.getEmpId());
        editStaffNodeRequest.setMobile(staffNode.getMphone());
        editStaffNodeRequest.setEntercode(staffNode.getEnterNum());
        editStaffNodeRequest.setMobile(company.getPrincipalPhone());
        editStaffNodeRequest.setEntercode(company.getEnterCode());
        editStaffNodeRequest.setEnterId(staffNode.getEnterId());
        editStaffNodeRequest.setEmpName(staffNode.getEmpName());
        editStaffNodeRequest.setEmpNickname(staffNode.getEmpNickname());
@@ -1571,7 +1581,9 @@
            //开始清除redis中无效的数据
            Driver driver = driverMapper.selectById(id);
            String key = (String) redisTemplate.opsForValue().get("DRIVER_" + driver.getPhone());
            if(ToolUtil.isNotEmpty(key)){
            redisTemplate.delete(key);//删除个人信息数据
            }
            redisTemplate.delete("DRIVER_" + driver.getPhone());//删除后台冻结相关缓存
            redisTemplate.delete("DRIVER_" + id);//清除存储的token
        }
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/EmployeeUtil.java
@@ -64,7 +64,7 @@
            log.error("【企业增加员工】失败:" + object.toJSONString());
            throw new RuntimeException("【企业增加员工】失败:" + object.toJSONString());
        }
        SaveStaffNode saveStaffNode = jsonObject.getObject("data", SaveStaffNode.class);
        SaveStaffNode saveStaffNode = object.getObject("data", SaveStaffNode.class);
        return saveStaffNode;
    }
    
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java
@@ -7,18 +7,43 @@
 * @Date 2025/6/6 15:03
 */
public interface QianYunTongProperties {
    /**
     * 小程序appId
     */
    String appId = "wxcc3c9058e2b294db";
    /**
     *
     */
    String encryptedData = "645HaSm7meo0GLKQZZvagq3JkWZXYlOfvhf8YKqNjWklpzx3IjM2S/wkmlUOz/iPvDVYRgBD2+V1WCHT6fMbOjJnR/0W9bwVGOSSaoyYpZdPR5x8f/6OR1B3e3qfJWFKJf0Za4n9JJTwStCTuMHWRIE0IgYtj3zSb2WI1AzDyLeR7MMgW0q+red2ujtrKGR4pe0NoXB2qZKHj4whBuGUiw==";
    /**
     *
     */
    String iv = "Zz2ZL9Yu43pp38p5CcocJA==";
    /************************************开发/测试start***********************************/
//    /**
//     * appkey
//     */
//    String appkey = "10001104";
//    /**
//     * 私钥地址
//     */
//    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem";
//    /**
//     * 私钥地址
//     */
//    String privateKeyPath = "/root/server/app/key/private_key_test.pem";
//    /**
//     * 消费者账号
//     */
//    String userName = "xiaofei";
//    /**
//     * 状态
//     * 1:生产环境
//     * 2:测试环境
//     */
//    String status = "1";
//    /**
//     * API地址
//     */
//    String apiUrl = "https://test-zhongtai.stqcloud.com:10070";
//    /**
//     * 桶名
//     */
//    String bucketName = "bucuTest0625";
    /************************************开发/测试end***********************************/
    /************************************生产start***********************************/
    /**
     * appkey
     */
@@ -26,11 +51,15 @@
    /**
     * 私钥地址
     */
    String privateKeyPath = "/root/server/app/key/private_key_test.pem";
//    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key.pem";
    /**
     * 私钥地址
     */
    String privateKeyPath = "/root/server/app/key/private_key.pem";
    /**
     * 消费者账号
     */
    String userName = "xiaofei";
    String userName = "xiwang";
    /**
     * 状态
     * 1:生产环境
@@ -40,11 +69,24 @@
    /**
     * API地址
     */
    String apiUrl = "https://test-zhongtai.stqcloud.com:10070";
    String apiUrl = "http://jjzhongtai.stqcloud.com:10010";
    /**
     * 桶名
     */
    String bucketName = "qyt20250702";
    /************************************生产end***********************************/
    /**
     * 小程序appId
     */
    String appId = "wxcc3c9058e2b294db";
    /**
     * HOS的基础路径(公共前缀)
     */
    String endPoint = "119.4.112.68:27741";
    String endPoint = "http://119.4.112.68:27741/v1";
    /**
     * 账户的ID
     */
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java
@@ -2,8 +2,10 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.open.common.util.OpenApiClient;
import com.open.common.util.SystemParameterNames;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.SendSmsRequest;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
@@ -64,4 +66,50 @@
        }
        return object.getString("code");
    }
    /**
     * 根据模板发送短信
     *
     * @param request
     * @return
     */
    public static Boolean sendSms(SendSmsRequest request) {
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/sendSmsByTpl";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUID.randomUUID().toString().replaceAll("-", "");
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【根据模板发送短信】请求地址:" + url);
        log.info("【根据模板发送短信】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【根据模板发送短信】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String retCode = jsonObject.getString("retCode");
        if (!"0".equals(retCode)) {
            log.error("【根据模板发送短信】请求失败:" + result);
            throw new RuntimeException("【根据模板发送短信】请求失败:" + result);
        }
        JSONObject object = jsonObject.getJSONObject("object");
        String status = object.getString("status");
        if (!"0".equals(status)) {
            log.error("【根据模板发送短信】失败:" + object.toJSONString());
            throw new RuntimeException("【根据模板发送短信】失败:" + object.toJSONString());
        }
        return true;
    }
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
@@ -1,15 +1,11 @@
package com.stylefeng.guns.modular.system.util.qianyuntong;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.open.common.util.OpenApiClient;
import com.open.common.util.SystemParameterNames;
import com.stylefeng.guns.modular.system.util.UUIDUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import lombok.extern.slf4j.Slf4j;
@@ -215,43 +211,6 @@
    }
    
    
    /**
     * 微信小程序登录
     *
     * @param code
     * @return
     */
    public static LoginWeChatXiao loginWeChatXiao(String code) {
        HttpRequest post = HttpUtil.createPost("https://casme.teamshub.com/webapp-backstage/ajax/loginWeChatXiao/v1.0");
        post.header("Content-Type", "text/plain;charset=UTF-8");
        post.header("Accept-encodeing", "UTF-8");
        JSONObject body = new JSONObject();
        body.put("version", "1.0");
        try {
            body.put("id", UUIDUtil.getRandomCode(6));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        body.put("type", "loginWeChatXiao");
        body.put("action", "request");
        body.put("code", code);
        body.put("appId", QianYunTongProperties.appId);
        body.put("encryptedData", QianYunTongProperties.encryptedData);
        body.put("iv", QianYunTongProperties.iv);
        post.body(body.toJSONString());
        HttpResponse execute = post.execute();
        if (200 != execute.getStatus()) {
            log.error("微信登录失败");
            return null;
        }
        JSONObject jsonObject = JSON.parseObject(execute.body());
        Integer status = jsonObject.getInteger("status");
        if (0 != status) {
            log.error("微信登录失败:" + jsonObject.getString("desc"));
            return null;
        }
        LoginWeChatXiao loginWeChatXiao = jsonObject.getObject("data", LoginWeChatXiao.class);
        return loginWeChatXiao;
    }
    
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/SendSmsRequest.java
New file
@@ -0,0 +1,33 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.util.Map;
/**
 * @author zhibing.pu
 * @Date 2025/7/2 15:41
 */
@Data
public class SendSmsRequest {
    /**
     * 目标地址
     */
    private String destAddress;
    /**
     * 模板id
     */
    private String templateId;
    /**
     * 参数集合
     */
    private Map<String, String> templateParams;
    /**
     * 模板中占位符key
     */
    private String code;
    /**
     * 签名SPID
     */
    private String spId;
}
DriverQYTTravel/guns-admin/src/main/resources/application-dev.yml
New file
@@ -0,0 +1,117 @@
server:
    port: 8007
guns:
    swagger-open: true              #是否开启swagger (true/false)
    kaptcha-open: false             #是否开启登录时验证码 (true/false)
    file-upload-path: d:/tmp       #文件上传目录(不配置的话为java.io.tmpdir目录)
    picture-server-address: http://192.168.0.43/resources/  #图片服务器地址
    spring-session-open: false      #是否开启spring session,如果是多机环境需要开启(true/false)
    session-invalidate-time: 1800     #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒
    session-validation-interval: 900  #多久检测一次失效的session(只在单机环境下生效) 单位:秒
spring:
    application:
        name: driver-server
    profiles:
        #        active: dev
        active: prod
    mvc:
        static-path-pattern: /static/**
        view:
            prefix: /WEB-INF/view
        devtools:
            restart:
                enabled: false
                additional-paths: src/main/java
                exclude: static/**,WEB-INF/view/**
        servlet:
            multipart:
                max-request-size: 100MB
                max-file-size: 100MB
    redis:
        host: 172.21.35.151
        port: 6512
        password: SC_cache@20#25
        database: 0
        timeout: 1000
        cluster:
            nodes: 172.21.35.151:6512,172.21.35.152:6512,172.21.35.153:6512,172.21.35.151:6513,172.21.35.152:6513,172.21.35.153:6513
mybatis-plus:
    typeAliasesPackage: com.stylefeng.guns.modular
    global-config:
        id-type: 0  #0:数据库ID自增   1:用户输入id  2:全局唯一id(IdWorker)  3:全局唯一ID(uuid)
        db-column-underline: false
    configuration:
        configuration.map-underscore-to-camel-case: true #是否开启自动驼峰命名规则(camel case)映射
        log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #输出Sql,如需打印Sql注释该配置
eureka:
    client:
        service-url: #注册中心地址
            defaultZone: http://sinata:sinata@127.0.0.1:8000/eureka #启用身份验证的方式连接
        register-with-eureka: true #在注册中心进行注册
        fetch-registry: true #从Eureka中获取注册信息。
---
spring:
    datasource:
        url: jdbc:mysql://172.21.35.140:8066/traffic_scdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
        username: traffic_scusr
        password: QYT_sc@20#25
        db-name: traffic_scdb #用来搜集数据库的所有表
        filters: wall,mergeStat
---
spring:
    data:
        mongodb:
            uri: mongodb://qyt_jtcx:qyt_jtcx2025@172.21.35.195:27017,172.21.35.196:27017/traveling_track
---
wx:
    grantType: authorization_code #填authorization_code
    appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得
    appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
    appletsAppid: wxcc3c9058e2b294db #小程序APPid
    appletsAppSecret: 5610fc6126255ca5f7bd9fa4330338b6 #
    mchId: 111 #微信支付分配的商户号
    key: 111 #key为商户平台设置的密钥key:
---
alipay:
    appid: 111  #应用程序唯一标识
    appPrivateKey: 111 #开发者应用私钥
    alipayPublicKey: 1 #应用公钥
    alipay_public_key: 111 #支付宝公钥
---
juhe: #聚合数据
    appKey: 111 #
---
jiguang:
    appKey-driver: 111 #极光推送应用唯一标识
    masterSecret-driver: 111 #用于服务器端 API 调用时与 AppKey 配合使用达到鉴权的目的
    appKey-dispatch: 111 #极光推送应用唯一标识
    masterSecret-dispatch: 111 #用于服务器端 API 调用时与 AppKey 配合使用达到鉴权的目的
---
#支付回调地址
#正式环境
callbackPath: https://traffic.qytzt.cn/driver
---
#交通部推送数据功能开关
pushMinistryOfTransport: false