zhibing.pu
2024-08-23 1e630a0e74dab5ae9e2704de890bbb16b951ec99
Merge remote-tracking branch 'origin/2.0' into 2.0
23个文件已修改
3个文件已添加
878 ■■■■ 已修改文件
ManagementIGOTravel/guns-admin/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/PlatformController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserRedPacketRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAdvertisementServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/UUIDUtil.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/vo/WaterVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/platform/watter.html 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/subsidy/grant.html 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/subsidy/use.html 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/platform/water.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/subsidy/grant.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/sysRedPacketRecord/tUser.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/pom.xml
@@ -16,6 +16,11 @@
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.3</version>
        </dependency>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/PlatformController.java
@@ -12,6 +12,8 @@
import com.stylefeng.guns.modular.system.vo.PlatformVO;
import com.stylefeng.guns.modular.system.vo.WaterMoneyVO;
import com.stylefeng.guns.modular.system.vo.WaterVO;
import io.swagger.models.auth.In;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -529,6 +531,9 @@
        Wrapper<OrderCancel> orderCancelEntityWrapper = new EntityWrapper<>();
        // 用户取消订单记录
        List<OrderCancel> orderCancels = new ArrayList<>();
        List<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(2);
        if (time == 5 && !StringUtils.hasLength(insertTime)){
            // 余额充值wrapper
            orderType = new EntityWrapper<TPubTransactionDetails>()
@@ -555,6 +560,10 @@
            // 司机手动结算金额
            orderType1 = new EntityWrapper<SettlementDetail>()
                    .in("orderType", Arrays.asList(1, 4));
            // 用户取消订单费用
            orderCancelEntityWrapper.eq("state", 2)
                    .eq("userType", 1).in("payType",integers)
                    ;
        }else{
            orderType = new EntityWrapper<TPubTransactionDetails>()
                    .eq("orderType", 5)
@@ -587,15 +596,14 @@
            // 用户取消订单费用
            orderCancelEntityWrapper.eq("state", 2)
                    .eq("userType", 1)
                    .in("payType",integers)
                    .between("insertTime", start, end);
        }
        if (type != null){
            switch (type){
                case 1:
                    // 只查询用户订单
                     tOrderPrivateCars = orderPrivateCarService.selectList(tOrderPrivateCarEntityWrapper);
                    tOrderPrivateCars = orderPrivateCarService.selectList(tOrderPrivateCarEntityWrapper);
                    tOrderLogistics = orderLogisticsService.selectList(tOrderLogisticsEntityWrapper);
                    // 用户取消订单费用
                    orderCancelEntityWrapper.eq("state", 2)
@@ -666,9 +674,9 @@
            if (tOrderPrivateCar != null){
                waterVO.setCode(tOrderPrivateCar.getOrderNum());
                String string = tOrderPrivateCar.getPayMoney().toString();
                waterVO.setMoney(new BigDecimal(string));
                waterVO.setMoney(new BigDecimal(string)+"");
            }else{
                waterVO.setMoney(new BigDecimal("0"));
                waterVO.setMoney(new BigDecimal("0")+"");
            }
            TUser user1 = appUserService.selectById(tOrderPrivateCar.getUserId());
            if (user1!=null){
@@ -694,8 +702,8 @@
            // 小件物流
            waterVO.setCode(tOrderLogistic.getOrderNum());
            String string = tOrderLogistic.getPayMoney().toString();
            waterVO.setMoney(new BigDecimal(string));
            waterVO.setMoney(new BigDecimal("0"));
            waterVO.setMoney(new BigDecimal(string)+"");
            waterVO.setMoney(new BigDecimal("0")+"");
            TUser user2 = appUserService.selectById(tOrderLogistic.getUserId());
            if (user2!=null){
                waterVO.setName(user2.getNickName());
@@ -743,7 +751,7 @@
                    // 专车
                    waterVO.setCode(tOrderPrivateCar.getOrderNum());
                    String string = orderCancel.getMoney().toString();
                    waterVO.setMoney(new BigDecimal(string));
                    waterVO.setMoney(new BigDecimal(string)+"");
                    TUser user1 = appUserService.selectById(tOrderPrivateCar.getUserId());
                    if (user1!=null){
                        waterVO.setName(user1.getNickName());
@@ -766,7 +774,7 @@
                    // 小件物流
                    waterVO1.setCode(tOrderLogistics1.getOrderNum());
                    String string1 = orderCancel.getMoney().toString();
                    waterVO1.setMoney(new BigDecimal(string1));
                    waterVO1.setMoney(new BigDecimal(string1)+"");
                    TUser user2 = appUserService.selectById(tOrderLogistics1.getUserId());
                    if (user2!=null){
                        waterVO1.setName(user2.getNickName());
@@ -802,8 +810,8 @@
                waterVO.setPhone(tDriver.getPhone());
            }
            waterVO.setMoney(tPubWithdrawal.getMoney());
            waterVO.setPayType("银行卡支付");
            waterVO.setMoney("-"+tPubWithdrawal.getMoney());
            waterVO.setPayType("手机支付");
            waterVO.setType("司机提现");
            waterVO.setRemark(tPubWithdrawal.getRemark());
            res.add(waterVO);
@@ -824,8 +832,8 @@
                waterVO.setName(user2.getNickName());
                waterVO.setPhone(user2.getPhone());
            }
            waterVO.setMoney(tPubWithdrawal.getMoney());
            waterVO.setPayType("银行卡支付");
            waterVO.setMoney("-"+tPubWithdrawal.getMoney());
            waterVO.setPayType("手机支付");
            waterVO.setType("用户提现");
            waterVO.setRemark(tPubWithdrawal.getRemark());
            res.add(waterVO);
@@ -864,7 +872,7 @@
                    }
                }
                waterVO.setMoney(new BigDecimal(paymentRecord.getAmount().toString()));
                waterVO.setMoney(new BigDecimal(paymentRecord.getAmount().toString())+"");
            }else{
                continue;
            }
@@ -937,7 +945,7 @@
                    if (income.getOrderMoney() != null){
                        String string = income.getPrice().toString();
                        BigDecimal bigDecimal1 = new BigDecimal(string);
                        platformVO.setMoney(bigDecimal1);
                        platformVO.setMoney(bigDecimal1+"");
                    }else{
                        continue;
                    }
@@ -995,7 +1003,7 @@
                        platformVO.setPhone(tDriver1.getPhone());
                    }
                    platformVO.setRemark(tOrderLogistics1.getRemark());
                    platformVO.setMoney(new BigDecimal(income.getPrice()));
                    platformVO.setMoney(new BigDecimal(income.getPrice())+"");
                    if (income.getCreateTime()!=null){
                        platformVO.setInsertTime(format.format(income.getCreateTime()));
                    }
