From 75a2623173bcc4a235aa1f99f7ef28519186160b Mon Sep 17 00:00:00 2001
From: yanghb <yanghb>
Date: 星期五, 21 四月 2023 11:24:25 +0800
Subject: [PATCH] 代码调整

---
 UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 1069 ++++++----------------------------------------------------
 1 files changed, 118 insertions(+), 951 deletions(-)

diff --git a/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 5fc4a83..abd99ca 100644
--- a/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -1,7 +1,6 @@
 package com.stylefeng.guns.modular.crossCity.server.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -16,9 +15,6 @@
 import com.stylefeng.guns.modular.crossCity.server.ILineService;
 import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
 import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper;
-import com.stylefeng.guns.modular.smallLogistics.dao.OrderLogisticsMapper;
-import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
-import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper;
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
 import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
@@ -28,9 +24,7 @@
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
-import com.stylefeng.guns.modular.system.warpper.CouponsListVo;
 import com.stylefeng.guns.modular.system.warpper.OrderServerWarpper;
-import com.stylefeng.guns.modular.system.warpper.PreferentialDataVo;
 import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
 import com.stylefeng.guns.modular.taxi.model.PaymentRecord;
@@ -59,7 +53,6 @@
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
 
 import static com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl.orderIds;
 
@@ -179,28 +172,6 @@
     @Autowired
     private PayMoneyUtil payMoneyUtil;
 
-    @Autowired
-    private IOrderLogisticsService orderLogisticsService;
-
-    @Autowired
-    private ITaxiCardPaymentService taxiCardPaymentService;
-
-    @Autowired
-    private ICompanyService companyService;
-
-    @Autowired
-    private ITaxiCardService taxiCardService;
-
-    @Autowired
-    private IUserUserService userUserService;
-
-    @Autowired
-    private IUserTaxiCardService userTaxiCardService;
-
-    @Autowired
-    private IRegionService regionService;
-
-
     @Value("${callbackPath}")
     private String callbackPath;
 
@@ -255,197 +226,6 @@
     }
 
 
