From c18ec3846c8483975de2224c1ecac9470e9b2804 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 16 八月 2023 19:21:36 +0800 Subject: [PATCH] 同步代码 --- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 99 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 89 insertions(+), 10 deletions(-) diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java index dc24dcc..f896aeb 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; @@ -115,7 +116,7 @@ @Autowired private IOrderService orderService; - @Autowired + @Resource private ICompanyFundFlowService companyFundFlowService; @Value("${wx.appletsAppid}") @@ -173,7 +174,7 @@ int i = 0; Double scope = 5D; while (true){ - List<NearbyDriverWarpper> nearbyDriverWarppers = driverService.queryDriverPosition(estimatedCosts.getLng().toString(), estimatedCosts.getLat().toString(), scope); + List<NearbyDriverWarpper> nearbyDriverWarppers = driverService.queryDriverPosition(estimatedCosts.getStartLng().toString(), estimatedCosts.getStartLat().toString(), scope); if(nearbyDriverWarppers.size() == 0){ scope += 5; i++; @@ -213,7 +214,9 @@ */ public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ order = getOrderInitialPrice(order); - SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); + Integer driverId = order.getDriverId(); + Driver driver = driverService.selectById(driverId); + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5).eq("companyId",driver.getBranchOfficeId())); if(null == systemConfig){ if(type == 1){//预估金额 order.setEstimatedPrice(0D); @@ -314,6 +317,9 @@ Double num7 = extraCost.getDouble("num7");//恶劣天气超出公里 Double num8 = extraCost.getDouble("num8");//恶劣天气超出公里单价 X/公里 Double num9 = extraCost.getDouble("num9");//恶劣天气最高收取金额 + Double num10 = extraCost.getDouble("num10");//节假日收费 +// Double num11 = extraCost.getDouble("num11");//恶劣天气最高收取金额 +// Double num12 = extraCost.getDouble("num12");//恶劣天气最高收取金额 //等待费用 if(waitTime.compareTo(num1 * 60) >= 0){ @@ -327,13 +333,13 @@ } //恶劣天气 - systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8)); + systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8).eq("companyId",driver.getBranchOfficeId())); if(null != systemConfig){ JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价 if(1 == num11){ - boolean badWeather = WeatherUtil.isBadWeather(city); - if(badWeather){ +// boolean badWeather = WeatherUtil.isBadWeather(city); +// if(badWeather){ order.setBadWeatherDistance(num5);//恶劣天气公里 order.setBadWeatherPrice(num6);//恶劣天气费 if(distance.compareTo(num7) > 0){ @@ -353,14 +359,27 @@ order.setOverBadWeatherPrice(subtract.doubleValue());//恶劣天气超出公里费 } } - } +// } + } + } + + + + //节假日 + systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 9).eq("companyId",driver.getBranchOfficeId())); + if(null != systemConfig){ + JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); + Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价 + if(1 == num11){ + BigDecimal bigDecimal = new BigDecimal(num10); + order.setHolidayPrice(bigDecimal.doubleValue()); } } //计算总金额 BigDecimal bigDecimal = new BigDecimal(order.getStartPrice() + order.getOverDrivePrice() + order.getLongDistancePrice() + order.getOverLongDistancePrice() + - order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); + order.getWaitTimePrice() + order.getOutWaitTimePrice() + order.getBadWeatherPrice() + order.getOverBadWeatherPrice()+order.getHolidayPrice() - order.getDiscountAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); if(type == 1){//预估价 order.setEstimatedPrice(bigDecimal.doubleValue()); @@ -399,6 +418,7 @@ order.setCouponId(null);//优惠券 order.setDiscountAmount(0D);//折扣优惠金额 order.setDiscount(0D);//折扣 + order.setHolidayPrice(0D); return order; } @@ -504,6 +524,7 @@ } } } + redisUtil.setStrValue("newOrder", "true"); return ResultUtil.success(order.getId()); } @@ -698,6 +719,7 @@ order1.setHallOrder(1); OrderServiceImpl.this.updateById(order1); ExtraPushOrder(order); + redisUtil.setStrValue("lobbyOrder", "true"); } } }, num4 * 1000); @@ -705,6 +727,7 @@ order.setHallOrder(1); this.updateById(order); ExtraPushOrder(order); + redisUtil.setStrValue("lobbyOrder", "true"); } redisUtil.unlock(); }catch (Exception e){ @@ -794,8 +817,10 @@ PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper(); pushOrderInfoWarpper.setId(order.getId()); pushOrderInfoWarpper.setState(order.getState()); + pushOrderInfoWarpper.setCancelObject(1); pushUtil.pushOrderInfo(order.getDriverId(), 2, pushOrderInfoWarpper); } + redisUtil.setStrValue("cancelOrder", "true"); return ResultUtil.success(); } @@ -1520,6 +1545,7 @@ CompanyFundFlow companyFundFlow = new CompanyFundFlow(); companyFundFlow.setBalance(new BigDecimal(balance)); companyFundFlow.setObjectType(1); + companyFundFlow.setDriverId(driver.getId()); companyFundFlow.setType(5); companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice())); companyFundFlow.setCreateTime(new Date()); @@ -1569,6 +1595,7 @@ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); Double num2 = jsonObject.getDouble("num2"); Double num3 = jsonObject.getDouble("num3"); + Double num4_ = jsonObject.getDouble("num4"); if(order.getOrderMoney().compareTo(num2) >= 0){//订单金额大于num2开始分佣 AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail(); accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); @@ -1970,11 +1997,60 @@ } } } - //处理代理商抽佣 + //处理平台抽佣 + if(num4_ > 0){ + //先平台抽佣 + num4_ = (num3 >= num4_ ? num4_ : num3); + Revenue revenue = new Revenue(); + revenue.setType(2); + revenue.setUserType(4); + revenue.setUserId(driver.getAgentId()); + revenue.setOrderId(order.getId()); + revenue.setAmount(num4_); + revenue.setCreateTime(new Date()); + revenueService.insert(revenue); + //司机充值记录分账 + Double num4_1 = num4_; + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + for (RechargeRecord rechargeRecord : rechargeRecords) { + Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); + if(surplusDividedAmount.compareTo(num4_1) >= 0){ + ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3); + if(10000 == fengzhang.getCode()){ + rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + rechargeRecordService.updateById(rechargeRecord); + } + break; + }else{ + ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3); + if(10000 == fengzhang.getCode()){ + rechargeRecord.setSurplusDividedAmount(0D); + rechargeRecordService.updateById(rechargeRecord); + num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + }else{ + break; + } + } + } + Double balance = revenueService.queryAgentBalance(driver.getAgentId()); + //记录企业流水 + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(3); + companyFundFlow.setObjectType(1); + companyFundFlow.setObjectId(null); + companyFundFlow.setBalance(new BigDecimal(balance)); + companyFundFlow.setMoney(new BigDecimal(num4_)); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); + double v = new BigDecimal(num3).subtract(new BigDecimal(num4_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + num3 = (num3 >= num4_ ? v : 0); + } + + //代理商分佣 if(num3 > 0 && null != driver){ Double balance = revenueService.queryAgentBalance(driver.getAgentId()); Revenue revenue = new Revenue(); - revenue.setType(1); + revenue.setType(2); revenue.setUserType(3); revenue.setUserId(driver.getAgentId()); revenue.setOrderId(order.getId()); @@ -2007,6 +2083,7 @@ } } + //记录企业流水 CompanyFundFlow companyFundFlow = new CompanyFundFlow(); companyFundFlow.setType(3); companyFundFlow.setObjectType(2); @@ -2128,6 +2205,7 @@ CompanyFundFlow companyFundFlow = new CompanyFundFlow(); companyFundFlow.setBalance(new BigDecimal(balance)); companyFundFlow.setObjectType(1); + companyFundFlow.setDriverId(driver.getId()); companyFundFlow.setType(5); companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice())); companyFundFlow.setCreateTime(new Date()); @@ -2301,6 +2379,7 @@ CompanyFundFlow companyFundFlow = new CompanyFundFlow(); companyFundFlow.setBalance(new BigDecimal(balance)); companyFundFlow.setObjectType(1); + companyFundFlow.setDriverId(driver.getId()); companyFundFlow.setType(5); companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice())); companyFundFlow.setCreateTime(new Date()); -- Gitblit v1.7.1