@@ -1136,6 +1144,9 @@
        Wrapper<OrderCancel> orderCancelEntityWrapper = new EntityWrapper<>();
        // 司机手动结算金额
        Wrapper<SettlementDetail> orderType1 = new EntityWrapper<SettlementDetail>();
        List<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(2);
        if (time == 5 && !StringUtils.hasLength(insertTime)){
            // 余额充值wrapper
            orderType = new EntityWrapper<TPubTransactionDetails>()
@@ -1165,6 +1176,7 @@
                    .in("orderType", Arrays.asList(1, 4));
            // 用户取消订单费用
             orderCancelEntityWrapper.eq("state", 2)
                     .in("payType",integers)
                    .eq("userType", 1);
        }else{
            orderType = new EntityWrapper<TPubTransactionDetails>()
@@ -1199,6 +1211,7 @@
            // 用户取消订单费用
            orderCancelEntityWrapper.eq("state", 2)
                    .eq("userType", 1)
                    .in("payType",integers)
                    .between("insertTime", start, end);
        }
@@ -1273,7 +1286,7 @@
            // 专车
                waterVO.setCode(tOrderPrivateCar.getOrderNum());
                String string = tOrderPrivateCar.getPayMoney().toString();
                waterVO.setMoney(new BigDecimal(string));
                waterVO.setMoney(new BigDecimal(string)+"");
            TUser user1 = appUserService.selectById(tOrderPrivateCar.getUserId());
            if (user1!=null){
                waterVO.setName(user1.getNickName());
@@ -1298,8 +1311,8 @@
            // 小件物流
            waterVO.setCode(tOrderLogistic.getOrderNum());
            String string = tOrderLogistic.getPayMoney().toString();
            waterVO.setMoney(new BigDecimal(string));
            waterVO.setMoney(new BigDecimal("0"));
            waterVO.setMoney(new BigDecimal(string)+"");
            waterVO.setMoney(new BigDecimal("0")+"");
            TUser user2 = appUserService.selectById(tOrderLogistic.getUserId());
            if (user2!=null){
                waterVO.setName(user2.getNickName());
@@ -1325,7 +1338,7 @@
            WaterVO waterVO = new WaterVO();
            switch (orderCancel.getOrderType()){
                case 1:
                    TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(orderCancel);
                    TOrderPrivateCar tOrderPrivateCar = orderPrivateCarService.selectById(orderCancel.getOrderId());
                    if (tOrderPrivateCar == null){
                        continue;
                    }
@@ -1347,7 +1360,7 @@
                    // 专车
                    waterVO.setCode(tOrderPrivateCar.getOrderNum());
                    String string = orderCancel.getMoney().toString();
                    waterVO.setMoney(new BigDecimal(string));
                    waterVO.setMoney(new BigDecimal(string)+"");
                    TUser user1 = appUserService.selectById(tOrderPrivateCar.getUserId());
                    if (user1!=null){
                        waterVO.setName(user1.getNickName());
@@ -1370,7 +1383,7 @@
                    // 小件物流
                    waterVO1.setCode(tOrderLogistics1.getOrderNum());
                    String string1 = orderCancel.getMoney().toString();
                    waterVO1.setMoney(new BigDecimal(string1));
                    waterVO1.setMoney(new BigDecimal(string1)+"");
                    TUser user2 = appUserService.selectById(tOrderLogistics1.getUserId());
                    if (user2!=null){
                        waterVO1.setName(user2.getNickName());
@@ -1406,8 +1419,8 @@
                waterVO.setPhone(tDriver.getPhone());
            }
            waterVO.setMoney(tPubWithdrawal.getMoney());
            waterVO.setPayType("银行卡支付");
            waterVO.setMoney("-"+tPubWithdrawal.getMoney());
            waterVO.setPayType("手机支付");
            waterVO.setType("司机提现");
            waterVO.setRemark(tPubWithdrawal.getRemark());
            res.add(waterVO);
@@ -1426,8 +1439,8 @@
                waterVO.setName(user2.getNickName());
                waterVO.setPhone(user2.getPhone());
            }
            waterVO.setMoney(tPubWithdrawal.getMoney());
            waterVO.setPayType("银行卡支付");
            waterVO.setMoney("-"+tPubWithdrawal.getMoney());
            waterVO.setPayType("手机支付");
            waterVO.setType("用户提现");
            waterVO.setRemark(tPubWithdrawal.getRemark());
            res.add(waterVO);
@@ -1470,7 +1483,7 @@
                    }
                }
                waterVO.setMoney(new BigDecimal(paymentRecord.getAmount().toString()));
                waterVO.setMoney(new BigDecimal(paymentRecord.getAmount().toString())+"");
            }else{
                continue;
            }
@@ -1541,7 +1554,7 @@
                    if (income.getPrice() != null){
                        String string = income.getPrice().toString();
                        BigDecimal bigDecimal1 = new BigDecimal(string);
                        platformVO.setMoney(bigDecimal1);
                        platformVO.setMoney(bigDecimal1+"");
                    }else{
                        continue;
                    }