-    @Override
-    public PreferentialDataVo queryBalance1(Integer orderId, Integer uid) throws Exception {
-        UserInfo userInfo = userInfoService.selectById(uid);
-        PreferentialDataVo preferentialDataVo = new PreferentialDataVo();
-        preferentialDataVo.setBalance(userInfo.getBalance());
-        OrderCrossCity orderCrossCity = this.selectById(orderId);
-
-        //获取优惠券中最优数据
-        List<UserCouponRecord> list = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("companyId", orderCrossCity.getCompanyId()).eq("state", 1).in("couponUseType", Arrays.asList(0, 3)).eq("userId", uid).where("now() < expirationTime"));
-        Integer id = null;
-        Double price = 0d;
-        Integer type = 0;
-        for (UserCouponRecord userCouponRecord : list){
-            if(userCouponRecord.getCouponType() == 1){//抵扣券
-                if(price.compareTo(userCouponRecord.getMoney()) < 0){
-                    price = userCouponRecord.getMoney();
-                    id = userCouponRecord.getId();
-                    type = 1;
-                }
-            }else{//满减券
-                if(orderCrossCity.getOrderMoney().compareTo(userCouponRecord.getFullMoney()) >= 0 && price.compareTo(userCouponRecord.getMoney()) < 0){
-                    price = userCouponRecord.getMoney();
-                    id = userCouponRecord.getId();
-                    type = 1;
-                }
-            }
-        }
-
-        //获取打车卡中最优数
-        Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString());
-        CompanyCity companyCity = companyCityService.selectOne(new EntityWrapper<CompanyCity>().eq("companyId", orderCrossCity.getCompanyId()).eq("areaCode", geocode.get("districtCode")).eq("state", 1));
-        if(null == companyCity){
-            companyCity = companyCityService.selectOne(new EntityWrapper<CompanyCity>().eq("companyId", orderCrossCity.getCompanyId()).eq("cityCode", geocode.get("cityCode")).eq("state", 1));
-        }
-        if(null == companyCity){
-            companyCity = companyCityService.selectOne(new EntityWrapper<CompanyCity>().eq("companyId", orderCrossCity.getCompanyId()).eq("provinceCode", geocode.get("provinceCode")).eq("state", 1));
-        }
-        List<UserTaxiCard> userTaxiCards = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().like("companyCityId", "%" + companyCity.getId() + "%")
-                .in("type", Arrays.asList(1, 2, 3, 4)).eq("userId", uid).where("now() between startTime and endTime"));
-
-        //全国卡
-        List<TaxiCard> taxiCards = taxiCardService.selectList(new EntityWrapper<TaxiCard>().eq("taxiCardType", 2).in("type", Arrays.asList(1, 2, 3, 4)).eq("state", 1));
-        if(taxiCards.size() > 0) {
-            List<UserTaxiCard> userTaxiCards2 = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().eq("userId", uid)
-                    .in("type", Arrays.asList(1, 2, 3, 4)).in("taxiCardId", taxiCards.stream().map(TaxiCard::getId).collect(Collectors.toList())).where("now() between startTime and endTime"));
-            userTaxiCards.addAll(userTaxiCards2);
-        }
-        Map<String, Object> map = getOptimalTaxiCards(orderCrossCity, price, id, type, userTaxiCards);
-        price = Double.valueOf(map.get("price").toString());
-        id = null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : null;
-        type = Integer.valueOf(map.get("type").toString());
-
-
-        //亲密账户
-        List<UserTaxiCard> userTaxiCards_ = new ArrayList<>();
-        List<UserUser> bindUserId = userUserService.selectList(new EntityWrapper<UserUser>().eq("bindUserId", uid));
-        CompanyCity finalCompanyCity = companyCity;
-        bindUserId.forEach(userUser -> {
-            List<UserTaxiCard> userTaxiCards1 = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().in("type", Arrays.asList(1, 2, 3, 4))
-                    .like("companyCityId", "%" + finalCompanyCity.getId() + "%").eq("userId", userUser.getUserId()).where("now() between startTime and endTime"));
-            userTaxiCards_.addAll(userTaxiCards1);
-
-            //全国卡
-            if(taxiCards.size() > 0) {
-                List<UserTaxiCard> userTaxiCards2 = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().eq("userId", userUser.getUserId())
-                        .in("type", Arrays.asList(1, 2, 3, 4)).in("taxiCardId", taxiCards.stream().map(TaxiCard::getId).collect(Collectors.toList())).where("now() between startTime and endTime"));
-                userTaxiCards_.addAll(userTaxiCards2);
-            }
-        });
-        map = getOptimalTaxiCards(orderCrossCity, price, id, type, userTaxiCards_);
-        price = Double.valueOf(map.get("price").toString());
-        id = null != map.get("id") ? Integer.valueOf(map.get("id").toString()) : null;
-        type = Integer.valueOf(map.get("type").toString());
-
-        preferentialDataVo.setObjectId(id);
-        preferentialDataVo.setDiscountAmount(price);
-        preferentialDataVo.setType(type);
-        return preferentialDataVo;
-    }
-
-
-    public Map<String, Object> getOptimalTaxiCards(OrderCrossCity orderCrossCity, Double price, Integer id, Integer type, List<UserTaxiCard> userTaxiCards) throws Exception{
-        Map<String, Object> map = new HashMap<>();
-        for(UserTaxiCard t : userTaxiCards){
-            JSONObject jsonObject = JSON.parseObject(t.getContent());
-            List<Integer> integers = jsonObject.getJSONArray("businessTypes").toJavaList(Integer.class);
-            if(!integers.contains(3)){
-                continue;
-            }
-            if(t.getType() == 1){//打折次数卡{"businessTypes":[1,2,3],"time":5,"timeQuantum":["08:00:00 - 09:00:00","17:00:00 - 18:00:00"],"discount":5}
-                Integer time = jsonObject.getInteger("time");
-                if(time == 0){
-                    continue;
-                }
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                Double discount = jsonObject.getDouble("discount");
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        double v = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal((10 - discount) / 10)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-                        if(price.compareTo(v) < 0){
-                            price = v;
-                            id = t.getId();
-                            type = 2;
-                        }
-                    }
-                }
-
-            }
-            if(t.getType() == 2){//优惠卡{"businessTypes":[1,2,3],"fullReduction":[[50,3],[100,5],[150,10]]}
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                JSONArray fullReduction = jsonObject.getJSONArray("fullReduction");
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        for(int j = fullReduction.size() - 1; j >= 0; j--){
-                            JSONArray jsonArray = fullReduction.getJSONArray(j);
-                            Double p = jsonArray.getDouble(0);//满金额
-                            Double y = jsonArray.getDouble(1);//优惠金额
-                            if(orderCrossCity.getOrderMoney().compareTo(p) >= 0 && price.compareTo(y) < 0){
-                                price = y;
-                                id = t.getId();
-                                type = 2;
-                            }
-                        }
-                    }
-                }
-
-            }
-            if(t.getType() == 3){//次数卡{"businessTypes":[1,2,3],"time":1,"discountAmount":10}
-                Integer time = jsonObject.getInteger("time");
-                if(time == 0){
-                    continue;
-                }
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                Double discountAmount = jsonObject.getDouble("discountAmount");
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        if(price.compareTo(discountAmount) < 0){
-                            price = discountAmount;
-                            id = t.getId();
-                            type = 2;
-                        }
-                    }
-                }
-            }
-            if(t.getType() == 4){//打折天数卡{"businessTypes":[1,2,3],"discount":5,"timeQuantum":["08:00:00 - 09:00:00","17:00:00 - 18:00:00"]}
-                Double discount = jsonObject.getDouble("discount");//折扣
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");//使用时间段
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        double v = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal((10 - discount) / 10)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-                        if(price.compareTo(v) < 0){
-                            price = v;
-                            id = t.getId();
-                            type = 2;
-                        }
-                    }
-                }
-            }
-        }
-        map.put("price", price);
-        map.put("id", id);
-        map.put("type", type);
-        return map;
-    }
-
-
-
     /**
      * 获取支付页面的优惠券列表
      * @param orderId
@@ -465,238 +245,6 @@
     }
 
 
-    @Override
-    public List<CouponsListVo> queryCouponList(Integer orderId, Integer uid, Integer pageNum, Integer size) throws Exception {
-        pageNum = (pageNum - 1) * size;
-        OrderCrossCity orderCrossCity = this.selectById(orderId);
-        List<CouponsListVo> rows = new ArrayList<>();
-        List<UserCouponRecord> list = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("companyId", orderCrossCity.getCompanyId())
-                .eq("state", 1).in("couponUseType", Arrays.asList(0, 3)).eq("userId", uid).where("expirationTime >= now()"));
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        for (UserCouponRecord userCouponRecord : list){
-            if(userCouponRecord.getCouponType() == 2){//满减券
-                if(orderCrossCity.getOrderMoney().compareTo(userCouponRecord.getFullMoney()) < 0){
-                    continue;
-                }
-            }
-            CouponsListVo couponsListVo = new CouponsListVo();
-            couponsListVo.setId(userCouponRecord.getId());
-            couponsListVo.setDataType(1);
-            couponsListVo.setMoney(userCouponRecord.getMoney());
-            couponsListVo.setUserType(userCouponRecord.getCouponUseType());
-            couponsListVo.setTime(sdf.format(userCouponRecord.getExpirationTime()));
-            couponsListVo.setType(userCouponRecord.getCouponType());
-            couponsListVo.setFullMoney(userCouponRecord.getFullMoney());
-            couponsListVo.setState(userCouponRecord.getState());
-            Company company = companyService.selectById(userCouponRecord.getCompanyId());
-            couponsListVo.setCompany(company.getName());
-            rows.add(couponsListVo);
-        }
-
-        Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString());
-        CompanyCity companyCity = companyCityService.selectOne(new EntityWrapper<CompanyCity>().eq("companyId", orderCrossCity.getCompanyId()).eq("areaCode", geocode.get("districtCode")).eq("state", 1));
-        if(null == companyCity){
-            companyCity = companyCityService.selectOne(new EntityWrapper<CompanyCity>().eq("companyId", orderCrossCity.getCompanyId()).eq("cityCode", geocode.get("cityCode")).eq("state", 1));
-        }
-        if(null == companyCity){
-            companyCity = companyCityService.selectOne(new EntityWrapper<CompanyCity>().eq("companyId", orderCrossCity.getCompanyId()).eq("provinceCode", geocode.get("provinceCode")).eq("state", 1));
-        }
-        List<UserTaxiCard> userTaxiCards = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().eq("userId", uid)
-                .in("type", Arrays.asList(1, 2, 3, 4)).like("companyCityId", "%" + companyCity.getId() + "%").where("now() between startTime and endTime"));
-
-        //全国卡
-        List<TaxiCard> taxiCards = taxiCardService.selectList(new EntityWrapper<TaxiCard>().eq("taxiCardType", 2).in("type", Arrays.asList(1, 2, 3, 4)).eq("state", 1));
-        if(taxiCards.size() > 0){
-            List<UserTaxiCard> userTaxiCards1 = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().eq("userId", uid)
-                    .in("type", Arrays.asList(1, 2, 3, 4)).in("taxiCardId", taxiCards.stream().map(TaxiCard::getId).collect(Collectors.toList())).where("now() between startTime and endTime"));
-            userTaxiCards.addAll(userTaxiCards1);
-        }
-
-
-        //亲密账户
-        List<UserUser> bindUserId = userUserService.selectList(new EntityWrapper<UserUser>().eq("bindUserId", uid));
-        CompanyCity finalCompanyCity = companyCity;
-        bindUserId.forEach(userUser -> {
-            List<UserTaxiCard> taxiCardPayments1 = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().in("type", Arrays.asList(1, 2, 3, 4))
-                    .like("companyCityId", "%" + finalCompanyCity.getId() + "%").eq("userId", userUser.getUserId()).where("now() between startTime and endTime"));
-            userTaxiCards.addAll(taxiCardPayments1);
-
-            //全国卡
-            if(taxiCards.size() > 0){
-                List<UserTaxiCard> userTaxiCards1 = userTaxiCardService.selectList(new EntityWrapper<UserTaxiCard>().eq("userId", userUser.getUserId())
-                        .in("type", Arrays.asList(1, 2, 3, 4)).in("taxiCardId", taxiCards.stream().map(TaxiCard::getId).collect(Collectors.toList())).where("now() between startTime and endTime"));
-                userTaxiCards.addAll(userTaxiCards1);
-            }
-        });
-
-        for(UserTaxiCard t : userTaxiCards){
-            try {
-                CouponsListVo couponsListVo = new CouponsListVo();
-                couponsListVo.setId(t.getId());
-                couponsListVo.setDataType(2);
-                couponsListVo.setUserType(1);
-                couponsListVo.setTaxiCardType(t.getType());
-                couponsListVo.setTime(sdf.format(t.getEndTime()));
-                couponsListVo.setState(1);
-                Company company = companyService.selectById(t.getCompanyId());
-                couponsListVo.setCompany(company.getName());
-                couponsListVo.setName(taxiCardService.selectById(t.getTaxiCardId()).getName());
-
-
-                JSONObject jsonObject = JSON.parseObject(t.getContent());
-                JSONArray businessTypes = jsonObject.getJSONArray("businessTypes");
-                if(!businessTypes.toJavaList(Integer.class).contains(3)){
-                    continue;
-                }
-                if(t.getType() == 1){//{"businessTypes":[1,2,3],"time":5,"timeQuantum":["08:00:00 - 09:00:00","17:00:00 - 18:00:00"],"discount":5}
-                    Integer time = jsonObject.getInteger("time");
-                    if(time == 0){
-                        continue;
-                    }
-                    JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                    boolean b = true;
-                    for(int i = 0; i < timeQuantum.size(); i++){
-                        String[] split = timeQuantum.getString(i).split(" - ");
-                        Date s = sdf.parse(sdf1.format(new Date()) + " " + split[0]);
-                        Date e = sdf.parse(sdf1.format(new Date()) + " " + split[1]);
-                        if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                            b = false;
-                            break;
-                        }
-                    }
-                    if(b){
-                        continue;
-                    }
-                    couponsListVo.setMoney(jsonObject.getDouble("discount"));
-                    couponsListVo.setType(1);
-                }
-                if(t.getType() == 2){//{"businessTypes":[1,2,3],"fullReduction":[[50,3],[100,5],[150,10]]}
-                    JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                    boolean b = true;
-                    for(int i = 0; i < timeQuantum.size(); i++){
-                        String[] split = timeQuantum.getString(i).split(" - ");
-                        Date s = sdf.parse(sdf1.format(new Date()) + " " + split[0]);
-                        Date e = sdf.parse(sdf1.format(new Date()) + " " + split[1]);
-                        if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                            b = false;
-                            break;
-                        }
-                    }
-                    if(b){
-                        continue;
-                    }
-
-                    JSONArray fullReduction = jsonObject.getJSONArray("fullReduction");
-                    b = true;
-                    for(int i = fullReduction.size() - 1; i >= 0; i--){
-                        Double m = fullReduction.getJSONArray(i).getDouble(0);
-                        Double y = fullReduction.getJSONArray(i).getDouble(1);
-                        if(m.compareTo(orderCrossCity.getOrderMoney()) <= 0){
-                            couponsListVo.setMoney(y);
-                            couponsListVo.setFullMoney(m);
-                            b = false;
-                            break;
-                        }
-                    }
-                    if(b){
-                        continue;
-                    }
-                    couponsListVo.setType(2);
-                }
-                if(t.getType() == 3){//{"businessTypes":[1,2,3],"time":1,"discountAmount":10}
-                    Integer time = jsonObject.getInteger("time");
-                    if(time == 0){
-                        continue;
-                    }
-                    JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                    boolean b = true;
-                    for(int i = 0; i < timeQuantum.size(); i++){
-                        String[] split = timeQuantum.getString(i).split(" - ");
-                        Date s = sdf.parse(sdf1.format(new Date()) + " " + split[0]);
-                        Date e = sdf.parse(sdf1.format(new Date()) + " " + split[1]);
-                        if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                            b = false;
-                            break;
-                        }
-                    }
-                    if(b){
-                        continue;
-                    }
-                    couponsListVo.setMoney(jsonObject.getDouble("discountAmount"));
-                    couponsListVo.setType(2);
-                }
-                if(t.getType() == 4){//{"businessTypes":[1,2,3],"discount":5,"timeQuantum":["08:00:00 - 09:00:00","17:00:00 - 18:00:00"]}
-                    JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-                    boolean b = true;
-                    for(int i = 0; i < timeQuantum.size(); i++){
-                        String[] split = timeQuantum.getString(i).split(" - ");
-                        Date s = sdf.parse(sdf1.format(new Date()) + " " + split[0]);
-                        Date e = sdf.parse(sdf1.format(new Date()) + " " + split[1]);
-                        if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                            b = false;
-                            break;
-                        }
-                    }
-                    if(b){
-                        continue;
-                    }
-                    couponsListVo.setMoney(jsonObject.getDouble("discount"));
-                    couponsListVo.setType(1);
-                }
-
-
-                String str = "";
-                TaxiCard taxiCard = taxiCardService.selectById(t.getTaxiCardId());
-                if(taxiCard.getTaxiCardType() == 1){
-                    String[] split = taxiCard.getCompanyCityId().split(";");
-                    for(String c : split){
-                        CompanyCity companyCity1 = companyCityService.selectById(c);
-                        if(ToolUtil.isNotEmpty(companyCity1.getAreaCode())){
-                            Region region = regionService.selectOne(new EntityWrapper<Region>().eq("code", companyCity1.getAreaCode()));
-                            str += region.getName() + ";";
-                            continue;
-                        }
-                        if(ToolUtil.isNotEmpty(companyCity1.getCityCode())){
-                            Region region = regionService.selectOne(new EntityWrapper<Region>().eq("code", companyCity1.getCityCode()));
-                            str += region.getName() + ";";
-                            continue;
-                        }
-                        if(ToolUtil.isNotEmpty(companyCity1.getProvinceCode())){
-                            Region region = regionService.selectOne(new EntityWrapper<Region>().eq("code", companyCity1.getProvinceCode()));
-                            str += region.getName() + ";";
-                            continue;
-                        }
-                    }
-                }else{
-                    str = "全国;";
-                }
-                couponsListVo.setCity(str.substring(0, str.length() - 1));
-
-                rows.add(couponsListVo);
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-        }
-        Collections.sort(rows, new Comparator<CouponsListVo>() {
-            public int compare(CouponsListVo s1, CouponsListVo s2) {
-                return Integer.compare(s1.getId(), s2.getId());
-            }
-        });
-
-        if(rows.size() >= (pageNum + 1) * size){
-            rows = rows.subList(pageNum, pageNum + size);
-        }else if(pageNum < rows.size() && rows.size() < (pageNum + 1) * size){
-            rows = rows.subList(pageNum, rows.size());
-        }else{
-            rows = new ArrayList<>();
-        }
-        return rows;
-    }
-
     /**
      * 订单支付
      * @param payType
@@ -710,12 +258,12 @@
     public ResultUtil payCrossCityOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(orderId);
         if(orderCrossCity.getState() != 7){
-            return ResultUtil.error("订单已完成支付,不允许重复支付", "");
+            return ResultUtil.error("订单已完成支付,不允许重复支付");
         }
         Integer uid = orderCrossCity.getUserId();
         Double orderMoney = orderCrossCity.getOrderMoney();
         UserInfo userInfo = userInfoService.selectById(uid);
-        ResultUtil resultUtil = ResultUtil.success(new Object());
+        ResultUtil resultUtil = ResultUtil.success();
         orderCrossCity.setCouponMoney(0D);//初始化历史数据
         orderCrossCity.setCouponId(null);
 
@@ -723,259 +271,24 @@
         UserCouponRecord userCouponRecord = null;
         if(null != couponId){
             userCouponRecord = userCouponRecordService.selectById(couponId);
-            if(null != userCouponRecord){
-                if(userCouponRecord.getCompanyId() != orderCrossCity.getCompanyId()){
-                    return ResultUtil.error("优惠券不能用于此订单", "");
-                }
-                if(userCouponRecord.getState() == 2){
-                    return ResultUtil.error("优惠券已使用", "");
-                }
-                if(userCouponRecord.getState() == 3){
-                    return ResultUtil.error("优惠券已过期", "");
-                }
-                if(userCouponRecord.getCouponUseType() != 0 && userCouponRecord.getCouponUseType() != 3){
-                    return ResultUtil.error("优惠券不能用于此类型订单", "");
-                }
-                if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){
-                    return ResultUtil.error("优惠券不能用于此订单", "");
-                }
-                orderMoney = orderMoney - userCouponRecord.getMoney();
-                orderCrossCity.setCouponMoney(userCouponRecord.getMoney());
-                orderCrossCity.setCouponId(couponId);
-            }
-        }
-
-        //计算红包
-        UserRedPacketRecord query = userRedPacketRecordService.query(uid, orderCrossCity.getCompanyId(), 1, 3, orderMoney);
-        if(null != query && orderMoney.compareTo(query.getMoney()) > 0){
-            orderMoney = orderMoney - query.getMoney();
-            orderCrossCity.setRedPacketMoney(query.getMoney());
-            orderCrossCity.setRedPacketId(query.getId());
-        }
-
-        //计算折扣
-        UserActivityDiscount1 query2 = userActivityDiscount1Mapper.query(orderCrossCity.getCompanyId());
-        if(null != query2){
-            Double special = query2.getSpecial();
-            orderCrossCity.setDiscount(special);
-            double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-            if(orderMoney.compareTo(v) > 0){
-                orderCrossCity.setDiscountMoney(orderMoney - v);
-                orderCrossCity.setActivityId(query2.getId());
-                orderMoney = v;
-            }
-        }
-
-        if(payType == 1){//微信支付
-            String app = type == 1 ? "APP" : "JSAPI";
-            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
-            paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据
-        }
-        if(payType == 2){//支付宝支付
-            resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayOrderTaxi");
-            paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据
-        }
-        if(payType == 3){//余额支付
-            if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){
-                return ResultUtil.error("余额不足,无法完成支付", "");
-            }
-
-            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
-            SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId());
-            userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
-
-            //添加交易明细
-            transactionDetailsService.saveData(uid, "跨城出行订单", orderMoney, 2, 1, 1, 3, orderId);
-            userInfoService.updateById(userInfo);
-
-            orderCrossCity.setState(2);//跨城支付完成后才开始服务
-            orderCrossCity.setPayType(3);
-            orderCrossCity.setPayMoney(orderMoney);
-
-            //处理优惠券和红包
-            if(null != userCouponRecord){
-                userCouponRecord.setState(2);
-                userCouponRecord.setEndTime(new Date());
-                userCouponRecordService.updateById(userCouponRecord);
-            }
-            if(null != query){
-                query.setState(2);
-                query.setEndTime(new Date());
-                userRedPacketRecordService.updateById(query);
-            }
-
-            //添加已收入明细
-            Line line = lineService.selectById(orderCrossCity.getLineId());
-            Double speMoney = Double.valueOf(line.getRakeRate());
-            BigDecimal d = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入
-            BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入
-            incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue());
-            incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue());
-            Driver driver = driverService.selectById(orderCrossCity.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() {
-                @Override
-                public void run() {
-                    pushUtil.pushOrderState(1, orderCrossCity.getUserId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
-                    pushUtil.pushOrderState(2, orderCrossCity.getDriverId(), orderCrossCity.getId(), 3, orderCrossCity.getState(), 0);
-                    pushUtil.pushDriverPosition(orderCrossCity.getId(), 3);
-                }
-            }).start();
-
-            systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1);
-        }
-
-        this.updateAllColumnById(orderCrossCity);
-        return resultUtil;
-    }
-
-
-    @Override
-    public ResultUtil payCrossCityOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type) throws Exception {
-        OrderCrossCity orderCrossCity = this.selectById(orderId);
-        if(orderCrossCity.getState() != 7){
-            return ResultUtil.error("订单已完成支付,不允许重复支付", "");
-        }
-        Integer uid = orderCrossCity.getUserId();
-        Double orderMoney = orderCrossCity.getOrderMoney();
-        UserInfo userInfo = userInfoService.selectById(uid);
-        ResultUtil resultUtil = ResultUtil.success(new Object());
-        orderCrossCity.setCouponMoney(0D);//初始化历史数据
-        orderCrossCity.setCouponId(null);
-
-        //计算优惠券
-        UserCouponRecord userCouponRecord = null;
-        if(null != objectId && 1 == objectType){
-            userCouponRecord = userCouponRecordService.selectById(objectId);
             if(userCouponRecord.getCompanyId() != orderCrossCity.getCompanyId()){
-                return ResultUtil.error("优惠券不能用于此订单", "");
+                return ResultUtil.error("优惠券不能用于此订单");
             }
             if(userCouponRecord.getState() == 2){
-                return ResultUtil.error("优惠券已使用", "");
+                return ResultUtil.error("优惠券已使用");
             }
             if(userCouponRecord.getState() == 3){
-                return ResultUtil.error("优惠券已过期", "");
+                return ResultUtil.error("优惠券已过期");
             }
             if(userCouponRecord.getCouponUseType() != 0 && userCouponRecord.getCouponUseType() != 3){
-                return ResultUtil.error("优惠券不能用于此类型订单", "");
+                return ResultUtil.error("优惠券不能用于此类型订单");
             }
             if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){
-                return ResultUtil.error("优惠券不能用于此订单", "");
+                return ResultUtil.error("优惠券不能用于此订单");
             }
             orderMoney = orderMoney - userCouponRecord.getMoney();
             orderCrossCity.setCouponMoney(userCouponRecord.getMoney());
-            orderCrossCity.setCouponId(objectId);
-        }
-
-        //打车卡
-        UserTaxiCard userTaxiCard = null;
-        if(null != objectId && objectType == 2){
-            userTaxiCard = userTaxiCardService.selectById(objectId);
-            TaxiCard taxiCard = taxiCardService.selectById(userTaxiCard.getTaxiCardId());
-            if(taxiCard.getTaxiCardType() == 1 && userTaxiCard.getCompanyId() != orderCrossCity.getCompanyId()){
-                return ResultUtil.error("打车卡不能用于此订单", "");
-            }
-            if(System.currentTimeMillis() > userTaxiCard.getEndTime().getTime()){
-                return ResultUtil.error("打车卡已过期", "");
-            }
-            if(userTaxiCard.getType() == 1 || userTaxiCard.getType() == 3){
-                Integer time = JSON.parseObject(userTaxiCard.getContent()).getInteger("time");
-                if(0 == time){
-                    return ResultUtil.error("打车卡已使用完", "");
-                }
-            }
-            List<Integer> integers = JSON.parseObject(userTaxiCard.getContent()).getJSONArray("businessTypes").toJavaList(Integer.class);
-            if(!integers.contains(3)){
-                return ResultUtil.error("打车卡不能用于此类型订单", "");
-            }
-
-            Double yh = 0D;
-            JSONObject jsonObject = JSON.parseObject(userTaxiCard.getContent());
-            if(userTaxiCard.getType() == 1){//打折次数卡{"businessTypes":[1,2,3],"time":5,"timeQuantum":["08:00:00 - 09:00:00","17:00:00 - 18:00:00"],"discount":5}
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                Double discount = jsonObject.getDouble("discount");
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        yh = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal((10 - discount) / 10)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-                        jsonObject.put("time", jsonObject.getInteger("time") - 1);
-                        userTaxiCard.setContent(jsonObject.toJSONString());
-                        break;
-                    }
-                }
-
-            }
-            if(userTaxiCard.getType() == 2){//优惠卡{"businessTypes":[1,2,3],"fullReduction":[[50,3],[100,5],[150,10]]}
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                JSONArray fullReduction = jsonObject.getJSONArray("fullReduction");
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        for(int j = fullReduction.size() - 1; j >= 0 ; j--){
-                            JSONArray jsonArray = fullReduction.getJSONArray(j);
-                            Double p = jsonArray.getDouble(0);//满金额
-                            if(orderCrossCity.getOrderMoney().compareTo(p) >= 0){
-                                yh = jsonArray.getDouble(1);//优惠金额
-                                break;
-                            }
-                        }
-                    }
-                }
-
-            }
-            if(userTaxiCard.getType() == 3){//次数卡{"businessTypes":[1,2,3],"time":1,"discountAmount":10}
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        yh = jsonObject.getDouble("discountAmount");
-                        jsonObject.put("time", jsonObject.getInteger("time") - 1);
-                        userTaxiCard.setContent(jsonObject.toJSONString());
-                    }
-                }
-            }
-            if(userTaxiCard.getType() == 4){//打折天数卡{"businessTypes":[1,2,3],"discount":5,"timeQuantum":["08:00:00 - 09:00:00","17:00:00 - 18:00:00"]}
-                Double discount = jsonObject.getDouble("discount");//折扣
-                JSONArray timeQuantum = jsonObject.getJSONArray("timeQuantum");//使用时间段
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = new Date();
-                for(int i = 0; i < timeQuantum.size(); i++){
-                    String[] split = timeQuantum.getString(i).split(" - ");
-                    Date s = sdf1.parse(sdf.format(date) + " " + split[0]);
-                    Date e = sdf1.parse(sdf.format(date) + " " + split[1]);
-                    if(s.getTime() <= System.currentTimeMillis() && System.currentTimeMillis() < e.getTime()){
-                        yh = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal((10 - discount) / 10)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-                        break;
-                    }
-                }
-            }
-
-            orderMoney = orderMoney - yh;
-            orderCrossCity.setTaxiCardId(userTaxiCard.getTaxiCardId());
-            orderCrossCity.setUserTaxiCardId(objectId);
-            orderCrossCity.setDiscountAmount(yh);
+            orderCrossCity.setCouponId(couponId);
         }
 
         //计算红包
@@ -998,25 +311,34 @@
                 orderMoney = v;
             }
         }
-        orderMoney = orderMoney < 0 ? 0 : orderMoney;
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        String out_trade_no = sdf.format(new Date()) + 3 + orderCrossCity.getId();
+
         if(payType == 1){//微信支付
-            if(orderMoney == 0){
-                return ResultUtil.error("请使用余额支付");
+            String appletsOpenId = "";
+            String tradeType = "APP";
+            if(type == 3){
+                appletsOpenId = userInfo.getAppletsOpenId();
+                tradeType = "JSAPI";
+                if(ToolUtil.isEmpty(userInfo.getAppletsOpenId())){
+                    return ResultUtil.error("支付异常,请重新授权登录小程序");
+                }
             }
-            String app = type == 1 ? "APP" : "JSAPI";
-            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
-            paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据
+            resultUtil = payMoneyUtil.weixinpay("完成订单", "", out_trade_no, orderMoney.toString(), callbackPath + "/base/wxPayOrderTaxi", tradeType, appletsOpenId);
+            if(resultUtil.getCode() == 200){
+                paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据
+            }
         }
         if(payType == 2){//支付宝支付
-            if(orderMoney == 0){
-                return ResultUtil.error("请使用余额支付");
+            resultUtil = payMoneyUtil.alipay("订单完成支付", "支付订单", out_trade_no, orderMoney.toString(), callbackPath + "/base/aliPayOrderTaxi");
+            if(resultUtil.getCode() == 200){
+                paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据
             }
-            resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayOrderTaxi");
-            paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据
         }
         if(payType == 3){//余额支付
             if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){
-                return ResultUtil.error("余额不足,无法完成支付", "");
+                return ResultUtil.error("余额不足,无法完成支付");
             }
 
             userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -1025,7 +347,7 @@
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
 
             //添加交易明细
-            transactionDetailsService.saveData(uid, "跨城出行订单", orderMoney, 2, 1, 1, 3, orderId);
+            transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 3, orderId);
             userInfoService.updateById(userInfo);
 
             orderCrossCity.setState(2);//跨城支付完成后才开始服务
@@ -1038,32 +360,11 @@
                 userCouponRecord.setEndTime(new Date());
                 userCouponRecordService.updateById(userCouponRecord);
             }
-            //处理打车卡
-            if(null != userTaxiCard){
-                userTaxiCardService.updateById(userTaxiCard);
-            }
             if(null != query){
                 query.setState(2);
                 query.setEndTime(new Date());
                 userRedPacketRecordService.updateById(query);
             }
-
-            //添加已收入明细
-            // TODO: 2022/3/19  抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入
-            //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。
-            //司机收入:10 * 0.8 = 8
-            //平台收入:7 - 8 = -1
-            Line line = lineService.selectById(orderCrossCity.getLineId());
-            Double speMoney = Double.valueOf(line.getRakeRate());
-            BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入
-            BigDecimal d = new BigDecimal(orderCrossCity.getPayMoney()).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入
-            incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue());
-            incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue());
-            Driver driver = driverService.selectById(orderCrossCity.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() {
@@ -1081,6 +382,7 @@
         this.updateAllColumnById(orderCrossCity);
         return resultUtil;
     }
+
 
     /**
      * 支付成功后的回调操作
@@ -1093,9 +395,9 @@
     public void payOrderCrossCityCallback(Integer id, String order_id, Integer type) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(id);
         PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, Integer.valueOf(id), 3, type, 1);
-        if(null != query && query.getState() == 1){
+        if(null != query){
             //添加交易明细
-            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId());
+            transactionDetailsService.saveData(orderCrossCity.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId());
             orderCrossCity.setState(2);//先支付再服务
             orderCrossCity.setPayType(type);
             orderCrossCity.setPayMoney(query.getAmount());
@@ -1113,15 +415,6 @@
                 userCouponRecord.setEndTime(new Date());
                 userCouponRecordService.updateById(userCouponRecord);
             }
-            if(null != orderCrossCity.getUserTaxiCardId()){
-                UserTaxiCard userTaxiCard = userTaxiCardService.selectById(orderCrossCity.getUserTaxiCardId());
-                if(userTaxiCard.getType() == 1 || userTaxiCard.getType() == 3){
-                    JSONObject jsonObject = JSON.parseObject(userTaxiCard.getContent());
-                    jsonObject.put("time", jsonObject.getInteger("time") - 1);
-                    userTaxiCard.setContent(jsonObject.toJSONString());
-                    userTaxiCardService.updateById(userTaxiCard);
-                }
-            }
             if(null != orderCrossCity.getRedPacketId()){
                 UserRedPacketRecord userRedPacketRecord = userRedPacketRecordService.selectById(orderCrossCity.getRedPacketId());
                 userRedPacketRecord.setState(2);
@@ -1134,23 +427,6 @@
             query.setCode(order_id);
             paymentRecordService.updateById(query);
 
-            //添加已收入明细
-            // TODO: 2022/3/19  抽成按照订单金额计算,优先保证司机的收入,用户支付金额不够,则在平台收入中补贴司机收入
-            //例如:订单金额10元,优惠3元,司机收入比例80%,平台收入比例20%。
-            //司机收入:10 * 0.8 = 8
-            //平台收入:7 - 8 = -1
-            Line line = lineService.selectById(orderCrossCity.getLineId());
-            Double speMoney = Double.valueOf(line.getRakeRate());
-            BigDecimal c = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(1 - (speMoney / 100))).setScale(2, BigDecimal.ROUND_HALF_EVEN);//企业收入
-            BigDecimal d = new BigDecimal(orderCrossCity.getPayMoney()).subtract(c).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入
-            incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue());
-            incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue());
-            Driver driver = driverService.selectById(orderCrossCity.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() {
                 @Override
@@ -1160,8 +436,6 @@
                     pushUtil.pushDriverPosition(orderCrossCity.getId(), 3);
                 }
             }).start();
-
-
             systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId(), 1);
         }else{
             System.err.println("预支付数据异常(orderId = "  + id + ")");
@@ -1179,16 +453,19 @@
     @Override
     public synchronized ResultUtil<BaseWarpper> orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, Integer uid) throws Exception {
         /**
-         * 1.出租车、专车、跨城有待支付的订单不能叫车
-         * 2.小件物流有未完成的订单可以下跨城、专车、出租车
-         * 3.出租车、专车、跨城有预约单可以下即时单
+         * 1.下了即时单就不能下预约单和即时单
+         * 2.下了预约单和再下一张即时单不能再下预约单
          */
