From d5b3e5a413bcfccba294793ee093722f31b2448a Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 16 八月 2023 17:02:13 +0800 Subject: [PATCH] 添加推单日志 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java | 126 ++++++++++++++++++++++++++++++++--------- 1 files changed, 98 insertions(+), 28 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java index 2083d82..8994910 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java @@ -15,6 +15,7 @@ import com.supersavedriving.driver.modular.system.util.*; import com.supersavedriving.driver.modular.system.util.MallBook.model.*; import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest; +import com.supersavedriving.driver.modular.system.util.huawei.OBSUtil; import com.supersavedriving.driver.modular.system.util.mongodb.model.Location; import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil; import com.supersavedriving.driver.modular.system.util.weChat.WeChatUtil; @@ -41,9 +42,13 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.InetAddress; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 司机 @@ -148,7 +153,7 @@ //新账号 if(null == driver){ driver = new Driver(); - driver.setCode(UUIDUtil.getNumberRandom(16)); + driver.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); try { driver = setDriverParamete(driver, driverRegisterWarpper); }catch (Exception e){ @@ -156,9 +161,46 @@ } driver.setCreateTime(new Date()); this.insert(driver); + String s = wechatMiniProgramORCode(driver.getId()); + driver.setReferralCode(s); + this.updateById(driver); + + + //司机邀请注册奖励 + if(null != driver.getInviterId()){ + Driver driver1 = this.selectById(driver.getInviterId()); + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); + if(null != systemConfig){ + Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7"); + if(num7 > 0){ + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(driver1.getId()); + accountChangeDetail.setType(2); + accountChangeDetail.setChangeType(5); + accountChangeDetail.setOldData(driver1.getIntegral().doubleValue()); + driver1.setIntegral(driver1.getIntegral() + num7); + accountChangeDetail.setNewData(driver1.getIntegral().doubleValue()); + accountChangeDetail.setExplain("邀请司机注册奖励"); + accountChangeDetailService.saveData(accountChangeDetail); + this.updateById(driver1); + } + } + } } return ResultUtil.success(); } + + + + //生成小程序二维码 + public String wechatMiniProgramORCode(Integer driverId) throws Exception{ + InputStream release = weChatUtil.getwxacodeunlimit("pages/index/index", "driverId=" + driverId, "release"); + String s = OBSUtil.putObjectToBucket(release, "driver_" + driverId + "_" + UUIDUtil.getNumberRandom(5) + ".jpg"); + return s; + } + /** @@ -169,12 +211,17 @@ */ public Driver setDriverParamete(Driver driver, DriverRegisterWarpper driverRegisterWarpper) throws Exception{ driver.setAvatar(driverRegisterWarpper.getAvatar()); + driver.setName(driverRegisterWarpper.getName()); driver.setPhone(driverRegisterWarpper.getPhone()); driver.setEmergencyContact(driverRegisterWarpper.getEmergencyContact()); driver.setEmergencyPhone(driverRegisterWarpper.getEmergencyPhone()); driver.setIdcardBack(driverRegisterWarpper.getIdcardBack()); driver.setIdcardFront(driverRegisterWarpper.getIdcardFront()); driver.setDriverLicense(driverRegisterWarpper.getDriverLicense()); + if(ToolUtil.isNotEmpty(driverRegisterWarpper.getFirstCertificateTime())){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + driver.setFirstCertificateTime(sdf.parse(driverRegisterWarpper.getFirstCertificateTime())); + } //注册地 String code = driverRegisterWarpper.getCode(); BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("districtCode", code).eq("status", 1)); @@ -192,8 +239,10 @@ driver.setCityCode(branchOffice.getCityCode()); driver.setAreaCode(branchOffice.getDistrictCode()); driver.setAreaName(branchOffice.getDistrictName()); - driver.setInviterType(driverRegisterWarpper.getInviterType()); - driver.setInviterId(driverRegisterWarpper.getInviterId()); + if(null != driverRegisterWarpper.getInviterId()){ + driver.setInviterType(driverRegisterWarpper.getInviterType()); + driver.setInviterId(driverRegisterWarpper.getInviterId()); + } driver.setApprovalStatus(1); driver.setApprovalNotes(""); driver.setApprovalTime(null); @@ -214,6 +263,9 @@ */ @Override public ResultUtil<TokenWarpper> driverLogin(String receiver, String phone, String code) throws Exception { + if(ToolUtil.isEmpty(receiver)){ + receiver = "+86"; + } String value = redisUtil.getValue(receiver + phone); if(!"12345".equals(code) && ToolUtil.isEmpty(value)){ return ResultUtil.error("短信验证码无效"); @@ -252,6 +304,11 @@ } } + if(ToolUtil.isEmpty(driver.getReferralCode())){ + String s = wechatMiniProgramORCode(driver.getId()); + driver.setReferralCode(s); + this.updateById(driver); + } return ResultUtil.success(tokenWarpper); } @@ -338,8 +395,8 @@ if(token.length() > 16){ key = token.substring(token.length() - 16); } - redisUtil.setStrValue(key, driver.getId().toString(), 7 * 24 * 60 * 60);//7天 - redisUtil.setStrValue("DRIVER_" + phone, key, 7 * 24 * 60 * 60);//7天 + redisUtil.setStrValue(key, driver.getId().toString(), 94608000);//7天 + redisUtil.setStrValue("DRIVER_" + phone, key, 94608000);//7天 //下线 for (int i = 0; i < 5; i++) { @@ -430,18 +487,24 @@ //找到中心点 GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(lon), Double.valueOf(lat)); //构造半径 - Distance distanceR = new Distance(5D, Metrics.KILOMETERS); + Distance distanceR = new Distance(10D, Metrics.KILOMETERS); //画圆 Circle circle = new Circle(geoJsonPoint, distanceR); // 构造query对象 Query query = Query.query(Criteria.where("location").withinSphere(circle)); List<Location> locations = mongoTemplate.find(query, Location.class); - locations.forEach(s -> { - String value1 = redisUtil.getValue("DRIVER" + s.getDriverId()); - if(s.getDriverId().compareTo(uid) != 0 && ToolUtil.isNotEmpty(value1)){ - list.add(s.getLocation().getX() + "," + s.getLocation().getY()); + List<Integer> collect = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + List<Driver> drivers = this.selectBatchIds(collect); + for (Driver driver : drivers) { + String value1 = redisUtil.getValue("DRIVER" + driver.getId()); + if(ToolUtil.isEmpty(value1)){ + continue; } - }); + if(driver.getId().compareTo(uid) == 0){ + continue; + } + list.add(value1 + "," + driver.getServerStatus()); + } } return ResultUtil.success(list); } @@ -496,13 +559,19 @@ @Override public PromotionWarpper queryPromotionQRCode(Integer uid) throws Exception { PromotionWarpper promotionWarpper = new PromotionWarpper(); - promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid); + Driver driver1 = this.selectById(uid); + if(ToolUtil.isEmpty(driver1.getReferralCode())){ + String s = wechatMiniProgramORCode(driver1.getId()); + driver1.setReferralCode(s); + this.updateById(driver1); + } +// promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid); + promotionWarpper.setUrl(driver1.getReferralCode()); int user = appUserService.selectCount(new EntityWrapper<AppUser>().eq("inviterType", 2).eq("inviterId", uid).eq("status", 1)); int driver = this.selectCount(new EntityWrapper<Driver>().eq("inviterType", 2).eq("inviterId", uid).eq("approvalStatus", 2).eq("status", 1)); promotionWarpper.setTotal(user + driver); promotionWarpper.setUser(user); promotionWarpper.setDriver(driver); - Driver driver1 = this.selectById(uid); promotionWarpper.setAvatar(driver1.getAvatar()); promotionWarpper.setName(driver1.getName()); return promotionWarpper; @@ -545,7 +614,7 @@ if(h > 0 && h > time){ Driver driver = this.selectById(driverId); AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driverId); accountChangeDetail.setType(2); @@ -574,7 +643,8 @@ DriverInfoWarpper driverInfo = new DriverInfoWarpper(); BeanUtils.copyProperties(driver, driverInfo); driverInfo.setWithdrawBalance(driver.getBalance()); - driverInfo.setBalance(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + driverInfo.setBalance(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机充值+平台充值 + driverInfo.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(driver.getCouponBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入 YouTuiDriver youTuiDriver = youTuiDriverService.selectOne(new EntityWrapper<YouTuiDriver>().eq("driverId", uid) .eq("state", 2).last(" and failureTime > now() order by failureTime limit 0, 1")); if(null != youTuiDriver){ @@ -653,7 +723,7 @@ List<AccountChangeDetail> list = new ArrayList<>(); for (Driver driver : drivers) { AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setCreateTime(new Date()); @@ -677,7 +747,7 @@ Driver driver = this.selectById(uid); //调起微信 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3); + String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); RechargeRecord rechargeRecord = new RechargeRecord(); rechargeRecord.setType(2); rechargeRecord.setUserId(uid); @@ -691,7 +761,7 @@ PaymentOrder paymentOrder = new PaymentOrder(); paymentOrder.setBizOrderId(out_trade_no); - paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); + paymentOrder.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + ""); paymentOrder.setOrderName("账户充值"); paymentOrder.setPayType("WX_MINI"); paymentOrder.setTransferType("0"); @@ -704,7 +774,7 @@ paymentOrderGood.setGoodsName("充值"); goodsDetail.add(paymentOrderGood); paymentOrder.setGoodsDetail(goodsDetail); - paymentOrder.setFrontUrl("http://www.baidu.com");//前端回调地址 + paymentOrder.setFrontUrl(callbackPath + "/base/driver/balanceRechargeCallback");//前端回调地址 paymentOrder.setNotifyUrl(callbackPath + "/base/driver/balanceRechargeCallback"); paymentOrder.setParameter1(out_trade_no); @@ -752,14 +822,14 @@ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver1.getId()); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setChangeType(3); accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount()); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); DriverServiceImpl.this.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -825,14 +895,14 @@ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(rechargeRecord1.getUserId()); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); accountChangeDetail.setChangeType(3); accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount()); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); this.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -931,7 +1001,7 @@ public ResultUtil microenterprise(Integer uid, String name, String number, String phone, String notifyUrl) throws Exception { Driver driver = this.selectById(uid); Register registerVO = new Register(); - registerVO.setMerUserId("driver_" + uid); + registerVO.setMerUserId(driver.getCode());//"driver_" + uid registerVO.setPhone(phone); registerVO.setUserType("0"); registerVO.setUserName(name); -- Gitblit v1.7.1