Pu Zhibing
2025-11-10 90f19cfec1055182b6e2b77cac8f7cafe1664e46
修改bug
9个文件已修改
502 ■■■■■ 已修改文件
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
@@ -254,7 +254,7 @@
                    map.put("name", s.get("name").toString());
                    name = s.get("cityName").toString();
                    code = s.get("cityCode").toString();
                    if(null == s.get("name")){
                    if(null == s.get("lonLat")){
                        String location = gdMapGeocodingUtil.geocoding(name + s.get("name").toString());
                        map.put("lonLat", location);
                        Site site = new Site();
@@ -262,7 +262,7 @@
                        site.setLonLat(location);
                        siteMapper.updateById(site);
                    }else{
                        map.put("lonLat", s.get("name").toString());
                        map.put("lonLat", s.get("lonLat").toString());
                    }
                    data.add(map);
                }
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -590,8 +590,11 @@
            }else{
                key = requestHeader;
            }
            String value = (String) redisTemplate.opsForValue().get(key);
            return null != value ? Integer.valueOf(value) : null;
            Object o = redisTemplate.opsForValue().get(key);
            if(o == null || "null".equals(o.toString())){
                return null;
            }
            return Integer.valueOf(o.toString());
        }else{
            return null;
        }
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -11,6 +11,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashSet;
import java.util.Set;
@@ -32,10 +34,14 @@
    
    @Autowired
    private IUserMerchantCouponService userMerchantCouponService;
    @Autowired
    private UserWithdrawalService userWithdrawalService;
    public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id
    private String ip = null;