-        List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(uid, null, 1, 7, 12);
+        List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 1, 1, 1, 2, 3, 4, 5, 6, 7, 11);
         if(orderPrivateCars.size() > 0){
             return ResultUtil.error("有未完成的订单");
         }
-        List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, null, 1, 7, 12);
+        List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11);
         if(list.size() > 0){
+            return ResultUtil.error("有未完成的订单");
+        }
+        List<OrderCrossCity> orderCrossCities1 = orderCrossCityMapper.queryByState(uid, 1, 2, 3, 4, 5, 7, 11);
+        if(orderCrossCities1.size() > 0){
             return ResultUtil.error("有未完成的订单");
         }
 
@@ -1266,17 +543,19 @@
         orderCrossCity.setIsDelete(1);
         orderCrossCity.setRemark(orderCrossCityWarpper.getRemark());
         orderCrossCity.setIsReassign(1);
-//        //调用高德创建轨迹
-//        String s = gdFalconUtil.selectTerminal(driver.getPhone());
-//        String track = gdFalconUtil.createTrack(s);
-//        orderCrossCity.setTrackId(track);
+        //调用高德创建轨迹
+        String s = gdFalconUtil.selectTerminal(driver.getPhone());
+        String track = gdFalconUtil.createTrack(s);
+        orderCrossCity.setTrackId(track);
         if(orderCrossCity.getTravelMode() == 2){//包车
-//            orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber());
-//            orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat());
+            orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber());
+            orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat());
         }
 
         //调用移动的小号接口