@@ -1623,7 +1636,7 @@
                    }
                    platformVO.setRemark(tOrderLogistics1.getRemark());
                    platformVO.setMoney(BigDecimal.valueOf(income.getPrice()));
                    platformVO.setMoney(BigDecimal.valueOf(income.getPrice())+"");
                    if (income.getCreateTime()!=null){
                        platformVO.setInsertTime(format.format(income.getCreateTime()));
                    }
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/TSubsidyController.java
@@ -1147,6 +1147,10 @@
            if (tUser!=null){
                grantVO.setName(tUser.getNickName());
            }
            if (userRedPacketRecord.getRedPacketActivityId() == null){
                // 后台发放的红包
                grantVO.setRemark("后台指定派发");
            }
            UserActivityRedenvelope userActivityRedenvelope =
                    userActivityRedenvelopeService.selectById(userRedPacketRecord.getRedPacketActivityId());
            if (userActivityRedenvelope!=null){
@@ -1320,6 +1324,7 @@
            ;
            // 红包领取记录wrapper
            between3 = new EntityWrapper<UserRedPacketRecord>()
                    .ne("state",0)
            ;
            // 司机奖励
            between4 = new EntityWrapper<DriverActivityHistory>()
@@ -1343,6 +1348,7 @@
                    .between("insertTime", start, end);
            // 红包领取记录wrapper
            between3 = new EntityWrapper<UserRedPacketRecord>()
                    .ne("state",0)
                    .between("insertTime", start, end);
            // 司机奖励
            between4 = new EntityWrapper<DriverActivityHistory>()
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java
@@ -167,6 +167,8 @@
            userRedPacketRecord.setCompanyId(1);
            userRedPacketRecord.setState(1);
            userRedPacketRecord.setOrderId(null);
            // 标记为后台发放的红包
            userRedPacketRecord.setIsGrant(1);
            userRedPacketRecord.setRedPacketActivityId(redId);
//            userRedPacketRecord.setOrderType(3);
            userRedPacketRecord.setUserId(Integer.valueOf(s));
@@ -179,9 +181,6 @@
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        }
        return ResultUtil.success("指派成功",null,"当前红包为随机红包,可能有部分用户无法领取");
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserActivityController.java
@@ -21,6 +21,7 @@
import com.stylefeng.guns.core.log.LogObjectHolder;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@@ -151,9 +152,20 @@
            map.put("userActivityInviteUseMoney",0);
        }
        if(SinataUtil.isNotEmpty(userActivityDiscount1)){
            // 专车
            Map<String,Object> resultMap = userCouponRecordService.getDiscountStatic(startTimes,endTimes,userActivityDiscount1.getId());
            map.put("userActivityDiscount1Money",resultMap.get("money"));
            map.put("userActivityDiscount1Number",resultMap.get("number"));
            BigDecimal bigDecimal = new BigDecimal(resultMap.get("money").toString());
            String string = resultMap.get("number").toString();
            Integer i = Integer.valueOf(string);
            // 小件物流
            Map<String,Object> resultMap1 = userCouponRecordService.getDiscountStatic1(startTimes,endTimes,userActivityDiscount1.getId());
            BigDecimal bigDecimal1 = new BigDecimal(resultMap1.get("money").toString());
            String string1 = resultMap1.get("number").toString();
            Integer i1 = Integer.valueOf(string1);
            BigDecimal add = bigDecimal.add(bigDecimal1);
            i +=i1;
            map.put("userActivityDiscount1Money",add);
            map.put("userActivityDiscount1Number",i);
        }else{
            map.put("userActivityDiscount1Money",0);
            map.put("userActivityDiscount1Number",0);
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
@@ -20,6 +20,7 @@
import com.stylefeng.guns.modular.system.dao.TSystemPriceMapper;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.ChinaMobileUtil;
import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
@@ -217,11 +218,15 @@
    @ResponseBody
    public Object frozenOrder(@RequestParam Integer tOrderPrivateCarId) throws Exception {
        TOrderPrivateCar orderPrivateCar = tOrderPrivateCarService.selectById(tOrderPrivateCarId);
        //添加已收入明细
        TDriver tDriver = driverService.selectById(orderPrivateCar.getDriverId());
        orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用
        //添加已收入明细
        TCompany company = companyService.selectById(orderPrivateCar.getCompanyId());
        TDriver tDriver = driverService.selectById(orderPrivateCar.getDriverId());
        Double taxi = company.getSpeMoney().doubleValue();
        Integer language =tDriver.getLanguage();
        BigDecimal d = null;//企业收入
        BigDecimal c = null;//司机收入
        if(company.getIsSpeFixedOrProportional() == 2){//固定
@@ -249,8 +254,100 @@
            driverService.updateById(driver);
        }
        if (orderPrivateCar.getIsFrozen() == 1){
            TOrderPrivateCar orderPrivateCar1 = tOrderPrivateCarService.selectById(tOrderPrivateCarId);
            if(orderPrivateCar1.getArriveTime()==null){
                orderPrivateCar1.setArriveTime(orderPrivateCar1.getStartServiceTime());
            }
            orderPrivateCar1 = this.setMoney(orderPrivateCar1, 0D, 0D);//计算费用
            orderPrivateCar1.setOrderMoney(orderPrivateCar1.getOrderMoney().add(orderPrivateCar1.getParkMoney()).add(orderPrivateCar1.getRoadTollMoney()));
            //判断是否首单免费-免费直接完成
            Integer orderNumber = tOrderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>().eq("userId",orderPrivateCar1.getUserId()).last("and (state=8 or state=9)"));
            if(orderNumber<=0){//判断是否是首单
                //判断是否免单
                TUser userInfo = userService.selectById(orderPrivateCar1.getUserId());
                if(userInfo.getFreeMoney().doubleValue()>0d){
                    if(orderPrivateCar1.getOrderMoney().compareTo(userInfo.getFreeMoney())<=-1){
                        orderPrivateCar1.setState(8);
                        orderPrivateCar1.setIsFree(2);
                        //添加已收入明细
                        TCompany tCompany = companyService.selectById(orderPrivateCar1.getCompanyId());
                        BigDecimal speMoney = tCompany.getSpeMoney();
                        if(tCompany.getIsSpeFixedOrProportional() == 2){//固定
                            d = speMoney;
                            c = orderPrivateCar1.getOrderMoney().subtract(d);//只有出行金额参与抽成,其余归属司机
                        }
                        if(tCompany.getIsSpeFixedOrProportional() == 1){//比例
                            BigDecimal price = orderPrivateCar1.getStartMoney().add(orderPrivateCar1.getMileageMoney()).add(new BigDecimal(orderPrivateCar1.getWaitMoney())).add(orderPrivateCar1.getDurationMoney()).add(orderPrivateCar1.getLongDistanceMoney());
                            d = price.multiply(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN));
                            c = orderPrivateCar1.getOrderMoney().subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                        }
                        incomeService.saveData(1, orderPrivateCar1.getCompanyId(), 2, orderPrivateCar1.getId(), 1, d.doubleValue());
                        incomeService.saveData(2, orderPrivateCar1.getDriverId(), 2, orderPrivateCar1.getId(), 1, c.doubleValue());
                        TDriver driver = driverService.selectById(orderPrivateCar1.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());
                        if (null != driver.getBalance()){
                            driver.setBalance(driver.getBalance().add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN));
                        }else{
                            driver.setBalance(BigDecimal.ZERO.add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN));
                        }
                        driverService.updateById(driver);
                    }else{
                        orderPrivateCar1.setState(7);
                        orderPrivateCar1.setOrderMoney(orderPrivateCar1.getOrderMoney().subtract(userInfo.getFreeMoney()));
                        orderPrivateCar1.setFreeMoney(userInfo.getFreeMoney());
                    }
                }else{
                    orderPrivateCar1.setState(7);
                }
            }else{
                orderPrivateCar1.setState(7);
            }
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar1.getBindId(),orderPrivateCar1.getTelX());
            if(String.valueOf(map.get("code")).equals("200")){
                orderPrivateCar1.setTelX("");
                orderPrivateCar1.setBindId("");
            }
            tOrderPrivateCarService.updateById(orderPrivateCar1);
            pushUtil.removeTask(orderPrivateCar1.getId(), 1);//删除定时任务,结束推送数据
            systemNoticeService.addSystemNotice(1, language == 1 ? "司机已结束本次行程,谢谢使用" : language == 2 ?
                    "The driver has finished the trip,thank you for using I-GO" : "Le chauffeur a terminé le trajet, merci d'utiliser I-GO", orderPrivateCar1.getUserId());
            //回滚司机状态为空闲
            TDriver driver = driverService.selectById(orderPrivateCar1.getDriverId());
            driver.setState(2);
            driverService.updateById(driver);
            TOrderPrivateCar finalOrderTaxi = orderPrivateCar1;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState(), 0, "");
                    pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState(), 0, "");
                }
            }).start();
            TOrderPrivateCar finalOrderPrivateCar = orderPrivateCar1;
            new Thread(()->{
                try {
                    //上报google
                    fleetEngineUtil.reportBillableEvent(finalOrderPrivateCar.getTripId());
                    System.err.println("上报时间:{},tripid:{},created_at:{},completed_at:{}"+ System.currentTimeMillis()+ finalOrderPrivateCar.getTripId()+
                            finalOrderPrivateCar.getInsertTime().getTime()+finalOrderPrivateCar.getEndServiceTime().getTime());
                }catch (Exception e){
                    e.printStackTrace();
                }
            }).start();
            // 冻结订单需要给司机推送一个消息;
            TOrderPrivateCar finalOrderPrivateCar = orderPrivateCar;
            new Thread(new Runnable() {
                @Override
                public void run() {
@@ -265,7 +362,11 @@
        return SUCCESS_TIP;
    }
    @Autowired
    private ChinaMobileUtil chinaMobileUtil;
    @Autowired
    private PushUtil pushUtil;
    @Autowired
    private ITSystemNoticeService systemNoticeService;
    @Resource
    private TSystemPriceMapper systemPriceMapper;
    public TOrderPrivateCar setMoney(TOrderPrivateCar orderPrivateCar, Double parkingFee, Double crossingFee) throws Exception {
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/UserCouponRecordMapper.java
@@ -54,6 +54,10 @@
            @Param("beginTime") String beginTime,
            @Param("endTime") String endTime,
            @Param("activityId") Integer activityId);
    Map<String,Object> getDiscountStatic1(
            @Param("beginTime") String beginTime,
            @Param("endTime") String endTime,
            @Param("activityId") Integer activityId);
    List<Map<String,Object>> getBlanceList(@Param("page") Page<Map<String, Object>> page,
                                     @Param("beginTime") String beginTime,
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityMapper.xml
@@ -41,7 +41,8 @@
        bb.id and aa.activityType = 3) where aa.state = 2 and bb.userActivityId = a.id) +
        (select count(aa.id) from t_user_coupon_record aa left join t_user_activity_balance bb on (aa.couponActivityId =
        bb.id and aa.activityType = 4) where aa.state = 2 and bb.userActivityId = a.id) +
        (select count(id) from t_order_private_car where state in (7,8,9) and activityId = a.id) +
        (select count(aa.id) from t_order_private_car aa left join t_user_activity_discount1 bb on(aa.activityId = bb.id) where aa.state in (7,8,9) and bb.userActivityId = a.id ) +
        (select count(aa.id) from t_order_logistics aa left join t_user_activity_discount1 bb on(aa.activityId = bb.id) where aa.state in (7,8,9)and bb.userActivityId = a.id ) +
        (select count(id) from t_order_taxi where state in (7,8,9) and activityId = a.id) +
        (select count(id) from t_order_cross_city where state in (6,8,9) and activityId = a.id)
        ) as number
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserCouponRecordMapper.xml
@@ -74,7 +74,7 @@
        SELECT
            c.id,
            c.money,
            c.expirationTime,
            c.endTime as expirationTime,
            c.insertTime,
            c.companyId,
            c.state,