@@ -45,20 +51,23 @@
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute(){
        try {
            //修改满足活动条件的数据(在线时长,订单量)
            driverService.taskMinute();
            //处于预约单
            orderService.reservationOrder();
            //处理车载端断电后的自动下班
            driverService.taskOffWork();
            //处理结束订单后30分钟解绑小号功能
            orderService.taskMidAxbUnBindSend();
            //修改过期的商家券
            userMerchantCouponService.updateExpired();
        } catch (Exception e) {
            e.printStackTrace();
        if(null != ip && "10.31.182.11".equals(ip)){
            try {
                //修改满足活动条件的数据(在线时长,订单量)
                driverService.taskMinute();
                //处于预约单
                orderService.reservationOrder();
                //处理车载端断电后的自动下班
                driverService.taskOffWork();
                //处理结束订单后30分钟解绑小号功能
                orderService.taskMidAxbUnBindSend();
                //修改过期的商家券
                userMerchantCouponService.updateExpired();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
@@ -69,14 +78,17 @@
     */
    @Scheduled(fixedRate = 1000 * 60 * 5)
    public void taskFiveMinute(){
        try {
            for (Integer id: driverIds){
                jgPushUtil.push(1, "您的预约订单出行时间就要到了,请尽快前往预约地点接乘客", "DRIVER" + id);
        if(null != ip && "10.31.182.11".equals(ip)){
            try {
                for (Integer id: driverIds){
                    jgPushUtil.push(1, "您的预约订单出行时间就要到了,请尽快前往预约地点接乘客", "DRIVER" + id);
                }
                this.driverIds.clear();
            } catch (Exception e) {
                e.printStackTrace();
            }
            this.driverIds.clear();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
@@ -85,12 +97,15 @@
     */
    @Scheduled(cron = "0 0 0 * * *")
    public void taskDay() {
        try {
            //生成当天的司机活动
            driverService.addTodayActivity();
        } catch (Exception e) {
            e.printStackTrace();
        if(null != ip && "10.31.182.11".equals(ip)){
            try {
                //生成当天的司机活动
                driverService.addTodayActivity();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    
@@ -102,5 +117,14 @@
        int port = webServer.getPort();
        // 打印端口号
        System.out.println("Spring Boot应用已启动,访问端口:" + port);
        InetAddress inetAddress = null;
        try {
            inetAddress = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
        System.out.println("本机 IP 地址: " + inetAddress.getHostAddress());
        this.ip = inetAddress.getHostAddress();
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -28,10 +28,7 @@
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.AddAccountInfoRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTPaymentCallback;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTPaymentCallbackData;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.system.util.zhenglian.ZhengLianUtil;
import com.stylefeng.guns.modular.system.util.zhenglian.model.TradeTerminalInfo;
import com.stylefeng.guns.modular.system.util.zhenglian.model.ZLUserInfo;
@@ -180,6 +177,10 @@
    /*顺风车司机*/
    @Autowired
    private IDriverRideService driverRideService;
    @Autowired
    private IOrderPrivateCarService iOrderPrivateCarService;
    @Autowired
    private IIncomeService incomeService;
    /**
@@ -2703,4 +2704,89 @@
        }
    }
    /**
     * 手动生成追缴单
     * @param orderId
     * @return
     */
    @PostMapping("/base/saveCopyOrder")
    public ResultUtil saveCopyOrder(Integer orderId){
        try {
            OrderPrivateCar orderPrivateCar = iOrderPrivateCarService.selectById(orderId);
            Double orderMoney = (2 == orderPrivateCar.getAbnormal() && 2 == orderPrivateCar.getAbnormalStatus() ? orderPrivateCar.getResponsibilityMoney().doubleValue() : orderPrivateCar.getOrderMoney());
            //copy原始订单后生成追缴单
            OrderPrivateCar orderPrivateCar1 = new OrderPrivateCar();
            BeanUtils.copyProperties(orderPrivateCar, orderPrivateCar1);
            orderPrivateCar1.setId(null);
            orderPrivateCar1.setRecoveryOrder(1);
            orderPrivateCar1.setIsGenerateRecoveryOrder(0);
            orderPrivateCar1.setOldOrderId(orderPrivateCar.getId());
            orderPrivateCar1.setRecoveryOrderCreateDate(new Date());
            orderPrivateCar1.setAbnormal(1);
            orderPrivateCar1.setResponsibilityType(null);
            orderPrivateCar1.setResponsibilityMoney(null);
            orderPrivateCar1.setAbnormalRemark(null);
            orderPrivateCar1.setAbnormalIntro(null);
            orderPrivateCar1.setPromotionMoney(null);
            orderPrivateCar1.setPromotionDriverId(null);
            orderPrivateCar1.setPromotionActivityId(null);
            orderPrivateCar1.setSuccessTime(null);
            orderPrivateCar1.setPromotion(1);
            orderPrivateCar1.setPromotionPhone(null);
            orderPrivateCar1.setPromotionUser(null);
            //修改原始订单为支付状态
            orderPrivateCar.setState(9);
            orderPrivateCar.setPayType(5);
            orderPrivateCar.setPayMoney(orderMoney);
            orderPrivateCar.setPayTime(new Date());
            orderPrivateCar.setIsGenerateRecoveryOrder(1);
            //添加收入
            Map<String, Object> map = incomeService.saveIncome(orderPrivateCar.getId(), 1, orderMoney);
            orderPrivateCar.setSplitAllocation(JSON.toJSONString(map));
            orderPrivateCarService.updateById(orderPrivateCar);
            //保存追缴单
            orderPrivateCarService.insert(orderPrivateCar1);
            //添加三方支付记录
            try {
                paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderPrivateCar.getId(), 1, 3, orderMoney, "", 2);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            Driver driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
            UserInfo userInfo1 = userInfoService.selectById(orderPrivateCar1.getUserId());
            Company company1 = companyService.selectById(driver1.getCompanyId());
            //调三方订单中心创建行程单
            CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
            request.setOrderNo("PR" + orderPrivateCar1.getId());
            request.setCustomerId(userInfo1.getOnconUUID());
            request.setDriverId(driver1.getEmpId().toString());
            request.setSupplierShopId(company1.getEnterCode());
            request.setServiceType(2);
            String travelItinerary = OrderUtil.createTravelItinerary(request);
            orderPrivateCar1.setTravelId(travelItinerary);
            orderPrivateCar1.setIsCreated(0);
            orderPrivateCarService.updateById(orderPrivateCar1);
            //修改订单状态为待支付
            if(ToolUtil.isNotEmpty(orderPrivateCar1.getTravelId())){
                ModifyTravelItineraryRequest modifyTravelItineraryRequest = new ModifyTravelItineraryRequest();
                modifyTravelItineraryRequest.setOrderId(orderPrivateCar1.getTravelId());
                modifyTravelItineraryRequest.setStatus(orderPrivateCar1.getState());
                modifyTravelItineraryRequest.setDriverId(driver1.getEmpId().toString());
                modifyTravelItineraryRequest.setSupplierShopId(company1.getEnterCode());
                if (2 == orderPrivateCar1.getPromotion()) {
                    Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
                    modifyTravelItineraryRequest.setPromoterId(driver2.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(modifyTravelItineraryRequest);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return ResultUtil.success();
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -1689,14 +1689,6 @@
        CancleOrder query = cancleOrderService.query(1, 3, openCity.getId());
        if (null != query) {
            if (payType == 1) {//微信支付
                String value = (String) redisTemplate.opsForValue().get("appletOpenId");
                String appletsOpenId = null;
                if (ToolUtil.isNotEmpty(value)) {
                    JSONObject jsonObject = JSON.parseObject(value);
                    appletsOpenId = jsonObject.getString(uid.toString());
                } else {
                    appletsOpenId = userInfo.getAppletsOpenId();
                }
                orderCancel.setPayType(1);
                orderCancelService.updateById(orderCancel);
                
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -484,6 +484,27 @@
                //添加消息
                systemNoticeService.addSystemNotice(1, "您的快车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
                baseWarpper.setId(orderPrivateCar.getId());
                if(null != orderPrivateCar.getDriverId()){
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                    Company company = companyService.selectById(driver.getCompanyId());
                    //调三方订单中心创建行程单
                    CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
                    request.setOrderNo("PR" + orderPrivateCar.getId());
                    request.setCustomerId(userInfo.getOnconUUID());
                    request.setDriverId(driver.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                    if(orderPrivateCar.getPromotion() !=null && 2 == orderPrivateCar.getPromotion()){
                        Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                        request.setPromoterId(driver1.getEmpId().toString());
                    }
                    request.setServiceType(2);
                    String travelItinerary = OrderUtil.createTravelItinerary(request);
                    orderPrivateCar.setTravelId(travelItinerary);
                    this.insertOrUpdate(orderPrivateCar);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
@@ -721,22 +742,6 @@
                                orderPrivateCar.setPromotionDriverId(promotion1);
                            }
                            Company company = companyService.selectById(driver.getCompanyId());
                            //调三方订单中心创建行程单
                            CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
                            request.setOrderNo("PR" + orderPrivateCar.getId());
                            request.setCustomerId(userInfo.getOnconUUID());
                            request.setDriverId(driver.getEmpId().toString());
                            request.setSupplierShopId(company.getEnterCode());
                            if(orderPrivateCar.getPromotion() !=null && 2 == orderPrivateCar.getPromotion()){
                                Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                                request.setPromoterId(driver1.getEmpId().toString());
                            }
                            request.setServiceType(2);
                            String travelItinerary = OrderUtil.createTravelItinerary(request);
                            orderPrivateCar.setTravelId(travelItinerary);
                            this.insertOrUpdate(orderPrivateCar);
                            //修改总订单人数
                            OrderPrivateCar orderPrivateCar2 = new OrderPrivateCar();
                            orderPrivateCar2.setSpellSuccess(1);
@@ -772,6 +777,24 @@
                //添加消息
                systemNoticeService.addSystemNotice(1, "您的快车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
                baseWarpper.setId(orderPrivateCar.getId());
                if(null != orderPrivateCar.getDriverId()){
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    Company company = companyService.selectById(driver.getCompanyId());
                    //调三方订单中心创建行程单
                    CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
                    request.setOrderNo("PR" + orderPrivateCar.getId());
                    request.setCustomerId(userInfo.getOnconUUID());
                    request.setDriverId(driver.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                    if(orderPrivateCar.getPromotion() !=null && 2 == orderPrivateCar.getPromotion()){
                        Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                        request.setPromoterId(driver1.getEmpId().toString());
                    }
                    request.setServiceType(2);
                    String travelItinerary = OrderUtil.createTravelItinerary(request);
                    orderPrivateCar.setTravelId(travelItinerary);
                    this.insertOrUpdate(orderPrivateCar);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
@@ -1138,14 +1161,6 @@
        CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, openCity.getId());
        if (null != query) {
            if (payType == 1) {//微信支付
                String value = (String) redisTemplate.opsForValue().get("appletOpenId");
                String appletsOpenId = null;
                if (ToolUtil.isNotEmpty(value)) {
                    JSONObject jsonObject = JSON.parseObject(value);
                    appletsOpenId = jsonObject.getString(uid.toString());
                } else {
                    appletsOpenId = userInfo.getAppletsOpenId();
                }
                orderCancel.setPayType(1);
                orderCancelService.updateById(orderCancel);
                String app = type == 1 ? "APP" : "JSAPI";
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -599,15 +599,6 @@
        }
    
        if (type == 2) {//小程序登录
            String value = (String) redisTemplate.opsForValue().get("appletOpenId");
            JSONObject jsonObject = null;
            if (ToolUtil.isNotEmpty(value)) {
                jsonObject = JSON.parseObject(value);
            } else {
                jsonObject = new JSONObject();
            }
            jsonObject.put(userInfo.getId().toString(), userInfo.getAppletsOpenId());
            redisTemplate.opsForValue().set("appletOpenId", jsonObject.toJSONString());
            //调用单点登录的逻辑
            this.singlePointLogin(userInfo.getId(), loginType);
            String token = this.getToken(userInfo, "", loginType);
@@ -651,7 +642,8 @@
     */
    @Override
    public ResultUtil<LoginWarpper> wxLogins(Integer type, String openid, String unionid, String jscode, String registIp,
                                            String registAreaCode, Integer sex, String nickName, String avatar,String loginType,String phone,String encryptedData, String iv) throws Exception {
                                            String registAreaCode, Integer sex, String nickName, String avatar,String loginType,
                                             String phone,String encryptedData, String iv) throws Exception {
        UserInfo userInfo = null;
        String sessionKey=null;
        if(type == 2){//小程序
@@ -741,7 +733,7 @@
            }else {
                userInfo.setCompanyId(1);
            }
            if(null == userInfo.getId()){
            if(null != userInfo.getId()){
                userInfoMapper.updateById(userInfo);
            }else{
                this.insert(userInfo);
@@ -764,15 +756,6 @@
        }
    
        if (type == 2) {//小程序登录
            String value = (String) redisTemplate.opsForValue().get("appletOpenId");
            JSONObject jsonObject = null;
            if (ToolUtil.isNotEmpty(value)) {
                jsonObject = JSON.parseObject(value);
            } else {
                jsonObject = new JSONObject();
            }
            jsonObject.put(userInfo.getId().toString(), userInfo.getAppletsOpenId());
            redisTemplate.opsForValue().set("appletOpenId", jsonObject.toJSONString());
            //调用单点登录的逻辑
            this.singlePointLogin(userInfo.getId(), loginType);
            String token = this.getToken(userInfo, "", loginType);
@@ -822,51 +805,6 @@
        return null;
    }
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("User-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36");
            connection.setRequestProperty("Authorization", "Token iVXSeqMEhdYvAj2bgA8tiWdE");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }
    /**
     * 忘记密码操作
@@ -949,21 +887,6 @@
            userInfo1.setNickName(userInfo.getNickName());
            userInfo1.setOnconUUID(onconUUID);
            this.updateById(userInfo1);
            if (ToolUtil.isNotEmpty(loginType) && loginType.equals("Applets")) {//小程序登录后绑定手机号码
                String value = (String) redisTemplate.opsForValue().get("appletOpenId");
                JSONObject jsonObject = null;
                if (ToolUtil.isNotEmpty(value)) {
                    jsonObject = JSON.parseObject(value);
                    jsonObject.remove(userInfo.getId().toString());//删除原有账号缓存的数据
                } else {
                    jsonObject = new JSONObject();
                }
                jsonObject.put(userInfo1.getId().toString(), userInfo.getAppletsOpenId());
                redisTemplate.opsForValue().set("appletOpenId", jsonObject.toJSONString());
            }
            this.deleteById(userInfo.getId());//删除原有数据
            //还原之前账号领取的注册优惠券
@@ -1026,8 +949,11 @@
            }else{
                key = requestHeader;
            }
            String value = (String) redisTemplate.opsForValue().get(key);
            return null != value ? Integer.valueOf(value) : null;
            Object o = redisTemplate.opsForValue().get(key);
            if(null == o || "null".equals(o.toString())){
                return null;
            }
            return Integer.valueOf(o.toString());
        }else{
            return null;
        }
@@ -1086,14 +1012,6 @@
            return ResultUtil.error("支付金额必须大于0元");
        }
        if(payType == 1){//微信支付
            String value = (String) redisTemplate.opsForValue().get("appletOpenId");
            String appletsOpenId = null;
            if(ToolUtil.isNotEmpty(value)){
                JSONObject jsonObject = JSON.parseObject(value);
                appletsOpenId = jsonObject.getString(uid.toString());
            }else{
                appletsOpenId = userInfo.getAppletsOpenId();
            }
            Integer integer = paymentRecordService.saveData(2, uid, 1, null, null, 1, money, "", 1);//添加预支付数据
            String app = type == 1 ? "APP" : "JSAPI";
            return payMoneyUtil.weixinpay("余额充值", uid.toString(), integer.toString(), money.toString(), "/base/wxCancelUserBalance", app, userInfo.getAppletsOpenId());
@@ -1305,16 +1223,6 @@
        Map<String, String> map = weChatUtil.code2Session(jscode);
        String openid = map.get("openid");
        String unionid = map.get("unionid");
        //将当前小程序openid存储到缓存中用后面的支付时使用
        String value = (String) redisTemplate.opsForValue().get("appletOpenId");
        JSONObject jsonObject = null;
        if(ToolUtil.isNotEmpty(value)){
            jsonObject = JSON.parseObject(value);
        }else{
            jsonObject = new JSONObject();
        }
        jsonObject.put(userId.toString(), openid);
        redisTemplate.opsForValue().set("appletOpenId", jsonObject.toJSONString());
        return ResultUtil.success();
    }
@@ -1590,20 +1498,20 @@
     * @return
     */
    private String getToken(UserInfo userInfo, String password,String type) throws Exception{
        if(ToolUtil.isEmpty(type))type="APP";
//        if(ToolUtil.isEmpty(type))type="APP";
        //封装请求账号密码为shiro可验证的token
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(userInfo.getPhone(), password.toCharArray());
        String credentials = userInfo.getPassWord();
        ByteSource credentialsSalt = new Md5Hash(salt);
        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
                new ShiroUser(), credentials, credentialsSalt, "");
//        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(userInfo.getPhone(), password.toCharArray());
//        String credentials = userInfo.getPassWord();
//        ByteSource credentialsSalt = new Md5Hash(salt);
//        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
//                new ShiroUser(), credentials, credentialsSalt, "");
    
        //校验用户账号密码
        HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
        md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
        md5CredentialsMatcher.setHashIterations(ShiroKit.hashIterations);
        boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
                usernamePasswordToken, simpleAuthenticationInfo);
//        HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
//        md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
//        md5CredentialsMatcher.setHashIterations(ShiroKit.hashIterations);
//        boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
//                usernamePasswordToken, simpleAuthenticationInfo);
        String s = JwtTokenUtil.generateToken(String.valueOf(userInfo.getId()));
        redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(userInfo.getId()), 30, TimeUnit.DAYS);
        redisTemplate.opsForValue().set("USER_" + type + "_" + userInfo.getPhone(), s.substring(s.length() - 32));
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -22,10 +22,15 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.boot.web.server.WebServer;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;
@@ -34,7 +39,7 @@
 */
@Slf4j
@Component
public class TaskUtil {
public class TaskUtil implements ApplicationListener<WebServerInitializedEvent> {
    
    @Autowired
    private IUserCouponRecordService userCouponRecordService;
@@ -72,6 +77,8 @@
    private IDriverService driverService;
    @Autowired
    private ICompanyService companyService;
    private String ip = null;
    
    
    /**
@@ -79,62 +86,61 @@
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute() {
        try {
            //处理超时未支付的订单
            timoutNoPayment();
            //修改过期的优惠券
            userCouponRecordService.updateTimeOut();
            //修改过期的商家优惠券
            userMerchantCouponService.updateExpired();
        } catch (Exception e) {
            e.printStackTrace();
        if(null != ip && "10.31.182.11".equals(ip)){
            try {
                //处理超时未支付的订单
                timoutNoPayment();
                //修改过期的优惠券
                userCouponRecordService.updateTimeOut();
                //修改过期的商家优惠券
                userMerchantCouponService.updateExpired();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 每天的凌晨执行的任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskDay() {
    }
    
    /**
     * 每天中午12点发送提醒短信
     */
    @Scheduled(cron = "0 0 12 * * ?")
    public void taskMonth() {
        try {
            List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("isDelete", 1)
                    .eq("state", 7).eq("abnormal", 1)
                    .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
            for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                SendSmsRequest request = new SendSmsRequest();
                request.setDestAddress(userInfo.getPhone());
                request.setTemplateId("TPL202507300002");
                Map<String, String> templateParams = new HashMap<>();
                request.setTemplateParams(templateParams);
                request.setSpId("Y86asr7J");
                SMSUtil.sendSms(request);
        if(null != ip && "10.31.182.11".equals(ip)){
            try {
                List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("isDelete", 1)
                        .eq("state", 7).eq("abnormal", 1)
                        .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
                for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
                    UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                    SendSmsRequest request = new SendSmsRequest();
                    request.setDestAddress(userInfo.getPhone());
                    request.setTemplateId("TPL202507300002");
                    Map<String, String> templateParams = new HashMap<>();
                    request.setTemplateParams(templateParams);
                    request.setSpId("Y86asr7J");
                    SMSUtil.sendSms(request);
                }
                List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("isDelete", 1)
                        .eq("state", 7).eq("abnormal", 1)
                        .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
                for (OrderTaxi orderTaxi : orderTaxis) {
                    UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
                    SendSmsRequest request = new SendSmsRequest();
                    request.setDestAddress(userInfo.getPhone());
                    request.setTemplateId("TPL202507300002");
                    Map<String, String> templateParams = new HashMap<>();
                    request.setTemplateParams(templateParams);
                    request.setSpId("Y86asr7J");
                    SMSUtil.sendSms(request);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("isDelete", 1)
                    .eq("state", 7).eq("abnormal", 1)
                    .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
            for (OrderTaxi orderTaxi : orderTaxis) {
                UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
                SendSmsRequest request = new SendSmsRequest();
                request.setDestAddress(userInfo.getPhone());
                request.setTemplateId("TPL202507300002");
                Map<String, String> templateParams = new HashMap<>();
                request.setTemplateParams(templateParams);
                request.setSpId("Y86asr7J");
                SMSUtil.sendSms(request);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
@@ -297,4 +303,22 @@
            }
        }
    }
    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        // 获取环境对象
        WebServer webServer = event.getWebServer();
        // 获取端口号
        int port = webServer.getPort();
        // 打印端口号
        System.out.println("Spring Boot应用已启动,访问端口:" + port);
        InetAddress inetAddress = null;
        try {
            inetAddress = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
        System.out.println("本机 IP 地址: " + inetAddress.getHostAddress());
        this.ip = inetAddress.getHostAddress();
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -615,14 +615,6 @@
        System.out.println("取消订单:" + query);
        if (null != query) {
            if (payType == 1) {//微信支付
                String value = (String) redisTemplate.opsForValue().get("appletOpenId");
                String appletsOpenId = null;
                if (ToolUtil.isNotEmpty(value)) {
                    JSONObject jsonObject = JSON.parseObject(value);
                    appletsOpenId = jsonObject.getString(uid.toString());
                } else {
                    appletsOpenId = userInfo.getAppletsOpenId();
                }
                orderCancel.setPayType(1);
                orderCancelService.updateById(orderCancel);
                String app = type == 1 ? "APP" : "JSAPI";