-        Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
+        Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString());
+        Region region = regionMapper.query(geocode.get("districtCode"));
+        Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
         if(String.valueOf(map.get("code")).equals("200")){
             orderCrossCity.setTelX(map.get("telX"));
             orderCrossCity.setBindId(map.get("bindId"));
@@ -1424,7 +703,6 @@
     @Override
     public ResultUtil<BaseWarpper> queryCancleAmount(Integer id) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(id);
-        BaseWarpper baseWarpper = new BaseWarpper();
         if(null == orderCrossCity){
             return ResultUtil.error("获取数据失败,订单信息有误");
         }
@@ -1436,6 +714,7 @@
                 amount += query.getMoney();
             }
         }
+        BaseWarpper baseWarpper = new BaseWarpper();
         baseWarpper.setAmount(amount);
         return ResultUtil.success(baseWarpper);
     }
@@ -1455,13 +734,13 @@
         OrderCrossCity orderCrossCity = this.selectById(id);
         Integer uid = orderCrossCity.getUserId();
         UserInfo userInfo = userInfoService.selectById(uid);
-        ResultUtil resultUtil = ResultUtil.success(new Object());
+        ResultUtil resultUtil = ResultUtil.success();
 
         if(null == orderCrossCity){
-            return ResultUtil.error("取消订单失败,订单信息有误", "");
+            return ResultUtil.error("取消订单失败,订单信息有误");
         }
         if(orderCrossCity.getState() != 12){
-            return ResultUtil.error("取消订单失败,不合法的操作", "");
+            return ResultUtil.error("取消订单失败,不合法的操作");
         }
         OrderCancel orderCancel = null;
         if(null == cancleId){
@@ -1472,58 +751,42 @@
 
         CancleOrder query = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
         if(null != query){
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            String out_trade_no = sdf.format(new Date()) + 3 + id;
             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{
+                String appletsOpenId = "";
+                String tradeType = "APP";
+                if(type == 3){
                     appletsOpenId = userInfo.getAppletsOpenId();
+                    tradeType = "JSAPI";
+                    if(ToolUtil.isEmpty(userInfo.getAppletsOpenId())){
+                        return ResultUtil.error("支付异常,请重新授权登录小程序");
+                    }
                 }
-                orderCancel.setPayType(1);
-                orderCancelService.updateById(orderCancel);
-
-                String app = type == 1 ? "APP" : "JSAPI";
-                resultUtil = payMoneyUtil.weixinpay("订单取消", "", id + "_3_" + UUIDUtil.getRandomCode(5), query.getMoney().toString(), "/base/wxCancelOrderTaxi", app, userInfo.getAppletsOpenId());
-                paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 1, query.getMoney(), "", 1);//添加预支付数据
-
-//                Map<String, String> map = icbcPayUtil.placeAnOrder(id + ",3", 9, 5, uid.toString(), "订单取消", query.getMoney(), callbackPath + "/base/wxCancelOrderTaxi", "", type, appletsOpenId);
-//                if(map.get("code").equals("200")){
-//                    paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 1, query.getMoney(), map.get("order_id"), 1);//添加预支付数据
-//                    resultUtil = ResultUtil.success(map.get("data"));
-//                }else{
-//                    resultUtil = ResultUtil.error(map.get("msg"), "");
-//                }
+                resultUtil = payMoneyUtil.weixinpay("订单取消", "", out_trade_no,  query.getMoney().toString(), callbackPath + "/base/wxCancelOrderTaxi", tradeType, appletsOpenId);
+                if(resultUtil.getCode() == 200){
+                    paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 1, query.getMoney(), "", 1);//添加预支付数据
+                }
             }
             if(payType == 2){//支付宝支付
-                orderCancel.setPayType(2);
-                orderCancelService.updateById(orderCancel);
-
-                resultUtil = payMoneyUtil.alipay("订单取消", "订单取消", "", id + "_3_" + UUIDUtil.getRandomCode(5), query.getMoney().toString(), "/base/aliCancelOrderTaxi");
-                paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 2, query.getMoney(), "", 1);//添加预支付数据
-
-//                Map<String, String> map = icbcPayUtil.placeAnOrder(id + ",3", 10, 5, uid.toString(), "订单取消", query.getMoney(), callbackPath + "/base/aliCancelOrderTaxi", "", type, null);
-//                if(map.get("code").equals("200")){
-//                    paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 2, query.getMoney(), map.get("order_id"), 1);//添加预支付数据
-//                    resultUtil = ResultUtil.success(map.get("data"));
-//                }else{
-//                    resultUtil = ResultUtil.error(map.get("msg"), "");
-//                }
+                resultUtil = payMoneyUtil.alipay("取消订单支付", "取消订单", out_trade_no, query.getMoney().toString(), callbackPath + "/base/aliCancelOrderTaxi");
+                if(resultUtil.getCode() == 200){
+                    paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 2, query.getMoney(), "", 1);//添加预支付数据
+                }
             }
             if(payType == 3){//余额支付
                 if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){
-                    return ResultUtil.error("余额不足,无法完成支付", "");
+                    return ResultUtil.error("余额不足,无法完成支付");
                 }
 
                 userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(query.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 //添加交易明细
-                transactionDetailsService.saveData(uid, "跨城出行取消订单", query.getMoney(), 2, 1, 1, 3, id);
+                transactionDetailsService.saveData(uid, "取消订单", query.getMoney(), 2, 1, 1, 3, id);
                 userInfoService.updateById(userInfo);
 
                 //解除小号绑定
                 if(orderCrossCity.getBindId() != null){
-                    chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId(), orderCrossCity.getTelX(), (System.currentTimeMillis() + 600000));
+                    chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId());
                 }
 
                 orderCrossCity.setState(10);