@@ -161,7 +161,10 @@
        </if>
    </select>
    <select id="getDiscountStatic" resultType="map">
        SELECT IFNULL(SUM(discountMoney),0) money,COUNT(id) number FROM t_order_taxi WHERE activityId=#{activityId}
        SELECT IFNULL(SUM(discountMoney),0) money,COUNT(id) number FROM t_order_private_car WHERE activityId=#{activityId}
    </select>
    <select id="getDiscountStatic1" resultType="map">
        SELECT IFNULL(SUM(discountMoney),0) money,COUNT(id) number FROM t_order_logistics WHERE activityId=#{activityId}
    </select>
    <select id="getRegStatic" resultType="map">
        SELECT
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java
@@ -49,9 +49,9 @@
    @TableField("mileageKilometers")
    private Double mileageKilometers;
    private BigDecimal freeMoney;
    @TableField("isFree")
    private Integer isFree;
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -19,6 +20,7 @@
 * @since 2020-06-01
 */
@TableName("t_user")
@Data
public class TUser extends Model<TUser> {
    private static final long serialVersionUID = 1L;
@@ -150,6 +152,7 @@
    private Integer insertUser;
    private Date updateTime;
    private Integer updateUser;
    private BigDecimal freeMoney;
    /**
     *分享用户id
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserRedPacketRecord.java
@@ -44,6 +44,11 @@
    @TableField("companyId")
    private Integer companyId;
    /**
     * 是否为后台发放的红包 0否1是
     */
    @TableField("isGrant")
    private Integer isGrant;
    /**
     * 状态(0=临时,1=未使用,2=已使用,3=已过期)
     */
    @TableField("state")
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserCouponRecordService.java
@@ -83,6 +83,10 @@
             String beginTime,
             String endTime,
             Integer activityId);
    Map<String,Object> getDiscountStatic1(
             String beginTime,
             String endTime,
             Integer activityId);
    /**
     * 获取充值记录
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAdvertisementServiceImpl.java
@@ -69,7 +69,13 @@
        for (Map<String, Object> stringObjectMap : advertisementList1) {
            Integer id = (Integer)stringObjectMap.get("id");
            TAdvertisementUser tAdvertisementUser = tAdvertisementUserMapper.selectTAdvertisementInform(id);
            if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getDriverId()) && "[]".equals(tAdvertisementUser.getUserId())){
            if (tAdvertisementUser == null){
                continue;
            }
            if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId())
                    && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId())
                    && "[]".equals(tAdvertisementUser.getDriverId())
                    && "[]".equals(tAdvertisementUser.getUserId())){
                // all
                stringObjectMap.put("sendUser",1);
            }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getDriverId()) && !"[]".equals(tAdvertisementUser.getUserId())){
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserCouponRecordServiceImpl.java
@@ -64,6 +64,10 @@
    public Map<String, Object> getDiscountStatic(String beginTime, String endTime, Integer activityId) {
        return this.baseMapper.getDiscountStatic(beginTime,endTime,activityId);
    }
    @Override
    public Map<String, Object> getDiscountStatic1(String beginTime, String endTime, Integer activityId) {
        return this.baseMapper.getDiscountStatic1(beginTime,endTime,activityId);
    }
    @Override
    public List<Map<String, Object>> getBlanceList(Page<Map<String, Object>> page, String beginTime, String endTime, Integer activityId) {
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java
New file
@@ -0,0 +1,188 @@
package com.stylefeng.guns.modular.system.util;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.stylefeng.guns.core.util.MD5Util;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
 * 中国移动工具类
 */
