From 831e3312572cf29dd91cbd882ef3dce809ac852d Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 14 六月 2023 20:58:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/1.1' into 1.1 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 533 ++++++++++------ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java | 3 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java | 4 driver/guns-admin/src/main/resources/application.yml | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java | 5 zuul/src/main/resources/redis.properties | 4 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java | 66 +- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java | 166 ++++- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java | 12 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java | 5 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html | 14 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java | 35 + management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java | 5 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 500 +++++++++------ user/guns-admin/src/main/resources/application.yml | 12 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java | 6 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java | 2 zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java | 14 management/guns-admin/src/main/resources/application.yml | 4 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java | 22 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java | 5 user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java | 18 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java | 7 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java | 58 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java | 17 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java | 37 + user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java | 10 driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java | 8 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java | 16 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java | 40 + management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html | 11 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java | 2 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java | 158 +++- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java | 4 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java | 5 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java | 27 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java | 23 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml | 6 zuul/src/main/resources/application.yml | 4 43 files changed, 1,221 insertions(+), 659 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java index 2e95e94..a022ae5 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java @@ -492,8 +492,8 @@ @ResponseBody @PostMapping("/api/driver/queryCommissionList") -// @ServiceLog(name = "获取佣金记录", url = "/api/driver/queryCommissionList") - @ApiOperation(value = "获取佣金记录", tags = {"司机端-个人中心"}, notes = "") +// @ServiceLog(name = "获取收入记录", url = "/api/driver/queryCommissionList") + @ApiOperation(value = "获取收入记录", tags = {"司机端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"), @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @@ -623,7 +623,7 @@ @ApiOperation(value = "获取司机钱包明细", tags = {"司机端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"), - @ApiImplicitParam(value = "类型(1=收入,3=充值,4=支出,7=优惠券,8=保险)", name = "type", required = true, dataType = "int"), + @ApiImplicitParam(value = "类型(3=充值,8=保险,9=订单信息费)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "pageSize", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java index 68facbb..e54b50c 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java @@ -25,7 +25,7 @@ String appid = req.getParameter("appid"); String sign = req.getParameter("sign"); ResultUtil resultUtil = authService.checkSyncAuth(appid, sign, req); - if (resultUtil.getCode() != 200) { + if (resultUtil.getCode() != 10000) { res.setStatus(HttpStatus.OK.value()); res.setHeader("Content-type", "text/html;charset=UTF-8"); res.getWriter().print(JSON.toJSONString(resultUtil));//Res.Failure("req timeout, please try again") diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml index 127d3a9..def4fea 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml @@ -43,7 +43,7 @@ UNIX_TIMESTAMP(createTime) * 1000 as createTime, (newData - oldData) as money, newData as balance - from t_account_change_detail where changeType = 5 and userType = 2 and userId = #{driverId} + from t_account_change_detail where changeType not in (3, 4, 8, 9) and userType = 2 and `type` = 1 and userId = #{driverId} <if test="null != time and '' != time"> and DATE_FORMAT(createTime, '%Y年%m月') = #{time} </if> @@ -57,7 +57,7 @@ from ( select (newData - oldData) as money - from t_account_change_detail where changeType = 5 and userType = 2 and userId = #{driverId} + from t_account_change_detail where changeType not in (3, 4, 8, 9) and userType = 2 and `type` = 1 and userId = #{driverId} <if test="null != time and '' != time"> and DATE_FORMAT(createTime, '%Y年%m月') = #{time} </if> @@ -72,7 +72,7 @@ UNIX_TIMESTAMP(createTime) * 1000 as createTime, (newData - oldData) as amount, newData as balance - from t_account_change_detail where userType = 2 and userId = #{driverId} and changeType in (1, 3, 4, 7, 8) + from t_account_change_detail where userType = 2 and userId = #{driverId} and changeType in (3, 8, 9) <if test="null != time and '' != time"> and DATE_FORMAT(createTime, '%Y年%m月') = #{time} </if> diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java index 79bd20c..ab2841e 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java @@ -206,4 +206,8 @@ ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, String merOrderId, Double amount, Integer sourceType); + + + + void saveRevenue(Order order) throws Exception; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java index c6679c0..e2ec610 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java @@ -134,17 +134,6 @@ double d = num1.doubleValue(); if(backgroundBalance > 0 && backgroundBalance < d){ - AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(driver.getId()); - accountChangeDetail.setType(1); - accountChangeDetail.setChangeType(8); - accountChangeDetail.setOldData(driver.getBackgroundBalance()); - accountChangeDetail.setNewData(0D); - accountChangeDetail.setExplain("收取保险费"); - accountChangeDetail.setCreateTime(new Date()); - this.insert(accountChangeDetail); d -= backgroundBalance; driver.setBackgroundBalance(0D); } @@ -155,18 +144,15 @@ accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(8); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance()); driver.setBackgroundBalance(driver.getBackgroundBalance() - d); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); d = 0; } if(d > 0){ - if(balance > 0 && balance < d){ - continue; - } if(balance > 0 && balance >= d){ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); @@ -174,9 +160,9 @@ accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(8); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(all); driver.setBalance(driver.getBalance() - d); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); accountChangeDetail.setExplain("收取保险费"); accountChangeDetail.setCreateTime(new Date()); this.insert(accountChangeDetail); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java index 5d425b6..5500602 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java @@ -89,13 +89,15 @@ accountChangeDetail.setUserId(driver.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(type == 1 ? 4 : 6); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); if(type == 1){ + accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance()); driver.setBalance(driver.getBalance() - money); + accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); }else{ + accountChangeDetail.setOldData(driver.getCommission() + driver.getCouponBalance()); driver.setCommission(driver.getCommission() - money); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); } - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setExplain(type == 1 ? "账户余额提现" : "佣金余额提现"); driverService.updateById(driver); accountChangeDetailService.saveData(accountChangeDetail); @@ -103,22 +105,38 @@ if(type == 1){//余额提现,调用分账接口 -->确认收货--->提现 fenzhang(driver, money, cashWithdrawal, 1); - }else{//佣金提现,调用充值接口数据进行分账 - fenzhang(driver, money, cashWithdrawal, 2); + }else{//佣金提现,直接提现到银行卡 + Withdraw withdraw = new Withdraw(); + withdraw.setUserId(driver.getMerchantNumber()); + withdraw.setAmount(String.valueOf(Double.valueOf(money * 100).intValue())); + withdraw.setOrderName("账户余额提现"); + withdraw.setRemark("账户余额提现"); + withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback"); + withdraw.setParameter1(cashWithdrawal.getId().toString()); + TrhRequest<Withdraw> request1 = new TrhRequest(); + InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现) + if("0000".equals(execute.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute.getResult()); + String merOrderId1 = jsonObject1.getString("merOrderId"); + Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败 + if(1 == status){ + cashWithdrawal.setOrderNumber(merOrderId1); + cashWithdrawal.setState(2); + this.updateById(cashWithdrawal); + } + if(2 == status){ + System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); + } + }else{ + System.err.println("结算接口异常【提现】:" + execute.getMsg()); + } } - -// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); -// String outDetailNo = sdf.format(new Date()) + cashWithdrawal.getId(); -// -// String s = payMoneyUtil.weixinTransferMoney(outDetailNo, money, driver.getOpenid(), driver.getName(), "【超省新代驾】提现付款!"); -// if(ToolUtil.isEmpty(s)){ -// return ResultUtil.error("提现异常,请联系管理员"); -// } -// cashWithdrawal.setState(2); -// cashWithdrawal.setOrderNumber(s); -// this.updateById(cashWithdrawal); return ResultUtil.success(); } + + + + /** @@ -161,7 +179,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(driver.getMerchantNumber()); - pamentOrderUser.setSplitAmount(amount.toString()); + pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); pamentOrderUser.setSplitType("1"); splitList.add(pamentOrderUser); complete.setSplitList(splitList); @@ -213,7 +231,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(driver.getMerchantNumber()); - pamentOrderUser.setSplitAmount(surplusDividedAmount.toString()); + pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(surplusDividedAmount * 100).intValue())); pamentOrderUser.setSplitType("1"); splitList.add(pamentOrderUser); complete.setSplitList(splitList); @@ -263,11 +281,11 @@ Receive receive = new Receive(); receive.setOriginalMerOrderId(rechargeRecord.getOrderNumber()); receive.setAsynMerOrderId(divisionRecord.getMerOrderId()); - receive.setRcvAmount(divisionRecord.getAmount().toString()); + receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); List<ReceiveUser> splitList = new ArrayList<>(); ReceiveUser receiveUser = new ReceiveUser(); receiveUser.setSplitUserId(driver.getMerchantNumber()); - receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString()); + receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); splitList.add(receiveUser); receive.setSplitList(splitList); TrhRequest<Receive> request = new TrhRequest(); @@ -278,7 +296,7 @@ if(ToolUtil.isNotEmpty(merOrderId)){ Withdraw withdraw = new Withdraw(); withdraw.setUserId(driver.getMerchantNumber()); - withdraw.setAmount(divisionRecord.getAmount().toString()); + withdraw.setAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); withdraw.setOrderName("账户余额提现"); withdraw.setRemark("账户余额提现"); withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback"); 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..9629921 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 @@ -156,6 +156,29 @@ } driver.setCreateTime(new Date()); this.insert(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(3)); + 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(); } @@ -175,6 +198,10 @@ 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)); @@ -574,7 +601,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(driver.getBalance() + driver.getBackgroundBalance());//司机充值+平台充值 + driverInfo.setCommission(driver.getCommission() + driver.getCouponBalance());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入 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){ @@ -704,7 +732,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); @@ -757,9 +785,9 @@ accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance()); driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount()); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance()); DriverServiceImpl.this.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -830,9 +858,9 @@ accountChangeDetail.setType(1); accountChangeDetail.setCreateTime(new Date()); accountChangeDetail.setExplain("账户充值"); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance()); driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount()); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance()); this.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); 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 11518dc..6a25374 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 @@ -229,6 +229,7 @@ * @return */ public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ + distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue(); order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); if(null == systemConfig){ @@ -259,41 +260,57 @@ Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11 String[] split = num1.split(":"); + Integer hour1 = Integer.valueOf(split[0]); + String[] split1 = num2.split(":"); + Integer hour2 = Integer.valueOf(split1[0]); + Calendar s = Calendar.getInstance(); s.setTime(date); - s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + s.set(Calendar.HOUR_OF_DAY, hour1); s.set(Calendar.MINUTE, Integer.valueOf(split[1])); s.set(Calendar.SECOND, 0); - split = num2.split(":"); Calendar e = Calendar.getInstance(); e.setTime(date); - e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); - e.set(Calendar.MINUTE, Integer.valueOf(split[1])); + e.set(Calendar.HOUR_OF_DAY, hour2); + e.set(Calendar.MINUTE, Integer.valueOf(split1[1])); e.set(Calendar.SECOND, 0); + + if(hour1 > hour2){ + if(s.getTimeInMillis() > date.getTime()){ + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); + }else{ + e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); + } + } if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){ if(num3.compareTo(distance) >= 0){//起步里程内 order.setStartDistance(distance);//起步里程 order.setStartPrice(num4);//起步价 }else{ - BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程 - BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程 + BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN); BigDecimal multiply = divide.multiply(new BigDecimal(num6)); order.setStartDistance(num3);//起步里程 order.setStartPrice(num4);//起步价 order.setOverDriveDistance(subtract.doubleValue());//超出起步里程 order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费 - //计算长途费 + //计算长途费(超出长途起始公里,费用开始按照长途规则计算。) if(distance.compareTo(num7) > 0){ + order.setStartDistance(0D);//起步里程 + order.setStartPrice(0D);//起步价 + order.setOverDriveDistance(0D);//超出起步里程 + order.setOverDrivePrice(0D);//超出起步里程费 + order.setLongDistance(num7 + "-" + num8);//长途里程 order.setLongDistancePrice(num9);//长途费 } //计算长途里程超出的部分 if(distance.compareTo(num8) > 0){ - BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)); - BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN); + BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11)); order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 @@ -390,7 +407,7 @@ order.setLongDistancePrice(0D);//长途里程费 order.setOverLongDistance(0D);//超出长途里程 order.setOverLongDistancePrice(0d);//超出长途里程费 - order.setWaitTime(0);//等待时长 +// order.setWaitTime(0);//等待时长 order.setWaitTimePrice(0D);//等待费 order.setOutWaitTime(0);//超出等待时长 order.setOutWaitTimePrice(0D);//超出等待时长费 @@ -411,27 +428,187 @@ * @param order */ public void pushOrder(Order order){ - /** - * 1.先找最大推单范围内的优推司机 -》 距离最近 - * 没有1 - 》 - * 2.按照后台推送配置在范围内查找合适司机 - * 合适司:积分 > 评分 > 距离 - * 3.司机没有接单直接将订单置入大厅 - */ - SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); - if(null == systemConfig){ - return; + try { + boolean lock = redisUtil.lock(5); + if(!lock){ + int num1 = 1; + while (num1 <= 10){ + Thread.sleep(3000);//等待3秒 + lock = redisUtil.lock(5); + if(lock){ + break; + }else{ + num1++; + } + } + } + /** + * 1.先找最大推单范围内的优推司机 -》 距离最近 + * 没有1 - 》 + * 2.按照后台推送配置在范围内查找合适司机 + * 合适司:积分 > 评分 > 距离 + * 3.司机没有接单直接将订单置入大厅 + */ + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); + if(null == systemConfig){ + redisUtil.unlock(); + return; + } + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + Double num3 = jsonObject.getDouble("num3");//推单最大范围 + Integer num4 = jsonObject.getInteger("num4");//接单时间 + String startLat = order.getStartLat(); + String startLng = order.getStartLng(); + + //1 + //找到中心点 + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); + Double num = num3 / 1000;//范围公里 + //构造半径 + Distance distanceR = new Distance(num, 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); + List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + Integer driver = null; + YouTuiDriver youTuiDriver1 = null; + if(driverIds.size() > 0){ + List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) + .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); + Double d = null; + for (YouTuiDriver youTuiDriver : youTuiDrivers) { + String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); + if(ToolUtil.isEmpty(value)){ + continue; + } + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1)); + if(null == driverWork){ + continue; + } + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + if(d == null || d.compareTo(wgs84) > 0){ + d = wgs84; + driver = youTuiDriver.getDriverId(); + youTuiDriver1 = youTuiDriver; + } + } + } + + if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ + youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); + youTuiDriverService.updateById(youTuiDriver1); + } + + //开始范围查找 + if(null == driver){ + for (int i = 1; i < 4; i++) { + if(null != driver){ + break; + } + num = jsonObject.getDouble("num" + i) / 1000;//范围公里 + //构造半径 + distanceR = new Distance(num, Metrics.KILOMETERS); + //画圆 + circle = new Circle(geoJsonPoint, distanceR); + // 构造query对象 + query = Query.query(Criteria.where("location").withinSphere(circle)); + locations = mongoTemplate.find(query, Location.class); + + driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + if(driverIds.size() > 0){ + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ + continue; + } + + Integer integral = null; + Double score = null; + Double d = null; + for (Driver driver1 : drivers) { + String value = redisUtil.getValue("DRIVER" + driver1.getId()); + if(ToolUtil.isEmpty(value)){ + continue; + } + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); + if(null == driverWork){ + continue; + } + if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 + integral = driver1.getIntegral(); + score = driver1.getScore(); + driver = driver1.getId(); + continue; + } + if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 + integral = driver1.getIntegral(); + score = driver1.getScore(); + driver = driver1.getId(); + continue; + } + if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 + String value1 = redisUtil.getValue("DRIVER" + driver1.getId()); + if(ToolUtil.isEmpty(value1)){ + continue; + } + Map<String, Double> distance = GeodesyUtil.getDistance(value1, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + if(d == null || d.compareTo(wgs84) > 0){ + d = wgs84; + driver = driver1.getId(); + continue; + } + } + } + + } + } + } + + if(null != driver){ + //防止多笔订单推给一个司机 + Driver driver1 = driverService.selectById(driver); + driver1.setServerStatus(2); + driverService.updateById(driver1); + pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); + //创建定时任务处理订单到大厅 + new Timer().schedule(new TimerTask() { + @Override + public void run() { + Order order1 = OrderServiceImpl.this.selectById(order.getId()); + if(order1.getState() == 101 || order1.getState() == 201){ + order1.setHallOrder(1); + OrderServiceImpl.this.updateById(order1); + + driver1.setServerStatus(1); + driverService.updateById(driver1); + ExtraPushOrder(order); + } + } + }, num4 * 1000); + }else{ + order.setHallOrder(1); + this.updateById(order); + ExtraPushOrder(order); + } + redisUtil.unlock(); + }catch (Exception e){ + redisUtil.unlock(); + e.printStackTrace(); } - JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); - Double num3 = jsonObject.getDouble("num3");//推单最大范围 - Integer num4 = jsonObject.getInteger("num4");//接单时间 + } + + + + public void ExtraPushOrder(Order order){ String startLat = order.getStartLat(); String startLng = order.getStartLng(); - //1 //找到中心点 GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); - Double num = num3 / 1000;//范围公里 + Double num = 5D;//范围公里 //构造半径 Distance distanceR = new Distance(num, Metrics.KILOMETERS); //画圆 @@ -440,107 +617,26 @@ Query query = Query.query(Criteria.where("location").withinSphere(circle)); List<Location> locations = mongoTemplate.find(query, Location.class); List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); - Integer driver = null; - YouTuiDriver youTuiDriver1 = null; - if(driverIds.size() > 0){ - List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) - .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); - Double d = null; - for (YouTuiDriver youTuiDriver : youTuiDrivers) { - String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); - if(ToolUtil.isEmpty(value)){ - continue; - } - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - if(d == null || d.compareTo(wgs84) > 0){ - d = wgs84; - driver = youTuiDriver.getDriverId(); - youTuiDriver1 = youTuiDriver; - } + if(driverIds.size() == 0){ + return; + } + List<DriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<DriverWork>().in("driverId", driverIds).eq("status", 1)); + driverIds = tDriverWorks.stream().map(DriverWork::getDriverId).collect(Collectors.toList()); + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) + .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ + return; + } + for (Driver driver1 : drivers) { + String value = redisUtil.getValue("DRIVER" + driver1.getId()); + if (ToolUtil.isEmpty(value)) { + return; } - } - - if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ - youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); - youTuiDriverService.updateById(youTuiDriver1); - } - - //开始范围查找 - if(null == driver){ - for (int i = 1; i < 4; i++) { - if(null != driver){ - break; - } - num = jsonObject.getDouble("num" + i) / 1000;//范围公里 - //构造半径 - distanceR = new Distance(num, Metrics.KILOMETERS); - //画圆 - circle = new Circle(geoJsonPoint, distanceR); - // 构造query对象 - query = Query.query(Criteria.where("location").withinSphere(circle)); - locations = mongoTemplate.find(query, Location.class); - - driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); - if(driverIds.size() > 0){ - List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds)); - if(drivers.size() == 0){ - continue; - } - - Integer integral = null; - Double score = null; - Double d = null; - for (Driver driver1 : drivers) { - if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - continue; - } - if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - continue; - } - if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 - String value = redisUtil.getValue("DRIVER" + driver1.getId()); - if(ToolUtil.isEmpty(value)){ - continue; - } - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - if(d == null || d.compareTo(wgs84) > 0){ - d = wgs84; - driver = driver1.getId(); - continue; - } - } - } - - } - } - } - - if(null != driver){ - pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); - //创建定时任务处理订单到大厅 - new Timer().schedule(new TimerTask() { - @Override - public void run() { - Order order1 = OrderServiceImpl.this.selectById(order.getId()); - if(order1.getState() == 101 || order1.getState() == 201){ - order1.setHallOrder(1); - OrderServiceImpl.this.updateById(order1); - } - } - }, num4 * 1000); - }else{ - order.setHallOrder(1); - this.updateById(order); + pushUtil.pushGrabOrderExtras(driver1.getId(), 2); } } + + @@ -643,9 +739,18 @@ if(count > 0){ return ResultUtil.error("还有未完成的订单"); } - boolean lock = redisUtil.lock(); + boolean lock = redisUtil.lock(5); if(!lock){ - return ResultUtil.error("请重试"); + int num1 = 1; + while (num1 <= 10){ + Thread.sleep(3000);//等待3秒 + lock = redisUtil.lock(5); + if(lock){ + break; + }else{ + num1++; + } + } } Order order = this.selectById(orderId); Integer state = order.getState(); @@ -799,7 +904,7 @@ order.setStartTime(new Date()); } //计算等待用户时长 - Integer w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).intValue(); + Integer w = new BigDecimal((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).setScale(0, BigDecimal.ROUND_UP).intValue(); order.setWaitTime(order.getWaitTime() + w); order.setStartWaitTime(null); break; @@ -859,6 +964,8 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setType(2); + accountChangeDetail.setChangeType(5); + accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setOldData(driver.getIntegral().doubleValue()); driver.setIntegral(driver.getIntegral() + num5); accountChangeDetail.setNewData(driver.getIntegral().doubleValue()); @@ -866,52 +973,30 @@ accountChangeDetailService.saveData(accountChangeDetail); } //恶劣天气完成订单奖励 - Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8"); - if(num8 > 0){ - AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(order.getDriverId()); - accountChangeDetail.setType(2); - accountChangeDetail.setOldData(driver.getIntegral().doubleValue()); - driver.setIntegral(driver.getIntegral() + num8); - accountChangeDetail.setNewData(driver.getIntegral().doubleValue()); - accountChangeDetail.setExplain("恶劣天气完成订单奖励"); - accountChangeDetailService.saveData(accountChangeDetail); + String city = ""; + District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat()); + if(null != geocode){ + WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>() + .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); + city = null != weatherCity ? weatherCity.getId().toString() : ""; } - driverService.updateById(driver); - - if(null == order.getUserId()){ - return; - } - //推荐用户首单完成奖励 - Integer num4 = JSON.parseObject(systemConfig.getContent()).getInteger("num4"); - if(num4 > 0){ - List<Integer> state = Arrays.asList(105); - int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state)); - if(count > 1){ - return; - } - AppUser appUser = appUserService.selectById(order.getUserId()); - if(null != appUser && null != appUser.getInviterType()){ - if(appUser.getInviterType() == 1){ - return; - } - Driver driver1 = driverService.selectById(appUser.getInviterId()); + boolean badWeather = WeatherUtil.isBadWeather(city); + if(badWeather){ + Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8"); + if(num8 > 0){ AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(driver1.getId()); + accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setType(2); - accountChangeDetail.setOldData(driver1.getIntegral().doubleValue()); - driver1.setIntegral(driver1.getIntegral() + num4); - accountChangeDetail.setNewData(driver1.getIntegral().doubleValue()); - accountChangeDetail.setExplain("推荐用户完成首单奖励"); + accountChangeDetail.setOldData(driver.getIntegral().doubleValue()); + driver.setIntegral(driver.getIntegral() + num8); + accountChangeDetail.setNewData(driver.getIntegral().doubleValue()); + accountChangeDetail.setExplain("恶劣天气完成订单奖励"); accountChangeDetailService.saveData(accountChangeDetail); - driverService.updateById(driver1); } } - + driverService.updateById(driver); } } @@ -1193,13 +1278,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); @@ -1238,13 +1323,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("折扣优惠收入"); driver.setCommission(driver.getCommission() + order.getDiscountAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); @@ -1304,7 +1389,7 @@ Transfer transfer = new Transfer(); transfer.setDepositMerOrderId(merOrderId); transfer.setToUserId(toUserId); - transfer.setAmount(String.valueOf(Double.valueOf(amount * 100))); + transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); transfer.setOrderName("补贴"); transfer.setNotifyUrl(notifyUrl); transfer.setParameter1(id.toString()); @@ -1326,7 +1411,7 @@ /** - * 计算抽成和分佣 + * 计算线下收款的抽成和分佣 * @param order */ public void saveRevenue(Order order) throws Exception{ @@ -1334,41 +1419,67 @@ //司机分佣和司机推荐用户首单奖励都在平台的抽佣中扣除,剩余的为平台抽佣。 Driver driver = driverService.selectById(order.getDriverId()); AppUser appUser = appUserService.selectById(order.getUserId()); + + //司机推荐首单收入 + List<Integer> state = Arrays.asList(107, 108, 109); + int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state)); + if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ + Driver driver1 = driverService.selectById(appUser.getInviterId()); + //首单积分奖励 + SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); + JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent()); + Integer num4 = jsonObject2.getInteger("num4"); + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(driver1.getId()); + accountChangeDetail.setType(2); + accountChangeDetail.setChangeType(5); + accountChangeDetail.setOrderId(order.getId()); + accountChangeDetail.setOldData(driver1.getIntegral().doubleValue()); + accountChangeDetail.setExplain("邀请用户首单积分奖励"); + accountChangeDetail.setCreateTime(new Date()); + driver1.setIntegral(driver1.getIntegral() + num4); + accountChangeDetail.setNewData(driver1.getIntegral().doubleValue()); + accountChangeDetailService.insert(accountChangeDetail); + driverService.updateById(driver1); + } + + Double payMoney = order.getPayMoney(); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3)); - Double n = 0D; if(null != systemConfig){ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); Double num2 = jsonObject.getDouble("num2"); Double num3 = jsonObject.getDouble("num3"); - n = num3; - if(order.getPayMoney() >= num2){ - payMoney = payMoney - num3;//司机收入 + if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金 + payMoney = payMoney - num3; + + //有分佣的情况,分佣的金额从司机充值金额中扣除转给平台,再由平台转账给各个分佣对象 SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2)); if(null != systemConfig1){ JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent()); //司机推荐首单收入 - List<Integer> state = Arrays.asList(108, 109); - int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state)); if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ Double num1 = jsonObject1.getDouble("num1"); num1 = (num3 >= num1 ? num1 : num3); if(num1 > 0){ Driver driver1 = driverService.selectById(appUser.getInviterId()); + //首单积分奖励 AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - accountChangeDetail.setExplain("订单分佣收入"); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setExplain("邀请用户首单奖励"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num1); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - driverService.updateById(driver1); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetailService.saveData(accountChangeDetail); + driverService.updateById(driver1); Revenue revenue = new Revenue(); revenue.setType(2); @@ -1407,7 +1518,7 @@ } //开始处理层级抽佣 - if(null != driver.getInviterType() && driver.getInviterType() == 2){ + if(num3 > 0 && null != driver.getInviterType() && driver.getInviterType() == 2){ Driver driver1 = driverService.selectById(driver.getInviterId());//一级司机 if(null != driver1 && null != driver1.getInviterType() && driver1.getInviterType() == 2){ Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机 @@ -1433,11 +1544,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num5); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1483,11 +1594,11 @@ accountChangeDetail.setUserId(driver2.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver2.setCommission(driver2.getCommission() + num6); - accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); @@ -1533,11 +1644,11 @@ accountChangeDetail.setUserId(driver3.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); + accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver3.setCommission(driver3.getCommission() + num7); - accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); + accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission()); driverService.updateById(driver3); accountChangeDetailService.saveData(accountChangeDetail); @@ -1586,11 +1697,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num3_); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1636,11 +1747,11 @@ accountChangeDetail.setUserId(driver2.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver2.setCommission(driver2.getCommission() + num4); - accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); @@ -1689,11 +1800,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num2_); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1760,8 +1871,9 @@ } } } - //司机余额扣减抽佣金额 + //司机余额扣减抽佣金额,将金额先分账给平台 if(order.getPayMoney() > payMoney){ + driver = driverService.selectById(order.getDriverId()); Double m = order.getPayMoney() - payMoney; AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); @@ -1770,11 +1882,11 @@ accountChangeDetail.setType(1); accountChangeDetail.setChangeType(9); accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance()); accountChangeDetail.setExplain("线下收款服务费支出"); accountChangeDetail.setCreateTime(new Date()); driver.setBalance(driver.getBalance() - m); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance()); driverService.updateById(driver); accountChangeDetailService.saveData(accountChangeDetail); @@ -1829,7 +1941,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(merchantNumber); - pamentOrderUser.setSplitAmount(amount.toString()); + pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); pamentOrderUser.setSplitType("1"); splitList.add(pamentOrderUser); complete.setSplitList(splitList); @@ -1876,11 +1988,11 @@ Receive receive = new Receive(); receive.setOriginalMerOrderId(orderNumber); receive.setAsynMerOrderId(divisionRecord.getMerOrderId()); - receive.setRcvAmount(divisionRecord.getAmount().toString()); + receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); List<ReceiveUser> splitList = new ArrayList<>(); ReceiveUser receiveUser = new ReceiveUser(); receiveUser.setSplitUserId(merchantNumber); - receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString()); + receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); splitList.add(receiveUser); receive.setSplitList(splitList); TrhRequest<Receive> request = new TrhRequest(); @@ -1991,6 +2103,10 @@ if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ break; } + if(i == performanceRankingWarppers.size() - 1){ + position = 0; + d = 0D; + } } MyAchievementWarpper myAchievementWarpper = new MyAchievementWarpper(); myAchievementWarpper.setType("订单"); @@ -2012,6 +2128,10 @@ } if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ break; + } + if(i == performanceRankingWarppers.size() - 1){ + position = 0; + d = 0D; } } myAchievementWarpper = new MyAchievementWarpper(); @@ -2035,6 +2155,10 @@ if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){ break; } + if(i == performanceRankingWarppers.size() - 1){ + position = 0; + d = 0D; + } } myAchievementWarpper = new MyAchievementWarpper(); myAchievementWarpper.setType("佣金"); @@ -2051,7 +2175,8 @@ */ @Override public void completeCollection() { - List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1).eq("payType", 3)); + List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1) + .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 120 <= UNIX_TIMESTAMP(now())")); for (Order order : orders) { order.setPayTime(new Date()); if(null != order.getCouponId()){ @@ -2067,13 +2192,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); @@ -2110,13 +2235,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("折扣优惠收入"); driver.setCommission(driver.getCommission() + order.getDiscountAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java index 0bca408..7ebd975 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java @@ -55,7 +55,7 @@ @Override public List<CommissionListWarpper> queryCommissionList(Integer driverId, String time, Integer pageNum, Integer pageSize) throws Exception { pageNum = (pageNum - 1) * pageSize; - Wrapper<Revenue> wrapper = new EntityWrapper<Revenue>().eq("type", 2).eq("userType", 2) + Wrapper<Revenue> wrapper = new EntityWrapper<Revenue>().eq("userType", 2) .eq("userId", driverId); if(ToolUtil.isNotEmpty(time)){ wrapper.eq("DATE_FORMAT(createTime, '%Y年%m月')", time); @@ -66,20 +66,7 @@ CommissionListWarpper commissionListWarpper = new CommissionListWarpper(); commissionListWarpper.setCreateTime(revenue.getCreateTime().getTime()); commissionListWarpper.setAmount(revenue.getAmount()); - commissionListWarpper.setUserType(2); - Order order = orderService.selectById(revenue.getOrderId()); - if(null != order.getUserId()){ - AppUser appUser = appUserService.selectById(order.getUserId()); - if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && appUser.getInviterId().compareTo(driverId) == 0){ - commissionListWarpper.setUserType(1); - } - } - if(null == commissionListWarpper.getUserType()){ - Driver driver = driverService.selectById(order.getDriverId()); - if(null != driver.getInviterType() && driver.getInviterType() == 2 && driver.getInviterId().compareTo(driverId) == 0){ - commissionListWarpper.setUserType(2); - } - } + commissionListWarpper.setUserType(revenue.getType()); list.add(commissionListWarpper); } return list; diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java index bd61eeb..d69330f 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java @@ -7,6 +7,8 @@ import com.supersavedriving.driver.modular.system.util.MallBook.config.ChannelConfig; import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceRequest; import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @Author xiaogc @@ -14,17 +16,19 @@ */ public class TrhRequest<T> { + Logger logger = LoggerFactory.getLogger(TrhRequest.class); + public InterfaceResponse execute(T t, String serverCode) { InterfaceRequest<T> request = new InterfaceRequest(t, serverCode); - System.out.println("mallbook请求参数:" + JSONUtil.toJsonStr(request)); + logger.warn("mallbook请求参数:" + JSONUtil.toJsonStr(request)); String result = HttpUtil.post(ChannelConfig.payUrl, BeanUtil.beanToMap(request)); - System.out.println("mallbook响应参数:" + result); + logger.warn("mallbook响应参数:" + result); InterfaceResponse response = JSONUtil.toBean(result, InterfaceResponse.class); boolean verify = RSASignature.validate(response.content(), response.getSign()); if (!verify) { - throw new ValidateException("签名验证失败"); + logger.warn("签名验证失败"); } else { - System.out.printf("签名验证通过"); + logger.warn("签名验证通过"); } return response; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java index 91ff011..78fa9da 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java @@ -164,6 +164,43 @@ } + + /** + * 系统推单推送 附加(防止 用户推单后,范围内的司机20s 内接不到单的补充方法) + * @param id 接受对象id + * @param type 接受对象类型(1=用户,2=司机) + */ + public void pushGrabOrderExtras(Integer id, Integer type){ + JSONObject msg = new JSONObject(); + msg.put("code", 200); + msg.put("msg", "SUCCESS"); + msg.put("method", "PUSH_ORDER"); + + Map<String, Object> map = new HashMap<>(); + msg.put("data", map); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //将请求头部和参数合成一个请求 + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + params.add("msg", msg.toJSONString()); + params.add("id", id.toString()); + params.add("type", type.toString()); + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); + String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + logger.debug(jsonObject1.getString("msg")); + System.err.println(jsonObject1.getString("msg")); + } + } + + + + + /** * 推送订单数据 * @param id diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java index 359c6d8..b3c916f 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java @@ -15,7 +15,7 @@ private String code; @ApiModelProperty("时间") private Long createTime; - @ApiModelProperty("类型(1=订单收入,3=充值,4=提现,7=优惠券收入,8=保险支付)") + @ApiModelProperty("类型(3=充值,8=保险支付,9=订单信息费)") private Integer type; @ApiModelProperty("金额") private Double amount; diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java index a488b41..61bd464 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java @@ -13,7 +13,7 @@ public class CommissionListWarpper { @ApiModelProperty("日期") private Long createTime; - @ApiModelProperty("推广类型(1=用户,2=司机)") + @ApiModelProperty("推广类型(1=线上收入,2=佣金,3=优惠券)") private Integer userType; @ApiModelProperty("获取佣金") private Double amount; diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java index ff93e22..649f11c 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java @@ -26,6 +26,8 @@ private String idcardFront; @ApiModelProperty(value = "身份证背面照", required = true, dataType = "string") private String idcardBack; + @ApiModelProperty(value = "驾驶证领证时间(2023-01-01)", required = true, dataType = "string") + private String firstCertificateTime; @ApiModelProperty(value = "驾驶证照片", required = true, dataType = "string") private String driverLicense; @ApiModelProperty(value = "邀约人类型(1=用户,2=司机)", required = false, dataType = "int") diff --git a/driver/guns-admin/src/main/resources/application.yml b/driver/guns-admin/src/main/resources/application.yml index f409d2c..b49df62 100644 --- a/driver/guns-admin/src/main/resources/application.yml +++ b/driver/guns-admin/src/main/resources/application.yml @@ -110,9 +110,9 @@ #支付回调地址 #正式环境 -#callbackPath: https://okyueche.com:443/user +callbackPath: https://chaoshengdaijia.com:443/driver #测试环境 -callbackPath: http://121.37.15.157:80/driver +#callbackPath: http://121.37.15.157:80/driver --- diff --git a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java index 884bbf1..7117d15 100644 --- a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java +++ b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java @@ -3,6 +3,7 @@ //import com.alibaba.fastjson.JSON; //import com.baomidou.mybatisplus.mapper.EntityWrapper; //import com.supersavedriving.driver.modular.system.model.DriverBank; +//import com.supersavedriving.driver.modular.system.model.Order; //import com.supersavedriving.driver.modular.system.model.WeatherCity; //import com.supersavedriving.driver.modular.system.service.*; //import com.supersavedriving.driver.modular.system.util.ResultUtil; @@ -50,7 +51,10 @@ //// ResultUtil resultUtil1 = driverBankService.delDriverBank(1, 1); //// System.err.println(JSON.toJSONString(resultUtil1)); // -// ResultUtil resultUtil = driverService.balanceRecharge(1, 1D); -// System.err.println(JSON.toJSONString(resultUtil)); +//// ResultUtil resultUtil = driverService.balanceRecharge(1, 1D); +//// System.err.println(JSON.toJSONString(resultUtil)); +// +// Order order = orderService.selectById(2019); +// orderService.saveRevenue(order); // } //} diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java index 11fe076..42b93e5 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java @@ -63,7 +63,7 @@ * @Date 2023-02-20 09:18:08 */ @Controller -@RequestMapping("/tAgent") +@RequestMapping("") public class TAgentController extends BaseController { private String PREFIX = "/system/tAgent/"; @@ -96,7 +96,7 @@ /** * 跳转到首页 */ - @RequestMapping("") + @RequestMapping("/tAgent") public String index(Model model) { model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType()); return PREFIX + "tAgent.html"; @@ -105,7 +105,7 @@ /** * 跳转到添加 */ - @RequestMapping("/tAgent_add") + @RequestMapping("/tAgent/tAgent_add") public String tAgentAdd() { return PREFIX + "tAgent_add.html"; } @@ -113,7 +113,7 @@ /** * 跳转到修改 */ - @RequestMapping("/tAgent_update/{tAgentId}") + @RequestMapping("/tAgent/tAgent_update/{tAgentId}") public String tAgentUpdate(@PathVariable Integer tAgentId, Model model) { TAgent tAgent = tAgentService.selectById(tAgentId); model.addAttribute("item",tAgent); @@ -124,7 +124,7 @@ /** * 跳转详情页面 */ - @RequestMapping("/agentDetail") + @RequestMapping("/tAgent/agentDetail") public String agentDetail(Integer agentId, Model model) { tAgentService.detail(agentId,model); return PREFIX + "tAgentDetail.html"; @@ -133,7 +133,7 @@ /** * 跳转区域页面 */ - @RequestMapping("/areaDetail") + @RequestMapping("/tAgent/areaDetail") public String areaDetail(String area,String areaId,Model model) { // String[] split1 = areaId.split("/"); // List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); @@ -211,7 +211,7 @@ /** * 获取列表 */ - @RequestMapping(value = "/list") + @RequestMapping(value = "/tAgent/list") @ResponseBody public Object list(String principal,String principalPhone,String createTime,Integer status) { EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime,status); @@ -223,7 +223,7 @@ /** * 获取列表 */ - @RequestMapping(value = "/list-back") + @RequestMapping(value = "/tAgent/list-back") @ResponseBody public Object listBack(String condition) { return tAgentService.selectList(null); @@ -232,7 +232,7 @@ /** * 新增 */ - @RequestMapping(value = "/add") + @RequestMapping(value = "/tAgent/add") @ResponseBody @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) public Object add(TAgent tAgent) { @@ -309,7 +309,7 @@ registerVO.setUserType("0"); registerVO.setUserName(tAgent.getMerchantName()); registerVO.setCertId(tAgent.getMerchantIDCode()); - registerVO.setNotifyUrl(callbackPath + "/tAgent/microenterpriseCallback"); + registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback"); TrhRequest<Register> request = new TrhRequest(); InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE); if("0000".equals(execute.getCode())){ @@ -383,7 +383,7 @@ registerVO.setProvCode(tAgent.getProvCodeEnterprise()); registerVO.setAreaCode(tAgent.getAreaCodeEnterprise()); registerVO.setFileNo(tAgent.getFileNo()); - registerVO.setNotifyUrl(callbackPath + "/tAgent/microenterpriseCallback"); + registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback"); registerVO.setParameter1(tAgent.getId().toString()); TrhRequest<Register> request = new TrhRequest(); @@ -455,7 +455,7 @@ * 注册商户回调 */ @ResponseBody - @PostMapping("/microenterpriseCallback") + @PostMapping("/base/tAgent/microenterpriseCallback") public void microenterpriseCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ try { if("0000".equals(interfaceResponse.getCode())) { @@ -532,7 +532,7 @@ /** * 删除 */ - @RequestMapping(value = "/delete") + @RequestMapping(value = "/tAgent/delete") @ResponseBody public Object delete(@RequestParam Integer tAgentId) { tAgentService.deleteById(tAgentId); @@ -542,7 +542,7 @@ /** * 修改用户状态 */ - @RequestMapping(value = "/update-status") + @RequestMapping(value = "/tAgent/update-status") @ResponseBody public Object updateStatus(Integer id,Integer status) { TAgent tAgent = tAgentService.selectById(id); @@ -586,7 +586,7 @@ /** * 修改 */ - @RequestMapping(value = "/update") + @RequestMapping(value = "/tAgent/update") @ResponseBody public Object update(TAgent tAgent) { tAgent.setPrincipal(tAgent.getPrincipal().replace(" ","")); @@ -597,7 +597,7 @@ /** * 详情 */ - @RequestMapping(value = "/detail/{tAgentId}") + @RequestMapping(value = "/tAgent/detail/{tAgentId}") @ResponseBody public Object detail(@PathVariable("tAgentId") Integer tAgentId) { return tAgentService.selectById(tAgentId); @@ -605,21 +605,21 @@ @ApiOperation(value = "省市区查询",notes="省市区查询") - @RequestMapping(value = "/area") + @RequestMapping(value = "/tAgent/area") @ResponseBody public Object area() { return tRegionService.getAreaList(); } @ApiOperation(value = "省查询",notes="省查询") - @RequestMapping(value = "/areaProvince") + @RequestMapping(value = "/tAgent/areaProvince") @ResponseBody public Object areaProvince(Model model) { return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0)); } @ApiOperation(value = "市区查询",notes="市区查询") - @RequestMapping(value = "/areaCity") + @RequestMapping(value = "/tAgent/areaCity") @ResponseBody public Object areaCity(Integer parentId) { return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id",parentId)); @@ -627,7 +627,7 @@ @ApiOperation(value = "导出代理商列表",notes="导出代理商列表") - @RequestMapping(value = "/export") + @RequestMapping(value = "/tAgent/export") @ResponseBody public void export(String principal,String principalPhone,Integer status,String createTime, HttpServletResponse response) { try { @@ -681,7 +681,7 @@ @ResponseBody - @RequestMapping(value = "/uploadFile") + @RequestMapping(value = "/tAgent/uploadFile") public String uploadFile(MultipartFile file){ File srcFile = null; String originalFilename = file.getOriginalFilename(); @@ -744,7 +744,7 @@ * 跳转到企业信息页 * @return */ - @GetMapping("/showEnterprisePage") + @GetMapping("/tAgent/showEnterprisePage") public String showEnterprisePage(Model model){ ShiroUser user = ShiroKit.getUser(); Integer objectId = user.getObjectId(); @@ -764,7 +764,7 @@ model.addAttribute("item", tAgent); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); model.addAttribute("socialCreditCodeExpires", roleType == 1 ? "" :Objects.isNull(tAgent.getSocialCreditCodeExpires())?"": sdf.format(tAgent.getSocialCreditCodeExpires())); - model.addAttribute("certIdExpires", roleType == 1 ? "" : sdf.format(tAgent.getCertIdExpires())); + model.addAttribute("certIdExpires", roleType == 1 ? "" : null == tAgent.getCertIdExpires() ? "" : sdf.format(tAgent.getCertIdExpires())); Wrapper<SettlementRecord> settlementRecordWrapper = new EntityWrapper<SettlementRecord>().eq("type", roleType == 1 ? 1 : 2); if(roleType == 2){ settlementRecordWrapper.eq("objectId", objectId); @@ -794,7 +794,7 @@ * @return */ @ResponseBody - @PostMapping("/withdrawCash") + @PostMapping("/tAgent/withdrawCash") public ResultUtil withdrawCash(){ ShiroUser user = ShiroKit.getUser(); Integer objectId = user.getObjectId(); @@ -816,7 +816,7 @@ InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE); if("0000".equals(execute.getCode())){ JSONObject jsonObject = JSON.parseObject(execute.getResult()); - double settledAmount = jsonObject.getDoubleValue("settledAmount"); + Integer settledAmount = jsonObject.getInteger("settledAmount"); if(0 == settledAmount){ return ResultUtil.error("余额不足"); } @@ -825,17 +825,17 @@ if(roleType == 3){ settlementRecord.setObjectId(tAgent.getId()); } - settlementRecord.setAmount(settledAmount); + settlementRecord.setAmount(Double.valueOf(settledAmount) / 100); settlementRecord.setInsertTime(new Date()); settlementRecordService.insert(settlementRecord); Withdraw withdraw = new Withdraw(); withdraw.setUserId(tAgent.getMerchantNumber()); - withdraw.setAmount(settledAmount + ""); + withdraw.setAmount(String.valueOf(settledAmount)); withdraw.setOrderName("账户余额提现"); withdraw.setRemark("账户余额提现"); - withdraw.setNotifyUrl(callbackPath + "/tAgent/withdrawCashCallback"); + withdraw.setNotifyUrl(callbackPath + "/base/tAgent/withdrawCashCallback"); withdraw.setParameter1(settlementRecord.getId().toString()); TrhRequest<Withdraw> request1 = new TrhRequest(); InterfaceResponse execute1 = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现) @@ -871,7 +871,7 @@ * @param interfaceResponse */ @ResponseBody - @PostMapping("/withdrawCashCallback") + @PostMapping("/base/tAgent/withdrawCashCallback") public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response) { try { if("0000".equals(interfaceResponse.getCode())){ @@ -908,7 +908,7 @@ * @return */ @ResponseBody - @PostMapping("/accountRecharge") + @PostMapping("/tAgent/accountRecharge") public ResultUtil accountRecharge(Double amount){ try { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); @@ -927,8 +927,8 @@ deposit.setOrderName("补贴充值"); deposit.setPayType("ALI_CB"); deposit.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); - deposit.setFrontUrl(callbackPath + "/tAgent/accountRechargeCallback"); - deposit.setNotifyUrl(callbackPath + "/tAgent/accountRechargeCallback"); + deposit.setFrontUrl(callbackPath + "/base/tAgent/accountRechargeCallback"); + deposit.setNotifyUrl(callbackPath + "/base/tAgent/accountRechargeCallback"); deposit.setParameter1(rechargeRecord.getId().toString()); TrhRequest<Deposit> request = new TrhRequest(); InterfaceResponse execute = request.execute(deposit, Deposit.SERVICE_CODE); @@ -1009,7 +1009,7 @@ * @param interfaceResponse */ @ResponseBody - @PostMapping("/accountRechargeCallback") + @PostMapping("/base/tAgent/accountRechargeCallback") public void accountRechargeCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){ try { if("0000".equals(interfaceResponse.getCode())){ diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java index 5eb8fac..bb8808f 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java @@ -59,7 +59,6 @@ /** * 跳转到修改字典 */ - @Permission(Const.ADMIN_NAME) @RequestMapping("/dict_edit/{dictId}") public String deptUpdate(@PathVariable Integer dictId, Model model) { Dict dict = dictService.selectById(dictId); @@ -77,7 +76,6 @@ */ @BussinessLog(value = "添加字典记录", key = "dictName,dictValues", dict = DictMap.class) @RequestMapping(value = "/add") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object add(String dictCode,String dictTips,String dictName, String dictValues) { if (ToolUtil.isOneEmpty(dictCode,dictName, dictValues)) { @@ -91,7 +89,6 @@ * 获取所有字典列表 */ @RequestMapping(value = "/list") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object list(String condition) { List<Map<String, Object>> list = this.dictService.list(condition); @@ -102,7 +99,6 @@ * 字典详情 */ @RequestMapping(value = "/detail/{dictId}") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object detail(@PathVariable("dictId") Integer dictId) { return dictService.selectById(dictId); @@ -113,7 +109,6 @@ */ @BussinessLog(value = "修改字典", key = "dictName,dictValues", dict = DictMap.class) @RequestMapping(value = "/update") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object update(Integer dictId,String dictCode,String dictName, String dictTips,String dictValues) { if (ToolUtil.isOneEmpty(dictId, dictCode, dictName, dictValues)) { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java index ef4d1c8..77bd526 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java @@ -49,7 +49,6 @@ * 查询操作日志列表 */ @RequestMapping("/list") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName, @RequestParam(required = false) Integer logType) { Page<OperationLog> page = new PageFactory<OperationLog>().defaultPage(); @@ -62,7 +61,6 @@ * 查询操作日志详情 */ @RequestMapping("/detail/{id}") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object detail(@PathVariable Integer id) { OperationLog operationLog = operationLogService.selectById(id); @@ -75,7 +73,6 @@ */ @BussinessLog(value = "清空业务日志") @RequestMapping("/delLog") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object delLog() { SqlRunner.db().delete("delete from sys_operation_log"); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java index 6cb2ee7..52bc385 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java @@ -46,7 +46,6 @@ * 查询登录日志列表 */ @RequestMapping("/list") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName) { Page<LoginLog> page = new PageFactory<LoginLog>().defaultPage(); @@ -60,7 +59,6 @@ */ @BussinessLog("清空登录日志") @RequestMapping("/delLoginLog") - @Permission(Const.ADMIN_NAME) @ResponseBody public Object delLog() { SqlRunner.db().delete("delete from sys_login_log"); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java index 9857aae..b3480f8 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java @@ -66,7 +66,6 @@ /** * 跳转到菜单详情列表页面 */ - @Permission(Const.ADMIN_NAME) @RequestMapping(value = "/menu_edit/{menuId}") public String menuEdit(@PathVariable Long menuId, Model model) { if (ToolUtil.isEmpty(menuId)) { @@ -97,7 +96,6 @@ /** * 修该菜单 */ - @Permission(Const.ADMIN_NAME) @RequestMapping(value = "/edit") @BussinessLog(value = "修改菜单", key = "name", dict = MenuDict.class) @ResponseBody @@ -117,7 +115,6 @@ /** * 获取菜单列表 */ - @Permission(Const.ADMIN_NAME) @RequestMapping(value = "/list") @ResponseBody public Object list(@RequestParam(required = false) String menuName, @RequestParam(required = false) String level) { @@ -128,7 +125,6 @@ /** * 新增菜单 */ - @Permission(Const.ADMIN_NAME) @RequestMapping(value = "/add") @BussinessLog(value = "菜单新增", key = "name", dict = MenuDict.class) @ResponseBody @@ -156,7 +152,6 @@ /** * 删除菜单 */ - @Permission(Const.ADMIN_NAME) @RequestMapping(value = "/remove") @BussinessLog(value = "删除菜单", key = "menuId", dict = MenuDict.class) @ResponseBody diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java index d518886..565e11e 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java @@ -117,7 +117,6 @@ */ @RequestMapping(value = "/add") @BussinessLog(value = "添加角色", key = "name", dict = RoleDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip add(@Valid Role role, BindingResult result) { if (result.hasErrors()) { @@ -135,7 +134,6 @@ */ @RequestMapping(value = "/edit") @BussinessLog(value = "修改角色", key = "name", dict = RoleDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip edit(@Valid Role role, BindingResult result) { if (result.hasErrors()) { @@ -154,7 +152,6 @@ */ @RequestMapping(value = "/remove") @BussinessLog(value = "删除角色", key = "roleId", dict = RoleDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip remove(@RequestParam Integer roleId) { if (ToolUtil.isEmpty(roleId)) { @@ -196,7 +193,6 @@ */ @RequestMapping("/setAuthority") @BussinessLog(value = "配置权限", key = "roleId,ids", dict = RoleDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip setAuthority(@RequestParam("roleId") Integer roleId, @RequestParam("ids") String ids) { if (ToolUtil.isOneEmpty(roleId)) { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java index 0e6227c..65d89a1 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java @@ -232,7 +232,6 @@ */ @RequestMapping("/add") @BussinessLog(value = "添加管理员", key = "account", dict = UserDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip add(@Valid UserDto user, BindingResult result) { if (result.hasErrors()) { @@ -334,7 +333,6 @@ */ @RequestMapping("/reset") @BussinessLog(value = "重置管理员密码", key = "userId", dict = UserDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip reset(@RequestParam Integer userId) { if (ToolUtil.isEmpty(userId)) { @@ -357,7 +355,6 @@ */ @RequestMapping("/freeze") @BussinessLog(value = "冻结用户", key = "userId", dict = UserDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip freeze(@RequestParam Integer userId) { if (ToolUtil.isEmpty(userId)) { @@ -397,7 +394,6 @@ */ @RequestMapping("/unfreeze") @BussinessLog(value = "解除冻结用户", key = "userId", dict = UserDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip unfreeze(@RequestParam Integer userId) { if (ToolUtil.isEmpty(userId)) { @@ -433,7 +429,6 @@ */ @RequestMapping("/setRole") @BussinessLog(value = "分配角色", key = "userId,roleIds", dict = UserDict.class) - @Permission(Const.ADMIN_NAME) @ResponseBody public Tip setRole(@RequestParam("userId") Integer userId, @RequestParam("roleIds") String roleIds) { if (ToolUtil.isOneEmpty(userId, roleIds)) { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java index 8df779d..222aba3 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java @@ -55,7 +55,9 @@ userToCoupon.setExpireCount(validCount); userToCoupon.setValidCount(0); } - userToCouponService.updateBatchById(collect2); + if(collect2.size() > 0){ + userToCouponService.updateBatchById(collect2); + } } catch (Exception e) { e.printStackTrace(); } @@ -107,7 +109,9 @@ tAppUser.setIsException(2); } } - appUserService.updateBatchById(appUserList); + if(appUserList.size() > 0){ + appUserService.updateBatchById(appUserList); + } }catch (Exception e){ e.printStackTrace(); } @@ -154,7 +158,9 @@ } } } - driverService.updateBatchById(driverList); + if(driverList.size() > 0){ + driverService.updateBatchById(driverList); + } }catch (Exception e){ e.printStackTrace(); } @@ -178,7 +184,9 @@ driver.setIsException(1); } } - driverService.updateBatchById(driverList); + if(driverList.size() > 0){ + driverService.updateBatchById(driverList); + } }catch (Exception e){ e.printStackTrace(); } diff --git a/management/guns-admin/src/main/resources/application.yml b/management/guns-admin/src/main/resources/application.yml index b527cff..a31209a 100644 --- a/management/guns-admin/src/main/resources/application.yml +++ b/management/guns-admin/src/main/resources/application.yml @@ -15,8 +15,8 @@ spring: profiles: - active: dev -# active: produce +# active: dev + active: produce mvc: static-path-pattern: /static/** view: diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html index aa3076d..c96219d 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html @@ -71,7 +71,7 @@ </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">*公司名称:</label> + <label class="col-sm-3 control-label">*姓名:</label> <div class="col-sm-9"> <input class="form-control" id="merchantName" name="merchantName" value="${item.merchantName}" type="text" maxlength="20" placeholder="请输入"> </div> @@ -140,8 +140,8 @@ <input class="form-control" id="legalPerson" name="legalPerson" value="${item.legalPerson}" type="text" maxlength="20" placeholder="请输入"> </div> </div> - <div class="form-group qy"> - <label class="col-sm-3 control-label">*法人身份证号:</label> + <div class="form-group"> + <label class="col-sm-3 control-label">*身份证号:</label> <div class="col-sm-9"> <input class="form-control" id="merchantIDCode" name="merchantIDCode" value="${item.merchantIDCode}" type="text" maxlength="20" placeholder="请输入"> </div> @@ -294,12 +294,16 @@ if(userType == 0){ $('.qy').hide(); $('#bankAcctType').html('<option value="2">对私</option>') + $('#merchantIDCode').parent('div').siblings('label').text('*身份证号') + $('#merchantName').parent('div').siblings('label').text('*姓名') }else{ $('.qy').show(); $('#bankAcctType').html('<option value="1">对公</option>') + $('#merchantIDCode').parent('div').siblings('label').text('*法人身份证号') + $('#merchantName').parent('div').siblings('label').text('*公司名称') } }) - $('#userType').click(); + function initCity(id) { let city = ""; @@ -439,6 +443,8 @@ $('#provCodeEnterprise').val($('#provCodeEnterprise1').val()); initArea($('#provCodeEnterprise'), 'areaCodeEnterprise'); $('#areaCodeEnterprise').val($('#areaCodeEnterprise1').val()); + + $('#userType').change(); }) </script> @} diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html index 8ba5537..c58875d 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html @@ -68,7 +68,7 @@ </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">*公司名称:</label> + <label class="col-sm-3 control-label">*姓名:</label> <div class="col-sm-9"> <input class="form-control" id="merchantName" name="merchantName" type="text" maxlength="20" placeholder="请输入"> </div> @@ -122,7 +122,6 @@ <label class="col-sm-3 control-label">*银行账户类型:</label> <div class="col-sm-9"> <select class="form-control" id="bankAcctType"> - <option value="1">对公</option> <option value="2">对私</option> </select> </div> @@ -137,8 +136,8 @@ <input class="form-control" id="legalPerson" name="legalPerson" type="text" maxlength="20" placeholder="请输入"> </div> </div> - <div class="form-group qy"> - <label class="col-sm-3 control-label">*法人身份证号:</label> + <div class="form-group"> + <label class="col-sm-3 control-label">*身份证号:</label> <div class="col-sm-9"> <input class="form-control" id="merchantIDCode" name="merchantIDCode" type="text" maxlength="20" placeholder="请输入"> </div> @@ -253,9 +252,13 @@ if(userType == 0){ $('.qy').hide(); $('#bankAcctType').html('<option value="2">对私</option>') + $('#merchantIDCode').parent('div').siblings('label').text('*身份证号') + $('#merchantName').parent('div').siblings('label').text('*姓名') }else{ $('.qy').show(); $('#bankAcctType').html('<option value="1">对公</option>') + $('#merchantIDCode').parent('div').siblings('label').text('*法人身份证号') + $('#merchantName').parent('div').siblings('label').text('*公司名称') } }) diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java index f039b71..d071914 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java @@ -16,6 +16,7 @@ import com.supersavedriving.user.modular.system.util.UUIDUtil; import com.supersavedriving.user.modular.system.util.huawei.OBSUtil; import com.supersavedriving.user.modular.system.util.huawei.SMSUtil; +import com.supersavedriving.user.modular.system.util.weChat.WeChatUtil; import com.supersavedriving.user.modular.system.warpper.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -63,6 +64,28 @@ @Autowired private RedisUtil redisUtil; + @Autowired + private WeChatUtil weChatUtil; + + + + @ResponseBody + @PostMapping("/base/appUser/getUrlLink") +// @ServiceLog(name = "获取跳转微信url_link", url = "/base/appUser/appUserLogin") + @ApiOperation(value = "获取跳转微信url_link", tags = {"用户端-首页"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "跳转小程序路径", name = "path", required = true, dataType = "string"), + @ApiImplicitParam(value = "跳转的附带参数", name = "query", required = false, dataType = "string"), + }) + public ResponseWarpper<String> getUrlLink(String path, String query){ + try { + String urlLink = weChatUtil.getUrlLink(path, query, "release"); + return ResponseWarpper.success(urlLink); + }catch (Exception e){ + e.printStackTrace(); + return new ResponseWarpper(500, e.getMessage()); + } + } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java index d440b13..f268da2 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java @@ -349,7 +349,6 @@ /** * 订单微信支付回调处理 - * @param request * @param response */ @ResponseBody @@ -458,13 +457,13 @@ List<Revenue> revenues = revenueService.selectList(new EntityWrapper<Revenue>().eq("userType", 2).eq("orderId", order.getId())); Receive receive = new Receive();//确认收货 receive.setOriginalMerOrderId(merOrderId); - receive.setRcvAmount(String.valueOf(order.getPayMoney() * 100)); + receive.setRcvAmount(String.valueOf(Double.valueOf(order.getPayMoney() * 100).intValue())); List<ReceiveUser> splitList = new ArrayList<>(); for (Revenue revenue : revenues) { Driver driver = driverService.selectById(revenue.getUserId()); ReceiveUser receiveUser = new ReceiveUser(); receiveUser.setSplitUserId(driver.getMerchantNumber()); - receiveUser.setRcvSplitAmount(revenue.getAmount().toString()); + receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(revenue.getAmount() * 100).intValue())); splitList.add(receiveUser); } receive.setSplitList(splitList); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java index fe5bbb7..6479e28 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java @@ -25,7 +25,7 @@ String appid = req.getParameter("appid"); String sign = req.getParameter("sign"); ResultUtil resultUtil = authService.checkSyncAuth(appid, sign, req); - if (resultUtil.getCode() != 200) { + if (resultUtil.getCode() != 10000) { res.setStatus(HttpStatus.OK.value()); res.setHeader("Content-type", "text/html;charset=UTF-8"); res.getWriter().print(JSON.toJSONString(resultUtil));//Res.Failure("req timeout, please try again") diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java index 5c54a54..40e672e 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java @@ -20,86 +20,180 @@ * 主键 */ @TableId(value = "id", type = IdType.AUTO) - @TableField("id") private Integer id; /** * 负责人姓名 */ - @TableField("principal") + @TableField(value = "principal") private String principal; /** * 负责人电话 */ - @TableField("principalPhone") + @TableField(value = "principalPhone") private String principalPhone; /** * 邮箱 */ - @TableField("email") + @TableField(value = "email") private String email; - /** - * 代理区域省名称 - */ - @TableField("provinceName") - private String provinceName; /** * 代理区域省编号 */ - @TableField("provinceCode") + @TableField(value = "provinceCode") private String provinceCode; + /** + * 代理区域省名称 + */ + @TableField(value = "provinceName") + private String provinceName; /** * 代理区域市编号 */ - @TableField("cityCode") + @TableField(value = "cityCode") private String cityCode; /** * 代理区域市名称 */ - @TableField("cityName") + @TableField(value = "cityName") private String cityName; /** * 状态(1=正常,2=冻结,3=删除) */ - @TableField("status") + @TableField(value = "status") private Integer status; /** * 添加时间 */ - @TableField("createTime") + @TableField(value = "createTime") private Date createTime; - /** - * 开户银行 - */ - @TableField("bankDeposit") - private String bankDeposit; - /** - * 银行账号 - */ - @TableField("bankAccount") - private String bankAccount; /** * 客服电话 */ - @TableField("serviceCalls") + @TableField(value = "serviceCalls") private String serviceCalls; + /** + * 商户类型(1=个体工商户,2=企业) + */ + @TableField("userType") + private Integer userType; + /** + * 公司名称 + */ + @TableField("merchantName") + private String merchantName; + /** + * 经营范围 + */ + @TableField("businessScope") + private String businessScope; + /** + * 统一社会信用码 + */ + @TableField("socialCreditCode") + private String socialCreditCode; + /** + * 统一社会信用证有效期 + */ + @TableField("socialCreditCodeExpires") + private Date socialCreditCodeExpires; + /** + * 企业注册省编号 + */ + @TableField("provCodeEnterprise") + private String provCodeEnterprise; + /** + * 企业注册市编号 + */ + @TableField("cityCodeEnterprise") + private String cityCodeEnterprise; + /** + * 企业注册区编号 + */ + @TableField("areaCodeEnterprise") + private String areaCodeEnterprise; + /** + * 企业注册详细地址 + */ + @TableField("address") + private String address; + /** + * 法人姓名 + */ + @TableField("legalPerson") + private String legalPerson; + /** + * 法人身份证号码 + */ + @TableField("merchantIDCode") + private String merchantIDCode; + /** + * 法人身份证有效期 + */ + @TableField("certIdExpires") + private Date certIdExpires; + /** + * 法人手机号 + */ + @TableField("legalPhone") + private String legalPhone; + /** + * 附件编号 + */ + @TableField("fileNo") + private String fileNo; + /** + * 结算账户名 + */ + @TableField("cardName") + private String cardName; + /** + * 结算账户号 + */ + @TableField("cardNo") + private String cardNo; + /** + * 银行账户类型(1=对公,2=对私) + */ + @TableField("bankAcctType") + private Integer bankAcctType; + /** + * 银行预留手机号 + */ + @TableField("phone") + private String phone; + /** + * 开户行编号 + */ + @TableField("bankCode") + private String bankCode; + /** + * 开户行地区省编号 + */ + @TableField("provCodeBank") + private String provCodeBank; + /** + * 开户行地区市编号 + */ + @TableField("cityCodeBank") + private String cityCodeBank; + /** + * 开户行地区区编号 + */ + @TableField("areaCodeBank") + private String areaCodeBank; /** * 商户号 */ @TableField("merchantNumber") private String merchantNumber; /** - * 商户姓名 + * 商户状态(0=审核中,1=已成功,2=审核失败) */ - @TableField("merchantName") - private String merchantName; + @TableField("merchantStatus") + private Integer merchantStatus; /** - * 商户电话 + * 结算账户状态(0=审核中,1=已成功,2=审核失败) */ - @TableField("merchantPhone") - private String merchantPhone; - /** - * 商户身份证号码 - */ - @TableField("merchantIDCode") - private String merchantIDCode; + @TableField("bankStatus") + private Integer bankStatus; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java index 6658add..4fbce81 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java @@ -42,11 +42,6 @@ @TableField("amount") private Double amount; /** - * 未分配金额 - */ - @TableField("unallocatedAmount") - private Double unallocatedAmount; - /** * 支付方式(1=微信,2=系统充值) */ @TableField("payType") diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java index 59e5620..a34febb 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java @@ -17,6 +17,7 @@ import com.supersavedriving.user.modular.system.util.MallBook.model.PaymentOrder; import com.supersavedriving.user.modular.system.util.MallBook.model.PaymentOrderGood; import com.supersavedriving.user.modular.system.util.MallBook.model.QueryOrder; +import com.supersavedriving.user.modular.system.util.MallBook.util.Transfer; import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest; import com.supersavedriving.user.modular.system.util.PayMoneyUtil; import com.supersavedriving.user.modular.system.util.RedisUtil; @@ -38,6 +39,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.math.BigInteger; import java.net.InetAddress; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -73,6 +75,12 @@ @Autowired private IAccountChangeDetailService accountChangeDetailService; + + @Autowired + private IDriverService driverService; + + @Autowired + private ISystemConfigService systemConfigService; @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 @@ -145,60 +153,112 @@ @Override public ResultUtil<SignInToRegisterWarpper> signInToRegister(SignInToRegister signInToRegister) throws Exception { SignInToRegisterWarpper warpper = new SignInToRegisterWarpper(); - if(ToolUtil.isEmpty(signInToRegister.getJscode())){ - return ResultUtil.paranErr("jscode"); - } - if(ToolUtil.isEmpty(signInToRegister.getEncryptedDataPhone())){ - return ResultUtil.paranErr("encryptedDataPhone"); - } - if(ToolUtil.isEmpty(signInToRegister.getIvPhone())){ - return ResultUtil.paranErr("ivPhone"); - } - Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode()); - if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){ - return ResultUtil.error(code2Session.getErrmsg()); - } - String openid = code2Session.getOpenid(); - String session_key = code2Session.getSession_key(); - String decrypt = WXCore.decrypt(signInToRegister.getEncryptedDataPhone(), session_key, signInToRegister.getIvPhone()); - if(ToolUtil.isEmpty(decrypt)){ - return ResultUtil.error("获取手机号失败"); - } - JSONObject phone = JSON.parseObject(decrypt); - String purePhoneNumber = phone.getString("purePhoneNumber"); - AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", purePhoneNumber).ne("status", 3)); - if(null == appUser){ - appUser = new AppUser(); - appUser.setNickname("亲爱的用户"); - appUser.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png"); - appUser.setPhone(purePhoneNumber); - appUser.setOpenid(openid); - appUser.setUnionid(code2Session.getUnionid()); - appUser.setAccountBalance(0D); - appUser.setStatus(1); - appUser.setCreateTime(new Date()); - appUser.setIsException(1); - appUser.setInviterId(signInToRegister.getInviterId()); - appUser.setInviterType(signInToRegister.getInviterType()); - this.insert(appUser); - //发送优惠券 - boolean lock = redisUtil.lock(); - if(lock){ + try { + if(ToolUtil.isEmpty(signInToRegister.getJscode())){ + return ResultUtil.paranErr("jscode"); + } + if(ToolUtil.isEmpty(signInToRegister.getEncryptedDataPhone())){ + return ResultUtil.paranErr("encryptedDataPhone"); + } + if(ToolUtil.isEmpty(signInToRegister.getIvPhone())){ + return ResultUtil.paranErr("ivPhone"); + } + Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode()); + if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){ + return ResultUtil.error(code2Session.getErrmsg()); + } + String openid = code2Session.getOpenid(); + String session_key = code2Session.getSession_key(); + String decrypt = WXCore.decrypt(signInToRegister.getEncryptedDataPhone(), session_key, signInToRegister.getIvPhone()); + if(ToolUtil.isEmpty(decrypt)){ + return ResultUtil.error("获取手机号失败"); + } + JSONObject phone = JSON.parseObject(decrypt); + String purePhoneNumber = phone.getString("purePhoneNumber"); + AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", purePhoneNumber).ne("status", 3)); + if(null == appUser){ + appUser = new AppUser(); + appUser.setNickname("亲爱的用户"); + appUser.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png"); + appUser.setPhone(purePhoneNumber); + appUser.setOpenid(openid); + appUser.setUnionid(code2Session.getUnionid()); + appUser.setAccountBalance(0D); + appUser.setStatus(1); + appUser.setCreateTime(new Date()); + appUser.setIsException(1); + appUser.setInviterId(signInToRegister.getInviterId()); + appUser.setInviterType(signInToRegister.getInviterType()); + this.insert(appUser); + //发送优惠券 + boolean lock = redisUtil.lock(5); + if(!lock){ + int num1 = 1; + while (num1 <= 10){ + Thread.sleep(3000);//等待3秒 + lock = redisUtil.lock(5); + if(lock){ + break; + }else{ + num1++; + } + } + } List<CouponWarpper> list = pushCoupon(appUser.getId()); redisUtil.unlock(); warpper.setCoupons(list); } + if(appUser.getStatus() == 2){ + return ResultUtil.error("账号被冻结"); + } + String token = getToken(appUser); + if(ToolUtil.isEmpty(token)){ + return ResultUtil.error("获取身份凭证失败"); + } + warpper.setToken(token); + }catch (Exception e){ + e.printStackTrace(); + redisUtil.unlock(); } - if(appUser.getStatus() == 2){ - return ResultUtil.error("账号被冻结"); - } - String token = getToken(appUser); - if(ToolUtil.isEmpty(token)){ - return ResultUtil.error("获取身份凭证失败"); - } - warpper.setToken(token); return ResultUtil.success(warpper); } + + + /** + * 转账 + * @param id + * @param merOrderId + * @param toUserId + * @param amount + * @param notifyUrl + * @return + */ + public ResultUtil zhaunzhang(Integer id, String merOrderId, String toUserId, Double amount, String notifyUrl){ + Transfer transfer = new Transfer(); + transfer.setDepositMerOrderId(merOrderId); + transfer.setToUserId(toUserId); + transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); + transfer.setOrderName("补贴"); + transfer.setNotifyUrl(notifyUrl); + transfer.setParameter1(id.toString()); + TrhRequest<Transfer> request = new TrhRequest(); + InterfaceResponse execute = request.execute(transfer, Transfer.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败 + if(2 == status){ + System.err.println("转账失败"); + return ResultUtil.error("转账失败"); + } + return ResultUtil.success(); + }else{ + System.err.println("转账失败:" + execute.getMsg()); + return ResultUtil.error(execute.getMsg()); + } + } + + + /** @@ -218,7 +278,7 @@ userToCoupon.setCouponTotal(coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ? coupon.getRemainingQuantity() : coupon.getCouponSendQuantity()); userToCoupon.setValidCount(userToCoupon.getCouponTotal()); - userToCoupon.setExpireTime(new Date(System.currentTimeMillis() + (coupon.getCouponValidity() * 24 * 60 * 60 * 1000))); + userToCoupon.setExpireTime(new Date(System.currentTimeMillis() + (coupon.getCouponValidity().longValue() * 24L * 60L * 60L * 1000L))); userToCouponService.insert(userToCoupon); coupon.setRemainingQuantity(coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ? 0 : @@ -320,7 +380,7 @@ PaymentOrder paymentOrder = new PaymentOrder(); paymentOrder.setBizOrderId(out_trade_no); - paymentOrder.setAmount(String.valueOf(amount * 100)); + paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); paymentOrder.setOrderName("账户充值"); paymentOrder.setPayType("WX_MINI"); paymentOrder.setTransferType("0"); 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 ec62628..967297b 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 @@ -187,6 +187,8 @@ + + /** * 获取订单价格 * @param type 计算类型(1=预估价,2=订单费) @@ -197,6 +199,7 @@ * @return */ public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ + distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue(); order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); if(null == systemConfig){ @@ -212,7 +215,7 @@ JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard"); JSONObject extraCost = jsonObject.getJSONObject("ExtraCost"); Date date = new Date(); - for (int i = 0; i < chargeStandard.size(); i++) { + for (int i = 0; i < chargeStandard.size(); i++) {//计算各个时段 JSONObject jsonObject1 = chargeStandard.getJSONObject(i); String num1 = jsonObject1.getString("num1"); String num2 = jsonObject1.getString("num2"); @@ -227,41 +230,57 @@ Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11 String[] split = num1.split(":"); + Integer hour1 = Integer.valueOf(split[0]); + String[] split1 = num2.split(":"); + Integer hour2 = Integer.valueOf(split1[0]); + Calendar s = Calendar.getInstance(); s.setTime(date); - s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + s.set(Calendar.HOUR_OF_DAY, hour1); s.set(Calendar.MINUTE, Integer.valueOf(split[1])); s.set(Calendar.SECOND, 0); - split = num2.split(":"); Calendar e = Calendar.getInstance(); e.setTime(date); - e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); - e.set(Calendar.MINUTE, Integer.valueOf(split[1])); + e.set(Calendar.HOUR_OF_DAY, hour2); + e.set(Calendar.MINUTE, Integer.valueOf(split1[1])); e.set(Calendar.SECOND, 0); + + if(hour1 > hour2){ + if(s.getTimeInMillis() > date.getTime()){ + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); + }else{ + e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); + } + } if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){ if(num3.compareTo(distance) >= 0){//起步里程内 order.setStartDistance(distance);//起步里程 order.setStartPrice(num4);//起步价 }else{ - BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程 - BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程 + BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN); BigDecimal multiply = divide.multiply(new BigDecimal(num6)); order.setStartDistance(num3);//起步里程 order.setStartPrice(num4);//起步价 order.setOverDriveDistance(subtract.doubleValue());//超出起步里程 order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费 - //计算长途费 + //计算长途费(超出长途起始公里,费用开始按照长途规则计算。) if(distance.compareTo(num7) > 0){ + order.setStartDistance(0D);//起步里程 + order.setStartPrice(0D);//起步价 + order.setOverDriveDistance(0D);//超出起步里程 + order.setOverDrivePrice(0D);//超出起步里程费 + order.setLongDistance(num7 + "-" + num8);//长途里程 order.setLongDistancePrice(num9);//长途费 } //计算长途里程超出的部分 if(distance.compareTo(num8) > 0){ - BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)); - BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN)); + BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN); + BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11)); order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 @@ -354,7 +373,7 @@ order.setLongDistancePrice(0D);//长途里程费 order.setOverLongDistance(0D);//超出长途里程 order.setOverLongDistancePrice(0d);//超出长途里程费 - order.setWaitTime(0);//等待时长 +// order.setWaitTime(0);//等待时长 order.setWaitTimePrice(0D);//等待费 order.setOutWaitTime(0);//超出等待时长 order.setOutWaitTimePrice(0D);//超出等待时长费 @@ -480,28 +499,198 @@ * 订单推送逻辑 */ public void pushOrder(Long orderId){ - Order order = this.selectById(orderId); - /** - * 1.先找最大推单范围内的优推司机 -》 距离最近 - * 没有1 - 》 - * 2.按照后台推送配置在范围内查找合适司机 - * 合适司:积分 > 评分 > 距离 - * 3.司机没有接单直接将订单置入大厅 - */ - SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); - if(null == systemConfig){ - return; + try { + boolean lock = redisUtil.lock(5); + if(!lock){ + int num1 = 1; + while (num1 <= 10){ + Thread.sleep(3000);//等待3秒 + lock = redisUtil.lock(5); + if(lock){ + break; + }else{ + num1++; + } + } + } + Order order = this.selectById(orderId); + /** + * 1.先找最大推单范围内的优推司机 -》 距离最近 + * 没有1 - 》 + * 2.按照后台推送配置在范围内查找合适司机 + * 合适司:积分 > 评分 > 距离 + * 3.司机没有接单直接将订单置入大厅 + */ + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); + if(null == systemConfig){ + redisUtil.unlock(); + return; + } + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + Double num3 = jsonObject.getDouble("num3");//推单最大范围 + Integer num4 = jsonObject.getInteger("num4");//接单时间 + String startLat = order.getStartLat(); + String startLng = order.getStartLng(); + + //1 + //找到中心点 + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); + Double num = num3 / 1000;//范围公里 + //构造半径 + Distance distanceR = new Distance(num, 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); + List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + Integer driver = null; + YouTuiDriver youTuiDriver1 = null; + if(driverIds.size() > 0){ + List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) + .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); + Double d = null; + for (YouTuiDriver youTuiDriver : youTuiDrivers) { + String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); + if(ToolUtil.isEmpty(value)){ + continue; + } + Driver driver1 = driverService.selectById(youTuiDriver.getDriverId()); + if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){ + continue; + } + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); + if(null == driverWork){ + continue; + } + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + if(d == null || d.compareTo(wgs84) > 0){ + d = wgs84; + driver = youTuiDriver.getDriverId(); + youTuiDriver1 = youTuiDriver; + } + } + } + if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ + youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); + youTuiDriverService.updateById(youTuiDriver1); + } + + //开始范围查找 + if(null == driver){ + for (int i = 1; i < 4; i++) { + if(null != driver){ + break; + } + num = jsonObject.getDouble("num" + i) / 1000;//范围公里 + //构造半径 + distanceR = new Distance(num, Metrics.KILOMETERS); + //画圆 + circle = new Circle(geoJsonPoint, distanceR); + // 构造query对象 + query = Query.query(Criteria.where("location").withinSphere(circle)); + locations = mongoTemplate.find(query, Location.class); + + driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + if(driverIds.size() > 0){ + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) + .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ + continue; + } + + Integer integral = null;//积分 + Double score = null;//评分 + Double d = null; + for (Driver driver1 : drivers) { + String value = redisUtil.getValue("DRIVER" + driver1.getId()); + if(ToolUtil.isEmpty(value)){ + continue; + } + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); + if(null == driverWork){ + continue; + } + + if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 + integral = driver1.getIntegral(); + score = driver1.getScore(); + driver = driver1.getId(); + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + d = wgs84; + continue; + } + if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 + integral = driver1.getIntegral(); + score = driver1.getScore(); + driver = driver1.getId(); + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + d = wgs84; + continue; + } + if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + if(d.compareTo(wgs84) > 0){ + d = wgs84; + integral = driver1.getIntegral(); + score = driver1.getScore(); + driver = driver1.getId(); + continue; + } + } + } + + } + } + } + + if(null != driver){ + //防止多笔订单推给一个司机 + Driver driver1 = driverService.selectById(driver); + driver1.setServerStatus(2); + driverService.updateById(driver1); + pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); + //创建定时任务处理订单到大厅 + new Timer().schedule(new TimerTask() { + @Override + public void run() { + Order order1 = OrderServiceImpl.this.selectById(order.getId()); + if(order1.getState() == 101 || order1.getState() == 201){ + order1.setHallOrder(1); + OrderServiceImpl.this.updateById(order1); + + driver1.setServerStatus(1); + driverService.updateById(driver1); + ExtraPushOrder(order); + } + } + }, num4 * 1000); + }else{ + order.setHallOrder(1); + this.updateById(order); + ExtraPushOrder(order); + } + redisUtil.unlock(); + }catch (Exception e){ + e.printStackTrace(); + redisUtil.unlock(); } - JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); - Double num3 = jsonObject.getDouble("num3");//推单最大范围 - Integer num4 = jsonObject.getInteger("num4");//接单时间 + + } + + + + public void ExtraPushOrder(Order order){ String startLat = order.getStartLat(); String startLng = order.getStartLng(); - //1 //找到中心点 GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); - Double num = num3 / 1000;//范围公里 + Double num = 5D;//范围公里 //构造半径 Distance distanceR = new Distance(num, Metrics.KILOMETERS); //画圆 @@ -510,119 +699,25 @@ Query query = Query.query(Criteria.where("location").withinSphere(circle)); List<Location> locations = mongoTemplate.find(query, Location.class); List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); - Integer driver = null; - YouTuiDriver youTuiDriver1 = null; - if(driverIds.size() > 0){ - List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) - .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); - Double d = null; - for (YouTuiDriver youTuiDriver : youTuiDrivers) { - String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); - if(ToolUtil.isEmpty(value)){ - continue; - } - Driver driver1 = driverService.selectById(youTuiDriver.getDriverId()); - if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){ - continue; - } - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - if(d == null || d.compareTo(wgs84) > 0){ - d = wgs84; - driver = youTuiDriver.getDriverId(); - youTuiDriver1 = youTuiDriver; - } + if(driverIds.size() == 0){ + return; + } + List<DriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<DriverWork>().in("driverId", driverIds).eq("status", 1)); + driverIds = tDriverWorks.stream().map(DriverWork::getDriverId).collect(Collectors.toList()); + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) + .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ + return; + } + for (Driver driver1 : drivers) { + String value = redisUtil.getValue("DRIVER" + driver1.getId()); + if (ToolUtil.isEmpty(value)) { + return; } - } - if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ - youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); - youTuiDriverService.updateById(youTuiDriver1); - } - - //开始范围查找 - if(null == driver){ - for (int i = 1; i < 4; i++) { - if(null != driver){ - break; - } - num = jsonObject.getDouble("num" + i) / 1000;//范围公里 - //构造半径 - distanceR = new Distance(num, Metrics.KILOMETERS); - //画圆 - circle = new Circle(geoJsonPoint, distanceR); - // 构造query对象 - query = Query.query(Criteria.where("location").withinSphere(circle)); - locations = mongoTemplate.find(query, Location.class); - - driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); - if(driverIds.size() > 0){ - List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2) - .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); - if(drivers.size() == 0){ - continue; - } - - Integer integral = null;//积分 - Double score = null;//评分 - Double d = null; - for (Driver driver1 : drivers) { - String value = redisUtil.getValue("DRIVER" + driver1.getId()); - if(ToolUtil.isEmpty(value)){ - continue; - } - if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - d = wgs84; - continue; - } - if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - d = wgs84; - continue; - } - if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - if(d.compareTo(wgs84) > 0){ - d = wgs84; - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - continue; - } - } - } - - } - } - } - - if(null != driver){ - pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); - //创建定时任务处理订单到大厅 - new Timer().schedule(new TimerTask() { - @Override - public void run() { - Order order1 = OrderServiceImpl.this.selectById(order.getId()); - if(order1.getState() == 101 || order1.getState() == 201){ - order1.setHallOrder(1); - OrderServiceImpl.this.updateById(order1); - } - } - }, num4 * 1000); - }else{ - order.setHallOrder(1); - this.updateById(order); + pushUtil.pushGrabOrderExtras(driver1.getId(), 2); } } + /** @@ -754,8 +849,13 @@ @Override public OrderPriceWarpper queryOrderPrice(Integer uid, Long orderId) throws Exception { Order order = this.selectById(orderId); + Coupon coupon = userToCouponService.queryCoupon(uid, order.getOrderMoney()); OrderPriceWarpper orderPriceWarpper = new OrderPriceWarpper(); BeanUtils.copyProperties(order, orderPriceWarpper); + if(null != coupon){ + orderPriceWarpper.setCouponId(coupon.getId()); + orderPriceWarpper.setDiscountedPrice(coupon.getCouponPreferentialAmount()); + } orderPriceWarpper.setActualMileage(new BigDecimal(order.getActualMileage() / 1000).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); orderPriceWarpper.setTravelTime(Double.valueOf((order.getGetoffTime().getTime() - order.getStartTime().getTime()) / 60000).intValue()); return orderPriceWarpper; @@ -895,7 +995,7 @@ PaymentOrder paymentOrder = new PaymentOrder(); paymentOrder.setBizOrderId(out_trade_no); - paymentOrder.setAmount(String.valueOf(payMoney * 100)); + paymentOrder.setAmount(String.valueOf(Double.valueOf(payMoney * 100).intValue())); paymentOrder.setOrderName("代驾服务费"); paymentOrder.setPayType("WX_MINI"); paymentOrder.setTransferType("0"); @@ -921,9 +1021,6 @@ String status = jsonObject.getString("status"); if("2".equals(status)){ return ResultUtil.error("失败"); - } - if("0".equals(status)){ - return ResultUtil.error("处理中"); } String merOrderId = jsonObject.getString("merOrderId"); String payCode = jsonObject.getString("payCode"); @@ -1004,13 +1101,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); } @@ -1084,13 +1181,13 @@ accountChangeDetail.setUserType(2); accountChangeDetail.setUserId(order.getDriverId()); accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(7); accountChangeDetail.setOrderId(order.getId()); accountChangeDetail.setExplain("优惠券收入"); driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.insert(accountChangeDetail); } @@ -1149,9 +1246,6 @@ String status = jsonObject.getString("status"); if("2".equals(status)){ return ResultUtil.error("失败"); - } - if("0".equals(status)){ - return ResultUtil.error("处理中"); } String merOrderId = jsonObject.getString("merOrderId"); String payCode = jsonObject.getString("payCode"); @@ -1292,7 +1386,7 @@ if(null != systemConfig){ //{"num1":"10:00","num2":"14:00","num3":10,"num4":10,"num5":10,"num6":10,"num7":10,"num8":10,"num9":5,"num10":5} JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); - Integer num5 = jsonObject.getInteger("num5"); + Integer num5 = jsonObject.getInteger("num6"); //增加积分变动记录 AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); @@ -1345,20 +1439,46 @@ //司机分佣和司机推荐用户首单奖励都在平台的抽佣中扣除,剩余的为平台抽佣。 Driver driver = driverService.selectById(order.getDriverId()); AppUser appUser = appUserService.selectById(order.getUserId()); + + //首单积分奖励 + //司机推荐首单收入 + List<Integer> state = Arrays.asList(107, 108, 109); + int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state)); + if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ + Driver driver1 = driverService.selectById(appUser.getInviterId()); + SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); + JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent()); + Integer num4 = jsonObject2.getInteger("num4"); + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(driver1.getId()); + accountChangeDetail.setType(2); + accountChangeDetail.setChangeType(5); + accountChangeDetail.setOrderId(order.getId()); + accountChangeDetail.setOldData(driver1.getIntegral().doubleValue()); + accountChangeDetail.setExplain("邀请用户首单积分奖励"); + accountChangeDetail.setCreateTime(new Date()); + driver1.setIntegral(driver1.getIntegral() + num4); + accountChangeDetail.setNewData(driver1.getIntegral().doubleValue()); + accountChangeDetailService.insert(accountChangeDetail); + driverService.updateById(driver1); + } + + + Double payMoney = order.getPayMoney();//todo 司机订单收入归并到佣金中一起提现 SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3)); if(null != systemConfig){ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); Double num2 = jsonObject.getDouble("num2"); Double num3 = jsonObject.getDouble("num3"); - if(order.getPayMoney() >= num2){ + if(order.getOrderMoney().compareTo(num2) >= 0){//订单金额大于num2开始分佣 payMoney = payMoney - num3;//司机收入 SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2)); if(null != systemConfig1){ JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent()); //司机推荐首单收入 - List<Integer> state = Arrays.asList(108, 109); - int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state)); if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ Double num1 = jsonObject1.getDouble("num1"); num1 = (num3 >= num1 ? num1 : num3); @@ -1371,11 +1491,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); - accountChangeDetail.setExplain("订单分佣收入"); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setExplain("邀请用户首单奖励"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num1); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1416,7 +1536,7 @@ } //开始处理层级抽佣 - if(null != driver & null != driver.getInviterType() && driver.getInviterType() == 2){ + if(num3 > 0 && null != driver & null != driver.getInviterType() && driver.getInviterType() == 2){ Driver driver1 = driverService.selectById(driver.getInviterId());//一级司机 if(null != driver1 && null != driver1.getInviterType() && driver1.getInviterType() == 2){ Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机 @@ -1442,11 +1562,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num5); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1493,11 +1613,11 @@ accountChangeDetail.setUserId(driver2.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver2.setCommission(driver2.getCommission() + num6); - accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); @@ -1545,11 +1665,11 @@ accountChangeDetail.setUserId(driver3.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); + accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver3.setCommission(driver3.getCommission() + num7); - accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission()); + accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission()); driverService.updateById(driver3); accountChangeDetailService.saveData(accountChangeDetail); @@ -1599,11 +1719,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num3_); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1650,11 +1770,11 @@ accountChangeDetail.setUserId(driver2.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver2.setCommission(driver2.getCommission() + num4); - accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission()); + accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission()); driverService.updateById(driver2); accountChangeDetailService.saveData(accountChangeDetail); @@ -1704,11 +1824,11 @@ accountChangeDetail.setUserId(driver1.getId()); accountChangeDetail.setType(1); accountChangeDetail.setChangeType(5); - accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission()); accountChangeDetail.setExplain("订单分佣收入"); accountChangeDetail.setCreateTime(new Date()); driver1.setCommission(driver1.getCommission() + num2_); - accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission()); + accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission()); driverService.updateById(driver1); accountChangeDetailService.saveData(accountChangeDetail); @@ -1780,6 +1900,8 @@ } } } + + driver = driverService.selectById(order.getDriverId()); //司机订单收入 Revenue revenue = new Revenue(); revenue.setType(1); @@ -1797,7 +1919,8 @@ accountChangeDetail.setType(1); accountChangeDetail.setChangeType(1); accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission()); + driver.setCommission(driver.getCommission() + payMoney); accountChangeDetail.setExplain("订单收入"); accountChangeDetail.setCreateTime(new Date()); if(null != order.getCouponId()){ @@ -1828,20 +1951,7 @@ } if(null != order.getDiscountAmount() && 0 < order.getDiscountAmount()){ - accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(order.getDriverId()); - accountChangeDetail.setCreateTime(new Date()); - accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); - accountChangeDetail.setType(1); - accountChangeDetail.setChangeType(7); - accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setExplain("折扣优惠收入"); driver.setCommission(driver.getCommission() + order.getDiscountAmount()); - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); - driverService.updateById(driver); - accountChangeDetailService.insert(accountChangeDetail); //补贴中分账 Double discountedPrice = order.getDiscountAmount(); List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); @@ -1866,7 +1976,7 @@ } } } - accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission()); + accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission()); driverService.updateById(driver); accountChangeDetailService.saveData(accountChangeDetail); @@ -1890,14 +2000,14 @@ Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(payMoney) >= 0){ //分账司机收入 - ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), payMoney, 1); + ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), payMoney, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - payMoney); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); + ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); @@ -1919,14 +2029,14 @@ Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(money) >= 0){ //分账司机收入 - ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1); + ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), money, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); + ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); @@ -1957,14 +2067,14 @@ Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(balancePayment) >= 0){ //分账司机收入 - ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), balancePayment, 1); + ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), balancePayment, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - balancePayment); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); + ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); @@ -1984,14 +2094,14 @@ Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); if(surplusDividedAmount.compareTo(money) >= 0){ //分账司机收入 - ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1); + ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), money, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money); rechargeRecordService.updateById(rechargeRecord); } break; }else{ - ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1); + ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); if(10000 == fengzhang.getCode()){ rechargeRecord.setSurplusDividedAmount(0D); rechargeRecordService.updateById(rechargeRecord); @@ -2031,7 +2141,7 @@ List<PamentOrderUser> splitList = new ArrayList<>(); PamentOrderUser pamentOrderUser = new PamentOrderUser(); pamentOrderUser.setSplitUserId(merchantNumber); - pamentOrderUser.setSplitAmount(amount.toString()); + pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); pamentOrderUser.setSplitType("1"); splitList.add(pamentOrderUser); complete.setSplitList(splitList); @@ -2078,11 +2188,11 @@ Receive receive = new Receive(); receive.setOriginalMerOrderId(orderNumber); receive.setAsynMerOrderId(divisionRecord.getMerOrderId()); - receive.setRcvAmount(divisionRecord.getAmount().toString()); + receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); List<ReceiveUser> splitList = new ArrayList<>(); ReceiveUser receiveUser = new ReceiveUser(); receiveUser.setSplitUserId(merchantNumber); - receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString()); + receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue())); splitList.add(receiveUser); receive.setSplitList(splitList); TrhRequest<Receive> request = new TrhRequest(); @@ -2110,7 +2220,7 @@ Transfer transfer = new Transfer(); transfer.setDepositMerOrderId(merOrderId); transfer.setToUserId(toUserId); - transfer.setAmount(String.valueOf(Double.valueOf(amount * 100))); + transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); transfer.setOrderName("补贴"); transfer.setNotifyUrl(notifyUrl); transfer.setParameter1(id.toString()); diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java index 17eed7b..6bcab9e 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java @@ -85,7 +85,12 @@ Map<String, Object> map = new HashMap<>(); map.put("waitTime", num1 + "分钟/" + num2 + "元"); map.put("exceedWaitTime", "超出" + num3 + "分钟,收取" + num4 + "元/分钟"); - map.put("badWeather", "雨天、恶劣天气时代驾里程在" + num5 + "公里内加" + num6 + "元/单,达" + num7 + "公里或以上的订单按总价加" + num8 + "倍计费,封顶加" + num9 + "元"); + systemConfig = this.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8)); + JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); + Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价 + if(1 == num11){ + map.put("badWeather", "雨天、恶劣天气时代驾里程在" + num5 + "公里内加" + num6 + "元/单,达" + num7 + "公里或以上的订单按总价加" + num8 + "倍计费,封顶加" + num9 + "元"); + } priceRulesWarpper.setAdditionalFee(JSON.toJSONString(map)); } return priceRulesWarpper; diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java index dcff13d..b172d2a 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java @@ -7,6 +7,8 @@ import com.supersavedriving.user.modular.system.util.MallBook.config.ChannelConfig; import com.supersavedriving.user.modular.system.util.MallBook.model.InterfaceRequest; import com.supersavedriving.user.modular.system.util.MallBook.model.InterfaceResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @Author xiaogc @@ -14,17 +16,19 @@ */ public class TrhRequest<T> { + Logger logger = LoggerFactory.getLogger("ServiceLog"); + public InterfaceResponse execute(T t, String serverCode) { InterfaceRequest<T> request = new InterfaceRequest(t, serverCode); - System.out.println("mallbook请求参数:" + JSONUtil.toJsonStr(request)); + logger.warn("mallbook请求参数:" + JSONUtil.toJsonStr(request)); String result = HttpUtil.post(ChannelConfig.payUrl, BeanUtil.beanToMap(request)); - System.out.println("mallbook响应参数:" + result); + logger.warn("mallbook响应参数:" + result); InterfaceResponse response = JSONUtil.toBean(result, InterfaceResponse.class); boolean verify = RSASignature.validate(response.content(), response.getSign()); if (!verify) { throw new ValidateException("签名验证失败"); } else { - System.out.printf("签名验证通过"); + logger.warn("签名验证通过"); } return response; } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java index 8d506ad..6249209 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java @@ -206,6 +206,41 @@ /** + * 系统推单推送 附加(防止 用户推单后,范围内的司机20s 内接不到单的补充方法) + * @param id 接受对象id + * @param type 接受对象类型(1=用户,2=司机) + */ + public void pushGrabOrderExtras(Integer id, Integer type){ + JSONObject msg = new JSONObject(); + msg.put("code", 200); + msg.put("msg", "SUCCESS"); + msg.put("method", "PUSH_ORDER"); + + Map<String, Object> map = new HashMap<>(); + msg.put("data", map); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //将请求头部和参数合成一个请求 + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + params.add("msg", msg.toJSONString()); + params.add("id", id.toString()); + params.add("type", type.toString()); + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); + String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + logger.debug(jsonObject1.getString("msg")); + System.err.println(jsonObject1.getString("msg")); + } + } + + + + + /** * 转单成功推送 * @param id * @param type diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java index c23f490..70aeb6a 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java @@ -412,4 +412,31 @@ String body1 = exchange.getBody(); return body1; } + + + + + /** + * 获取小程序urllink码 + * env_version 默认值"release"。要打开的小程序版本。正式版为 "release",体验版为"trial",开发版为"develop",仅在微信外打开时生效。 + * @return + */ + public String getUrlLink(String path, String query, String env_version) throws Exception{ + String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken"); + String url = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + wxAppletsAccessToken; + Map<String, Object> param = new HashMap<>(); + param.put("path", path); + param.put("query", query); + param.put("is_expire", true); + param.put("expire_type", 0); + param.put("expire_time", System.currentTimeMillis() + 60 * 60 * 1000); + param.put("env_version", env_version); + HttpHeaders httpHeaders = new HttpHeaders(); + MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8"); + httpHeaders.setContentType(type); + HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders); + ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class); + String body1 = exchange.getBody(); + return body1; + } } diff --git a/user/guns-admin/src/main/resources/application.yml b/user/guns-admin/src/main/resources/application.yml index 21d0d30..5f9c801 100644 --- a/user/guns-admin/src/main/resources/application.yml +++ b/user/guns-admin/src/main/resources/application.yml @@ -121,9 +121,9 @@ #支付回调地址 #正式环境 -#callbackPath: http://121.37.15.157:80/user +callbackPath: https://chaoshengdaijia.com:443/user #正式测试环境 -callbackPath: http://121.37.15.157:80/user +#callbackPath: http://121.37.15.157:80/user --- @@ -137,15 +137,15 @@ # mallbook 调起接口参数配置 mallbook: # pay_url:mallbook接口地址 测试环境: https://uat.mallbook.cn/api 生产环境:https://cloudpay.mallbook.cn/api - pay_url: https://uat.mallbook.cn/api + pay_url: https://cloudpay.mallbook.cn/api # merchant_no 业务系统商户平台编号,需替换为mallbook工作人员提供的商户编号 - merchant_no: HF2023041901 + merchant_no: MBH23056 # version 接口版本号 version: 1.0.0 # channel_type 渠道类型 HF:汇付 channel_type: HF # merchant_private_key 商户平台私钥,需要替换成商户平台自己生成的私钥 - merchant_private_key: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIDGadl1oxP7EJg+/o32vpAMa8cwFevD6xu3FjIh04TOuVTpC9hbAwiyX/9OKQi3nHEISyrtnF6Y49tkmb7X8nDwOahvsyOjgNYp+NtSLAdgPAbd6lv2DPC1lVYYu5IkMz7PRifntROFH6OvE5fpj6GinaFY3TYBjyDcC2VVbq/LAgMBAAECgYATdmlvDWF9Vpe2eubcK+u3N7leXH0jqfOxt6UqJISkcN3/4E0DARZfTR5HJtf60k1ZpAhAT7MvdOoTMYwvFNI2WEFRwND5wBl+OdEN/lyWeISjjg1EnnTLj/azGLgE8Z2q/FodGikqrGrc2tSNIy75afeW2gUTF3DHiwcG76SYeQJBAPOyIzpT3yMfM7iVhjaPfmyxvDXq0cLwiAF0eUbrebPO0EevI+PKYhmN2oRMis6wSJbv+sbkElOXQzDefjw0ieUCQQCHRuFlX9JQYUOoyyirKxpu30uys+ygZqmo4PiKgIaaJJPm2p2o7vzZJANGmkmdwFf2LLzij70InKGvqGTEnvfvAkEAnJOMRuG0sOBPXv3TaiLwW+4mu43QkKvy9txbP9H0NC9ha22AZc+XEEwwZmi3lu109mXifv/zNnot1axe91facQJALExcwQqo32OKeXrVvX+m70m2CzX6NeiIhGHvYcOG0HFL8ZwDZu+j4yN04yjhFISJCXdK/1Icj/ZiyBf3r59zBwJACl7Sya9BcqRo5XJ/A7+T2E3VQT2nIopy0hPRLKWFaOzrCIsn3gcC58KSACXl2QMiG5kp1192QOC26b3o57ZecA== + merchant_private_key: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALHmyTrxPYcAwABnX+3VW9vxUftm57zBpnbfOT4vizMnKdpfCkIgtdbfdnSCtt637yWM2fxnZfItnhTeQA2lL8f4SXgZt/bVXfmAWi4IxQ+HJy0Qs8nNy2nnjICPBPcpWzHwUxQ/THHqU0a7b9B91J5DFcbQb25BHeRpHwkBw6A/AgMBAAECgYAmcWq2s/7Jt53F+JDAQkTRaHqAyyH0phwkv+QMzhVUfngK2lLLK2pf/nYIg16lDjY9dQx+AJIFHVp1w/kveayzOz3BIqPoznyIVYPolRGZCWPo+2vdp0CIdBh7zahST5g5Gem4cU47wO5hPYs1kXKPG4mUPtaIAMHFxhyLvIagAQJBAOS63AIZrRrldeNCVVNXbpAT52JuWLCgravM9coOh6scmG6UQwxxcott8hneHr9fazk2LHbHMxlG8F+dQPA0+D8CQQDHHJN7Dnske8oJ+1sq4uhQP3HMsmNIgth+ZcaZpiPcxnNKYVGhzAwTVV2ruFJle5ajebo6zfWuqJhtZGRNh1gBAkA/lRoXk1+lfGfa9tOVSVa4wm+t0xLgdqoQefdRZdyc2mQdSSWiTd8Tl0qXmkFd3X6G9uJBWnp/6lJjoektXOwtAkBsZTQsw99qJzIAaSRinpDWTxPG2j6OlR0DAqkxsG7JnAfbsEteh9TzGYAbIgdJVBTX/kbSCJn9ca85rnOkeVABAkAUbDfU3Z702z20NtwAxc1IkrtQ1lKuqSpj9/LuR1/6KRkYQsUWnUiOO9hu5YDWIcflFrnCenF8j8OnvGghltxT # mall_book_public_key mallbook测试环境公钥 不需要替换 - mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0L2DaHOO8ekhktB6RoHxIcki/0v7OUeOn9tX9VBE+jv6PRjqlZRWL3Qezxz5ADtHEyLv+RFFaceXSep6rWyoQ6DRlvLv5CySUAxAM42LLVe4DI3l/0ccEAIuU5NCpwAAj1zkm2X01DwUCZwymLjlqbDlBvQhpq+1fddtTtA/QLQIDAQAB + mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq6OLZKgUHH5wOk9xSBgN7yC17r3PQwMlY9/IorqrOlaIqrU0eAVZ5+dWrJD/3bdu7Ctq8n8trTm/IUYs7wtMg5SKwyX4/N+KQc2N7LL4yCq4vNl41q9sYgrtA0QnZoucIZcq1mwyu7RTDC8Wp7LGddnlkJsmL8masgMxA6cc9NwIDAQAB diff --git a/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java b/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java index ce79b7d..5ba49aa 100644 --- a/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java +++ b/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java @@ -1,6 +1,10 @@ //package com.supersavedriving.user; // +//import com.supersavedriving.user.modular.system.service.IOrderService; +//import com.supersavedriving.user.modular.system.warpper.OrderPriceWarpper; +//import org.junit.Test; //import org.junit.runner.RunWith; +//import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; //import org.springframework.test.context.junit4.SpringRunner; // @@ -12,8 +16,20 @@ //@SpringBootTest //public class GunsApplicationTest { // +// @Autowired +// private IOrderService orderService; // -//// public void +// +// @Test +// public void test(){ +// OrderPriceWarpper orderPriceWarpper = null; +// try { +// orderPriceWarpper = orderService.calculationOfExpenses(14, 133L, null, 1, 0D); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// System.err.println(orderPriceWarpper); +// } // // // diff --git a/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java b/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java index d7c315b..c98f607 100644 --- a/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java +++ b/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java @@ -14,13 +14,13 @@ @Override protected void initChannel(SocketChannel socketChannel) throws Exception { // String path = "C:\\Program Files\\Apache Software Foundation\\Tomcat 8.5\\cert\\SHA256withRSA_lzhyc.cn.pfx"; -// String path = "/usr/local/server/app/cert/tomcat/scs1680576839056_chaoshengdaijia.com_server.jks"; -// SSLContext sslContext = createSSLContext.createSSLContext("JKS" -// , path, "Zf3^5v6OoWmOVgeQ"); -// //SSLEngine 此类允许使用ssl安全套接层协议进行安全通信 -// SSLEngine engine = sslContext.createSSLEngine(); -// engine.setUseClientMode(false); -// socketChannel.pipeline().addLast("ssl", new SslHandler(engine)); + String path = "/usr/local/server/app/cert/tomcat/scs1680576839056_chaoshengdaijia.com_server.jks"; + SSLContext sslContext = createSSLContext.createSSLContext("JKS" + , path, "Zf3^5v6OoWmOVgeQ"); + //SSLEngine 此类允许使用ssl安全套接层协议进行安全通信 + SSLEngine engine = sslContext.createSSLEngine(); + engine.setUseClientMode(false); + socketChannel.pipeline().addLast("ssl", new SslHandler(engine)); // 设置30秒没有读到数据,则触发一个READER_IDLE事件。 // pipeline.addLast(new IdleStateHandler(30, 0, 0)); diff --git a/zuul/src/main/resources/application.yml b/zuul/src/main/resources/application.yml index b14faa5..51d6bdd 100644 --- a/zuul/src/main/resources/application.yml +++ b/zuul/src/main/resources/application.yml @@ -4,6 +4,10 @@ spring: application: name: zuul-gateway #服务名称 + servlet: + multipart: + max-request-size: 500MB + max-file-size: 500MB eureka: client: diff --git a/zuul/src/main/resources/redis.properties b/zuul/src/main/resources/redis.properties index 5d9655f..1a943f9 100644 --- a/zuul/src/main/resources/redis.properties +++ b/zuul/src/main/resources/redis.properties @@ -1,6 +1,7 @@ #redis���ÿ�ʼ # Redis���ݿ�������Ĭ��Ϊ0�� spring.redis.database=0 + # Redis��������ַ spring.redis.host=127.0.0.1 # Redis���������Ӷ˿� @@ -8,12 +9,13 @@ # Redis�������������루Ĭ��Ϊ�գ� spring.redis.password=cKsEeyffDXG5PzNg8CIbrWxFluXrCprZ -## Redis��������ַ +# Redis��������ַ #spring.redis.host=127.0.0.1 ## Redis���������Ӷ˿� #spring.redis.port=6379 ## Redis�������������루Ĭ��Ϊ�գ� #spring.redis.password=123456 + # ���ӳ������������ʹ�ø�ֵ��ʾû�����ƣ� spring.redis.jedis.pool.max-active=1024 # ���ӳ���������ȴ�ʱ�䣨ʹ�ø�ֵ��ʾû�����ƣ� -- Gitblit v1.7.1