@@ -1616,34 +879,15 @@
 
         }else{//浮动计费
             //计算公式:实际历程 * 基础单价 * (参考费用 / (参考里程 * 基础单价)) + (实际历程 - 参考里程) * 基础单价 * 优惠系数
-            double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();//参考价格
+            double num1 = Double.valueOf(jsonObject.getString("num1")).doubleValue();//参考费用
             double num2 = Double.valueOf(jsonObject.getString("num2")).doubleValue();//参考里程
-            double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();//保底价
-            double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();//超出参考里程优惠系数
-            double num5 = Double.valueOf(jsonObject.getString("num5")).doubleValue();//低于参考里程优惠系数
-            double num6 = Double.valueOf(jsonObject.getString("num6")).doubleValue();//包车系数
-            double num7 = Double.valueOf(jsonObject.getString("num7")).doubleValue();//五座系数
-            double num8 = Double.valueOf(jsonObject.getString("num8")).doubleValue();//七座系数
-
-
-            /**
-             * 1、实际里程>=参考里程
-             *    参考价+((实际里程-参考里程)*(参考价/参考里程)*超出参考里程优惠系数)
-             *
-             * 2、实际里程<参考里程
-             *    参考价-(参考里程-实际路程)*(参考价/参考里程)*低于参考里程优惠系数
-             */
-            double unitPrice = 0d;
-            if(distance1 > num2){//1
-                unitPrice = num1 + ((distance1 - num2) * (num1 / num2) * num4);
-            }
-            if(distance1 < num2){//2
-                unitPrice = num1 - ((num2 - distance1) * (num1 / num2) * num5);
-            }
-            if(distance1 == num2){
-                unitPrice = num1;
-            }
+            double num3 = Double.valueOf(jsonObject.getString("num3")).doubleValue();//基础单价
+            double num4 = Double.valueOf(jsonObject.getString("num4")).doubleValue();//优惠系数
+            double num5 = Double.valueOf(jsonObject.getString("num5")).doubleValue();//包车系数
+            double num6 = Double.valueOf(jsonObject.getString("num6")).doubleValue();//五座系数
+            double num7 = Double.valueOf(jsonObject.getString("num7")).doubleValue();//七座系数
             if(travelMode == 1){//拼车
+                double unitPrice = (distance1 * num3 * (num1 / (num2 * num3))) + ((distance1 - num2) * num3 * num4);
                 String[] split = seatNumber.split(",");
                 boolean b = false;
                 for(String s : split){
@@ -1654,14 +898,15 @@
                 }
                 double price1 = 0D;
                 if(b){
-                    price1 = unitPrice * (totalSeat == 4 ? num7 : num8);
+                    price1 = unitPrice * (totalSeat == 4 ? num6 : num7);
                     peopleNumber -= 1;
                 }
                 double price = (unitPrice * peopleNumber) + price1;
-                map.put("price", new BigDecimal(num3 > price ? num3 : price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+                map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             }else{
-                double price = unitPrice * totalSeat * num6;
-                map.put("price", new BigDecimal(num3 > price ? num3 : price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+                double unitPrice = (distance1 * num3 * (num1 / (num2 * num3))) + ((distance1 - num2) * num3 * num5);
+                double price = unitPrice * totalSeat;
+                map.put("price", new BigDecimal(price).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             }
         }
         return ResultUtil.success(map);
@@ -1793,11 +1038,11 @@
         PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, Integer.valueOf(id), 3, type, 1);
         if(null != query){
             //添加交易明细
-            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId());
+            transactionDetailsService.saveData(orderCrossCity.getUserId(), "取消订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId());
             orderCrossCity.setState(10);
             //解除小号绑定
             if(orderCrossCity.getBindId() != null){
-                chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId(), orderCrossCity.getTelX(), (System.currentTimeMillis() + 600000));
+                chinaMobileUtil.midAxbUnBindSend(orderCrossCity.getBindId());
             }
             orderCrossCity.setBindId("");
             orderCrossCity.setTelX("");
@@ -1899,24 +1144,22 @@
         }
 
         OrderCrossCity orderCrossCity = this.selectById(id);
+        if(null == uid){
+            uid = orderCrossCity.getUserId();
+        }
         Integer integer = null;
         if(null == orderCrossCity){
             return ResultUtil.error("取消订单失败,订单信息有误");
         }
-        if(orderCrossCity.getState() >= 5 && orderCrossCity.getState() != 7 && orderCrossCity.getState() != 11){
+        if(orderCrossCity.getState() > 5 && orderCrossCity.getState() != 7 && orderCrossCity.getState() != 11){
             return ResultUtil.error("取消订单失败,不合法的操作");
         }
 
         //还原座位
         CancleOrder query1 = cancleOrderService.query(1, 3, orderCrossCity.getCompanyId());
         if (null != query1) {
-            if((orderCrossCity.getSnatchOrderTime().getTime() + query1.getMinuteNum() * 60 * 1000) < new Date().getTime()  && query1.getMoney().compareTo(0D) > 0){//需要付费的情况
-                integer = orderCancelService.saveData(id, 3, reason, remark, null, query1.getMoney(), 1, 1, uid);
-                orderCrossCity.setState(12);
-            }else{
-                integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid);
-                orderCrossCity.setState(10);
-            }
+            integer = orderCancelService.saveData(id, 3, reason, remark, null, null, 2, 1, uid);
+            orderCrossCity.setState(10);
             this.updateById(orderCrossCity);
 
             if(orderCrossCity.getState() != 7){//已经支付的情况推送给司机提醒
@@ -1953,45 +1196,41 @@
                 userInfo.setBalance(userInfo.getBalance() + orderCrossCity.getPayMoney());
                 userInfoService.updateById(userInfo);
                 //添加交易明细
-                transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", orderCrossCity.getPayMoney(), 1, 1, 1, 3, id);
+                transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney(), 1, 1, 1, 3, id);
             }else{
                 PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, id, 3, orderCrossCity.getPayType(), 2);
                 if(null == query){
-                    return ResultUtil.error("订单还未进行支付");
+                    query = paymentRecordService.query(1, orderCrossCity.getDriverId(), 2, id, 3, orderCrossCity.getPayType(), 2);
+                    if(null == query){
+                        return ResultUtil.error("订单还未进行支付");
+                    }
                 }
+
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+                String out_trade_no = sdf.format(new Date()) + 3 + query.getId();
 
                 if(query.getPayType() == 1){//微信
-                    Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), id + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
-                    if(!"SUCCESS".equals(map.get("return_code"))){
+                    Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), out_trade_no, query.getAmount().toString(), query.getAmount().toString(), callbackPath + "/base/wxRefundCallback");
+                    String return_code = map.get("return_code");
+                    if(!"SUCCESS".equals(return_code)){
                         return ResultUtil.error(map.get("return_msg"));
                     }
-                }else{//支付宝
+                }
+                if(query.getPayType() == 2){//支付宝
                     Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
-                    if(!"10000".equals(map.get("code"))){
+                    String code = map.get("code");
+                    if(!"10000".equals(code)){
                         return ResultUtil.error(map.get("msg"));
                     }
+                    query.setRefundState(2);
+                    query.setRefundCode(map.get("trade_no"));
+                    paymentRecordService.updateById(query);
                     //添加交易明细
-                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, id);
+                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney(), 1, 1, 1, 3, id);
                 }
             }
 
