liujie
2025-08-22 fa4d91768a990d5e8b759300a1271b12f54c10ca
8.22
15个文件已修改
323 ■■■■■ 已修改文件
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/AgreementController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/SiteController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineSiteMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/ISiteService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CarMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CarMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Car.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/AgreementController.java
@@ -32,7 +32,7 @@
    @PostMapping("/queryByType")
    @ApiOperation(value = "获取各种协议及H5页面", tags = {"用户端-协议"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "数据类型(1:隐私协议,2:用户协议,3:用户指南,4:法律条款,5:关于我们,6=注册协议,7=取消订单说明,8=充值领券规则设置,9=司机注册协议,10=改派说明,11=跨城出行乘车须知,12:常见问题,13:计价规则,14:包车协议)", name = "type", required = true, dataType = "int")
            @ApiImplicitParam(value = "数据类型(1:隐私协议,2:用户协议,3:用户指南,4:法律条款,5:关于我们,6=注册协议,7=取消订单说明,8=充值领券规则设置,9=司机注册协议,10=改派说明,11=跨城出行乘车须知,12:常见问题,13:计价规则,14:包车协议  15同城小件物流协议)", name = "type", required = true, dataType = "int")
    })
    public ResultUtil<BaseWarpper> queryByType(Integer type){
        try {
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -1291,6 +1291,7 @@
                            orderCrossCityService.payOrderCrossCityCallback(id, order_id, 1);
                            break;
                        case 4:
                            orderLogisticsService.payOrderLogisticsCallback(id, order_id, 1);
                            break;
                        case 5:
                            break;
@@ -1359,16 +1360,14 @@
    @PostMapping("/base/wxPayOrderLogisticsSpread")
    public void wxPayOrderLogisticsSpread(HttpServletRequest request, HttpServletResponse response){
        try {
            Map<String, String> map = icbcPayUtil.payCallback(request);
            System.err.println("完成订单微信支付回调");
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            System.out.println("wx支付信息:"+map);
            if(null != map){
                String out_trade_no = map.get("out_trade_no");
                String order_id = map.get("order_id");
                String s = icbcPayUtil.queryTransaction("", order_id);
                if(s.equals("0")){
                    icbcPayUtil.answer(response);//回调应答
                }
                if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id) && s.equals("0")){
                    String[] split = out_trade_no.split(",");
                if(ToolUtil.isNotEmpty(out_trade_no) ){
                    String[] split = out_trade_no.split("_");
                    Integer id = Integer.valueOf(split[0]);
                    Integer type = Integer.valueOf(split[1]);
                    orderLogisticsService.payOrderLogisticsSpreadCallback(id, order_id, 1);
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/SiteController.java
@@ -91,6 +91,23 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @RequestMapping(value = "/base/site/areaMonitoring1", method = RequestMethod.POST)
    @ApiOperation(value = "判断一个点是是否在区域范围内", tags = {"用户端-跨城"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "线路id", name = "lineId", required = true, dataType = "int"),
            @ApiImplicitParam(value = "行政区域编号(510100)", name = "code", required = true, dataType = "int"),
            @ApiImplicitParam(value = "经纬度", name = "lonLat", required = true, dataType = "string")
    })
    public ResultUtil areaMonitoring1(Integer lineId, Integer code, String lonLat){
        try {
            boolean b = siteService.areaMonitoring1(lineId, code, lonLat);
            return ResultUtil.success(b ? 1 : -1);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineSiteMapper.java
@@ -19,4 +19,8 @@
     */
    List<Map<String, Object>> queryDriver(@Param("lineId") Integer lineId, @Param("day") Date day,
                                          @Param("driverId") Integer driverId);
    List<Integer> areaMonitoring1(@Param("lineId") Integer lineId);
}
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
@@ -55,4 +55,7 @@
        </if>
        order by a.startTime
    </select>
    <select id="areaMonitoring1" resultType="java.lang.Integer">
        select siteId from t_line_site where lineId =#{lineId} and type !=1
    </select>
</mapper>
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/ISiteService.java
@@ -36,4 +36,8 @@
     * @throws Exception
     */
    boolean areaMonitoring(Integer siteId, Integer code, String lonLat) throws Exception;
    boolean areaMonitoring1(Integer lineId, Integer code, String lonLat)throws Exception;
}
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -186,10 +186,8 @@
    //存储摆渡车无接单后推送标识,实现多个类型的摆渡车订单无人接单后只给前端推送一次
    public static Map<Integer, Boolean> pushEndMap = new HashMap<>();
    @Autowired
    private CarMapper carMapper;
    /**
@@ -2567,14 +2565,20 @@
//                    Company query = companyService.selectById(1);
                    for(int i = 1; i <= 3; i++){
//                        PushOrder pushOrder = pushOrderService.querys(i, 4, query.getId()).get(0);
                        //获取同线路的同车型的跨城司机
                        List<Driver> list = driverService.queryDriversByLineAndCarModel(3,orderCrossCity.getServerCarModelId(), orderCrossCity.getLineId());
                        if(list.size() > 0){
//                            double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
//                            int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
//                            list = list.subList(0, lastIndex);//获取空闲司机中占比数据
                            List<Integer> collect = list.stream().map(Driver::getCarId).collect(Collectors.toList());
                            List<Car> cars = carMapper.selectList1( collect);
                            for(Driver driver : list){//开始进行推送
                                // 判断司机的当前进行的订单  看座位数
                                Car car1 = cars.stream().filter(car -> car.getId().equals(driver.getCarId())).findFirst().get();
                                Integer seat = car1.getSeat();
                                List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("driverId", driver.getId()).in("state", Arrays.asList(1,2,3,4,5)));
//                                boolean bo = false;
//                                for(Integer integer : integers){
//                                    if(integer.compareTo(driver.getId()) == 0){
@@ -2585,7 +2589,9 @@
//                                if(bo){
//                                    continue;
//                                }
                                pushUtil.pushOrderState(2, driver.getId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 10);
                                if(seat>=orderCrossCities.size()){
                                    pushUtil.pushOrderState(2, driver.getId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 10);
                                }
                            }
                        }
                        Thread.sleep(10 * 1000);//设置等待时间
@@ -2597,31 +2603,21 @@
                        if(i == 3 && state == 1){
                            pushUtil.pushEndPush(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3);
                            orderIds.remove(orderCrossCity.getId());
                                orderCrossCity.setState(10);
                                orderCrossCityMapper.updateById(orderCrossCity);
                                OrderCancel orderCancel = new OrderCancel();
                                orderCancel.setOrderId(orderCrossCity.getId());
                                orderCancel.setOrderType(3);
                                orderCancel.setReason("没有司机接单,系统自动取消订单");
                                orderCancel.setRemark("没有司机接单,系统自动取消订单");
                                orderCancel.setState(2);
                                orderCancel.setInsertTime(new Date());
                                orderCancel.setUserType(2);
                                orderCancelService.insert(orderCancel);
                                //TODO:退款
                            UserInfo userInfo = userInfoService.selectById (orderCrossCity.getUserId());
                            userInfo.setBalance (new BigDecimal (userInfo.getBalance ())
                                    .add (new BigDecimal (orderCrossCity.getOrderMoney())) // 余额增加订单金额
                                    .setScale (2, BigDecimal.ROUND_HALF_EVEN)
                                    .doubleValue ());
                            SysIntegral query1 = sysIntegralMapper.query (orderCrossCity.getCompanyId ());
                            if (query1 != null) {
                                int addIntegral = orderCrossCity.getOrderMoney().intValue () * query1.getIntegral (); // 原增加的积分
                                userInfo.setIntegral (userInfo.getIntegral () - addIntegral); // 扣除对应积分(确保积分不为负可加额外判断)
                            }
                            transactionDetailsService.saveData (orderCrossCity.getUserId(), "订单取消退款", orderCrossCity.getOrderMoney (), 1, 1, 1, 3, orderCrossCity.getId ());
                            userInfoService.updateById (userInfo);
//                                orderCrossCity.setState(10);
//                                orderCrossCityMapper.updateById(orderCrossCity);
//
//                                OrderCancel orderCancel = new OrderCancel();
//                                orderCancel.setOrderId(orderCrossCity.getId());
//                                orderCancel.setOrderType(3);
//                                orderCancel.setReason("没有司机接单,系统自动取消订单");
//                                orderCancel.setRemark("没有司机接单,系统自动取消订单");
//                                orderCancel.setState(2);
//                                orderCancel.setInsertTime(new Date());
//                                orderCancel.setUserType(2);
//                                orderCancelService.insert(orderCancel);
//                                //TODO:退款
//                            UserInfo userInfo = userInfoService.selectById (orderCrossCity.getUserId());
                             addCancle(orderCrossCity.getId(),"没有司机接单,系统自动取消订单","没有司机接单,系统自动取消订单",orderCrossCity.getUserId());
                        }
                    }
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/SiteServiceImpl.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.crossCity.dao.LineSiteMapper;
import com.stylefeng.guns.modular.crossCity.dao.LocationMapper;
import com.stylefeng.guns.modular.crossCity.dao.SiteMapper;
import com.stylefeng.guns.modular.crossCity.model.LineSite;
import com.stylefeng.guns.modular.crossCity.model.Site;
import com.stylefeng.guns.modular.crossCity.server.ISiteService;
import com.stylefeng.guns.modular.crossCity.warpper.SiteWarpper;
@@ -24,6 +26,9 @@
    @Resource
    private LocationMapper locationMapper;
    @Resource
    private LineSiteMapper lineSiteMapper;
    @Autowired
    private GDMapElectricFenceUtil gdMapElectricFenceUtil;
@@ -115,6 +120,43 @@
        }
        return false;
    }
    @Override
    public boolean areaMonitoring1(Integer lineId, Integer code, String lonLat) throws Exception {
        List<Integer> lineSites = lineSiteMapper.areaMonitoring1(lineId);
        for (Integer lineSite : lineSites) {
            List<Map<String, Object>> list = this.queryLocation(lineSite);
            String province = code.toString().substring(0, 2) + "0000";
            String city = code.toString().substring(0, 4) + "00";
            for (Map<String, Object> map : list) {
                if (Integer.valueOf(map.get("type").toString()) == 1) {//行政区域
                    if (null != map.get("districtCode")) {
                        if (code.toString().equals(map.get("districtCode").toString())) {
                            return true;
                        }
                        continue;
                    }
                    if (null != map.get("cityCode")) {
                        if (city.equals(map.get("cityCode").toString())) {
                            return true;
                        }
                        continue;
                    }
                    if (null != map.get("provinceCode")) {
                        if (province.equals(map.get("provinceCode").toString())) {
                            return true;
                        }
                        continue;
                    }
                }
                if (Integer.valueOf(map.get("type").toString()) == 2) {//电子围栏
                    String coordinate = map.get("coordinate").toString();
                    return ElectricFenceUtil.monitorElectricFenc(coordinate, lonLat);
                }
            }
        }
       return false;
    }
    /**
     * 根据站点id获取地点区域
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -105,6 +105,9 @@
    private static List<Integer> orderIds = new ArrayList<>();
    @Autowired
    private PayMoneyUtil payMoneyUtil;
    /**
@@ -122,7 +125,7 @@
            return ResultUtil.error("收货地址有误,无法查询具体地址信息");
        }
        List<String> list = (List<String>)geocoding.get("data");
        Map<String, String> egeocode = gdMapGeocodingUtil.geocode(list.get(0).split(",")[0], list.get(0).split(",")[1]);
        Map<String, String> egeocode = gdMapGeocodingUtil.geocode(list.get(0).split(",")[1], list.get(0).split(",")[0]);
        String ecityCode = egeocode.get("cityCode");
        if(!scityCode.equals(ecityCode)){
            return ResultUtil.error("已超出服务范围,请重新选择跨城小件物流");
@@ -141,14 +144,14 @@
     */
    @Override
    public ResultUtil queryLogisticsUnitPrice(Integer type, String startLonLat, String endAddress, Integer uid) throws Exception {
        Company query = companyCityService.query(startLonLat.split(",")[0], startLonLat.split(",")[1]);
        if(null == query){
            return ResultUtil.error("预约取货点暂无企业服务");
        }
//        Company query = companyCityService.query(startLonLat.split(",")[0], startLonLat.split(",")[1]);
//        if(null == query){
//            return ResultUtil.error("预约取货点暂无企业服务");
//        }
        Double price1 = 0D;
        Double price2 = 0D;
        if(type == 4){//同城
            Map<String, Object> query1 = systemPriceMapper.query(query.getId(), type, null);
            Map<String, Object> query1 = systemPriceMapper.query(1, type, null);
            if(null == query1){
                return ResultUtil.error("请先完善价格设定");
            }
@@ -157,7 +160,7 @@
            price1 = jsonObject.getDouble("num2");
            price2 = jsonObject.getDouble("num13");
        }else{
            Map<String, Object> query1 = systemPriceMapper.query(query.getId(), type, null);
            Map<String, Object> query1 = systemPriceMapper.query(1, type, null);
            if(null == query1){
                return ResultUtil.error("请先完善价格设定");
            }
@@ -264,7 +267,7 @@
        orderLogistics.setMileage(0D);
        orderLogistics.setIsReassign(1);
        orderLogistics.setReassignNotice(0);
        ResultUtil<Map<String, Double>> price = this.getPrice(type, String.valueOf(startLon), String.valueOf(startLat), location.split(",")[0], location.split(",")[1]);
        ResultUtil<Map<String, Double>> price = this.getPrice(type, String.valueOf(startLat), String.valueOf(startLon), location.split(",")[0], location.split(",")[1]);
        if(price.getCode() != 200){
            return price;
        }
@@ -299,14 +302,14 @@
     * @throws Exception
     */
    public ResultUtil<Map<String, Double>> getPrice(Integer type, String startLon, String startLat, String endLon, String endLat) throws Exception{
        Company query = companyCityService.query(startLon, startLat);
        if(null == query){
            return ResultUtil.error("预约取货点暂无企业服务");
        }
//        Company query = companyCityService.query(startLon, startLat);
//        if(null == query){
//            return ResultUtil.error("预约取货点暂无企业服务");
//        }
        Double price1 = 0D;
        Double price2 = 0D;
        if(type == 4){//同城
            Map<String, Object> query1 = systemPriceMapper.query(query.getId(), type, null);
            Map<String, Object> query1 = systemPriceMapper.query(1, type, null);
            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(startLon + "," + startLat, endLon + "," + endLat, 1);
            String content = String.valueOf(query1.get("content"));
            JSONObject jsonObject = JSON.parseObject(content);
@@ -340,7 +343,7 @@
                price2 = jsonObject.getDouble("num22");
            }
        }else{
            Map<String, Object> query1 = systemPriceMapper.query(query.getId(), type, null);
            Map<String, Object> query1 = systemPriceMapper.query(1, type, null);
            String content = String.valueOf(query1.get("content"));
            JSONObject jsonObject = JSON.parseObject(content);
            price1 = jsonObject.getDouble("num1");
@@ -371,9 +374,9 @@
                        integers = JSON.parseArray(vehicle).toJavaList(Integer.class);
                    }
                    Company query = companyCityService.query(String.valueOf(orderLogistics.getStartLon()), String.valueOf(orderLogistics.getStartLat()));//获取起点所属分公司
                    List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//用专车的推单配置
                    List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//用专车的推单配置
                    for(int i = 1; i <= querys.size(); i++){
                        PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0);
                        PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0);
                        //获取空闲司机
                        List<Driver> list = driverService.queryIdleDriver(orderLogistics.getType(), null, orderLogistics.getStartLon(), orderLogistics.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机
                        if(list.size() > 0){
@@ -434,21 +437,10 @@
        ResultUtil resultUtil = ResultUtil.success("");
        if(payType == 1){//微信支付
            String value = redisUtil.getValue("appletOpenId");
            String appletsOpenId = null;
            if(ToolUtil.isNotEmpty(value)){
                JSONObject jsonObject = JSON.parseObject(value);
                appletsOpenId = jsonObject.getString(uid.toString());
            }else{
                appletsOpenId = userInfo.getAppletsOpenId();
            }
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + "," + orderLogistics.getType(), 9, 5, uid.toString(), "小件物流下单支付", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId);
            if(map.get("code").equals("200")){
                paymentRecordService.saveData(1, orderLogistics.getUserId(), 1, orderId, orderLogistics.getType(), 1, orderMoney, map.get("order_id"), 1);//添加预支付数据
                resultUtil = ResultUtil.success(map.get("data"));
            }else{
                resultUtil = ResultUtil.error(map.get("msg"), "");
            }
            String app = type == 1 ? "APP" : "JSAPI";
            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_4_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
            paymentRecordService.saveData(1, orderLogistics.getUserId(), 1, orderId, 4, 1, Double.valueOf(orderMoney.toString()), "", 1);//添加预支付数据
        }
        if(payType == 2){//支付宝支付
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + "," + orderLogistics.getType(), 10, 5, uid.toString(), "小件物流下单支付", orderMoney, callbackPath + "/base/aliPayOrderTaxi", "", type, null);
@@ -466,8 +458,8 @@
            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
            userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
//            SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
//            userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
            //添加交易明细
            transactionDetailsService.saveData(uid, "小件物流下单支付", orderMoney, 2, 1, 1, 4, orderId);
@@ -515,21 +507,10 @@
        ResultUtil resultUtil = ResultUtil.success("");
        if(payType == 1){//微信支付
            String value = redisUtil.getValue("appletOpenId");
            String appletsOpenId = null;
            if(ToolUtil.isNotEmpty(value)){
                JSONObject jsonObject = JSON.parseObject(value);
                appletsOpenId = jsonObject.getString(uid.toString());
            }else{
                appletsOpenId = userInfo.getAppletsOpenId();
            }
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + "," + orderLogistics.getType(), 9, 5, uid.toString(), "小件物流补差价", orderMoney, callbackPath + "/base/wxPayOrderLogisticsSpread", "", type, appletsOpenId);
            if(map.get("code").equals("200")){
                paymentRecordService.saveData(1, orderLogistics.getUserId(), 1, orderId, orderLogistics.getType(), 1, orderMoney, map.get("order_id"), 1);//添加预支付数据
                resultUtil = ResultUtil.success(map.get("data"));
            }else{
                resultUtil = ResultUtil.error(map.get("msg"), "");
            }
            String app = type == 1 ? "APP" : "JSAPI";
            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_4_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderLogisticsSpread", app, userInfo.getAppletsOpenId());
            paymentRecordService.saveData(1, orderLogistics.getUserId(), 1, orderId, orderLogistics.getType(), 1, orderMoney, orderLogistics.getId().toString(), 1);//添加预支付数据
        }
        if(payType == 2){//支付宝支付
            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + "," + orderLogistics.getType(), 10, 5, uid.toString(), "小件物流补差价", orderMoney, callbackPath + "/base/aliPayOrderLogisticsSpread", "", type, null);
@@ -622,10 +603,10 @@
            orderLogistics.setPayMoney(query.getAmount());
            this.updateById(orderLogistics);
            UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
            SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
            userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
            userInfoService.updateById(userInfo);
//            UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
//            SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
//            userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
//            userInfoService.updateById(userInfo);
            query.setState(2);
            query.setCode(order_id);
@@ -669,39 +650,16 @@
            orderLogisticsSpread.setPayType(3);
            orderLogisticsSpreadService.updateById(orderLogisticsSpread);
            UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
            SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
            userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
            userInfoService.updateById(userInfo);
//            UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
//            SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
//            userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
//            userInfoService.updateById(userInfo);
            query.setState(2);
            query.setCode(order_id);
            paymentRecordService.updateById(query);
            //添加已收入明细
            Company company = companyService.selectById(orderLogistics.getCompanyId());
            Double speMoney =  orderLogistics.getType() == 4 ? company.getSameLogisticsMoney() : company.getCrossLogisticsMoney();
            BigDecimal d = null;
            BigDecimal c = null;
            if(company.getIsSpeFixedOrProportional() == 2){//固定
                d = new BigDecimal(speMoney);
                c = new BigDecimal(query.getAmount()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            }
            if(company.getIsSpeFixedOrProportional() == 1){//比例
                d = new BigDecimal(query.getAmount()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                c = new BigDecimal(query.getAmount()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            }
            Income income = incomeService.selectOne(new EntityWrapper<Income>().eq("userType", 1).eq("objectId", orderLogistics.getCompanyId()).eq("type", 2).eq("incomeId", orderLogistics.getId()).eq("orderType", orderLogistics.getType()));
            income.setMoney(income.getMoney() + d.doubleValue());
            incomeService.updateById(income);
            income = incomeService.selectOne(new EntityWrapper<Income>().eq("userType", 2).eq("objectId", orderLogistics.getDriverId()).eq("type", 2).eq("incomeId", orderLogistics.getId()).eq("orderType", orderLogistics.getType()));
            income.setMoney(income.getMoney() + c.doubleValue());
            incomeService.updateById(income);
            Driver driver = driverService.selectById(orderLogistics.getDriverId());
            driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            driverService.updateById(driver);
            // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
            new Thread(new Runnable() {
@@ -812,25 +770,12 @@
                userInfoService.updateById(userInfo);
            }else{
                //调用回退接口
                PaymentRecord query = paymentRecordService.query(1, orderLogistics.getUserId(), 1, orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getPayType(), 2);
                boolean b = false;
                Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), orderLogistics.getId() + "_" + orderLogistics.getType(), orderLogistics.getOrderNum());
                if (Integer.valueOf(merrefund.get("code").toString()) == 0) {
                    Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderLogistics.getOrderNum());
                    if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0) {//成功
                        b = true;
                    }
                    if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1) {//失败
                        return ResultUtil.error("订单取消失败(退款不成功)");
                    }
                    if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2) {//未知
                        return ResultUtil.error("退款返回未知异常");
                    }
                PaymentRecord query = paymentRecordService.query(1, orderLogistics.getUserId(), 1, id, 4, orderLogistics.getPayType(), 2);
                if(null == query){
                    return ResultUtil.error("订单还未进行支付");
                }
                if(b){
                }
                Map<String, String> merrefund = payMoneyUtil.wxRefund(query.getCode(), orderLogistics.getOrderNum(), String.valueOf(query.getAmount()), String.valueOf(query.getAmount()), "");
                System.err.println("跨城退款数据:::"+merrefund);
            }
            //添加交易明细
            transactionDetailsService.saveData(orderLogistics.getUserId(), "小件物流取消退款", orderLogistics.getPayMoney(), 1, 1, 1, 4, orderLogistics.getId());
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CarMapper.java
@@ -26,4 +26,14 @@
     * @throws Exception
     */
    Car query(@Param("licensePlate") String licensePlate) throws Exception;
    /**
     * 获取车辆列表
     * @param companyId
     * @return
     * @throws Exception
     */
    List<Car> selectList1(@Param("list") List<Integer> collect);
}
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CarMapper.xml
@@ -68,4 +68,13 @@
        addObjectId as addObjectId
        from t_car where state = 1 and carLicensePlate = #{licensePlate}
    </select>
    <select id="selectList1" resultType="com.stylefeng.guns.modular.system.model.Car"
            >
        select t1.id ,t2.seat from t_car t1 left join  t_car_model t2 on t1.carModelId = t2.id
        where t1.id in <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
            #{item}
        </foreach>
    </select>
</mapper>
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
@@ -393,7 +393,7 @@
        updateTime as updateTime,
        updateUser as updateUser
        from t_driver
        where flag != 3 and state = 2 and authState = 2
        where flag != 3 and state !=1  and authState = 2
        and id in
        (
        select driverId from t_driver_work where startTime &lt; now() and state = 1 and `type` like CONCAT('%', #{type}, '%')
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Car.java
@@ -104,6 +104,18 @@
    @TableField("addObjectId")
    private Integer addObjectId;
    @TableField(exist = false)
    private Integer seat;
    public Integer getSeat() {
        return seat;
    }
    public void setSeat(Integer seat) {
        this.seat = seat;
    }
    public Integer getId() {
        return id;
    }
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -198,6 +198,7 @@
    @Override
    public List<Driver> queryDriversByLineAndCarModel(Integer type,Integer serverCarModelId, Integer lineId) throws Exception {
        List<Driver> drivers = driverMapper.queryDriversByLineAndCarModel( type,serverCarModelId, lineId);
        return drivers;
    }
}
UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java
@@ -31,7 +31,7 @@
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
        JSONObject data = new JSONObject();
        data.put("touser", openId);
        data.put("template_id", "loQAaLfhJvkkvZL0ILKbwKJiXiHq5db6SLqeLX_V54c    ");
        data.put("template_id", "loQAaLfhJvkkvZL0ILKbwKJiXiHq5db6SLqeLX_V54c");
        data.put("page", "/pages/index/index/index" );
 
        // 设置消息内容
@@ -66,6 +66,9 @@
        System.out.println("订阅消息结果:" + result);
    }
    public static void main(String[] args) {
        push("oTrbv6_jAjA1HZDa1pc2k9Q35Zqw","张三",10.0);
    }