From e52227b01983146f2e3c81dc575141d8b9889497 Mon Sep 17 00:00:00 2001 From: yanghb <yanghb> Date: 星期五, 21 四月 2023 10:16:30 +0800 Subject: [PATCH] 代码调整 --- DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 295 +++++++++++++++++++---------------------------------------- 1 files changed, 95 insertions(+), 200 deletions(-) diff --git a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index c096466..a5dbde5 100644 --- a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -1,10 +1,10 @@ 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.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.icbc.api.crypt.AES; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.crossCity.dao.LinePriceMapper; import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper; @@ -18,15 +18,12 @@ import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; -import com.stylefeng.guns.modular.system.dao.PhoneMapper; -import com.stylefeng.guns.modular.system.dao.RegionMapper; -import com.stylefeng.guns.modular.system.dao.SysIntegralMapper; -import com.stylefeng.guns.modular.system.dao.UserInfoMapper; +import com.stylefeng.guns.modular.system.dao.*; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; +import com.stylefeng.guns.modular.system.util.LiuZhouBank.PayUtil; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; -import com.stylefeng.guns.modular.system.warpper.MerchantCouponListWarpper; import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; @@ -44,8 +41,8 @@ import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; @Service @@ -133,23 +130,11 @@ @Autowired private PayMoneyUtil payMoneyUtil; - @Autowired - private IOrderAdditionalFeeService orderAdditionalFeeService; + @Resource + private UserCouponRecordMapper userCouponRecordMapper; - @Autowired - private RedisUtil redisUtil; - - @Autowired - private IMerchantActivityService merchantActivityService; - - @Autowired - private IMerchantActivitySlaveService merchantActivitySlaveService; - - @Autowired - private IUserMerchantCouponService userMerchantCouponService; - - @Autowired - private IMerchantCouponService merchantCouponService; + @Resource + private UserRedPacketRecordMapper userRedPacketRecordMapper; @Value("${filePath}") private String filePath; @@ -246,17 +231,16 @@ @Override public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception { OrderCrossCity orderCrossCity = this.selectById(orderId); - UserInfo userInfo = userInfoMapper.selectById(orderCrossCity.getUserId()); switch (state){ case 3://出发前往预约点 orderCrossCity.setState(3); orderCrossCity.setSetOutTime(new Date()); - systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderCrossCity.getUserId(), 1); + systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderCrossCity.getUserId()); break; case 4://到达预约点,等待客户上车 orderCrossCity.setState(4); orderCrossCity.setArriveTime(new Date()); - systemNoticeService.addSystemNotice(1, "司机已到达您设置的预约地点,请及时上车", orderCrossCity.getUserId(), 1); + systemNoticeService.addSystemNotice(1, "司机已到达您设置的预约地点,请及时上车", orderCrossCity.getUserId()); break; case 5://开始服务 orderCrossCity.setBoardingLon(lon); @@ -293,69 +277,23 @@ driverService.updateById(driver); } - //存储商家优惠券到redis {"phone":[{...}]} - //订单数要加1,因为这里是后修改订单状态 - List<OrderCrossCity> list = orderCrossCityMapper.queryByState(userInfo.getId(), 8, 9); - List<MerchantActivity> merchantActivities = merchantActivityService.selectList(new EntityWrapper<MerchantActivity>().eq("companyId", orderCrossCity.getCompanyId()).eq("activityType", 1).eq("auditStatus", 2).eq("status", 1) - .eq("state", 1).like("orderType", "3").where("((orderAmountFull is not null and orderAmountFull <= " + orderCrossCity.getOrderMoney() + ") or (orderNumber is not null and orderNumber <= " + (list.size() + 1) + "))") - .in("id", merchantActivitySlaveService.selectList(new EntityWrapper<MerchantActivitySlave>().gt("laveNumber", 0)).stream().map(MerchantActivitySlave::getMerchantActivityId).collect(Collectors.toList())) - .notIn("id", userMerchantCouponService.selectList(new EntityWrapper<UserMerchantCoupon>().eq("userType", 1).eq("userId", userInfo.getId()).eq("state", 1)).stream().map(UserMerchantCoupon::getMerchantActivityId).collect(Collectors.toList())) - ); - List<MerchantCouponListWarpper> listWarppers = new ArrayList<>(); - if(merchantActivities.size() > 0){ - for(MerchantActivity merchantActivity :merchantActivities){ - List<MerchantActivitySlave> merchantActivitySlaves = merchantActivitySlaveService.selectList(new EntityWrapper<MerchantActivitySlave>().eq("merchantActivityId", merchantActivity.getId()).gt("laveNumber", 0)); - for(MerchantActivitySlave merchantActivitySlave : merchantActivitySlaves){ - UserMerchantCoupon userMerchantCoupon = new UserMerchantCoupon(); - try { - userMerchantCoupon.setCode(UUIDUtil.getRandomCode(16)); - } catch (Exception e) { - e.printStackTrace(); - } - userMerchantCoupon.setUserType(1); - userMerchantCoupon.setUserId(userInfo.getId()); - userMerchantCoupon.setMerchantActivityId(merchantActivity.getId()); - userMerchantCoupon.setMerchantCouponId(merchantActivitySlave.getMerchantCouponId()); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + merchantActivity.getEffectiveDays()); - userMerchantCoupon.setEndTime(calendar.getTime()); - userMerchantCoupon.setStatus(1); - userMerchantCoupon.setState(1); - userMerchantCoupon.setCreateTime(new Date()); - userMerchantCouponService.insert(userMerchantCoupon); + //添加已收入明细 + 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); - MerchantCoupon merchantCoupon = merchantCouponService.selectById(merchantActivitySlave.getMerchantCouponId()); - MerchantCouponListWarpper merchantCouponListWarpper = new MerchantCouponListWarpper(); - merchantCouponListWarpper.setId(merchantActivitySlave.getMerchantCouponId()); - merchantCouponListWarpper.setName(merchantCoupon.getName()); - merchantCouponListWarpper.setType(merchantCoupon.getType()); - merchantCouponListWarpper.setFullAmount(merchantCoupon.getFullAmount()); - merchantCouponListWarpper.setDiscount(merchantCoupon.getDiscount()); - listWarppers.add(merchantCouponListWarpper); - - merchantActivitySlave.setLaveNumber(merchantActivitySlave.getLaveNumber() - 1); - if(merchantActivitySlave.getLaveNumber() == 0){ - merchantActivity.setStatus(2); - } - } - if(merchantActivitySlaves.size() > 0){ - merchantActivitySlaveService.updateBatchById(merchantActivitySlaves); - } - } - merchantActivityService.updateBatchById(merchantActivities); - } - String value = redisUtil.getValue("merchantVoucher"); - JSONObject jsonObject = JSON.parseObject(value); - if(null == jsonObject){ - jsonObject = new JSONObject(); - } - jsonObject.put(userInfo.getPhone(), listWarppers); - redisUtil.setStrValue("merchantVoucher", jsonObject.toJSONString()); pushUtil.removeTask(orderId, 3);//删除定时任务,结束推送数据 - systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderCrossCity.getUserId(), 1); + systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderCrossCity.getUserId()); break; } this.updateById(orderCrossCity); @@ -445,13 +383,13 @@ return ResultUtil.error("司机处于离线状态"); } OrderCrossCity orderCrossCity = new OrderCrossCity(); - UserInfo userInfo = userInfoMapper.queryByPhone(orderCrossCityWarpper.getPassengersPhone()); + UserInfo userInfo = userInfoMapper.queryByPhone(AESUtil.encrypt(orderCrossCityWarpper.getPassengersPhone())); if(userInfo == null){//添加用户信息 userInfo = new UserInfo(); Integer integer = userInfoMapper.selectCount(null) + 1000001; userInfo.setNickName(ToolUtil.isNotEmpty(orderCrossCityWarpper.getPassengers()) ? orderCrossCityWarpper.getPassengers() : "OK" + String.valueOf(integer).substring(1)); userInfo.setName(orderCrossCityWarpper.getPassengers()); - userInfo.setPhone(orderCrossCityWarpper.getPassengersPhone()); + userInfo.setPhone(AESUtil.encrypt(orderCrossCityWarpper.getPassengersPhone())); userInfo.setState(1); userInfo.setFlag(1); userInfo.setInsertTime(new Date()); @@ -461,19 +399,18 @@ orderCrossCity.setUserId(userInfo.getId()); /** - * 1.出租车、专车、跨城有待支付的订单不能叫车 - * 2.小件物流有未完成的订单可以下跨城、专车、出租车 - * 3.出租车、专车、跨城有预约单可以下即时单 + * 1.下了即时单就不能下预约单和即时单 + * 2.下了预约单和再下一张即时单不能再下预约单 */ - List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 1, 1, 1, 2, 3, 4, 5, 6, 7, 11, 12); + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(orderCrossCity.getUserId(), 1, 1, 1, 2, 3, 4, 5, 6, 7, 11); if(orderPrivateCars.size() > 0){ return ResultUtil.error("有未完成的订单"); } - List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 7, 11, 12); + List<OrderTaxi> list = orderTaxiMapper.queryByState_(orderCrossCity.getUserId(), 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, 12); + List<OrderCrossCity> orderCrossCities1 = orderCrossCityMapper.queryByState(orderCrossCity.getUserId(), 1, 2, 3, 4, 5, 7, 11); if(orderCrossCities1.size() > 0){ return ResultUtil.error("有未完成的订单"); } @@ -535,35 +472,18 @@ orderCrossCity.setTrackId(track); //调用移动的小号接口 - 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(), AESUtil.decrypt(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")); } if(orderCrossCityWarpper.getTravelMode() == 2){//包车 -// orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); -// orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat()); + orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); + orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat()); } this.insert(orderCrossCity); - - Double t = 0D; - if(ToolUtil.isNotEmpty(orderCrossCityWarpper.getAdditionalFee())){//附加费 - JSONArray jsonArray = JSON.parseArray(orderCrossCityWarpper.getAdditionalFee()); - for(int i = 0; i < jsonArray.size(); i++){ - JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); - Double amount = jsonObject.getDouble("amount"); - OrderAdditionalFee orderAdditionalFee = new OrderAdditionalFee(); - orderAdditionalFee.setOrderType(3); - orderAdditionalFee.setOrderId(orderCrossCity.getId()); - orderAdditionalFee.setAdditionalFeeId(id); - orderAdditionalFee.setAmount(amount); - orderAdditionalFeeService.insert(orderAdditionalFee); - t += amount; - } - } - orderCrossCity.setOrderMoney(orderCrossCity.getOrderMoney() + t); - this.updateById(orderCrossCity); if(driver.getState() == 2){ driver.setState(3); @@ -609,11 +529,10 @@ lineShiftDriverMapper.updateById(lineShiftDriver); //添加消息 - systemNoticeService.addSystemNotice(1, "您的跨城订单已下单成功!", orderCrossCity.getUserId(), 1); + systemNoticeService.addSystemNotice(1, "您的跨城订单已下单成功!", orderCrossCity.getUserId()); BaseWarpper baseWarpper = new BaseWarpper(); baseWarpper.setId(orderCrossCity.getId()); - //创建定时任务,取消订单30分钟 TimerTask timerTask = new TimerTask() { @Override @@ -651,7 +570,6 @@ }; Timer timer = new Timer(); timer.schedule(timerTask, 30 * 60 * 1000); - return ResultUtil.success(baseWarpper); } @@ -698,7 +616,7 @@ } }).start(); - systemNoticeService.addSystemNotice(1, "您已成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId(), 1); + systemNoticeService.addSystemNotice(1, "您已成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId()); } @@ -744,42 +662,35 @@ return ResultUtil.error("订单已被支付,不允许重复支付"); } Integer uid = orderCrossCity.getUserId(); + UserInfo userInfo = userInfoMapper.selectById(uid); Double orderMoney = orderCrossCity.getOrderMoney(); - ResultUtil resultUtil = ResultUtil.success(""); + ResultUtil resultUtil = ResultUtil.success(); orderCrossCity.setCouponMoney(0D);//初始化历史数据 orderCrossCity.setCouponId(null); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String out_trade_no = sdf.format(new Date()) + 3 + orderCrossCity.getId(); + if(payType == 1){//微信支付 - - resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayCrossCity", "APP"); - paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 - -// Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayCrossCity", "", type, null); -// if(map.get("code").equals("200")){ -// paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, map.get("order_id"), 1);//添加预支付数据 -// resultUtil = ResultUtil.success(map.get("data")); -// }else{ -// resultUtil = ResultUtil.error(map.get("msg"), ""); -// } + String appletsOpenId = ""; + String tradeType = "APP"; + resultUtil = payMoneyUtil.weixinpay("完成订单", "", out_trade_no, orderMoney.toString(), callbackPath + "/base/wxPayCrossCity", tradeType, appletsOpenId, ""); + if(resultUtil.getCode() == 200){ + paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 + } } if(payType == 2){//支付宝支付 - resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayCrossCity"); - paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据 - - -// Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",3", 10, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/aliPayCrossCity", "", type, null); -// if(map.get("code").equals("200")){ -// paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 2, orderMoney, map.get("order_id"), 1);//添加预支付数据 -// resultUtil = ResultUtil.success(map.get("data")); -// }else{ -// resultUtil = ResultUtil.error(map.get("msg"), ""); -// } + resultUtil = payMoneyUtil.alipay("订单完成支付", "支付订单", out_trade_no, orderMoney.toString(), callbackPath + "/base/aliPayCrossCity"); + if(resultUtil.getCode() == 200){ + paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderId, 3, 2, orderMoney, "", 1);//添加预支付数据 + } } -// if(payType == 3){//扫码支付,暂时屏蔽,这里需要确认需求 -// //调用支付获取收款二维码数据 -// ResultUtil<Map<String, Object>> generate = icbcPayUtil.generate(orderCrossCity.getId() + ",3", orderMoney, orderCrossCity.getInsertTime(), orderCrossCity.getOrderNum(), callbackPath + "/base/order/generatePay"); -// resultUtil = ResultUtil.success(generate.getData().get("qrcode").toString()); -// } + if(payType == 3){//扫码支付 + resultUtil = payMoneyUtil.weixinpay("完成订单", "", out_trade_no, orderMoney.toString(), callbackPath + "/base/wxPayCrossCity", "NATIVE", "", orderCrossCity.getId().toString()); + if(resultUtil.getCode() == 200){ + paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, "", 1);//添加预支付数据 + } + } this.updateAllColumnById(orderCrossCity); return resultUtil; @@ -797,11 +708,11 @@ @Override public void payOrderCrossCityCallback(Integer id, String order_id, Integer type) throws Exception { OrderCrossCity orderCrossCity = this.selectById(id); - if(orderCrossCity.getState() == 7){ - PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getDriverId(), 2, id, 3, type, 1); - if(null == query){ - System.err.println("预支付数据异常(orderId = " + id + ")"); - } + PaymentRecord query = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, Integer.valueOf(id), 3, type, 1); + if(null == query){ + query = paymentRecordService.query(1, orderCrossCity.getDriverId(), 2, Integer.valueOf(id), 3, type, 1); + } + if(null != query){ //添加交易明细 transactionDetailsService.saveData(orderCrossCity.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId()); orderCrossCity.setState(2);//先支付再服务 @@ -814,22 +725,24 @@ userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 userInfoMapper.updateById(userInfo); + //处理优惠券和红包 + if(null != orderCrossCity.getCouponId()){ + UserCouponRecord userCouponRecord = userCouponRecordMapper.selectById(orderCrossCity.getCouponId()); + userCouponRecord.setState(2); + userCouponRecord.setEndTime(new Date()); + userCouponRecordMapper.updateById(userCouponRecord); + } + if(null != orderCrossCity.getRedPacketId()){ + UserRedPacketRecord userRedPacketRecord = userRedPacketRecordMapper.selectById(orderCrossCity.getRedPacketId()); + userRedPacketRecord.setState(2); + userRedPacketRecord.setEndTime(new Date()); + userRedPacketRecordMapper.updateById(userRedPacketRecord); + } + + query.setState(2); query.setCode(order_id); paymentRecordService.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() { @@ -842,7 +755,9 @@ }).start(); - systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId(), 1); + systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderCrossCity.getUserId()); + }else{ + System.err.println("预支付数据异常(orderId = " + id + ")"); } } @@ -980,34 +895,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){ @@ -1018,23 +914,22 @@ } 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); } - @Override - public List<OrderCrossCity> taskMidAxbUnBindSend() throws Exception { - return this.baseMapper.taskMidAxbUnBindSend(); - } + + /** * 获取订单编号 -- Gitblit v1.7.1