From ed6c634b3ba84c6f3af1146c3df86781c9093314 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 18 七月 2023 14:18:01 +0800 Subject: [PATCH] 同步代码 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 137 +++++++++++++++++++++++++++------------------ 1 files changed, 82 insertions(+), 55 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index a25c1ad..b80e7dc 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -494,7 +494,8 @@ continue; } Driver driver1 = driverService.selectById(youTuiDriver.getDriverId()); - if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){ + int count = this.selectCount(new EntityWrapper<Order>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401))); + if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1 || count > 0){ continue; } DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); @@ -550,7 +551,10 @@ if(null == driverWork){ continue; } - + int count = this.selectCount(new EntityWrapper<Order>().eq("driverId", driver1.getId()).eq("status", 1).in("state", Arrays.asList(102, 103, 104, 105, 201, 401))); + if(count > 0){ + continue; + } if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 integral = driver1.getIntegral(); score = driver1.getScore(); @@ -1305,14 +1309,15 @@ @Override public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception { if(108 == state){ - String value = redisUtil.getValue("repeat_" + orderId.toString()); + String value = redisUtil.getValue("repeat_" + orderId); if(ToolUtil.isEmpty(value)){ - redisUtil.setStrValue("repeat_" + orderId, System.currentTimeMillis() + "", 10 * 60); + redisUtil.setStrValue("repeat_" + orderId, System.currentTimeMillis() + "", 600);//10分钟 }else{ Long s = System.currentTimeMillis() - Long.valueOf(value); - if(s < 60000){//1分钟 + if(s.compareTo(60000L) < 0){//1分钟 return ResultUtil.error("数据处理中"); } + redisUtil.setStrValue("repeat_" + orderId, System.currentTimeMillis() + "", 600);//10分钟 } } @@ -1321,6 +1326,9 @@ return ResultUtil.error("操作失败,请刷新订单"); } Order order = this.selectById(orderId); + if(order.getState().compareTo(state) == 0){ + return ResultUtil.error("不能重复操作"); + } order.setState(state); if(payType == 2 && state == 107){ @@ -1390,9 +1398,20 @@ if(null != order.getUserId()){ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState()); } - if(108 == state){ - redisUtil.remove("repeat_" + orderId.toString()); + + if(payType == 2 && state == 107){ + new Timer().schedule(new TimerTask() { + @Override + public void run() { + Order order1 = OrderServiceImpl.this.selectById(orderId); + if(order1.getState() == 107){ + completeCollection_(order1); + } + } + }, 60000); } + + return ResultUtil.success(); } @@ -2180,62 +2199,70 @@ List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1) .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 600 <= UNIX_TIMESTAMP(now())")); for (Order order : orders) { - order.setState(108); - order.setPayTime(new Date()); - if(null != order.getCouponId()){ - UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId()); - Coupon coupon = couponService.selectById(userToCoupon.getCouponId()); + completeCollection_(order); + } + } - Driver driver = driverService.selectById(order.getDriverId()); - AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(order.getDriverId()); - accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - accountChangeDetail.setType(1); - accountChangeDetail.setChangeType(7); - accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setExplain("优惠券收入"); - driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); - driverService.updateById(driver); - accountChangeDetailService.insert(accountChangeDetail); - //补贴中分账 - Double discountedPrice = order.getDiscountedPrice(); - List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); - for (RechargeRecord rechargeRecord : rechargeRecords) { - Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); - if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ - ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); - if(10000 == zhaunzhang.getCode()){ - Double remainAmount = zhaunzhang.getData(); - rechargeRecord.setSurplusDividedAmount(remainAmount); - rechargeRecordService.updateById(rechargeRecord); - } - break; + + + + public void completeCollection_(Order order) { + order.setState(108); + order.setPayTime(new Date()); + if(null != order.getCouponId()){ + UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId()); + Coupon coupon = couponService.selectById(userToCoupon.getCouponId()); + + Driver driver = driverService.selectById(order.getDriverId()); + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(order.getDriverId()); + accountChangeDetail.setCreateTime(new Date()); + accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setType(1); + accountChangeDetail.setChangeType(7); + accountChangeDetail.setOrderId(order.getId()); + accountChangeDetail.setExplain("优惠券收入"); + driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driverService.updateById(driver); + accountChangeDetailService.insert(accountChangeDetail); + + //补贴中分账 + Double discountedPrice = order.getDiscountedPrice(); + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + for (RechargeRecord rechargeRecord : rechargeRecords) { + Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); + if(surplusDividedAmount.compareTo(discountedPrice) >= 0){ + ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), discountedPrice, callbackPath + "/base/order/zhaunzhangCallback"); + if(10000 == zhaunzhang.getCode()){ + Double remainAmount = zhaunzhang.getData(); + rechargeRecord.setSurplusDividedAmount(remainAmount); + rechargeRecordService.updateById(rechargeRecord); + } + break; + }else{ + ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); + if(10000 == zhaunzhang.getCode()){ + Double remainAmount = zhaunzhang.getData(); + rechargeRecord.setSurplusDividedAmount(remainAmount); + rechargeRecordService.updateById(rechargeRecord); + discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); }else{ - ResultUtil<Double> zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback"); - if(10000 == zhaunzhang.getCode()){ - Double remainAmount = zhaunzhang.getData(); - rechargeRecord.setSurplusDividedAmount(remainAmount); - rechargeRecordService.updateById(rechargeRecord); - discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - }else{ - break; - } + break; } } } + } - this.updateById(order); + this.updateById(order); - try { - saveRevenue(order); - } catch (Exception e) { - e.printStackTrace(); - } + try { + saveRevenue(order); + } catch (Exception e) { + e.printStackTrace(); } } } -- Gitblit v1.7.1