From 2e97a0b58cc60cb076843b3a860732f71762cff7 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期四, 16 一月 2025 19:08:15 +0800 Subject: [PATCH] 修改 --- DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java | 1 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java | 14 ++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java | 23 ++++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java | 46 +++++++++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java | 11 ++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java | 16 +++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 87 +++++++++++----- DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java | 62 +++++++++++- 8 files changed, 225 insertions(+), 35 deletions(-) diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java index f2d1c20..c507c1e 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java @@ -1,6 +1,12 @@ package com.stylefeng.guns.modular.api; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.stylefeng.guns.modular.system.model.Driver; +import com.stylefeng.guns.modular.system.model.TransactionDetails; +import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IReassignService; +import com.stylefeng.guns.modular.system.service.ITransactionDetailsService; +import com.stylefeng.guns.modular.system.util.PayMoneyUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -9,6 +15,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; import java.util.Map; /** @@ -78,4 +85,43 @@ e.printStackTrace(); } } + @Autowired + private ITransactionDetailsService transactionDetailsService; + @Autowired + private PayMoneyUtil payMoneyUtil; + @Autowired + private IDriverService driverService; + @ResponseBody + @PostMapping("/wxRecharge") + public void wxRecharge(HttpServletRequest request, HttpServletResponse response){ + try { + Map<String, String> map = payMoneyUtil.weixinpayCallback(request); + if (null != map) { + String out_trade_no = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + String result = map.get("result"); + TransactionDetails transactionDetails = transactionDetailsService.selectOne(new EntityWrapper<TransactionDetails>() + .eq("code", out_trade_no)); + if (transactionDetails!=null){ + if (transactionDetails.getState()==2){ + return; + } + Driver driver = driverService.selectById(transactionDetails.getUserId()); + if (driver!=null){ + driver.setBalance(driver.getBalance() + transactionDetails.getMoney()); + driverService.updateById(driver); + } + transactionDetails.setState(2); + transactionDetailsService.updateById(transactionDetails); + PrintWriter out = response.getWriter(); + out.write(result); + out.flush(); + out.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + } diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java index ca02f53..247f866 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java @@ -1,4 +1,5 @@ package com.stylefeng.guns.modular.api; +import java.text.SimpleDateFormat; import java.util.Date; import com.baomidou.mybatisplus.mapper.EntityWrapper; @@ -11,8 +12,10 @@ import com.stylefeng.guns.modular.system.dao.TUseMoneyMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.PayMoneyUtil; import com.stylefeng.guns.modular.system.util.PushUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.UUIDUtil; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; @@ -60,10 +63,10 @@ private IWithdrawalService withdrawalService; @Autowired private ITRechargeMoneyService rechargeMoneyService; - + @Autowired + private PayMoneyUtil payMoneyUtil; @Autowired private TUseMoneyMapper useMoneyMapper; - @ResponseBody @PostMapping ("/money/get") @ApiOperation(value = "拿到后台配置的充值金额") @@ -80,9 +83,39 @@ @ResponseBody @PostMapping ("/recharge") @ApiOperation(value = "微信充值操作") - public ResultUtil recharge(BigDecimal money,HttpServletRequest request){ - - return ResultUtil.success(); + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "充值金额", name = "money", required = true, dataType = "double"), + }) + public ResultUtil recharge(BigDecimal money,HttpServletRequest request) throws Exception { + Integer uid = driverService.getUserIdFormRedis(request); + if (null == uid) { + return ResultUtil.tokenErr(); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String s = sdf.format(new Date()) + UUIDUtil.getRandomCode(3); + ResultUtil weixinpay = payMoneyUtil.weixinpay("充值", + "", + s, + money.toString(), + "/base/wxRecharge", + "APP"); + if (weixinpay.getCode()==200){ + // 新增扣除使用费记录 + TransactionDetails transactionDetails = new TransactionDetails(); + transactionDetails.setCode(s); + transactionDetails.setUserId(uid); + transactionDetails.setInsertTime(new Date()); + transactionDetails.setRemark("充值"); + // 将money转化为double类型 + transactionDetails.setMoney(money.doubleValue()); + transactionDetails.setState(1); + transactionDetails.setType(1); + transactionDetails.setUserType(2); + transactionDetails.setOrderType(5); + iTransactionDetailsService.insert(transactionDetails); + } + return weixinpay; } @@ -231,13 +264,21 @@ if (state!=null&&state==2){ eq.eq("state",2); } + eq.orderBy("insertTime",false); List<TransactionDetails> transactionDetails = iTransactionDetailsService.selectList(eq); if ((state!=null&&state==1)||(state!=null&&state==2)){ List<HistoryVo> historyVos = new ArrayList<>(); for (TransactionDetails transactionDetail : transactionDetails) { HistoryVo historyVo = new HistoryVo(); if (transactionDetail.getState()==1){ - historyVo.setState("充值"); + switch (transactionDetail.getOrderType()){ + case 2: + historyVo.setState("订单收入"); + break; + default: + historyVo.setState("充值"); + break; + } historyVo.setAddordown(1); }else { historyVo.setState("扣除"); @@ -262,7 +303,14 @@ for (TransactionDetails transactionDetail : transactionDetails) { HistoryVo historyVo = new HistoryVo(); if (transactionDetail.getState()==1){ - historyVo.setState("充值"); + switch (transactionDetail.getOrderType()){ + case 2: + historyVo.setState("订单收入"); + break; + default: + historyVo.setState("充值"); + break; + } historyVo.setAddordown(1); }else { historyVo.setState("扣除"); diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java index 2cf9c0d..8fab41b 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java @@ -9,6 +9,7 @@ public class HistoryVo { Date createTime; String state; + // 0减少 1增加 Integer addordown; Double money; diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java index de0e512..9c28459 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java @@ -23,6 +23,8 @@ */ @TableField("userId") private Integer userId; + @TableField("code") + private String code; /** * 添加时间 */ @@ -68,6 +70,27 @@ */ @TableField("placeOrderWay") private Integer placeOrderWay; + /** + * 公司id + */ + @TableField("companyId") + private Integer companyId; + + public Integer getCompanyId() { + return companyId; + } + + public void setCompanyId(Integer companyId) { + this.companyId = companyId; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } public Integer getPlaceOrderWay() { return placeOrderWay; diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java index 04ed3d9..f337983 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java @@ -20,4 +20,18 @@ */ void saveData(Integer userId, String remark, Double money, Integer state, Integer type, Integer userType, Integer orderType, Integer orderId) throws Exception; + /** + * 添加数据 + * @param userId 对象id + * @param remark 备注 + * @param money 金额 + * @param state 状态(1=添加,2=减少) + * @param type 类型(1=金额,2=积分) + * @param userType 用户类型(1=用户,2=司机) + * @param orderType 订单类型(1=专车,2=出租车,3=城际,4=小件物流,5=余额充值,6=余额提现) + * @param orderId + * @throws Exception + */ + void saveData(Integer userId, String remark, Double money, Integer state, + Integer type, Integer userType, Integer orderType, Integer orderId,Integer companyId) throws Exception; } diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java index e6a7781..b55130c 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java @@ -41,4 +41,20 @@ transactionDetails.setUserType(userType); this.insert(transactionDetails); } + + @Override + public void saveData(Integer userId, String remark, Double money, Integer state, Integer type, Integer userType, Integer orderType, Integer orderId, Integer companyId) throws Exception { + TransactionDetails transactionDetails = new TransactionDetails(); + transactionDetails.setInsertTime(new Date()); + transactionDetails.setMoney(money); + transactionDetails.setOrderId(orderId); + transactionDetails.setOrderType(orderType); + transactionDetails.setRemark(remark); + transactionDetails.setState(state); + transactionDetails.setType(type); + transactionDetails.setUserId(userId); + transactionDetails.setUserType(userType); + transactionDetails.setCompanyId(companyId); + this.insert(transactionDetails); + } } diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java index 0d2618f..f12ff2a 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java @@ -44,6 +44,16 @@ private Double discountMoney; @ApiModelProperty("折扣") private Double discount; + @ApiModelProperty("平台服务费") + private Double platformFee; + + public Double getPlatformFee() { + return platformFee; + } + + public void setPlatformFee(Double platformFee) { + this.platformFee = platformFee; + } public Double getOrderMoney() { return orderMoney; @@ -223,6 +233,7 @@ moneyInfoWarpper.setCouponMoney(null != map.get("couponMoney") ? Double.valueOf(map.get("couponMoney").toString()) : 0D); moneyInfoWarpper.setDiscountMoney(null != map.get("discountMoney") ? Double.valueOf(map.get("discountMoney").toString()) : 0D); moneyInfoWarpper.setDiscount(null != map.get("discount") ? Double.valueOf(map.get("discount").toString()) : 0D); + moneyInfoWarpper.setPlatformFee(null != map.get("platformFee") ? Double.valueOf(map.get("platformFee").toString()) : 0D); } return moneyInfoWarpper; } diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java index 9ab6a9c..fd3556f 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java @@ -46,7 +46,8 @@ @Autowired private GDMapElectricFenceUtil gdMapElectricFenceUtil; - + @Autowired + private ITransactionDetailsService transactionDetailsService; @Autowired private GDFalconUtil gdFalconUtil; @@ -208,7 +209,22 @@ Company company = companyService.selectById(driver.getCompanyId()); orderTaxi.setState(9); driver.setState(2); - driver.setBalance(driver.getBalance() - company.getFixedDeduction()); +// driver.setBalance(driver.getBalance() - company.getFixedDeduction()); + + if(Objects.isNull(company)){ + company = companyService.selectById(driver.getCompanyId()); + } + // 平台收入 + double money; + if(orderTaxi.getOrderSource() == 2 || orderTaxi.getOrderSource() == 3){ + double v = company.getPercentageDeduction() / 100; + money = v * orderTaxi.getOrderMoney(); + }else { + money = company.getFixedDeduction(); + } + driver.setBalance(driver.getBalance() - money); + // 新增扣除使用费记录 + transactionDetailsService.saveData(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderTaxi.getId(),company.getId()); driverService.updateById(driver); Car car = carService.selectById(driver.getCarId()); @@ -438,33 +454,37 @@ orderTaxi.setGetoffLat(lat); orderTaxi.setGetoffAddress(address); orderTaxi.setGetoffTime(new Date()); - orderTaxi.setState(6); + if(orderTaxi.getPayManner()==3){ + orderTaxi.setState(9); + }else { + orderTaxi.setState(6); + } orderTaxi.setEndServiceTime(new Date()); // List<TUseMoney> money = useMoneyMapper.selectList(null); - Driver driver = driverService.selectById(orderTaxi.getDriverId()); - Company company = companyService.selectById(driver.getCompanyId()); - TransactionDetails transactionDetails = new TransactionDetails(); - if(orderTaxi.getOrderSource() == 2 || orderTaxi.getOrderSource() == 3){ - double v = company.getPercentageDeduction() / 100; - v = v * orderTaxi.getOrderMoney(); - driver.setBalance(driver.getBalance() - v); - transactionDetails.setMoney(v); - }else { - driver.setBalance(driver.getBalance() - company.getFixedDeduction()); - transactionDetails.setMoney(company.getFixedDeduction()); - } - // 新增扣除使用费记录 - transactionDetails.setUserId(driver.getId()); - transactionDetails.setInsertTime(new Date()); - transactionDetails.setRemark("软件使用费"); - transactionDetails.setState(2); - transactionDetails.setType(1); - transactionDetails.setUserType(2); - transactionDetails.setOrderType(6); - transactionDetails.setOrderId(orderTaxi.getId()); - transactionDetailsMapper.insert(transactionDetails); - driverService.updateById(driver); +// Driver driver = driverService.selectById(orderTaxi.getDriverId()); +// Company company = companyService.selectById(driver.getCompanyId()); +// TransactionDetails transactionDetails = new TransactionDetails(); +// if(orderTaxi.getOrderSource() == 2 || orderTaxi.getOrderSource() == 3){ +// double v = company.getPercentageDeduction() / 100; +// v = v * orderTaxi.getOrderMoney(); +// driver.setBalance(driver.getBalance() - v); +// transactionDetails.setMoney(v); +// }else { +// driver.setBalance(driver.getBalance() - company.getFixedDeduction()); +// transactionDetails.setMoney(company.getFixedDeduction()); +// } +// // 新增扣除使用费记录 +// transactionDetails.setUserId(driver.getId()); +// transactionDetails.setInsertTime(new Date()); +// transactionDetails.setRemark("软件使用费"); +// transactionDetails.setState(2); +// transactionDetails.setType(1); +// transactionDetails.setUserType(2); +// transactionDetails.setOrderType(6); +// transactionDetails.setOrderId(orderTaxi.getId()); +// transactionDetailsMapper.insert(transactionDetails); +// driverService.updateById(driver); pushUtil.removeTask(orderId, 2);//删除定时任务,结束推送数据 systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderTaxi.getUserId()); break; @@ -500,9 +520,11 @@ if(type == 2){//其他支付,不需要操作,直接完成订单 orderTaxi = this.setMoney1(orderTaxi, travelFee, parkingFee, crossingFee); orderTaxi.setState(7); - }else{ + }else if (type == 1){ orderTaxi = this.setMoney2(orderTaxi, parkingFee, crossingFee); orderTaxi.setState(7); + }else { + orderTaxi.setState(8); } this.updateById(orderTaxi); @@ -776,10 +798,18 @@ if(orderTaxi.getState() == 5 || orderTaxi.getState() == 6){//服务中的时候获取实时费用数据 if(orderTaxi.getPayManner() == 2){//其他支付,不需要操作,直接完成订单 orderTaxi = this.setMoney1(orderTaxi, 0D, 0D, 0D); - }else{ + }else if(orderTaxi.getPayManner() == 1){ orderTaxi = this.setMoney2(orderTaxi, 0D, 0D); + }else { + // 无 } } + + // 查询平台服务费 + TransactionDetails transactionDetails = transactionDetailsService.selectOne(new EntityWrapper<TransactionDetails>() + .eq("orderId", orderId) + .eq("orderType", 6) + .last("LIMIT 1")); Map<String, Object> map = new HashMap<>(); map.put("orderMoney", orderTaxi.getOrderMoney());//订单金额 @@ -799,6 +829,7 @@ map.put("couponMoney", orderTaxi.getCouponMoney());//优惠券抵扣金额 map.put("discountMoney", orderTaxi.getDiscountMoney());//折扣抵扣金额 map.put("discount", orderTaxi.getDiscount());//折扣 + map.put("platformFee", transactionDetails.getMoney());//折扣 return map; } -- Gitblit v1.7.1