@Component
public class ChinaMobileUtil {
    private static String APIKey = "LTAI4G1BpRaihVRZp1RS8Stn";
    private static String SecretKey = "PDR7uUEGNf0wIPPVCPCVdySgTwCr90";
    @Autowired
    private HttpClientUtil httpClientUtil;
    /**
     * 绑定小号
     * @param phoneA
     * @param phoneB
     * @param areaCode
     * @return
     * @throws Exception
     */
    public static Map<String, String> midAxbBindSend(String phoneA, String phoneB, Integer areaCode) throws Exception{
        Map<String, String> map1 = new HashMap<>();
        map1.put("code", "-1");
        map1.put("msg", "");
        map1.put("telX", "");
        map1.put("bindId", "");
        return map1;
        //暂时屏蔽-后期放开
        /*DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",            // 地域ID
                APIKey,        // 您的AccessKey ID
                SecretKey );  // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dyplsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("BindAxb");
        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
        request.putQueryParameter("Expiration", DateUtil.format(new Date(new Date().getTime()+7 * 24 * 60 * 60*1000L),"yyyy-MM-dd HH:mm:ss"));
        // 号码池Key
        request.putQueryParameter("PoolKey", "FC100000119206151");
        // AXB中的B号码
        request.putQueryParameter("PhoneNoB", phoneB);
        // AXB中的A号码
        request.putQueryParameter("PhoneNoA", phoneA);
        // 指定城市进行X号码的选号。
        request.putQueryParameter("ExpectCity", "北京");
        // 是否需要针对该绑定关系产生的所有通话录制通话录音。
        request.putQueryParameter("IsRecordingEnabled", "false");
        Map<String, String> map1 = new HashMap<>();
        try {
            CommonResponse response = client.getCommonResponse(request);
            // 处理请求结果
            System.out.println(response.getData());
            JSONObject jsonObject = JSONObject.parseObject(response.getData());
            if(jsonObject.getString("Code").equals("OK")){
                map1.put("code", "200");
                map1.put("msg", jsonObject.getString("Message"));
                map1.put("telX", jsonObject.getJSONObject("SecretBindDTO").getString("SecretNo"));
                map1.put("bindId", jsonObject.getJSONObject("SecretBindDTO").getString("SubsId"));
            }else{
                map1.put("code", jsonObject.getString("Code"));
                map1.put("msg", jsonObject.getString("Message"));
            }
        } catch (ServerException e) {
            e.printStackTrace();
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        }
        return map1;*/
    }
    /**
     * 解绑小号关系
     * @param bindId    绑定关系id
     * @return
     * @throws Exception
     */
    public static Map<String, String> midAxbUnBindSend(String bindId,String secretNo) throws Exception{
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",            // 地域ID
                APIKey,        // 您的AccessKey ID
                SecretKey );  // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dyplsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("UnbindSubscription");
        // 绑定关系的过期时间。必须晚于当前时间1分钟以上。
        // 号码池Key
        request.putQueryParameter("PoolKey", "FC100000119206151");
        // 隐私号码。调用BindAXG等号码绑定接口时指定或自动分配的X号码。
        request.putQueryParameter("SecretNo", secretNo);
        // 绑定关系ID。
        //
        //可以在控制台的号码管理 > 号码详情中查看绑定关系ID,或者在调用BindAxb等号码绑定API时查看返回参数中的SubsId。
        request.putQueryParameter("SubsId", bindId);
        Map<String, String> map1 = new HashMap<>();
        try {
            CommonResponse response = client.getCommonResponse(request);
            // 处理请求结果
            System.out.println(response.getData());
            JSONObject jsonObject = JSONObject.parseObject(response.getData());
            if(jsonObject.getString("Code").equals("OK")){
                map1.put("code", "200");
                map1.put("msg", jsonObject.getString("Message"));
            }else{
                map1.put("code", jsonObject.getString("Code"));
                map1.put("msg", jsonObject.getString("Message"));
            }
        } catch (ServerException e) {
            e.printStackTrace();
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            map1.put("code", "-1");
            map1.put("msg", e.getErrMsg());
        }
        return map1;
    }
    public static  void main(String[] args) throws IOException {
        try{
            // System.out.println(midAxbBindSend("18380476116","13688394165",null));
         System.out.println(midAxbUnBindSend("1000031640138366","17150145472"));
        }catch (Exception e){
        }
    }
    public Map<String, String> HeaderUtils(String APIKey, String SecretKey) throws Exception{
        Map<String, String> header = new HashMap<>();
        long time = System.currentTimeMillis();
        String signStr = MD5Util.encrypt(APIKey + SecretKey + time);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("apiKey", APIKey);
        jsonObject.put("time", time);
        jsonObject.put("sign", signStr);
        Base64 base64 = new Base64();
        String s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        header.put("header", s);
        jsonObject = new JSONObject();
        jsonObject.put("platformId", "");
        jsonObject.put("secret", "");
        s = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        header.put("accessCode", s);
        return header;
    }
}
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -12,6 +12,7 @@
import com.google.fleetengine.auth.token.VehicleClaims;
import com.google.fleetengine.auth.token.factory.signer.*;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.util.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,7 +51,7 @@
    private final String consumerPrivateKeyId = "40acf82cbd5250de2f5123caff40738bdd403b08";
    
    private final String consumerPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDSwtbSBFgIXna6mWeKFWCK31NXUJH6uGduR1XrODGRedrqrTgr0BdNg8PDo6/zh/T+K0Svor6kgqpwnl9soOdn73oC4Nu+Ad7EiKa38j650jlZdLAr4hR0Ou9Kcnv45x/94auUO8jBz844cu24swLKiPsK9OnX65wVlKRfhhkGFuS/4OI76CmE7NqZDqPOW16o8tBO5TsgPVNkglFAU73fTp0kcHoLauT9QOB0+yZi39mnNXyU+2cL3Ylp5oaQCJpyssDRUqz/EiHa7FxUUgzCadG00+ePf5iYSnZKQRKWoOIawFvcCfcHx8GAl8Nn+79HtVQHB9hLsQ5+jqcdfKPfAgMBAAECggEAE9Ufz912xzrUY1TCKH1Ae3Dub732Lqihmv/9dsfv6ieUURcBvSW0u6eViVhi20DE7hH2QazH0cU18qkEg71UaTRgv9qW8vdMFiRhw9d4zZWZrfBMD6UTlahiEhhZ0B83pHVS5v0FNC+w0SEHe6Tks1hWfz5yrs3N/z3ghdihjC/5i1jeBoHXs1262SMazuwNGHblLApGPG+86taeFtbDI+31TKvZ8nomZHkEVFnARRUoBBcIwowRMqNfwlpcJhlz6kDWnoD08kHJ2zzJokozu7Lim+Ugt/MWwUOcA0hgq2QdymZFpkRkDl7tZmJtwTfTirjbGlpnPHVXEc1bWM7ocQKBgQD0LJ8e7JXf6bVFngq0jSJNKK7XDHYg0KhHXMApF59xxi29hdHXWPzgRJ45KkoUJc7MITpIJLXfCmi1XyDMf9m8lIf/oaqhJ7idYi7iAAPOJkdnHbSt0lebyjBWzCQ6OgS4NfF1+LEibTzRqiFs5K8EAyPYAVSTrpWoguoWtTzIGQKBgQDc9/I2PS+91Eb5RvuidTNsDqZJliTJQFlBjlDViFo3+l1N7jDFYwPBR/Tv4TVM5p9Zb+/Lo9X1pjDbm8QriTR4V+4HaLXkcCnmOsdSRInFUW4UIafwLX5ifjgfyaWgdKdn2UP1Lu/1qBN6GU1xjSfBQ6N3UqQiKkNPb7tuPJGqtwKBgQCQ4hU8vTclGMC14VQK1B/BVt1/vuYtDIJ9bZycBWdXlDc52LitpiDOVgjodJ5mHBT77M9vVVERWlTNIfgNP+OL0TptRZlAbJhP0p1s/oNDhFUj6211InVXfH54UkNAxYJdZ6yxynIYsma/JcsVmQ/8Ony/Q/LSempVBfEurjW1qQKBgQCQWPjFLdtOKqnildg0HFPnNvqx/38waPTluk5b76LgBpGFIyCBEVmWnacIPRpQjidyiYkggnp26oXoMC1KM2svYmGAPYr1G8CDQcqLl3JYkAVU6VeHsnBpbwLC4TttQkdJs8iNFohy9cUjcfwBPbDGs6TJghbuqqUl81uBe9e8qQKBgQDZm8T2KB34J7HAc5A+vqkmAo7mQLZg51OrzB1KnDU86pSAf0o3eSvfDUT6dpU9fRuZ1XYnbPnpoJwjFH3m4u9gqKF3PtVYfZyJrEqYwmhB9z6vd+dcsUlXM0fi37bGZkKBD0JGGt5OljM1qJG15x/LYfC/nwOmqWoOhNPCst2Z7w==";
    private final static String key = "AIzaSyCG6PsfkaCEc94VK2vIAZk1YYKvOS_Ewts";
    private final String provider = "i-go-odrd-testing";
    
    @Autowired