-            //添加负的收入明细
-            List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", id).eq("orderType", 3));
-            for(Income income : incomes){
-                if(income.getUserType() == 2){//处理司机的收入
-                    Driver driver = driverService.selectById(income.getObjectId());
-                    driver.setBalance(driver.getBalance() - income.getMoney());
-                    driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
-                    driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
-                    driverService.updateById(driver);
-                }
-                Income income1 = new Income();
-                BeanUtils.copyProperties(income, income1);
-                income1.setMoney(income.getMoney() * -1);
-                income1.setId(null);
-                income1.setInsertTime(new Date());
-                incomeService.insert(income1);
-            }
+
         }
 
         //添加消息
@@ -2030,8 +1269,8 @@
         if(null == distance){
             System.err.println("查询距离出错了");
         }else{
-            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
-            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60),2).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
+            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
+            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
         }
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderCrossCity.getId());
@@ -2053,8 +1292,8 @@
             if(null == distance){
                 System.err.println("查询距离出错了");
             }else{
-                d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
-                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60),2).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
+                d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString();
+                t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + "";
             }
             orderServerWarpper.setReservationMileage("0");
             orderServerWarpper.setReservationTime("0");
@@ -2287,7 +1526,7 @@
         orderPrivateCarMapper.insert(orderPrivateCar);
 
         //添加消息
