DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverAlipayController.java
@@ -139,4 +139,32 @@ } } /** * 账户余额提现操作 * @param money * @param request * @return */ @ResponseBody @PostMapping("/api/withdrawal/aliWithdrawal") @ApiOperation(value = "账户余额提现[0731]", tags = {"司机端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "提现金额", name = "money", required = true, dataType = "double"), @ApiImplicitParam(value = "支付宝账号id", name = "id", required = true, dataType = "int"), @ApiImplicitParam(value = "提现类型(1=活动收入提现,2=业务收入提现)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil aliWithdrawal(Double money, Integer id, Integer type,HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return driverAlipayService.aliWithdrawal(money, id, uid, type); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } } DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -444,7 +444,43 @@ @ApiModelProperty(value = "修改价格审核 1=待审核 2=通过") @TableField("priceAuditState") private Integer priceAuditState; /** * 预付金额 */ @TableField("paymentAdvanceMoney") private Double paymentAdvanceMoney; /** * 支付方式(0:预付1:后付) */ @TableField("payMethod") private Integer payMethod; @ApiModelProperty(value = "支付流水号") @TableField("transactionId") private String transactionId; public String getTransactionId() { return transactionId; } public void setTransactionId(String transactionId) { this.transactionId = transactionId; } public Integer getPayMethod() { return payMethod; } public void setPayMethod(Integer payMethod) { this.payMethod = payMethod; } public Double getPaymentAdvanceMoney() { return paymentAdvanceMoney; } public void setPaymentAdvanceMoney(Double paymentAdvanceMoney) { this.paymentAdvanceMoney = paymentAdvanceMoney; } public Integer getPriceAuditState() { return priceAuditState; } DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -86,7 +86,8 @@ @Resource private UserInfoMapper userInfoMapper; @Autowired private ITransactionDetailsService transactionDetailsService; @Autowired private ICompanyService companyService; @@ -94,7 +95,8 @@ private IIncomeService incomeService; @Autowired private ISpecialAreaBillingService specialAreaBillingService; @Autowired private PayMoneyUtil payMoneyUtil; @Value("${filePath}") private String filePath; @@ -567,6 +569,61 @@ orderPrivateCar.setState(7); } if(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) { orderPrivateCar.setState(8); // 退款情况 if (new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney())) > 0) { // 退款 if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款 // 微信退款 payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).subtract(new BigDecimal(orderPrivateCar.getOrderMoney()))), "/base/transferWXNotify"); orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); } if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款 // 支付宝退款 payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).subtract(new BigDecimal(orderPrivateCar.getOrderMoney())).multiply(new BigDecimal(100)))); orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); } if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付 BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).subtract(new BigDecimal(orderPrivateCar.getOrderMoney())); // 余额退款 UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue()); userInfoMapper.updateById(userInfo); //添加交易明细 transactionDetailsService.saveData(orderPrivateCar.getUserId(), "专车差价退款", refundMoney.doubleValue(), 2, 1, 1, 1, orderPrivateCar.getId()); } } else { orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).doubleValue()); } //添加已收入明细 Company company = companyService.selectById(orderPrivateCar.getCompanyId()); Double speMoney = company.getSpeMoney(); BigDecimal d = null;//企业收入 BigDecimal c = null;//司机收入 if(company.getIsSpeFixedOrProportional() == 2){//固定 d = new BigDecimal(speMoney); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 if(c.compareTo(BigDecimal.ZERO)<1){ c = BigDecimal.ZERO; } } if(company.getIsSpeFixedOrProportional() == 1){//比例 Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney(); d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); } incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driverService.updateById(driver); }else { orderPrivateCar.setState(7); } // Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId(),orderPrivateCar.getTelX()); // if(String.valueOf(map.get("code")).equals("200")){ // orderPrivateCar.setTelX(""); DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverAlipay.java
@@ -40,6 +40,20 @@ */ @TableField("createTime") private Date createTime; /** * 身份证号 * @return */ @TableField("idCard") private String idCard; public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } public Integer getId() { return id; DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverAlipayService.java
@@ -54,4 +54,14 @@ */ List<DriverAlipay> queryAlipay(Integer pageNum, Integer size, Integer driverId); /** * 提现 * @param money * @param id * @param uid * @param type * @return */ ResultUtil aliWithdrawal(Double money, Integer id, Integer uid, Integer type); } DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverAlipayServiceImpl.java
@@ -1,38 +1,21 @@ package com.stylefeng.guns.modular.system.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.common.constant.JwtConstants; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.JwtTokenUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; import com.stylefeng.guns.modular.system.dao.*; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.warpper.ActivityWarpper; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.LoginWarpper; import com.stylefeng.guns.modular.system.warpper.RegisteredWarpper; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; import org.apache.shiro.crypto.hash.Md5Hash; import org.apache.shiro.util.ByteSource; import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.modular.system.dao.DriverAlipayMapper; import com.stylefeng.guns.modular.system.dao.DriverMapper; import com.stylefeng.guns.modular.system.dao.WithdrawalMapper; import com.stylefeng.guns.modular.system.model.Driver; import com.stylefeng.guns.modular.system.model.DriverAlipay; import com.stylefeng.guns.modular.system.model.Withdrawal; import com.stylefeng.guns.modular.system.service.IDriverAlipayService; import com.stylefeng.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.Date; import java.util.List; @Service @@ -40,6 +23,10 @@ @Autowired private DriverAlipayMapper driverAlipayMapper; @Autowired private DriverMapper driverMapper; @Autowired private WithdrawalMapper withdrawalMapper; @Override public ResultUtil saveAlipay(String userName, String account, Integer driverId) { @@ -74,7 +61,7 @@ public ResultUtil delAlipay(Integer id, Integer driverId) { DriverAlipay driverAlipay = this.selectById(id); if(driverAlipay.getDriverId().compareTo(driverId) != 0){ return ResultUtil.error("你无权删除此卡号"); return ResultUtil.error("你无权删除此账号"); } this.deleteById(id); return ResultUtil.success(); @@ -85,4 +72,86 @@ pageNum = (pageNum - 1) * size; return driverAlipayMapper.queryAlipay(pageNum, size, driverId); } @Override public ResultUtil aliWithdrawal(Double money, Integer id, Integer uid, Integer type) { if(money.compareTo(0D) <= 0){ return ResultUtil.error("提现金额必须大于0"); } Driver driver = driverMapper.selectById(uid); Integer withdrawalRule = driverMapper.getWithdrawalRule(); if(withdrawalRule==null){ return ResultUtil.error("暂未设置提现时间,请联系平台"); } String week =withdrawalRule==1?"星期一": withdrawalRule==2?"星期二": withdrawalRule==3?"星期三": withdrawalRule==4?"星期四": withdrawalRule==5?"星期五": withdrawalRule==6?"星期六":"星期日"; String weeks = DateUtil.getAfterDayWeek("0"); if(!weeks.equals(week)){ return ResultUtil.error(" 每周"+(withdrawalRule==1?"一": withdrawalRule==2?"二": withdrawalRule==3?"三": withdrawalRule==4?"四": withdrawalRule==5?"五": withdrawalRule==6?"六":"日")+"统一申请提现,平台统一处理。"); } if(null == type){ type = 1; } Withdrawal withdrawal = new Withdrawal(); if(type == 1){ if(null == driver.getLaveActivityMoney()){ return ResultUtil.error("账户没有余额,不能提现"); } if(driver.getLaveActivityMoney().compareTo(money) < 0){ return ResultUtil.error("提现金额必须小于账户余额"); } withdrawal.setBalance(driver.getLaveActivityMoney()); } if(type == 2){ if(null == driver.getLaveBusinessMoney()){ return ResultUtil.error("账户没有余额,不能提现"); } Double money1 = driverMapper.getThisWeekMoney(uid); Double laveBusinessMoney =driver.getLaveBusinessMoney()-(money1==null?0d:money1); if(laveBusinessMoney.compareTo(money) < 0){ return ResultUtil.error("提现金额必须小于账户余额"); } withdrawal.setBalance(driver.getLaveBusinessMoney()-(money1==null?0d:money1)); } DriverAlipay driverAlipay = this.selectById(id); if(null == driverAlipay){ return ResultUtil.error("请选择提现账号"); } withdrawal.setCode(driverAlipay.getAccount()); withdrawal.setFlag(1); withdrawal.setInsertTime(new Date()); withdrawal.setMoney(money); withdrawal.setName(driverAlipay.getUserName()); withdrawal.setState(1); withdrawal.setUserId(uid); withdrawal.setUserType(2); withdrawal.setBankName("支付宝"); withdrawal.setType(type); withdrawal.setWithdrawalType(1);//线上 if(type == 1){ double v = new BigDecimal(driver.getLaveActivityMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); driver.setLaveActivityMoney(v); v = new BigDecimal(driver.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); driver.setBalance(v); } if(type == 2){ double v = new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); driver.setLaveBusinessMoney(v); } withdrawalMapper.insert(withdrawal); driverMapper.updateById(driver); return ResultUtil.success(); } } ManagementZYTravel/guns-admin/pom.xml
@@ -209,6 +209,12 @@ <version>3.14.4</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.39.186.ALL</version> <scope>compile</scope> </dependency> </dependencies> ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOpenCity.java
@@ -1,6 +1,8 @@ package com.stylefeng.guns.modular.system.model; import com.baomidou.mybatisplus.enums.IdType; import java.math.BigDecimal; import java.util.Date; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.activerecord.Model; @@ -64,6 +66,18 @@ private Integer insertUser; private Date updateTime; private Integer updateUser; /** * 订单额度 */ private BigDecimal orderMagnitude; public BigDecimal getOrderMagnitude() { return orderMagnitude; } public void setOrderMagnitude(BigDecimal orderMagnitude) { this.orderMagnitude = orderMagnitude; } public Integer getAreaId() { return areaId; ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayProperties.java
New file @@ -0,0 +1,63 @@ package com.stylefeng.guns.modular.system.util.alipay; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class AlipayProperties { @Value("${alipay.appId}") private String appId;//支付宝appid @Value("${alipay.appCertPath}") private String appCertPath;//应用公钥 @Value("${alipay.rootCertPath}") private String rootCertPath;//支付宝根证书 @Value("${alipay.alipayPublicCertPath}") private String alipayPublicCertPath;//支付宝公钥 @Value("${alipay.privateKey}") private String privateKey;//应用私钥 public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } public String getAppCertPath() { return appCertPath; } public void setAppCertPath(String appCertPath) { this.appCertPath = appCertPath; } public String getRootCertPath() { return rootCertPath; } public void setRootCertPath(String rootCertPath) { this.rootCertPath = rootCertPath; } public String getAlipayPublicCertPath() { return alipayPublicCertPath; } public void setAlipayPublicCertPath(String alipayPublicCertPath) { this.alipayPublicCertPath = alipayPublicCertPath; } public String getPrivateKey() { return privateKey; } public void setPrivateKey(String privateKey) { this.privateKey = privateKey; } } ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayUtils.java
New file @@ -0,0 +1,118 @@ package com.stylefeng.guns.modular.system.util.alipay; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.AlipayFundTransUniTransferModel; import com.alipay.api.domain.Participant; import com.alipay.api.request.AlipayFundTransUniTransferRequest; import com.alipay.api.response.AlipayFundTransUniTransferResponse; public class AlipayUtils { public static void main(String[] args) throws AlipayApiException { // 初始化SDK AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig()); // 构造请求参数以调用接口 AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); // 设置商家侧唯一订单号 model.setOutBizNo("2025080400001"); // 设置订单总金额 model.setTransAmount("0.01"); // 设置描述特定的业务场景 model.setBizScene("DIRECT_TRANSFER"); // 设置业务产品码 model.setProductCode("TRANS_ACCOUNT_NO_PWD"); // 设置转账业务的标题 model.setOrderTitle("司机提现"); // 设置收款方信息 Participant payeeInfo = new Participant(); payeeInfo.setIdentity("18398968484"); payeeInfo.setCertType("IDENTITY_CARD"); payeeInfo.setCertNo("51370119991015653X"); payeeInfo.setName("陈昆"); payeeInfo.setIdentityType("ALIPAY_LOGON_ID"); model.setPayeeInfo(payeeInfo); // 设置业务备注 model.setRemark("司机提现"); // 设置转账业务请求的扩展参数 model.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}"); request.setBizModel(model); AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request); System.err.println(response.getBody()); if (response.isSuccess()) { System.err.println("调用成功"); } else { System.err.println("调用失败"); // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接 // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); // System.out.println(diagnosisUrl); } } /** * 提现 */ public static String aliWithdrawal(String outBizNo, String money, String account, String idCard,String userName) throws AlipayApiException { // 初始化SDK AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig()); // 构造请求参数以调用接口 AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); // 设置商家侧唯一订单号 model.setOutBizNo(outBizNo); // 设置订单总金额 model.setTransAmount(money); // 设置描述特定的业务场景 model.setBizScene("DIRECT_TRANSFER"); // 设置业务产品码 model.setProductCode("TRANS_ACCOUNT_NO_PWD"); // 设置转账业务的标题 model.setOrderTitle("司机提现"); // 设置收款方信息 Participant payeeInfo = new Participant(); payeeInfo.setIdentity(account); payeeInfo.setCertType("IDENTITY_CARD"); payeeInfo.setCertNo(idCard); payeeInfo.setName(userName); payeeInfo.setIdentityType("ALIPAY_LOGON_ID"); model.setPayeeInfo(payeeInfo); // 设置业务备注 model.setRemark("司机提现"); // 设置转账业务请求的扩展参数 model.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}"); request.setBizModel(model); AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request); System.out.println(response.getBody()); if (response.isSuccess()) { System.out.println("调用成功"); } else { System.out.println("调用失败"); } return response.getBody(); } private static AlipayConfig getAlipayConfig() { String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHyTR7MWUrHoxoCA0g19QP3RtuTLYI/c0WmUZPp66pzTtldO0ctfGmfECboBfrriVjqQSm+ZByd3PR818SQooJXKm2Zf+JIf29vHQexotEoG/GOJjc7T9Ez/2Q/nuxnTVAosy092gM8Fu11lbX8SXi5w1vKNI6ApxIgU2gWHeLVHOkJosFxDIz5CrNlP4BGZRhW543xGi5/hpXrHNYno69fLXPOKwN+TQh8JW4xaqtebXd9wcWofAoeoel/BhdPAlb8NtkGzv7/ar7CzMrS8scjgJw48muN7XwmoJnlF92nb/7F6vEI/7l0tfeJqyFDSIKrgqfmcfBzD9uBPJwH0nhAgMBAAECggEACEb4nwXcz+sVzgWnnzfo4mqtEGU2t4eZJ+aCBbsIB6vOEho1lgl1SJvMaHAy5RgBiXi1IuSVrJShh8vZIMjTl0yBv++pyxc6W4WQYovh03YgOiobD2Sa9bvkDiGlMqeNpnoGFoX6XseMH6KIOrOlhpZlGECZyBV+p2DSdZLO/rw5Z0e0KoWa9WvG0ilT9SEphXlcjNg+dYQHcymZgqjagN4PHipecHRXEUEw7sJR4vsqmzDwzyUi/f3eKPgp1C/p2Yv3El+L3ibU6lTB255fM7G3xlZhmaTOsoKw9h1AAumyWzwkzX8zU23GdxKw6YyxJPiow26xZyzKMABpPywUkQKBgQDFurbvZxKEY+9aep8QjISve+agGbUWQ8YtMxGlVST5ZklJArmWBt5c9nJKGuSS22v5q3ljLdFE1+KGj5VcAVml1DhU7l/pzHzWEBRmmOgQ3n5t7QDD0YMPKs4QSaGKr3cX4r8sbFb9FBQOapeK0Auy4GvHSor86mNj3etM+Q4t7QKBgQCvzUxFau6WnRf6bbyReJxp8y16SpvUj058F+nmiiXiYf6PUtdZg/JvxUTeG2VgiDrfvSAE69SRvRchI1Mj49CSeKyAq8aVbMh4Dio+Sjh8JQK768Aq1bHfyJferl8eVNnOrPq+7vcu5DGgELzSXEevheftVLVIcmgxkl5jbNttRQKBgBmiCvUeN5hSHEVugBB1Jv5Y4Zz/uCoavyY86Jy2XQS37eg5IjYAzfLfQBG7SsZ/C5BiWmoxFmAGXKd1FbfHtQd6a5MXE/gLOmPF0d87E1qcfWdiwiagkoz0z6Hs6bRA6v99tarcoKpOYAs+ZkbokZuu3EoJr9r5x8i6jDZ+UwhBAoGAUlVexCAJb2ZRRYrBRovrDT/Da8OnaYxYIIv+kmbeyUBFvQ/6JUVDdI856p+AAg6rK//iEAv2uO6K940YsfVOyFpVx8krLu4MkRVpOVT/UTzwI9yMWkNMk9bZMYQOriDlBQNER8mY4FAk4acVF5v6Qrz+2srSQAS8wYKgTAY+WdUCgYEAsf/VlYGaxEhOGI1i7Zh8gQ5AyelgBO0uqPYetFbEkL+8FrU/BgoS219bK3GjpsEgM2QZs1D8TugUP+uvCSQNQ5js0Hqu+XyhJkBPnwSJpv/dXyQ6KoBg+U2rrna8MRTM/Y/jKHReqo5mMXMl3MMsRTRO5R5PVgfZ+soX81bvhEY="; AlipayConfig alipayConfig = new AlipayConfig(); alipayConfig.setPrivateKey(privateKey); alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); alipayConfig.setAppId("2021005181621462"); alipayConfig.setCharset("UTF-8"); alipayConfig.setSignType("RSA2"); alipayConfig.setFormat("json"); alipayConfig.setAppCertPath("D:/alipayCert/appCertPublicKey_2021005181621462.crt"); alipayConfig.setAlipayPublicCertPath("D:/alipayCert/alipayCertPublicKey_RSA2.crt"); alipayConfig.setRootCertPath("D:/alipayCert/alipayRootCert.crt"); return alipayConfig; } } ManagementZYTravel/guns-admin/src/main/resources/application.yml
@@ -63,9 +63,10 @@ spring: datasource: url: jdbc:mysql://127.0.0.1:3306/zytravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai # url: jdbc:mysql://192.168.110.80:3306/zytravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai username: root password: 0KiwEhl6EnIFWNqB7d1FJLWKy9urjvMS # url: jdbc:mysql://192.168.110.80:3306/zytravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai # username: root # password: 123456 db-name: guns #用来搜集数据库的所有表 filters: wall,mergeStat @@ -115,4 +116,10 @@ threadsInheritContextClassLoaderOfInitializingThread: true job-store-type: jdbc --- alipay: appId: "2021005181621462" #应用程序唯一标识 appCertPath: "D:\\alipayCert\\appCertPublicKey_2021005181621462.crt" #应用公钥 rootCertPath: "D:\\alipayCert\\alipayRootCert.crt" #支付宝根证书 alipayPublicCertPath: "D:\alipayCert\alipayCertPublicKey_RSA2.crt" #支付宝公钥 privateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHyTR7MWUrHoxoCA0g19QP3RtuTLYI/c0WmUZPp66pzTtldO0ctfGmfECboBfrriVjqQSm+ZByd3PR818SQooJXKm2Zf+JIf29vHQexotEoG/GOJjc7T9Ez/2Q/nuxnTVAosy092gM8Fu11lbX8SXi5w1vKNI6ApxIgU2gWHeLVHOkJosFxDIz5CrNlP4BGZRhW543xGi5/hpXrHNYno69fLXPOKwN+TQh8JW4xaqtebXd9wcWofAoeoel/BhdPAlb8NtkGzv7/ar7CzMrS8scjgJw48muN7XwmoJnlF92nb/7F6vEI/7l0tfeJqyFDSIKrgqfmcfBzD9uBPJwH0nhAgMBAAECggEACEb4nwXcz+sVzgWnnzfo4mqtEGU2t4eZJ+aCBbsIB6vOEho1lgl1SJvMaHAy5RgBiXi1IuSVrJShh8vZIMjTl0yBv++pyxc6W4WQYovh03YgOiobD2Sa9bvkDiGlMqeNpnoGFoX6XseMH6KIOrOlhpZlGECZyBV+p2DSdZLO/rw5Z0e0KoWa9WvG0ilT9SEphXlcjNg+dYQHcymZgqjagN4PHipecHRXEUEw7sJR4vsqmzDwzyUi/f3eKPgp1C/p2Yv3El+L3ibU6lTB255fM7G3xlZhmaTOsoKw9h1AAumyWzwkzX8zU23GdxKw6YyxJPiow26xZyzKMABpPywUkQKBgQDFurbvZxKEY+9aep8QjISve+agGbUWQ8YtMxGlVST5ZklJArmWBt5c9nJKGuSS22v5q3ljLdFE1+KGj5VcAVml1DhU7l/pzHzWEBRmmOgQ3n5t7QDD0YMPKs4QSaGKr3cX4r8sbFb9FBQOapeK0Auy4GvHSor86mNj3etM+Q4t7QKBgQCvzUxFau6WnRf6bbyReJxp8y16SpvUj058F+nmiiXiYf6PUtdZg/JvxUTeG2VgiDrfvSAE69SRvRchI1Mj49CSeKyAq8aVbMh4Dio+Sjh8JQK768Aq1bHfyJferl8eVNnOrPq+7vcu5DGgELzSXEevheftVLVIcmgxkl5jbNttRQKBgBmiCvUeN5hSHEVugBB1Jv5Y4Zz/uCoavyY86Jy2XQS37eg5IjYAzfLfQBG7SsZ/C5BiWmoxFmAGXKd1FbfHtQd6a5MXE/gLOmPF0d87E1qcfWdiwiagkoz0z6Hs6bRA6v99tarcoKpOYAs+ZkbokZuu3EoJr9r5x8i6jDZ+UwhBAoGAUlVexCAJb2ZRRYrBRovrDT/Da8OnaYxYIIv+kmbeyUBFvQ/6JUVDdI856p+AAg6rK//iEAv2uO6K940YsfVOyFpVx8krLu4MkRVpOVT/UTzwI9yMWkNMk9bZMYQOriDlBQNER8mY4FAk4acVF5v6Qrz+2srSQAS8wYKgTAY+WdUCgYEAsf/VlYGaxEhOGI1i7Zh8gQ5AyelgBO0uqPYetFbEkL+8FrU/BgoS219bK3GjpsEgM2QZs1D8TugUP+uvCSQNQ5js0Hqu+XyhJkBPnwSJpv/dXyQ6KoBg+U2rrna8MRTM/Y/jKHReqo5mMXMl3MMsRTRO5R5PVgfZ+soX81bvhEY=" #应用私钥 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -1401,4 +1401,52 @@ e.printStackTrace(); } } /** * 专车微信退款成功回调 * @param request * @param response */ @ResponseBody @PostMapping("/base/transferWXNotify") public void transferWXNotify(HttpServletRequest request, HttpServletResponse response){ try { Map<String, String> map = payMoneyUtil.wxRefundCallback(request); if(null != map){ String order_id = map.get("refund_id"); String out_refund_no = map.get("out_refund_no"); String refund_fee = map.get("refund_fee"); String result = map.get("result"); if(ToolUtil.isNotEmpty(out_refund_no) && ToolUtil.isNotEmpty(order_id)){ PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); String[] split = out_refund_no.split(","); try{ Integer.valueOf(split[0]); }catch (Exception e){ split = split[0].split("_"); } Integer id = Integer.valueOf(split[0]); Integer type = Integer.valueOf(split[1]); switch (type){ case 1: OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(id); if(orderPrivateCar.getState() == 10 || orderPrivateCar.getState() == 12){ //添加交易明细 transactionDetailsService.saveData(orderPrivateCar.getUserId(), "专车取消退款", Double.valueOf(refund_fee), 2, 1, 1, 1, id); }else { transactionDetailsService.saveData(orderPrivateCar.getUserId(), "专车差价退款", Double.valueOf(refund_fee), 2, 1, 1, 1, id); } break; } } } }catch (Exception e){ e.printStackTrace(); } } } UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/controller/OrderPrivateCarController.java
@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -57,9 +58,69 @@ * @param request * @return */ // @ResponseBody // @PostMapping("/api/orderPrivateCar/saveOrderPrivateCar") // @ApiOperation(value = "专车下单/扫码下单", tags = {"用户端-专车"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(value = "订单类型(1=普通订单,2=摆渡订单)", name = "type", required = true, dataType = "int"), // @ApiImplicitParam(value = "服务车型id(扫码下单不用上传)", name = "serverCarModelId", required = false, dataType = "int"), // @ApiImplicitParam(value = "出行时间(2020-08-20 10:10)", name = "travelTime", required = true, dataType = "string"), // @ApiImplicitParam(value = "是否预约(1=否,2=是)", name = "orderType", required = true, dataType = "int"), // @ApiImplicitParam(value = "是否代下单(0=否,1=是)", name = "substitute", required = true, dataType = "int"), // @ApiImplicitParam(value = "下单地点经度", name = "placementLon", required = true, dataType = "string"), // @ApiImplicitParam(value = "下单地点纬度", name = "placementLat", required = true, dataType = "string"), // @ApiImplicitParam(value = "起点经度", name = "startLon", required = true, dataType = "string"), // @ApiImplicitParam(value = "起点纬度", name = "startLat", required = true, dataType = "string"), // @ApiImplicitParam(value = "起点地址", name = "startAddress", required = true, dataType = "string"), // @ApiImplicitParam(value = "终点经度", name = "endLon", required = true, dataType = "string"), // @ApiImplicitParam(value = "终点纬度", name = "endLat", required = true, dataType = "string"), // @ApiImplicitParam(value = "终点地址", name = "endAddress", required = true, dataType = "string"), // @ApiImplicitParam(value = "订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单)", name = "orderSource", required = true, dataType = "int"), // @ApiImplicitParam(value = "司机id(扫码下单必传)", name = "driverId", required = false, dataType = "int"), // @ApiImplicitParam(value = "乘客姓名(代下单必传)", name = "passengers", required = false, dataType = "string"), // @ApiImplicitParam(value = "乘客电话(代下单必传)", name = "passengersPhone", required = false, dataType = "string"), // @ApiImplicitParam(value = "预估价", name = "estimatedPrice", required = false, dataType = "BigDecimal"), // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) // public ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer orderType, Integer substitute, String placementLon, String placementLat, String startLon, String startLat, // String startAddress, String endLon, String endLat, String endAddress, String passengers, String passengersPhone, Integer orderSource, Integer driverId, // Integer type, BigDecimal estimatedPrice, HttpServletRequest request){ // try { // Integer uid = userInfoService.getUserIdFormRedis(request); // if(null == uid){ // return ResultUtil.tokenErr(); // } // return orderPrivateCarService.saveOrderPrivateCar(serverCarModelId, travelTime, orderType, substitute, placementLon, placementLat, // startLon, startLat, startAddress, endLon, endLat, endAddress, passengers, passengersPhone, orderSource, driverId, type, uid,estimatedPrice); // }catch (Exception e){ // e.printStackTrace(); // return ResultUtil.runErr(); // } // } /** * 专车下单 * @param serverCarModelId * @param travelTime * @param orderType * @param substitute * @param placementLon * @param placementLat * @param startLon * @param startLat * @param startAddress * @param endLon * @param endLat * @param endAddress * @param passengers * @param passengersPhone * @param orderSource * @param driverId * @param request * @return */ @ResponseBody @PostMapping("/api/orderPrivateCar/saveOrderPrivateCar") @ApiOperation(value = "专车下单/扫码下单", tags = {"用户端-专车"}, notes = "") @ApiOperation(value = "专车下单/扫码下单[0731]", tags = {"用户端-专车"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单类型(1=普通订单,2=摆渡订单)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(value = "服务车型id(扫码下单不用上传)", name = "serverCarModelId", required = false, dataType = "int"), @@ -79,18 +140,21 @@ @ApiImplicitParam(value = "乘客姓名(代下单必传)", name = "passengers", required = false, dataType = "string"), @ApiImplicitParam(value = "乘客电话(代下单必传)", name = "passengersPhone", required = false, dataType = "string"), @ApiImplicitParam(value = "预估价", name = "estimatedPrice", required = false, dataType = "BigDecimal"), @ApiImplicitParam(value = "城市code", name = "cityCode", required = true, dataType = "string"), @ApiImplicitParam(value = "钱下标", name = "carIndex", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer orderType, Integer substitute, String placementLon, String placementLat, String startLon, String startLat, String startAddress, String endLon, String endLat, String endAddress, String passengers, String passengersPhone, Integer orderSource, Integer driverId, Integer type, BigDecimal estimatedPrice, HttpServletRequest request){ Integer type, BigDecimal estimatedPrice, String cityCode, Integer carIndex, HttpServletRequest request){ try { Integer uid = userInfoService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return orderPrivateCarService.saveOrderPrivateCar(serverCarModelId, travelTime, orderType, substitute, placementLon, placementLat, startLon, startLat, startAddress, endLon, endLat, endAddress, passengers, passengersPhone, orderSource, driverId, type, uid,estimatedPrice); startLon, startLat, startAddress, endLon, endLat, endAddress, passengers, passengersPhone, orderSource, driverId, type, uid,estimatedPrice,cityCode,carIndex); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -406,6 +406,43 @@ @ApiModelProperty(value = "修改价格审核 1=待审核 2=通过") @TableField("priceAuditState") private Integer priceAuditState; @ApiModelProperty(value = "支付流水号") @TableField("transactionId") private String transactionId; /** * 预付金额 */ @TableField("paymentAdvanceMoney") private Double paymentAdvanceMoney; /** * 支付方式(0:预付1:后付) */ @TableField("payMethod") private Integer payMethod; public Integer getPayMethod() { return payMethod; } public void setPayMethod(Integer payMethod) { this.payMethod = payMethod; } public Double getPaymentAdvanceMoney() { return paymentAdvanceMoney; } public void setPaymentAdvanceMoney(Double paymentAdvanceMoney) { this.paymentAdvanceMoney = paymentAdvanceMoney; } public String getTransactionId() { return transactionId; } public void setTransactionId(String transactionId) { this.transactionId = transactionId; } public Integer getPriceAuditState() { return priceAuditState; UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java
@@ -37,7 +37,28 @@ */ ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, String startLon, String startLat, String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid, BigDecimal estimatedPrice) throws Exception; String phone, Integer orderSource, Integer driverId, Integer type, Integer uid, BigDecimal estimatedPrice, String cityCode,Integer carIndex) throws Exception; // /** // * 专车下单操作 // * @param serverCarModelId 服务车型id // * @param travelTime 出行时间 // * @param reservation 是否预约(1=否,2=是) // * @param instead 是否代下单(0=否,1=是) // * @param startLon 起点经度 // * @param startLat 起点纬度 // * @param startAddress 起点详细地址 // * @param endLon 终点经度 // * @param endLat 终点纬度 // * @param endAddress 终点详细地址 // * @param name 乘客姓名 // * @param phone 乘客电话 // * @return // * @throws Exception // */ // ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, // String startLon, String startLat, String startAddress, String endLon, String endLat, String endAddress, String name, // String phone, Integer orderSource, Integer driverId, Integer type, Integer uid, BigDecimal estimatedPrice) throws Exception; /** UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -18,10 +18,7 @@ import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.service.impl.OrderPositionServiceImpl; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.EndPushWarpper; import com.stylefeng.guns.modular.system.warpper.OrderInfoWarpper; import com.stylefeng.guns.modular.system.warpper.OrderServerWarpper; import com.stylefeng.guns.modular.system.warpper.*; import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.model.PaymentRecord; @@ -35,6 +32,7 @@ import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -167,7 +165,10 @@ @Autowired private IAssignOrderService assignOrderService; @Autowired private IOpenCityService openCityService; @Autowired private IServerCarModelService serverCarModelService; // @Autowired // private ALiSendSms aLiSendSms; @@ -207,7 +208,8 @@ */ @Override public synchronized ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, String startLon, String startLat, String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid,BigDecimal estimatedPrice) throws Exception { String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid, BigDecimal estimatedPrice,String cityCode,Integer carIndex) throws Exception { //如果出行时间大于当前10分钟则默认为预约单 if(travelTime.getTime() > (System.currentTimeMillis() + 600000)){ @@ -319,28 +321,41 @@ CarService query1 = carServiceMapper.query(1, driver.getCarId()); orderPrivateCar.setServerCarModelId(query1.getServerCarModelId()); orderPrivateCar.setSnatchOrderTime(new Date()); //调用高德创建轨迹 // String s = gdFalconUtil.selectTerminal(driver.getPhone()); // String track = gdFalconUtil.createTrack(s); // JSONObject jsonObject = JSONObject.parseObject(track); // orderPrivateCar.setTrackId(String.valueOf(jsonObject.getInteger("trid"))); //调用移动的小号接口 /* Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); Region region = regionMapper.query(geocode1.get("districtCode"));*/ // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), null); // if(String.valueOf(map.get("code")).equals("200")){ // orderPrivateCar.setTelX(map.get("telX")); // orderPrivateCar.setBindId(map.get("bindId")); // } driver.setState(3); driverService.updateById(driver); } // 查询城市的订单额度 OpenCity openCity = openCityService.selectOne(new EntityWrapper<OpenCity>() .eq("code", cityCode) .ne("flag", 3) .orderBy("orderMagnitude", false) .last("LIMIT 1")); // 查询预估价格 ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1); List<ServerCarModelWarpper> data = listResultUtil.getData(); data = data.stream().filter(e -> serverCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList()); if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){ orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); orderPrivateCar.setState(7); if(orderSource == 2){ orderPrivateCar.setOrderMoney(data.get(0).getAmount()); }else { orderPrivateCar.setOrderMoney(data.get(carIndex).getAmount()); } orderPrivateCar.setPayMethod(0); this.insert(orderPrivateCar); BaseWarpper baseWarpper = new BaseWarpper(); baseWarpper.setId(orderPrivateCar.getId()); baseWarpper.setState(orderPrivateCar.getState()); baseWarpper.setPayMethod(0); baseWarpper.setAmount(orderPrivateCar.getOrderMoney()); return ResultUtil.success(baseWarpper); }else { orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); orderPrivateCar.setPayMethod(1); this.insert(orderPrivateCar); if(orderSource == 2){//扫码下单 @@ -462,22 +477,6 @@ } }).start(); } //调用高德创建轨迹 // String s = gdFalconUtil.selectTerminal(dr.getPhone()); // String track = gdFalconUtil.createTrack(s); // orderPrivateCar.setTrackId(track); //调用移动的小号接口 /* Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); Region region = regionMapper.query(geocode1.get("districtCode"));*/ // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), dr.getPhone(), null); // if(String.valueOf(map.get("code")).equals("200")){ // orderPrivateCar.setTelX(map.get("telX")); // orderPrivateCar.setBindId(map.get("bindId")); // } this.updateById(orderPrivateCar); //发送短信给司机 @@ -496,16 +495,317 @@ if(orderPrivateCar.getState() == 1){ this.pushOrder(orderPrivateCar); } //添加消息 systemNoticeService.addSystemNotice(1, "您的专车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1); BaseWarpper baseWarpper = new BaseWarpper(); baseWarpper.setState(orderPrivateCar.getState()); baseWarpper.setId(orderPrivateCar.getId()); baseWarpper.setPayMethod(1); return ResultUtil.success(baseWarpper); } } // @Override // public synchronized ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, String startLon, String startLat, // String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid,BigDecimal estimatedPrice) throws Exception { // // //如果出行时间大于当前10分钟则默认为预约单 // if(travelTime.getTime() > (System.currentTimeMillis() + 600000)){ // reservation = 2; // } // // /** // * 1.下了即时单就不能下预约单和即时单 // * 2.下了预约单和再下一张即时单不能再下预约单 // */ // List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); // if(orderPrivateCars.size() > 0){ // return ResultUtil.error("有未完成的订单"); // } // List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); // if(list.size() > 0){ // return ResultUtil.error("有未完成的订单"); // } // // orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); // if(orderPrivateCars.size() > 0 && reservation == 2){ // return ResultUtil.error("有未完成的订单"); // } // // orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 1, 1, 7,12); // if(orderPrivateCars.size() > 0){ // BaseWarpper baseWarpper = new BaseWarpper(); // baseWarpper.setState(7); // baseWarpper.setId(orderPrivateCars.get(0).getId()); // return ResultUtil.success(baseWarpper); // } // // // list = orderTaxiMapper.queryByState_(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); // if(list.size() > 0 && reservation == 2){ // return ResultUtil.error("有未完成的订单"); // } // // startAddress = startAddress.replaceAll("& #40;", "("); // startAddress = startAddress.replaceAll("& #41;", ")"); // endAddress = endAddress.replaceAll("& #40;", "("); // endAddress = endAddress.replaceAll("& #41;", ")"); // if((orderSource == 1 || orderSource == 3) && null == serverCarModelId){ // return ResultUtil.error("请选择服务车型"); // } // // OrderPrivateCar orderPrivateCar = new OrderPrivateCar(); // orderPrivateCar.setType(type); // orderPrivateCar.setUserId(uid); // orderPrivateCar.setServerCarModelId(serverCarModelId); // orderPrivateCar.setOrderNum(this.getOrderNum()); // orderPrivateCar.setPlacementLon(Double.valueOf(placementLon)); // orderPrivateCar.setPlacementLat(Double.valueOf(placementLat)); // Map<String, String> geocode = gdMapGeocodingUtil.geocode(placementLon, placementLat); // orderPrivateCar.setPlacementAddress(geocode.get("address")); // orderPrivateCar.setStartLon(Double.valueOf(startLon)); // orderPrivateCar.setStartLat(Double.valueOf(startLat)); // orderPrivateCar.setStartAddress(startAddress); // orderPrivateCar.setEndLon(Double.valueOf(endLon)); // orderPrivateCar.setEndLat(Double.valueOf(endLat)); // orderPrivateCar.setEndAddress(endAddress); // orderPrivateCar.setSubstitute(instead); // orderPrivateCar.setPassengers(name); // orderPrivateCar.setPassengersPhone(phone); // if(instead == 0 || ToolUtil.isEmpty(orderPrivateCar.getPassengers())){ // UserInfo userInfo = userInfoService.selectById(uid); // if(ToolUtil.isEmpty(userInfo.getPhone())){ // return ResultUtil.error("请先绑定手机号码"); // } // orderPrivateCar.setPassengers(userInfo.getName()); // orderPrivateCar.setPassengersPhone(userInfo.getPhone()); // } // orderPrivateCar.setState(1); // orderPrivateCar.setInsertTime(new Date()); // orderPrivateCar.setTravelTime(travelTime); // orderPrivateCar.setOrderType(reservation); // orderPrivateCar.setOrderSource(orderSource); // orderPrivateCar.setEstimatedPrice(estimatedPrice); // if(orderSource == 2){//扫码下单 // Driver driver = driverService.selectById(driverId); // if(null == driver){ // return ResultUtil.error("司机信息有误,无法完成下单"); // } // if(driver.getAuthState() == 1){ // return ResultUtil.error("司机信息还未完成审核,无法完成下单"); // } // if(driver.getAuthState() == 3){ // return ResultUtil.error("司机账户已被冻结,无法提供服务"); // } // if(driver.getAuthState() == 4){ // return ResultUtil.error("司机信息未通过审核,无法提供服务"); // } // if(driver.getState() == 1){ // return ResultUtil.error("司机还未上线,无法提供服务"); // } // if(driver.getState() == 3){ // return ResultUtil.error("司机正在服务中,无法提供服务"); // } // List<DriverService> query = driverServiceService.query(driverId, 1); // if(query.size() == 0){ // return ResultUtil.error("该司机不能服务此业务"); // } // // orderPrivateCar.setDriverId(driverId); // orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( // driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); // orderPrivateCar.setState(2); // orderPrivateCar.setCarId(driver.getCarId()); // CarService query1 = carServiceMapper.query(1, driver.getCarId()); // orderPrivateCar.setServerCarModelId(query1.getServerCarModelId()); // orderPrivateCar.setSnatchOrderTime(new Date()); // // //调用高德创建轨迹 //// String s = gdFalconUtil.selectTerminal(driver.getPhone()); //// String track = gdFalconUtil.createTrack(s); //// JSONObject jsonObject = JSONObject.parseObject(track); //// orderPrivateCar.setTrackId(String.valueOf(jsonObject.getInteger("trid"))); // // //调用移动的小号接口 // /* Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); // Region region = regionMapper.query(geocode1.get("districtCode"));*/ //// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), null); //// if(String.valueOf(map.get("code")).equals("200")){ //// orderPrivateCar.setTelX(map.get("telX")); //// orderPrivateCar.setBindId(map.get("bindId")); //// } // // driver.setState(3); // driverService.updateById(driver); // } // // orderPrivateCar.setIsReassign(1); // orderPrivateCar.setIsDelete(1); // this.insert(orderPrivateCar); // // if(orderSource == 2){//扫码下单 // new Thread(new Runnable() { // @Override // public void run() { // pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0); // pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0); // pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1); // } // }).start(); // } // // // // TODO: 2021/5/11 修改,根据后台设定的派单范围查询范围内有无司机,将单子指派给距离最近的司机(距离相同随机取),范围内没有司机再进行推单流程 // if(orderPrivateCar.getState() == 1){ // Company query = companyCityService.query(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); // if(null == query){ // return ResultUtil.error("起点暂未企业提供服务"); // } // AssignOrder assignOrder = assignOrderService.selectOne(new EntityWrapper<AssignOrder>().eq("companyId", query.getId()).eq("type", 1)); // if(null != assignOrder){//配置了指派规则才处理 // boolean lock = redisUtil.lock("order_lock", 10); // if(!lock){ // int num1 = 1; // while (num1 <= 10){ // Thread.sleep(3000);//等待3秒 // lock = redisUtil.lock("order_lock", 10); // if(lock){ // break; // }else{ // num1++; // } // } // } // try { // //获取空闲司机 // List<Driver> drivers = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), assignOrder.getDistance(), null);//获取范围内空闲司机 // List<Integer> driverIds = drivers.stream().map(Driver::getId).collect(Collectors.toList()); // if(drivers.size() > 0) {//有司机,直接指派给司机 // Driver dr = null; // if (drivers.size() > 1) { // List<Driver> ds = new ArrayList<>();//存储直线距离最近的几个司机 // for (int i = 0; i < assignOrder.getPeople(); i++) { // Driver driver = null; // int m = 0; // int index = 0; // // 查询预约单 // List<OrderPrivateCar> orderPrivateCarss = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6, 11); // List<Integer> orderPrivateCarDriverIds = orderPrivateCars.stream().map(OrderPrivateCar::getDriverId).collect(Collectors.toList()); // for (int j = 0; j < drivers.size(); j++) { // Driver driver1 = drivers.get(j); // if (orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())) { // continue; // } // // 判断该司机是否有30分钟内预约单 // long count = orderPrivateCarss.stream().filter(s -> s.getDriverId().equals(driver1.getId()) && // DateUtil.dateToLocalDateTime(s.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count(); // if (count > 0) { // continue; // } // String value = redisUtil.getValue("DRIVER" + drivers.get(j).getId()); // if (null != value) { //// Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 0);//计算距离 //// Integer d = Integer.valueOf(distance1.get("distance")); // String[] split = value.split(","); // double distance = GDMapGeocodingUtil.getDistance(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); // int d = Double.valueOf(distance).intValue(); // if ((0 == m && null == driver) || (d < m)) { // driver = drivers.get(j); // m = d; // index = j; // } // } // } // ds.add(driver); // drivers.remove(index); // } // // //再根据直线距离最短的司机中找出行驶距离最短的司机 // Integer m = 0; // for (Driver driver : ds) { // String value = redisUtil.getValue("DRIVER" + driver.getId()); // if (null != value) { // Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1);//计算距离 // Integer d = Integer.valueOf(distance1.get("distance")); // if ((0 == m && null == dr) || (d.intValue() < m.intValue())) { // dr = driver; // m = d; // } // } // } // } else { // List<OrderPrivateCar> orderPrivateCarss = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6, 11); // if (orderPrivateCarss.size() == 0) { // dr = drivers.get(0); // } // } // // if (Objects.nonNull(dr)) { // orderPrivateCar.setDriverId(dr.getId()); // orderPrivateCar.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : ( // dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1)); // orderPrivateCar.setState(2); // orderPrivateCar.setCarId(dr.getCarId()); // CarService query1 = carServiceMapper.query(1, dr.getCarId()); // orderPrivateCar.setServerCarModelId(query1.getServerCarModelId()); // orderPrivateCar.setSnatchOrderTime(new Date()); // if (orderPrivateCar.getOrderType() != 2) { // dr.setState(3); // } // driverService.updateById(dr); // new Thread(new Runnable() { // @Override // public void run() { // pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0); // pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0); // pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1); // } // }).start(); // } // // // //调用高德创建轨迹 //// String s = gdFalconUtil.selectTerminal(dr.getPhone()); //// String track = gdFalconUtil.createTrack(s); //// orderPrivateCar.setTrackId(track); // // //调用移动的小号接口 // /* Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); // Region region = regionMapper.query(geocode1.get("districtCode"));*/ //// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), dr.getPhone(), null); //// if(String.valueOf(map.get("code")).equals("200")){ //// orderPrivateCar.setTelX(map.get("telX")); //// orderPrivateCar.setBindId(map.get("bindId")); //// } // // this.updateById(orderPrivateCar); // // //发送短信给司机 //// aLiSendSms.sendSms(dr.getPhone(), "SMS_216832951", "{\"" + orderPrivateCar.getStartAddress() + "\"}"); // } // }catch (Exception e){ // e.printStackTrace(); // }finally { // redisUtil.unlock("order_lock"); // } // } // } // // // //推单操作 // if(orderPrivateCar.getState() == 1){ // this.pushOrder(orderPrivateCar); // } // // // //添加消息 // systemNoticeService.addSystemNotice(1, "您的专车订单已下单成功,我们正在为您指派司机,请稍后!", orderPrivateCar.getUserId(), 1); // // BaseWarpper baseWarpper = new BaseWarpper(); // baseWarpper.setState(orderPrivateCar.getState()); // baseWarpper.setId(orderPrivateCar.getId()); // return ResultUtil.success(baseWarpper); // } /** @@ -783,7 +1083,6 @@ if(userInfo.getBalance() != null && userInfo.getBalance() < query.getMoney()){ return ResultUtil.error("余额不足,无法完成支付", ""); } userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(query.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); //添加交易明细 transactionDetailsService.saveData(uid, "取消订单", query.getMoney(), 2, 1, 1, 1, id); @@ -1062,6 +1361,12 @@ Integer uid = orderPrivateCar.getUserId(); Double orderMoney = orderPrivateCar.getOrderMoney(); System.out.println("=========================订单金额====================="+orderMoney); if(Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney() > 0){ double couponMoney1 = Objects.nonNull(orderPrivateCar.getCouponMoney()) ? orderPrivateCar.getCouponMoney() : 0.00; orderMoney = orderMoney - orderPrivateCar.getPaymentAdvanceMoney() - couponMoney1; System.out.println("=========================减去先付后金额====================="+orderMoney); } UserInfo userInfo = userInfoService.selectById(uid); ResultUtil resultUtil = ResultUtil.success(new HashMap<>()); orderPrivateCar.setCouponMoney(0D);//初始化历史数据 @@ -1205,10 +1510,10 @@ transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId); userInfoService.updateById(userInfo); orderPrivateCar.setState(8); // orderPrivateCar.setState(8); orderPrivateCar.setPayType(3); orderPrivateCar.setPayMoney(orderMoney); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); // orderPrivateCar.setPayMoney(orderMoney); // orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); //处理优惠券和红包 if(null != userCouponRecord){ @@ -1221,6 +1526,61 @@ query.setEndTime(new Date()); userRedPacketRecordService.updateById(query); } if(orderPrivateCar.getPayMethod() == 0){ // 先付 if(Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney() > 0){ orderPrivateCar.setPayMoney(new BigDecimal(orderMoney).add(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())).doubleValue()); orderPrivateCar.setOrderMoney(orderPrivateCar.getPayMoney()); //添加已收入明细 Company company = companyService.selectById(orderPrivateCar.getCompanyId()); Double speMoney = company.getSpeMoney(); BigDecimal d = null;//企业收入 BigDecimal c = null;//司机收入 if(company.getIsSpeFixedOrProportional() == 2){//固定 d = new BigDecimal(speMoney); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 if(c.compareTo(BigDecimal.ZERO)<1){ c = BigDecimal.ZERO; } } if(company.getIsSpeFixedOrProportional() == 1){//比例 Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney(); d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); } incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driverService.updateById(driver); orderPrivateCar.setState(8); }else { if(orderPrivateCar.getOrderSource() == 2){ orderPrivateCar.setState(2); }else { orderPrivateCar.setState(1); } orderPrivateCar.setPaymentAdvanceMoney(orderMoney); orderPrivateCar.setOrderMoney(orderMoney); orderPrivateCar.setPayMoney(orderMoney); } new Thread(new Runnable() { @Override public void run() { pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0); pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0); } }).start(); systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1); if(orderPrivateCar.getState() == 1){ this.pushOrder(orderPrivateCar); } }else { // 后付 orderPrivateCar.setPayMoney(orderMoney); if(orderPrivateCar.getIsplatPay()==1){ //添加已收入明细 Company company = companyService.selectById(orderPrivateCar.getCompanyId()); @@ -1230,6 +1590,9 @@ if(company.getIsSpeFixedOrProportional() == 2){//固定 d = new BigDecimal(speMoney); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 if(c.compareTo(BigDecimal.ZERO)<1){ c = BigDecimal.ZERO; } } if(company.getIsSpeFixedOrProportional() == 1){//比例 Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney(); @@ -1256,6 +1619,7 @@ }).start(); systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1); } } this.updateAllColumnById(orderPrivateCar); @@ -1374,6 +1738,32 @@ //添加交易明细 transactionDetailsService.saveData(orderPrivateCar.getUserId(), "取消订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId()); orderPrivateCar.setState(10); // 判断订单金额是否为空或者为0 if(orderPrivateCar.getPayMethod() == 0){ // 先付 Double refundMoney = orderPrivateCar.getOrderMoney(); if(Objects.nonNull(orderPrivateCar.getCouponMoney())){ refundMoney = new BigDecimal(refundMoney).subtract(new BigDecimal(orderPrivateCar.getCouponMoney())).doubleValue(); } // 退款 if(orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() !=0){//微信退款 // 微信退款 payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(),orderPrivateCar.getOrderNum(),String.valueOf(orderPrivateCar.getOrderMoney()),String.valueOf(refundMoney),"/base/transferWXNotify"); } if(orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() !=0) {//支付宝退款 // 支付宝退款 payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(),String.valueOf(refundMoney*100)); } if(orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() !=0) {//余额退款 // 余额退款 UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(new BigDecimal(refundMoney)).doubleValue()); userInfoService.updateById(userInfo); //添加交易明细 transactionDetailsService.saveData(orderPrivateCar.getUserId(), "专车取消退款", refundMoney, 2, 1, 1, 1, id); } } //解除小号绑定 // if(orderPrivateCar.getBindId() != null){ // chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId(),orderPrivateCar.getTelX()); @@ -1448,10 +1838,9 @@ return; } transactionDetailsService.saveData(orderPrivateCar.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId()); orderPrivateCar.setState(8); // orderPrivateCar.setState(8); orderPrivateCar.setPayType(type); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); orderPrivateCar.setPayMoney(query.getAmount()); orderPrivateCar.setTransactionId(order_id); this.updateById(orderPrivateCar); UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); @@ -1477,6 +1866,53 @@ query.setCode(order_id); paymentRecordService.updateById(query); // 判断先付还是后付 if(orderPrivateCar.getPayMethod() == 0){ if (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney() > 0 ) { orderPrivateCar.setState(8); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+query.getAmount()); orderPrivateCar.setPayMoney(orderPrivateCar.getPayMoney()+query.getAmount()); //添加已收入明细 Company company = companyService.selectById(orderPrivateCar.getCompanyId()); Double speMoney = company.getSpeMoney(); BigDecimal d = null;//企业收入 BigDecimal c = null;//司机收入 if(company.getIsSpeFixedOrProportional() == 2){//固定 d = new BigDecimal(speMoney); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 if(c.compareTo(BigDecimal.ZERO)<1){ c = BigDecimal.ZERO; } } if(company.getIsSpeFixedOrProportional() == 1){//比例 Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney(); d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); } incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driverService.updateById(driver); }else { if(orderPrivateCar.getOrderSource() == 2){ orderPrivateCar.setState(2); }else { orderPrivateCar.setState(1); } orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); orderPrivateCar.setPayMoney(query.getAmount()); orderPrivateCar.setPaymentAdvanceMoney(orderPrivateCar.getOrderMoney()); } this.updateById(orderPrivateCar); }else { orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); orderPrivateCar.setPayMoney(query.getAmount()); orderPrivateCar.setState(8); this.updateById(orderPrivateCar); if(orderPrivateCar.getIsplatPay()==1){ //添加已收入明细 Company company = companyService.selectById(orderPrivateCar.getCompanyId()); @@ -1500,6 +1936,7 @@ driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driverService.updateById(driver); } } // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 new Thread(new Runnable() { @Override UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/OpenCity.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import java.math.BigDecimal; /** * 开通城市 */ @@ -43,7 +45,19 @@ */ @TableField("provinceName") private String provinceName; /** * 订单额度 */ @TableField("orderMagnitude") private BigDecimal orderMagnitude; public BigDecimal getOrderMagnitude() { return orderMagnitude; } public void setOrderMagnitude(BigDecimal orderMagnitude) { this.orderMagnitude = orderMagnitude; } public String getCode() { return code; } UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/BaseWarpper.java
@@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.warpper; import com.baomidou.mybatisplus.annotations.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -33,6 +34,16 @@ @ApiModelProperty("状态") private Integer state; @ApiModelProperty("0先付 1后付") private Integer payMethod; public Integer getPayMethod() { return payMethod; } public void setPayMethod(Integer payMethod) { this.payMethod = payMethod; } public Integer getState() { return state;