@@ -209,8 +210,41 @@
         */
        return response.body();
    }
    /**
     * 上报google可结算订单
     * @param tripId 行程id
     * @return
     */
    public boolean reportBillableEvent(String tripId) throws Exception {
        String billableEventId = UUIDUtil.getRandomCode();
        String url = "https://mobilitybilling.googleapis.com/v1:reportBillableEvent?regionCode=GH&key=" + key + "&billableEventId=" + billableEventId;
        HttpRequest post = HttpUtil.createPost(url);
        Map<String, String> headers = new HashMap<>();
        headers.put("Authorization", "Bearer " + getToken());
        headers.put("Content-Type", "application/json");
        post.addHeaders(headers);
        JSONObject body = new JSONObject();
        body.put("related_ids", "[\"" + tripId + "\"]");
        post.body(body.toJSONString());
        //上线客户测试和上线运营开放
//        HttpResponse response = post.execute();
//        if(200 != response.getStatus()){
//            logger.error(response.body());
//            throw new Exception(response.body());
//        }
        return true;
    }
    /**
     * 修改车辆信息
     * @param maximumCapacity
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HttpClientUtil.java
New file
@@ -0,0 +1,225 @@
package com.stylefeng.guns.modular.system.util;
import com.alibaba.fastjson.JSON;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * http工具类
 */
