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(); } } } 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){ 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){ switch (transactionDetail.getOrderType()){ case 2: historyVo.setState("订单收入"); break; default: historyVo.setState("充值"); break; } historyVo.setAddordown(1); }else { historyVo.setState("扣除"); 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; 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; 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; } 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); } } 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; } 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()); 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; }