-        systemNoticeService.addSystemNotice(1, "您的快车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
+        systemNoticeService.addSystemNotice(1, "您的专车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1);
 
         BaseWarpper baseWarpper = new BaseWarpper();
         baseWarpper.setId(orderPrivateCar.getId());
@@ -2487,77 +1726,5 @@
             size++;
         }
 
-    }
-
-    @Override
-    public ResultUtil payThankYouFee(Integer uid, Integer orderId, Double money, Integer payType, Integer type) throws Exception {
-        UserInfo userInfo = userInfoService.selectById(uid);
-        OrderCrossCity orderCrossCity = this.selectById(orderId);
-        ResultUtil resultUtil = ResultUtil.success();
-        if(payType == 1){//微信支付
-            String app = type == 1 ? "APP" : "JSAPI";
-            resultUtil = payMoneyUtil.weixinpay("感谢费", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), money.toString(), "/base/wxPayThankYouFee", app, userInfo.getAppletsOpenId());
-            paymentRecordService.saveData(3, uid, 1, orderId, 3, 1, money, "", 1);//添加预支付数据
-        }
-        if(payType == 2){//支付宝支付
-            resultUtil = payMoneyUtil.alipay("感谢费", "感谢费", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), money.toString(), "/base/aliPayThankYouFee");
-            paymentRecordService.saveData(1, uid, 1, orderId, 3, 2, money, "", 1);//添加预支付数据
-        }
-        if(payType == 3){//余额支付
-            if(userInfo.getBalance() == null || userInfo.getBalance() < money){
-                return ResultUtil.error("余额不足,无法完成支付", "");
-            }
-
-            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
-            SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId());
-            userInfo.setIntegral(userInfo.getIntegral() + (money.intValue() * query1.getIntegral()));//积分
-
-            //添加交易明细
-            transactionDetailsService.saveData(uid, "跨城出行-感谢费", money, 2, 1, 1, 3, orderId);
-            userInfoService.updateById(userInfo);
-
-            orderCrossCity.setThankYouFee(money);
-            this.updateById(orderCrossCity);
-
-            //添加已收入明细
-            incomeService.saveData(2, orderCrossCity.getDriverId(), 6, orderCrossCity.getId(), 3, money);
-            Driver driver = driverService.selectById(orderCrossCity.getDriverId());
-            driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-            driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-            driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-            driverService.updateById(driver);
-            systemNoticeService.addSystemNotice(1, "您已使用余额成功完成感谢费支付,谢谢使用!", uid, 1);
-        }
-        return resultUtil;
-    }
-
-    @Override
-    public void payThankYouFeeCallback(Integer orderId, String order_id, Integer payType) throws Exception {
-        OrderCrossCity orderCrossCity = this.selectById(orderId);
-        UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId());
-        PaymentRecord query = paymentRecordService.query(3, userInfo.getId(), 1, orderId, 3, payType, 1);
-        query.setState(2);
-        query.setCode(order_id);
-        paymentRecordService.updateById(query);
-
-        SysIntegral query1 = sysIntegralMapper.query(orderCrossCity.getCompanyId());
-        userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
-
-        //添加交易明细
-        transactionDetailsService.saveData(userInfo.getId(), "跨城出行-感谢费", query.getAmount(), 2, 1, 1, 3, orderId);
-        userInfoService.updateById(userInfo);
-
-        orderCrossCity.setThankYouFee(query.getAmount());
-        this.updateById(orderCrossCity);
-
-        //添加已收入明细
-        incomeService.saveData(2, orderCrossCity.getDriverId(), 6, orderCrossCity.getId(), 3, query.getAmount());
-        Driver driver = driverService.selectById(orderCrossCity.getDriverId());
-        driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(new BigDecimal(query.getAmount())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-        driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(new BigDecimal(query.getAmount())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-        driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(query.getAmount())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-        driverService.updateById(driver);
-        systemNoticeService.addSystemNotice(1, "您已使用" + (payType == 1 ? "微信" : "支付宝") + "成功完成感谢费支付,谢谢使用!", userInfo.getId(), 1);
     }
 }

--
Gitblit v1.7.1