@Component
public class HttpClientUtil {
    private CloseableHttpClient httpClient;
    private CloseableHttpResponse httpResponse;
    private RequestConfig requestConfig;
    /**
     * 创建一个httpClient对象
     */
    private void getHttpCline(){
        this.httpClient = HttpClients.createDefault();
    }
    private void setRequestConfig(){
    }
    /**
     * 创建一个POST请求实例
     * @param url       请求地址
     * @param params    请求参数
     */
    private void setPostHttpRequset(String url, Map<String, Object> params, Map<String, String> header, String contentType){
        HttpPost httpPost = new HttpPost(url);
        if(null != header){
            for(String key : header.keySet()){
                httpPost.setHeader(key, header.get(key));
            }
        }
        List<NameValuePair> list = new ArrayList<>();
        if(null != params){
            Set<String> keys = params.keySet();
            for(String key : keys){
                list.add(new BasicNameValuePair(key, params.get(key).toString()));
            }
        }
        try {
            switch (contentType){
                case "form":
                    httpPost.setEntity(new UrlEncodedFormEntity(list));
                    break;
                case "json":
                    String s = JSON.toJSONString(params);
                    System.err.println(s);
                    httpPost.setEntity(new StringEntity(s, ContentType.APPLICATION_JSON));
                    break;
            }
            this.getHttpCline();
            httpResponse = this.httpClient.execute(httpPost);
        } catch (IOException e) {
            e.printStackTrace();
            this.close();
        }
    }
    /**
     * 获取get请求实例
     * @param url       请求地址
     * @param params    请求参数
     */
    private void setGetHttpRequset(String url, Map<String, Object> params, Map<String, String> header){
        StringBuffer sb = new StringBuffer();
        String p = "";
        if(null != params){
            Set<String> keys = params.keySet();
            for(String key : keys){
                sb.append(key + "=" + params.get(key) + "&");
            }
            p = "?" + sb.substring(0, sb.length() - 1);
        }
        HttpGet httpGet = new HttpGet(url + p);
        if(null != header){
            for(String key : header.keySet()){
                httpGet.setHeader(key, header.get(key));
            }
        }
        this.getHttpCline();
        try {
            httpResponse = this.httpClient.execute(httpGet);
        } catch (IOException e) {
            e.printStackTrace();
            this.close();
        }
    }
    /**
     * 发送http请求
     * @param mothed        "GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS"
     * @param url           请求地址
     * @param params        请求参数
     * @param header        请求头
     * @param contentType   参数请求方式form/json
     * @return
     */
    public String pushHttpRequset(String mothed, String url, Map<String, Object> params, Map<String, String> header, String contentType){
        String content = null;
        switch (mothed){
            case "GET":
                this.setGetHttpRequset(url, params, header);
                break;
            case "POST":
                this.setPostHttpRequset(url, params, header, contentType);
                break;
        }
        if(httpResponse.getStatusLine().getStatusCode() == 200){
            try {
                content = EntityUtils.toString(httpResponse.getEntity());
            } catch (IOException e) {
                e.printStackTrace();
                this.close();
            }
        }else{
            try {
                content = "返回状态码:" + httpResponse.getStatusLine() + "。" + EntityUtils.toString(httpResponse.getEntity());
            } catch (IOException e) {
                e.printStackTrace();
                this.close();
            }
        }
        this.close();
        return content;
    }
    /**
     * 发送XML请求
     * @param url       请求地址
     * @param xml       XML数据
     * @param header    自定义请求头
     * @return
     */
    public String pushHttpRequsetXml(String url, String xml, Map<String, String> header){
        HttpPost httpPost = new HttpPost(url);
        for(String key : header.keySet()){
            httpPost.setHeader(key, header.get(key));
        }
        httpPost.setHeader("Content-Type", "application/xml");
        try {
            httpPost.setEntity(new StringEntity(xml, "UTF-8"));
            this.getHttpCline();
            httpResponse = this.httpClient.execute(httpPost);
            String content = null;
            if(httpResponse.getStatusLine().getStatusCode() == 200){
                try {
                    content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
                } catch (IOException e) {
                    e.printStackTrace();
                    this.close();
                }
            }else{
                try {
                    content = "返回状态码:" + httpResponse.getStatusLine() + "。" + EntityUtils.toString(httpResponse.getEntity());
                } catch (IOException e) {
                    e.printStackTrace();
                    this.close();
                }
            }
            this.close();
            return content;
        } catch (IOException e) {
            e.printStackTrace();
            this.close();
        }
        return null;
    }
    /**
     * 关闭资源
     */
    private void close(){
        try {
            httpClient.close();
            httpResponse.close();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(null != httpClient){
                    httpClient.close();
                }
                if(null != httpResponse){
                    httpResponse.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/UUIDUtil.java
New file
@@ -0,0 +1,78 @@
package com.stylefeng.guns.modular.system.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
 * 定义生成随机码的工具类
 */
public class UUIDUtil {
    private int i = 1;
    /**
     * 定义生成原生的UUID随机码
     * @return
     */
    public static String getNativeUUID(){
        return UUID.randomUUID().toString();
    }
    /**
     * 生成32位随机码
     * @return
     */
    public static String getRandomCode(){
        return UUIDUtil.getNativeUUID().replaceAll("-", "");
    }
    /**
     * 获取给定长度的随机码
     * @param num
     * @return
     * @throws Exception
     */
    public static String getRandomCode(Integer num) throws Exception{
        String str = null;
        if(0 < num){
            if(num % 32 > 0){
                Integer s = num / 32;
                Integer l = num % 32;
                StringBuffer sb = new StringBuffer();
                for(int i = 0; i < s; i++){
                    sb.append(UUIDUtil.getRandomCode());
                }
                sb.append(UUIDUtil.getRandomCode().substring(0, l));
                str = sb.toString();
            }else if(num % 32 == 0){
                Integer s = num / 32;
                StringBuffer sb = new StringBuffer();
                for(int i = 0; i < s; i++){
                    sb.append(UUIDUtil.getRandomCode());
                }
                str = sb.toString();
            }else{
                str = UUIDUtil.getRandomCode().substring(0, num);
            }
        }else{
            throw new Exception("参数只能大于0");
        }
        return str;
    }
    /**
     * 获取根据当前时间的字符串数据
     * @return
     */
    public synchronized static String getTimeStr(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmssS");
        return simpleDateFormat.format(new Date());
    }
}
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/vo/WaterVO.java
@@ -18,7 +18,7 @@
    @ApiModelProperty(value = "支付方手机号")
    private String phone;
    @ApiModelProperty(value = "支付金额")
    private BigDecimal money;
    private String money;
    @ApiModelProperty(value = "支付方式")
    private String payType;
    @ApiModelProperty(value = "流水项目")
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/platform/watter.html
@@ -4,11 +4,10 @@
        display: flex; /* 使用 Flex 布局 */
        margin-left: 50px;
        margin-top: 30px;
        width: 2200px;
    }
    .rectangle1 {
        width: 250px; /* 设置框的宽度 */
        height: 160px; /* 自适应高度 */
        height: 150px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
        display: flex; /* 使用 Flex 布局 */
@@ -18,8 +17,8 @@
        margin-right: 40px; /* 设置矩形框之间的间距 */
    }
    .rectangle2 {
        width: 150px; /* 设置框的宽度 */
        height: 130px; /* 自适应高度 */
        width: 190px; /* 设置框的宽度 */
        height: 110px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
        display: flex; /* 使用 Flex 布局 */
@@ -31,8 +30,8 @@
        margin-top: 15px;
    }
    .rectangle3 {
        width: 150px; /* 设置框的宽度 */
        height: 130px; /* 自适应高度 */
        width: 190px; /* 设置框的宽度 */
        height: 110px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
        display: flex; /* 使用 Flex 布局 */
@@ -99,42 +98,42 @@
                                <#button name="重置" icon="fa-trash" clickFun="TUser.resetSearch()" space="true"/>
                            </div>
                        </div>
                <div class="container">
                    <div class="rectangle1">
                        <h1 id="num1">0</h1>
                        <br>
                        <h2 id="text1">第三方流水余额合计</h2>
                        <h2 style="text-align: center" id="text1">第三方流水余额合计</h2>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/dengyu.png">
                    <div class="rectangle2">
                        <h1 id="num2">0</h1>
                        <h2 id="num2">0</h2>
                        <br>
                        <h2 id="text2">用户订单消费</h2>
                        <h3 style="text-align: center" id="text2">用户订单消费</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num3">0</h1>
                        <h2 id="num3">0</h2>
                        <br>
                        <h2 id="text3">用户充值总额</h2>
                        <h3 style="text-align: center" id="text3">用户充值总额</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num4">0</h1>
                        <h2 id="num4">0</h2>
                        <br>
                        <h2 id="text4">司机结算总额</h2>
                        <h3 style="text-align: center" id="text4">司机结算总额</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jianhao.png">
                    <div class="rectangle3">
                        <h1 id="num5">0</h1>
                        <h2 id="num5">0</h2>
                        <br>
                        <h2 id="text5">司机提现总额</h2>
                        <h3 style="text-align: center" id="text5">司机提现总额</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jianhao.png">
                    <div class="rectangle3">
                        <h1 id="num6">0</h1>
                        <h2 id="num6">0</h2>
                        <br>
                        <h2 id="text6">用户提现总额</h2>
                        <h3 style="text-align: center" id="text6">用户提现总额</h3>
                    </div>
                </div>
                    <#table id="TUserTable"/>
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/subsidy/grant.html
@@ -4,7 +4,6 @@
        display: flex; /* 使用 Flex 布局 */
        margin-left: 50px;
        margin-top: 30px;
        width: 2200px;
    }
    .rectangle1 {
        width: 250px; /* 设置框的宽度 */
@@ -95,32 +94,32 @@
                    <div class="rectangle1">
                        <h1 id="num1">0</h1>
                        <br>
                        <h2 id="text1">已发放补贴总额</h2>
                        <h2 style="text-align: center" id="text1">已发放补贴总额</h2>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/dengyu.png">
                    <div class="rectangle2">
                        <h1 id="num2">0</h1>
                        <h2 id="num2">0</h2>
                        <br>
                        <h2 id="text2">已使用折扣总额(用户端)</h2>
                        <h3 style="text-align: center" id="text2">已使用折扣总额(用户端)</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num3">0</h1>
                        <h2 id="num3">0</h2>
                        <br>
                        <h2 id="text3">已领取红包总额(用户端)</h2>
                        <h3 style="text-align: center" id="text3">已领取红包总额(用户端)</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num4">0</h1>
                        <h2 id="num4">0</h2>
                        <br>
                        <h2 id="text4">已领取优惠券总额(用户端)</h2>
                        <h3 style="text-align: center" id="text4">已领取优惠券总额(用户端)</h3>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num5">0</h1>
                        <h2 id="num5">0</h2>
                        <br>
                        <h2 id="text5">已领取司机奖励(司机端)</h2>
                        <h3 style="text-align: center" id="text5">已领取司机奖励(司机端)</h3>
                    </div>
                </div>
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/subsidy/use.html
@@ -4,10 +4,9 @@
        display: flex; /* 使用 Flex 布局 */
        margin-left: 50px;
        margin-top: 30px;
        width: 2200px;
    }
    .rectangle1 {
        width: 250px; /* 设置框的宽度 */
        width: 200px; /* 设置框的宽度 */
        height: 160px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
@@ -18,7 +17,7 @@
        margin-right: 40px; /* 设置矩形框之间的间距 */
    }
    .rectangle2 {
        width: 200px; /* 设置框的宽度 */
        width: 170px; /* 设置框的宽度 */
        height: 130px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
@@ -31,7 +30,7 @@
        margin-top: 15px;
    }
    .rectangle3 {
        width: 200px; /* 设置框的宽度 */
        width: 170px; /* 设置框的宽度 */
        height: 130px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
@@ -44,7 +43,7 @@
        margin-top: 15px;
    }
    .rectangle4 {
        width: 250px; /* 设置框的宽度 */
        width: 170px; /* 设置框的宽度 */
        height: 170px; /* 自适应高度 */
        background-color: #cecece; /* 设置底色为灰色 */
        border-radius: 30px; /* 设置圆角半径为10px */
@@ -108,32 +107,31 @@
                    <div class="rectangle1">
                        <h1 id="num1">0</h1>
                        <br>
                        <h2 id="text1">已使用补贴总额</h2>
                        <h2 style="text-align: center" id="text1">已使用补贴总额</h2>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/dengyu.png">
                    <div class="rectangle2">
                        <h1 id="num2">0</h1>
                        <h3 id="num2">0</h3>
                        <br>
                        <h2 id="text2">已使用折扣总额(用户端)</h2>
                        <h4 style="text-align: center" id="text2">已使用折扣总额(用户端)</h4>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num3">0</h1>
                        <h3 id="num3">0</h3>
                        <br>
                        <h2 id="text3">已使用红包总额(用户端)</h2>
                        <h4 style="text-align: center" id="text3">已使用红包总额(用户端)</h4>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle3">
                        <h1 id="num4">0</h1>
                        <h3 id="num4">0</h3>
                        <br>
                        <h2 id="text4">已使用优惠券总额(用户端)</h2>
                        <h4 style="text-align: center" id="text4">已使用优惠券总额(用户端)</h4>
                    </div>
                    <img style="margin-top: 70px" width="25px" height="25px" src="${ctxPath}/static/img/jiahao.png">
                    <div class="rectangle4">
                        <h1 id="num5">0</h1>
                        <h3 id="num5">0</h3>
                        <br>
                        <h2 id="text5">已使用司机奖励合计</h2>
                        <h4 style="text-align: center" id="text5">已使用司机奖励合计</h4>
                        <br>
                        <div style="display: flex">
                        <span>已提现</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="num6">0</span>
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/platform/water.js
@@ -21,10 +21,10 @@
TUser.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: '付款时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
        {title: '交易时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
        {title: '订单号', field: 'code', visible: true, align: 'center', valign: 'middle'},
        {title: '支付方', field: 'name', visible: true, align: 'center', valign: 'middle'},
        {title: '支付方手机号', field: 'phone', visible: true, align: 'center', valign: 'middle',
        {title: '交易方', field: 'name', visible: true, align: 'center', valign: 'middle'},
        {title: '交易手机号', field: 'phone', visible: true, align: 'center', valign: 'middle',
        },
        {title: '支付金额', field: 'money', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/subsidy/grant.js
@@ -21,7 +21,7 @@
TUser.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: '领取时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
        {title: '发放时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle'},
        {title: '补贴类型', field: 'type', visible: true, align: 'center', valign: 'middle'},
        {title: '金额', field: 'amount', visible: true, align: 'center', valign: 'middle'},
        {title: '领取用户id', field: 'name', visible: true, align: 'center', valign: 'middle',},
ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/sysRedPacketRecord/tUser.js
@@ -261,11 +261,8 @@
        console.log(ids)
        console.log(window.parent.SysRedPacketRecord.seItem.id)
        // TUser.close();
        var ajax = new $ax(Feng.ctxPath + "/sysRedPacketRecord/direct", function(data){
            if (data.code!=500){
            Feng.success(data.msg);
            TUser.close();
            }else {