From 753c4aede53b07041841d9aa94859b59e366bd5d Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 14 八月 2023 18:47:39 +0800
Subject: [PATCH] Merge branch '1.1' of http://120.76.84.145:10101/gitblit/r/java/SuperSaveDriving
---
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java | 140 +++++++++++++++++++++++++++++++++++-----------
1 files changed, 105 insertions(+), 35 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 d0e7e06..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);
@@ -718,6 +788,7 @@
if("2".equals(status)){
return ResultUtil.error("失败");
}
+ String merOrderId = jsonObject.getString("merOrderId");
String payCode = jsonObject.getString("payCode");
if(ToolUtil.isNotEmpty(payCode)){
new Thread(new Runnable() {
@@ -734,13 +805,7 @@
return;
}
QueryOrder queryOrder = new QueryOrder();
- /**
- * 原请求订单号(必填) 字段长度最长:32位
- */
- queryOrder.setOriginalMerOrderId(out_trade_no);
- /**
- * 1:支付查询 2:退款查询 3:确认收货查询 4:结算查询 5:充值查询 6:转账查询 7:异步分账查询(必填) 字段长度最长:1位
- */
+ queryOrder.setOriginalMerOrderId(merOrderId);
queryOrder.setQueryType("1");
TrhRequest<QueryOrder> request = new TrhRequest();
InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE);
@@ -757,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);
@@ -830,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);
@@ -936,12 +1001,13 @@
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);
registerVO.setCertId(number);
registerVO.setNotifyUrl(callbackPath + notifyUrl);
+ registerVO.setParameter1(uid.toString());
TrhRequest<Register> request = new TrhRequest();
InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE);
if(!"0000".equals(execute.getCode())){
@@ -953,6 +1019,10 @@
return ResultUtil.error("失败");
}
if("0".equals(status)){
+ driver.setMerchantIDCode(number);
+ driver.setMerchantName(name);
+ driver.setMerchantPhone(phone);
+ this.updateById(driver);
return ResultUtil.error("处理中");
}
String userId = jsonObject.getString("userId");
--
Gitblit v1.7.1