Pu Zhibing
2024-12-24 59e3a93e27627653dd049bb9653716f421e027a3
修改bug
6个文件已添加
8个文件已修改
245 ■■■■ 已修改文件
DriverAHTravel/guns-admin/pom.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/VersionManagementController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/DriverLineMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/DriverLineMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/DriverLine.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IDriverLineService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/DriverLineServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EnvVersion.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ObsUploadUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverAHTravel/guns-admin/pom.xml
@@ -9,8 +9,9 @@
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>guns-admin</artifactId>
    <artifactId>driver</artifactId>
    <name>guns-admin</name>
    <version>0.0.1</version>
    <description>guns 的spring boot版本</description>
    <packaging>jar</packaging>
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -39,7 +39,7 @@
 * 司机控制器
 */
@Api
@CrossOrigin
//@CrossOrigin
@RestController
@RequestMapping("")
public class DriverController {
@@ -599,7 +599,7 @@
            DriverInfoWarpper driverInfoWarpper = DriverInfoWarpper.getDriverInfoWarpper(map);
            if (driverInfoWarpper.getWechatPic()==null){
                Driver driver = driverService.selectById(uid);
                String rid = weChatUtil.rid("/pages/home/scanPage/scanPage", uid);
                String rid = weChatUtil.rid("pages/home/scanPage/scanPage", uid);
                driver.setWechatPic(rid);
                driverService.updateById(driver);
                driverInfoWarpper.setWechatPic(rid);
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/VersionManagementController.java
@@ -17,7 +17,7 @@
 * 版本管理
 */
@Api
@CrossOrigin
//@CrossOrigin
@RestController
@RequestMapping("")
public class VersionManagementController {
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/DriverLineMapper.java
New file
@@ -0,0 +1,11 @@
package com.stylefeng.guns.modular.crossCity.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.stylefeng.guns.modular.crossCity.model.DriverLine;
/**
 * @author zhibing.pu
 * @Date 2024/12/22 0:02
 */
public interface DriverLineMapper extends BaseMapper<DriverLine> {
}
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/DriverLineMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.crossCity.dao.DriverLineMapper">
</mapper>
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/DriverLine.java
New file
@@ -0,0 +1,43 @@
package com.stylefeng.guns.modular.crossCity.model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.Date;
/**
 * @author zhibing.pu
 * @Date 2024/12/21 23:59
 */
@Data
@TableName("t_driver_line")
public class DriverLine {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 司机id
     */
    @TableField("driverId")
    private Integer driverId;
    /**
     * 线路id
     */
    @TableField("lineId")
    private Integer lineId;
    /**
     * 添加时间
     */
    @TableField("createTime")
    private Date createTime;
    /**
     * 后台添加时间
     */
    @TableField("addTime")
    private String addTime;
}
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/IDriverLineService.java
New file
@@ -0,0 +1,11 @@
package com.stylefeng.guns.modular.crossCity.server;
import com.baomidou.mybatisplus.service.IService;
import com.stylefeng.guns.modular.crossCity.model.DriverLine;
/**
 * @author zhibing.pu
 * @Date 2024/12/22 0:03
 */
public interface IDriverLineService extends IService<DriverLine> {
}
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/DriverLineServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.stylefeng.guns.modular.crossCity.server.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.crossCity.dao.DriverLineMapper;
import com.stylefeng.guns.modular.crossCity.model.DriverLine;
import com.stylefeng.guns.modular.crossCity.server.IDriverLineService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2024/12/22 0:04
 */
@Service
public class DriverLineServiceImpl extends ServiceImpl<DriverLineMapper, DriverLine> implements IDriverLineService {
}
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -9,6 +9,10 @@
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.JwtTokenUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper;
import com.stylefeng.guns.modular.crossCity.model.DriverLine;
import com.stylefeng.guns.modular.crossCity.model.LinePrice;
import com.stylefeng.guns.modular.crossCity.server.IDriverLineService;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.system.dao.*;
@@ -34,6 +38,7 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -134,6 +139,12 @@
    private Map<String, Long> loginTime = new HashMap<>();//登录时间
    private Map<String, Integer> loginFailures = new HashMap<>();//登录失败次数
    @Autowired
    private IDriverLineService driverLineService;
    @Resource
    private LinePriceMapper linePriceMapper;
@@ -863,8 +874,36 @@
        }
        boolean idle = carService.idle(carId);
        if(!idle){
            return ResultUtil.error("车辆正在服务中");
        }
        Integer integer1 = driverMapper.selectCount(new EntityWrapper<Driver>().eq("carId", carId).eq("authState", 2).ne("flag", 3));
        if(integer1 > 0){
            return ResultUtil.error("车辆已被绑定了");
        }
        ///判断车辆车型是否与实际关联线路需要的车型匹配
        Integer integer = driverServiceMapper.selectCount(new EntityWrapper<DriverService>().eq("driverId", uid).eq("type", 3));
        if(integer > 0){
            CarService carService1 = new CarService();
            carService1.setCarId(carId);
            carService1.setType(3);
            CarService carService2 = carServiceMapper.selectOne(carService1);
            if(null == carService2){
                return ResultUtil.error("当前车辆不能运营城际业务");
            }
            Integer serverCarModelId = carService2.getServerCarModelId();
            List<DriverLine> driverLines = driverLineService.selectList(new EntityWrapper<DriverLine>().eq("driverId", uid));
            List<Integer> collect = driverLines.stream().map(DriverLine::getLineId).collect(Collectors.toList());
            if(collect.size() == 0){
                return ResultUtil.error("司机还未关联线路");
            }
            List<LinePrice> linePrices = linePriceMapper.selectList(new EntityWrapper<LinePrice>().in("lineId", collect).eq("state", 1));
            for (LinePrice linePrice : linePrices) {
                if(!linePrice.getServerCarModelId().equals(serverCarModelId)){
                    return ResultUtil.error("当前车辆的城际业务车型与司机关联线路的车型不一致");
                }
            }
        }
        driver.setCarId(carId);
        this.updateById(driver);
        return ResultUtil.success();
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -153,7 +153,7 @@
                Double balance = driver.getBalance();
                Double laveBusinessMoney = driver.getLaveBusinessMoney();
                Double laveActivityMoney = driver.getLaveActivityMoney();
                if(null == balance || balance < aDouble){
                if(balance < -100){
                    throw new SystemException("账户余额不足");
                }
                if(null != laveBusinessMoney && laveBusinessMoney.compareTo(aDouble) >= 0){
@@ -165,7 +165,7 @@
                driverService.updateById(driver);
                //添加交易明细
                transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, reassign.getOrderType(), reassign.getOrderId());
                //修改改派通知状态
                switch (reassign.getOrderType()){
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EnvVersion.java
New file
@@ -0,0 +1,35 @@
package com.stylefeng.guns.modular.system.util;
/**
 * @author zhibing.pu
 * @Date 2024/12/10 15:56
 */
public enum EnvVersion {
    /**
     * 开发版
     */
    DEVELOP("develop"),
    /**
     * 体验版
     */
    TRIAL("trial"),
    /**
     * 线上版本
     */
    RELEASE("release");
    EnvVersion(String version) {
        this.version = version;
    }
    private String version;
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
}
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ObsUploadUtil.java
@@ -2,6 +2,7 @@
import com.obs.services.ObsClient;
import com.obs.services.model.ObjectMetadata;
import com.obs.services.model.PutObjectResult;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@@ -29,7 +30,7 @@
            meta.setContentLength(file.getSize());  // 必须设置ContentLength
            String originalFilename = file.getOriginalFilename();
            fileName =  UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length());
            obsClient.putObject(bucketName,"admin/"+fileName,content,meta);// 上传Object.
            obsClient.putObject(bucketName,"admin/"+fileName,content,meta);
            if(fileName != null && !"".equals(fileName)){
                System.out.println(fileName);
                fileName = oss_domain+"admin/"+fileName;
@@ -37,6 +38,22 @@
        }
        return fileName;
    }
    public static String obsUpload(String suffix, InputStream content){
        String fileName =  UUID.randomUUID().toString().replaceAll("-","") + "." + suffix;
        try {
            PutObjectResult putObjectResult = obsClient.putObject(bucketName, "admin/" + fileName, content);
            String objectUrl = putObjectResult.getObjectUrl();
            return oss_domain+"admin/"+fileName;
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 删除某个Object
DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
@@ -18,8 +18,10 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -201,30 +203,34 @@
    }
    public String rid(String path, Integer driverId) throws Exception{
        // 获取access_token
        String accessToken = getWxAppletsAccessToken();
        // 替换CREATE_CODE_URL
        String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token="+accessToken;
        // 发送请求
        String stringApiResult = null;
        InputStream release = getwxacodeunlimit(path, "driverId=" + driverId, EnvVersion.RELEASE.getVersion());
        String png = ObsUploadUtil.obsUpload("png", release);
        return png;
    }
    public InputStream getwxacodeunlimit(String page, String scene, String envVersion) throws Exception{
        try {
            HashMap<String, String> map = new HashMap<>();
            map.put("path", path+"?driverId="+driverId);
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity requestEntity = new HttpEntity(map, headers);
            ResponseEntity<byte[]> rep = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class);
            byte[] bytes = rep.getBody();
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
            MultipartFile file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), byteArrayInputStream);
            String s = ObsUploadUtil.obsUpload(file);
            System.err.println("===url"+s);
            System.err.println(Base64.encodeBase64String(bytes));
            return s;
        } catch (Exception e) {
            String wxAppletsAccessToken = getWxAppletsAccessToken();
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + wxAppletsAccessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("scene", scene);
            param.put("page", page);
            param.put("env_version", envVersion);
            HttpHeaders httpHeaders = new HttpHeaders();
            MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
            httpHeaders.setContentType(type);
            HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
            ResponseEntity<byte[]> entity  = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
            byte[] body = entity.getBody();
            String s = new String(body, Charset.defaultCharset());
            System.err.println(s);
            return new ByteArrayInputStream(body);
        }catch (Exception e){
            e.printStackTrace();
        }
        return stringApiResult;
        return null;
    }
}
DriverAHTravel/guns-admin/src/main/resources/application.yml
@@ -78,8 +78,8 @@
  grantType: authorization_code #填authorization_code
  appid: wx2d643fa565035848 #应用唯一标识,在微信开放平台提交应用审核通过后获得
  appSecret: 7c7409548a9bbe001af87578709ef360 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
  appletsAppid: wxe91f1af7638aa5dd #小程序APPid
  appletsAppSecret: a787e1a462715604e0c9528b6d8960d1 #
  appletsAppid: wx3f6d567c18a87641 #小程序APPid
  appletsAppSecret: 2fc56292246fc573644980890434b157 #
  mchId: 1618978168 #微信支付分配的商户号
  key: BTisLYCrwstKZRTBZef5pe51SCA7Kxe1 #key为商户平台设置的密钥key: