UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -924,6 +924,7 @@ if(null == uid){ return ResultUtil.tokenErr(); } if(ToolUtil.isNotEmpty(reason)){ reason = reason.replaceAll("& #40;", "(") .replaceAll("& #41;", ")") .replaceAll("& #40;", "(") @@ -931,6 +932,8 @@ .replaceAll("& #39;", "'") .replaceAll("& lt;", "<") .replaceAll("& gt;", ">"); } if(ToolUtil.isNotEmpty(remark)){ remark = remark.replaceAll("& #40;", "(") .replaceAll("& #41;", ")") .replaceAll("& #40;", "(") @@ -938,6 +941,7 @@ .replaceAll("& #39;", "'") .replaceAll("& lt;", "<") .replaceAll("& gt;", ">"); } switch (orderType){ case 1: return orderPrivateCarService.addCancle(id, reason, remark, uid, lon, lat, address, language); @@ -1752,7 +1756,6 @@ return ResultUtil.tokenErr(); } Double payMoney = 0D; Integer companyId = 1; switch (orderType){ case 1: OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); @@ -1776,7 +1779,7 @@ if(null != query1){ Integer orderNum=orderLogisticsService.selectCount(new EntityWrapper<OrderLogistics>().eq("userId", uid).eq("activityId",query1.getId()).last(" and to_days(getoffTime) = to_days(now())")); if(query1.getDistance()*1000>orderLogistics.getMileage() && query1.getOrderNum()>orderNum){ Double special = query1.getSpecial(); Double special = query1.getLogistics(); if(null != special){ double v = new BigDecimal(orderMoney1).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); payMoney = v; UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/RedEnvelopeController.java
@@ -8,6 +8,7 @@ import com.stylefeng.guns.modular.system.model.UserRedPacketRecord; import com.stylefeng.guns.modular.system.service.IUserInfoService; import com.stylefeng.guns.modular.system.service.IUserRedPacketRecordService; import com.stylefeng.guns.modular.system.util.DateUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.MyRedEnvelope; @@ -93,7 +94,7 @@ baseWarpper.setId(null != map.get("id") ? Integer.valueOf(String.valueOf(map.get("id"))) : 0); baseWarpper.setAmount(null != map.get("money") ? Double.valueOf(String.valueOf(map.get("money"))) : 0); baseWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")) : (language == 1 ? "指定发放" : language == 2 ? "Designated distribution" : "Distribution désignée")); baseWarpper.setContent(null != map.get("insertTime") ? String.valueOf(map.get("insertTime")) : ""); baseWarpper.setContent(null != map.get("insertTime") ? DateUtil.conversionFormat(language, String.valueOf(map.get("insertTime"))) : ""); baseWarpper.setTotalAmount(sum); baseWarpper.setRemainingAmount(sum1); baseWarppers.add(baseWarpper); @@ -129,10 +130,6 @@ } pageNum = (pageNum - 1) * size; List<Map<String, Object>> list = orderPrivateCarService.queryRedEnvelope(language, uid);//专车 // List<Map<String, Object>> list1 = orderTaxiService.queryRedEnvelope(language, uid);//出租车 // List<Map<String, Object>> list2 = orderCrossCityService.queryRedEnvelope(language, uid);//跨城 // list.addAll(list1); // list.addAll(list2); List<Map<String, Object>> list1 = orderLogisticsService.queryRedEnvelope(language, uid); list.addAll(list1); UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -26,6 +26,8 @@ import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -51,6 +53,8 @@ @RestController @RequestMapping("") public class UserInfoController { Logger log = LoggerFactory.getLogger(UserInfoController.class); @Autowired private IUserInfoService userInfoService; @@ -197,6 +201,31 @@ return ResultUtil.paranErr(); } } /** * 短信回调通知 * @param request */ @ResponseBody @PostMapping("/base/sendCellulantMessageCallback") public void sendCellulantMessageCallback(HttpServletRequest request){ try { StringBuilder sb = new StringBuilder(); InputStream inputStream = request.getInputStream(); String s; BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); while ((s = in.readLine()) != null) { sb.append(s); } in.close(); inputStream.close(); log.info("短信通知回调:" + sb.toString()); }catch (Exception e){ e.printStackTrace(); } } @ResponseBody @PostMapping("/base/sedEmail") @@ -717,8 +746,9 @@ Map<String, Object> map = userInfoService.queryUser(language, phone); if(null != map){ return ResultUtil.success(UserInfoWarpper.getUserInfoWarpper(map)); }else{ return ResultUtil.error(language == 1 ? "此账号不存在" : language == 2 ? "The account does not exist" : "Ce compte n’existe pas"); } return ResultUtil.success(new JSONObject()); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -208,6 +208,9 @@ @Autowired private ICarService carService; @Resource private DriverWorkMapper driverWorkMapper; @Value("${filePath}") private String filePath; @@ -559,6 +562,13 @@ if(bo){ continue; } Driver driver1 = driverService.selectById(driver.getId()); DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()) .eq("state", 1).like("type", "4").getEntity()); if(null == driverWork || driver1.getState() != 2){ continue; } String text = ""; Integer language1 = driver.getLanguage(); switch (language1){ @@ -879,6 +889,10 @@ dr = drivers.get(0); } Driver driver1 = driverService.selectById(dr.getId()); DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()) .eq("state", 1).like("type", "4").getEntity()); if(driver1.getState() == 2 || null != driverWork){ orderLogistics.setDriverId(dr.getId()); orderLogistics.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : ( dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1)); @@ -939,27 +953,12 @@ } } } } //推单操作 if(orderLogistics.getState() == 1){ this.pushOrder(orderLogistics); }else{ // //接单后定时任务判断司机是否去接乘客,没有则推送提醒 // CancleOrder cancleOrder = cancleOrderService.query(orderLogistics.getCompanyId()); // if(null != cancleOrder){ // JSONObject object = JSON.parseObject(cancleOrder.getContent()); // long time = object.getInteger("driverTimeout") * 60000L; // new Timer().schedule(new TimerTask() { // @Override // public void run() { // OrderLogistics orderLogistics1 = OrderLogisticsServiceImpl.this.selectById(orderLogistics.getId()); // if(orderLogistics1.getState() == 2){ // pushUtil.pushDriverTimeOut(1, orderLogistics1.getUserId(), orderLogistics1.getId(), 4); // } // } // }, time); // } } @@ -990,7 +989,7 @@ return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés.", ""); } Integer uid = orderLogistics.getUserId(); Double orderMoney = orderLogistics.getOrderMoney(); BigDecimal orderMoney = new BigDecimal(orderLogistics.getOrderMoney()); if(orderLogistics.getUrgent() == 2){ // orderMoney += null != orderLogistics.getTipMoney() ? orderLogistics.getTipMoney() : 0; } @@ -1004,9 +1003,9 @@ Double special = query2.getLogistics(); if(null != special){ orderLogistics.setDiscount(special); double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); BigDecimal v = orderMoney.multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN); if(orderMoney.compareTo(v) > 0){ orderLogistics.setDiscountMoney(orderMoney - v); orderLogistics.setDiscountMoney(orderMoney.subtract(v).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); orderLogistics.setActivityId(query2.getId()); orderMoney = v; } @@ -1034,10 +1033,10 @@ if(userCouponRecord.getCouponUseType() != 0 && userCouponRecord.getCouponUseType() != 4){ return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", ""); } if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){ if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(new BigDecimal(userCouponRecord.getFullMoney())) < 0){ return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", ""); } orderMoney = orderMoney - userCouponRecord.getMoney(); orderMoney = orderMoney.subtract(new BigDecimal(userCouponRecord.getMoney())).setScale(2, RoundingMode.HALF_EVEN); orderLogistics.setCouponMoney(userCouponRecord.getMoney()); orderLogistics.setCouponId(couponId); } @@ -1051,10 +1050,10 @@ .eq("state", 1).eq("companyId", orderLogistics.getCompanyId()).gt("remainingAmount", 0).orderBy("insertTime", false)); BigDecimal deductionRatio = redEnvelopePaymentSettings.getDeductionRatio(); BigDecimal multiply1 = new BigDecimal(orderMoney).multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN); if(total.compareTo(multiply1.doubleValue()) >= 0){ BigDecimal multiply1 = orderMoney.multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN); if(total > 0 && multiply1.doubleValue() > 0 && total.compareTo(multiply1.doubleValue()) >= 0){ orderLogistics.setRedPacketMoney(multiply1.doubleValue()); orderMoney = orderMoney - multiply1.doubleValue(); orderMoney = orderMoney.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN); //获取红包id JSONArray jsonArray = new JSONArray(); @@ -1062,6 +1061,9 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("id", userRedPacketRecord.getId()); BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount()); if(multiply1.compareTo(BigDecimal.ZERO) == 0){ break; } if(multiply1.compareTo(remainingAmount) >= 0){ userRedPacketRecord.setRemainingAmount(0D); userRedPacketRecord.setEndTime(new Date()); @@ -1070,18 +1072,19 @@ jsonObject.put("money", remainingAmount); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); }else{ }else if(remainingAmount.compareTo(multiply1) > 0){ userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); jsonObject.put("money", multiply1); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); break; multiply1 = BigDecimal.ZERO; } } orderLogistics.setRedPacketId(jsonArray.toJSONString()); }else{ } if(total > 0 && total.compareTo(multiply1.doubleValue()) < 0){ orderLogistics.setRedPacketMoney(total); orderMoney = orderMoney - total; orderMoney = orderMoney.subtract(new BigDecimal(total)).setScale(2, RoundingMode.HALF_EVEN); //获取红包id JSONArray jsonArray = new JSONArray(); BigDecimal multiply = new BigDecimal(total); @@ -1089,6 +1092,9 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("id", userRedPacketRecord.getId()); BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount()); if(multiply.compareTo(BigDecimal.ZERO) == 0){ break; } if(multiply.compareTo(remainingAmount) >= 0){ userRedPacketRecord.setRemainingAmount(0D); userRedPacketRecord.setEndTime(new Date()); @@ -1097,20 +1103,18 @@ jsonObject.put("money", remainingAmount); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); }else{ }else if(remainingAmount.compareTo(multiply) > 0){ userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); jsonObject.put("money", multiply); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); break; multiply = BigDecimal.ZERO; } } orderLogistics.setRedPacketId(jsonArray.toJSONString()); } } } orderMoney=new BigDecimal(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); if(payType == 1) {//手机支付 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); @@ -1121,7 +1125,7 @@ checkoutRequest.setAccountNumber(userInfo.getPhone()); checkoutRequest.setCustomerFirstName(userInfo.getFirstName()); checkoutRequest.setCustomerLastName(userInfo.getLastName()); checkoutRequest.setRequestAmount(orderMoney); checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); checkoutRequest.setMerchantTransactionId(merchantTransactionId); checkoutRequest.setRequestDescription("Travel completion payment"); checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi"); @@ -1130,7 +1134,8 @@ checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html"); resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); if(resultUtil.getCode()==200){ paymentRecordService.saveData(1, null, null, orderId, 4, 1, orderMoney, null, 1);//添加预支付数据 paymentRecordService.saveData(1, null, null, orderId, 4, 1, orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据 }else{ resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", ""); } @@ -1147,7 +1152,7 @@ checkoutRequest.setAccountNumber(bankCard.getCode()); checkoutRequest.setCustomerFirstName(bankCard.getFirstName()); checkoutRequest.setCustomerLastName(bankCard.getLastName()); checkoutRequest.setRequestAmount(orderMoney); checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); checkoutRequest.setMerchantTransactionId(merchantTransactionId); checkoutRequest.setRequestDescription("Travel completion payment"); checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi"); @@ -1157,7 +1162,8 @@ resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); if(resultUtil.getCode()==200){ paymentRecordService.saveData(1, null, null, orderId, 4, 2, orderMoney, null, 1);//添加预支付数据 paymentRecordService.saveData(1, null, null, orderId, 4, 2, orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据 }else{ resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", ""); } @@ -1165,11 +1171,11 @@ } if(payType == 3){//余额支付 if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){ if(userInfo.getBalance() == null || new BigDecimal(userInfo.getBalance()).compareTo(orderMoney) < 0){ return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant", ""); } userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId()); userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 @@ -1182,12 +1188,13 @@ } //添加交易明细 transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId); transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), 2, 1, 1, 4, orderId); userInfoService.updateById(userInfo); orderLogistics.setState(8); orderLogistics.setPayType(3); orderLogistics.setPayMoney(orderMoney); orderLogistics.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); //处理优惠券和红包 if(null != userCouponRecord){ @@ -1638,13 +1645,14 @@ userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 //添加交易明细 transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId); transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), 2, 1, 1, 4, orderId); userInfoService.updateById(userInfo); orderLogistics.setState(8);//小件物流先支付后司机抢单 orderLogistics.setDriverPay(1); orderLogistics.setPayType(4); orderLogistics.setPayMoney(orderMoney); orderLogistics.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); //处理优惠券和红包 if(null != userCouponRecord){ @@ -1737,7 +1745,7 @@ settlementRecord.setInsertTime(new Date()); settlementRecordService.insert(settlementRecord); }else{ settlementRecord.setPayMoney(total.doubleValue()); settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue()); settlementRecordService.updateById(settlementRecord); } for (SettlementDetail detail : settlementDetailList) { @@ -3642,7 +3650,7 @@ Element user_chinese = document.getElementById("user_chinese"); user_chinese.text("您好 " + userInfo.getNickName() + ","); Element time_chinese = document.getElementById("time_chinese"); time_chinese.text("此活动有效期在 " + DateUtil.conversionFormat(language, sdf.format(id.getStartTime())) + " 至 " + DateUtil.conversionFormat(language, sdf.format(id.getEnable())) + ",详情请查看I-GO平台"); time_chinese.text("此活动有效期在 " + DateUtil.conversionFormat(language, sdf.format(id.getStartTime())) + " 至 " + DateUtil.conversionFormat(language, sdf.format(id.getEndTime())) + ",详情请查看I-GO平台"); } if(2 == language){ document.getElementById("chinese").remove(); @@ -3651,7 +3659,7 @@ Element user_english = document.getElementById("user_english"); user_english.text("Hello " + userInfo.getNickName() + ","); Element time_english = document.getElementById("time_english"); time_english.text("You could use it from " + DateUtil.conversionFormat(language, sdf.format(id.getStartTime())) + " to " + DateUtil.conversionFormat(language, sdf.format(id.getEnable())) + ",check more details on the app."); time_english.text("You could use it from " + DateUtil.conversionFormat(language, sdf.format(id.getStartTime())) + " to " + DateUtil.conversionFormat(language, sdf.format(id.getEndTime())) + ",check more details on the app."); } if(3 == language){ document.getElementById("chinese").remove(); @@ -3660,7 +3668,7 @@ Element user_french = document.getElementById("user_french"); user_french.text("Bonjour " + userInfo.getNickName() + ","); Element time_french = document.getElementById("time_french"); time_french.text("Cette promotion est valable du " + DateUtil.conversionFormat(language, sdf.format(id.getStartTime())) + " au " + DateUtil.conversionFormat(language, sdf.format(id.getEnable())) + ". Veuillez consulter la plateforme i-go pour plus de détails."); time_french.text("Cette promotion est valable du " + DateUtil.conversionFormat(language, sdf.format(id.getStartTime())) + " au " + DateUtil.conversionFormat(language, sdf.format(id.getEndTime())) + ". Veuillez consulter la plateforme i-go pour plus de détails."); } EmailUtil.send(userInfo.getEmail(), language == 1 ? "红包活动" : language == 2 ? "Lucky-promo activities" : "Activités bonus", document.html()); UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper; import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl; import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; @@ -28,7 +27,6 @@ import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; 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.taxi.dao.OrderTaxiMapper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; @@ -39,7 +37,6 @@ import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.FormElement; import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -88,92 +85,92 @@ @Resource private RegionMapper regionMapper; @Autowired @Resource private DateUtil dateUtil; @Autowired @Resource private IUserInfoService userInfoService; @Autowired @Resource private IDriverService driverService; @Autowired @Resource private IDriverServiceService driverServiceService; @Autowired @Resource private PushUtil pushUtil; @Autowired @Resource private ICompanyCityService companyCityService; @Autowired @Resource private IPushOrderService pushOrderService; @Autowired @Resource private ISystemNoticeService systemNoticeService; @Autowired @Resource private ICancleOrderService cancleOrderService; @Autowired @Resource private IOrderCancelService orderCancelService; @Autowired @Resource private RestTemplate internalRestTemplate; @Autowired @Resource private IPaymentRecordService paymentRecordService; @Autowired @Resource private ITransactionDetailsService transactionDetailsService; @Autowired @Resource private ChinaMobileUtil chinaMobileUtil; @Autowired @Resource private IIncomeService incomeService; @Autowired @Resource private IUserCouponRecordService userCouponRecordService; @Autowired @Resource private IUserRedPacketRecordService userRedPacketRecordService; @Autowired @Resource private ICompanyService companyService; @Autowired @Resource private IUserActivityRedenvelopeService userActivityRedenvelopeService; @Autowired @Resource private RedisUtil redisUtil; @Autowired @Resource private IOrderPositionService orderPositionService; @Autowired @Resource private IOrderCrossCityService orderCrossCityService; @Autowired @Resource private IAssignOrderService assignOrderService; @Resource private CarMapper carMapper; @Autowired @Resource private IOrderEvaluateService orderEvaluateService; @Autowired @Resource private IOrderLogisticsService orderLogisticsService; @Autowired @Resource private IBankCardService bankCardService; @Value("${filePath}") private String filePath; @Autowired @Resource private IOrderTaxiService orderTaxiService; public static List<Integer> orderIds = new ArrayList<>(); @@ -184,32 +181,35 @@ @Value("${spring.mail.template-path}") private String templatePath; @Autowired @Resource private ISettlementDetailService settlementDetailService; @Autowired @Resource private ISettlementRecordService settlementRecordService; @Autowired @Resource private ISettlementAllocationService settlementAllocationService; @Autowired @Resource private TEmailService emailService; @Autowired @Resource private IPhoneService phoneService; @Autowired @Resource private IRedEnvelopePaymentSettingsService redEnvelopePaymentSettingsService; @Autowired @Resource private FleetEngineUtil fleetEngineUtil; @Resource private CarModelMapper carModelMapper; @Autowired @Resource private ICarService carService; @Resource private DriverWorkMapper driverWorkMapper; @@ -371,7 +371,6 @@ new Thread(() -> { try { String vehicleId = null; if(null != orderPrivateCar.getDriverId()){ Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); Car car = carMapper.selectById(driver.getCarId()); @@ -379,6 +378,7 @@ car.setVehicleId(UUIDUtil.getRandomCode()); carMapper.updateById(car); } String vehicleId = car.getVehicleId(); //查询车辆信息,没有则创建信息 String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId()); if(ToolUtil.isEmpty(vehicles)){ @@ -386,10 +386,12 @@ fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId()); } } //创建行程数据 fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(), orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString()); } }catch (Exception e){ e.printStackTrace(); } @@ -498,6 +500,10 @@ dr = drivers.get(0); } Driver driver = driverService.selectById(dr.getId()); DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", dr.getId()) .eq("state", 1).like("type", "1").getEntity()); if(driver.getState() == 2 && null != driverWork){ orderPrivateCar.setDriverId(dr.getId()); orderPrivateCar.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : ( dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1)); @@ -559,27 +565,12 @@ } } } } //推单操作 if(orderPrivateCar.getState() == 1){ this.pushOrder(orderPrivateCar); }else{ // //接单后定时任务判断司机是否去接乘客,没有则推送提醒 // CancleOrder cancleOrder = cancleOrderService.query(orderPrivateCar.getCompanyId()); // if(null != cancleOrder){ // JSONObject object = JSON.parseObject(cancleOrder.getContent()); // long time = object.getInteger("driverTimeout") * 60000L; // new Timer().schedule(new TimerTask() { // @Override // public void run() { // OrderPrivateCar orderPrivateCar1 = OrderPrivateCarServiceImpl.this.selectById(orderPrivateCar.getId()); // if(orderPrivateCar1.getState() == 2){ // pushUtil.pushDriverTimeOut(1, orderPrivateCar1.getUserId(), orderPrivateCar1.getId(), 1); // } // } // }, time); // } } @@ -1048,6 +1039,13 @@ continue; } Driver driver1 = driverService.selectById(driver.getId()); DriverWork driverWork = driverWorkMapper.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()) .eq("state", 1).like("type", "1").getEntity()); if(driver1.getState() != 2 || null == driverWork){ continue; } String text = ""; Integer language = driver.getLanguage(); switch (language){ @@ -1192,7 +1190,7 @@ return ResultUtil.error(language == 1 ? "订单不在待支付状态,不允许支付" : language == 2 ? "The order is no longer with Pending Payment, making payments is not allowed." : "La commande n’est plus en attente de paiement, il n’est pas permis d’effectuer des paiements.", ""); } Integer uid = orderPrivateCar.getUserId(); Double orderMoney = orderPrivateCar.getOrderMoney(); BigDecimal orderMoney = new BigDecimal(orderPrivateCar.getOrderMoney()); UserInfo userInfo = userInfoService.selectById(uid); ResultUtil resultUtil = ResultUtil.success(""); orderPrivateCar.setCouponMoney(0D);//初始化历史数据 @@ -1206,9 +1204,9 @@ Double special = query2.getSpecial(); if(null != special){ orderPrivateCar.setDiscount(special); double v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); BigDecimal v = orderMoney.multiply(new BigDecimal(special / 10)).setScale(2, RoundingMode.HALF_EVEN); if(orderMoney.compareTo(v) > 0){ orderPrivateCar.setDiscountMoney(orderMoney - v); orderPrivateCar.setDiscountMoney(orderMoney.subtract(v).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); orderPrivateCar.setActivityId(query2.getId()); orderMoney = v; } @@ -1235,14 +1233,13 @@ if(userCouponRecord.getCouponUseType() != 0 && userCouponRecord.getCouponUseType() != 1){ return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", ""); } if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(userCouponRecord.getFullMoney()) < 0){ if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(new BigDecimal(userCouponRecord.getFullMoney())) < 0){ return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", ""); } orderMoney = orderMoney - userCouponRecord.getMoney(); orderMoney = orderMoney.subtract(new BigDecimal(userCouponRecord.getMoney())).setScale(2, RoundingMode.HALF_EVEN); orderPrivateCar.setCouponMoney(userCouponRecord.getMoney()); orderPrivateCar.setCouponId(couponId); } orderMoney=new BigDecimal(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); //计算红包 if(null != redDeduction && 1 == redDeduction && null == orderPrivateCar.getRedPacketId()){ @@ -1253,10 +1250,10 @@ .eq("state", 1).eq("companyId", orderPrivateCar.getCompanyId()).gt("remainingAmount", 0).orderBy("insertTime", false)); BigDecimal deductionRatio = redEnvelopePaymentSettings.getDeductionRatio(); BigDecimal multiply1 = new BigDecimal(orderMoney).multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN); if(total.compareTo(multiply1.doubleValue()) >= 0){ BigDecimal multiply1 = orderMoney.multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN); if(total > 0 && multiply1.doubleValue() > 0 && total.compareTo(multiply1.doubleValue()) >= 0){ orderPrivateCar.setRedPacketMoney(multiply1.doubleValue()); orderMoney = orderMoney - multiply1.doubleValue(); orderMoney = orderMoney.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN); //获取红包id JSONArray jsonArray = new JSONArray(); @@ -1264,6 +1261,9 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("id", userRedPacketRecord.getId()); BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount()); if(multiply1.compareTo(BigDecimal.ZERO) == 0){ break; } if(multiply1.compareTo(remainingAmount) >= 0){ userRedPacketRecord.setRemainingAmount(0D); userRedPacketRecord.setEndTime(new Date()); @@ -1272,25 +1272,29 @@ jsonObject.put("money", remainingAmount); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); }else{ }else if(remainingAmount.compareTo(multiply1) > 0){ userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); jsonObject.put("money", multiply1); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); break; multiply1 = BigDecimal.ZERO; } } orderPrivateCar.setRedPacketId(jsonArray.toJSONString()); }else{ } if(total > 0 && total.compareTo(multiply1.doubleValue()) < 0){ orderPrivateCar.setRedPacketMoney(total); orderMoney = orderMoney - total; orderMoney = orderMoney.subtract(new BigDecimal(total)).setScale(2, RoundingMode.HALF_EVEN); //获取红包id JSONArray jsonArray = new JSONArray(); BigDecimal multiply = new BigDecimal(total); for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id", userRedPacketRecord.getId()); BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount()); BigDecimal remainingAmount = BigDecimal.valueOf(userRedPacketRecord.getRemainingAmount()); if(multiply.compareTo(BigDecimal.ZERO) == 0){ break; } if(multiply.compareTo(remainingAmount) >= 0){ userRedPacketRecord.setRemainingAmount(0D); userRedPacketRecord.setEndTime(new Date()); @@ -1299,12 +1303,12 @@ jsonObject.put("money", remainingAmount); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); }else{ }else if(remainingAmount.compareTo(multiply) > 0){ userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); jsonObject.put("money", multiply); jsonArray.add(jsonObject); userRedPacketRecordService.updateById(userRedPacketRecord); break; multiply = BigDecimal.ZERO; } } orderPrivateCar.setRedPacketId(jsonArray.toJSONString()); @@ -1322,7 +1326,7 @@ checkoutRequest.setAccountNumber(userInfo.getPhone()); checkoutRequest.setCustomerFirstName(userInfo.getFirstName()); checkoutRequest.setCustomerLastName(userInfo.getLastName()); checkoutRequest.setRequestAmount(orderMoney); checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); checkoutRequest.setMerchantTransactionId(merchantTransactionId); checkoutRequest.setRequestDescription("Travel completion payment"); checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi"); @@ -1332,7 +1336,8 @@ resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); if(resultUtil.getCode()==200){ paymentRecordService.saveData(1, null, null, orderId, 1, 1, orderMoney, null, 1);//添加预支付数据 paymentRecordService.saveData(1, null, null, orderId, 1, 1, orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据 }else{ resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", ""); } @@ -1348,7 +1353,7 @@ checkoutRequest.setAccountNumber(bankCard.getCode()); checkoutRequest.setCustomerFirstName(bankCard.getFirstName()); checkoutRequest.setCustomerLastName(bankCard.getLastName()); checkoutRequest.setRequestAmount(orderMoney); checkoutRequest.setRequestAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); checkoutRequest.setMerchantTransactionId(merchantTransactionId); checkoutRequest.setRequestDescription("Travel completion payment"); checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi"); @@ -1358,28 +1363,30 @@ resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); if(resultUtil.getCode()==200){ paymentRecordService.saveData(1, null, null, orderId, 1, 2, orderMoney, null, 1);//添加预支付数据 paymentRecordService.saveData(1, null, null, orderId, 1, 2, orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据 }else{ resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", ""); } } if(payType == 3){//余额支付 if(userInfo.getBalance() == null || userInfo.getBalance() < orderMoney){ if(userInfo.getBalance() == null || new BigDecimal(userInfo.getBalance()).compareTo(orderMoney) < 0){ return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant", ""); } userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId()); userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 //添加交易明细 transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId); transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), 2, 1, 1, 1, orderId); userInfoService.updateById(userInfo); orderPrivateCar.setState(8); orderPrivateCar.setPayType(3); orderPrivateCar.setPayMoney(orderMoney); orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); //处理优惠券和红包 if(null != userCouponRecord){ @@ -1813,13 +1820,14 @@ userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 //添加交易明细 transactionDetailsService.saveData(uid, "完成订单", orderMoney, 2, 1, 1, 1, orderId); transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), 2, 1, 1, 1, orderId); userInfoService.updateById(userInfo); orderPrivateCar.setState(8); orderPrivateCar.setPayType(4); orderPrivateCar.setDriverPay(2); orderPrivateCar.setPayMoney(orderMoney); orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); @@ -1916,7 +1924,7 @@ settlementRecord.setInsertTime(new Date()); settlementRecordService.insert(settlementRecord); }else{ settlementRecord.setPayMoney(total.doubleValue()); settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue()); settlementRecordService.updateById(settlementRecord); } for (SettlementDetail detail : settlementDetailList) { @@ -3173,7 +3181,7 @@ //读取文件(字符流) BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); //循环取出数据 String str = null; String str; StringBuffer sb = new StringBuffer(); while ((str = in.readLine()) != null) { sb.append(str); UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -34,13 +34,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.*; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -159,6 +157,11 @@ } return ResultUtil.success(); } /** @@ -1692,6 +1695,9 @@ @Override public Map<String, Object> queryUser(Integer language, String phone) throws Exception { Map<String, Object> map = userInfoMapper.queryUserInfo(null, phone); if(null == map){ return null; } if(null != map.get("birthday")){ String birthday = map.get("birthday").toString(); map.put("birthday", DateUtil.conversionFormat(language, birthday)); @@ -1975,13 +1981,9 @@ String endTime = ""; if(null != map.get("startTime")){ startTime = map.get("startTime").toString(); map.put("startTime", DateUtil.conversionFormat(language, startTime)); startTime = DateUtil.conversionFormat(language, startTime); } if(null != map.get("endTime")){ endTime = map.get("endTime").toString(); map.put("endTime", DateUtil.conversionFormat(language, endTime)); endTime = DateUtil.conversionFormat(language, endTime); } double fullMoney = 0; if(null != map.get("bcompanyId")){ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java
@@ -277,27 +277,30 @@ /** * 短信 : https://www.nalosolutions.com/ * 短信 : https://sms.mymailcentre.com/smsportal/cellulant * @param toPhone * @param msg * @return */ public boolean sendCellulantMessage(String toPhone, String msg){ String url = "https://sms.nalosolutions.com/smsbackend/clientapi/Cell_resl/send-message/"; String url = "https://sms.nalosolutions.com/smsbackend/Cell_resl/send-message/"; HttpRequest post = HttpUtil.createPost(url); post.contentType(ContentType.JSON.toString()); JSONObject params = new JSONObject(); params.put("key", "ru#0flkf3993qh!!rg!@y4)nhwi08c#tg_vasek!ja)kvfnfjyoljoz(@nai(jkf"); params.put("key", "c_x7x5!v_1mhg(l34p05g2b@teheq)ex9mk1jj(u@nlfx_w5(rdx)tb_ttx22b3o"); params.put("username", "I-GO"); params.put("password", "abcd1234"); params.put("msisdn", toPhone); params.put("message", msg); params.put("sender_id", "I-GO"); System.err.println(params.toJSONString()); params.put("callback_url", "http://182.160.16.251:80/user/base/sendCellulantMessageCallback"); post.body(params.toJSONString()); System.err.println("短信请求:\n请求地址:" + url + "\n请求参数:" + params.toJSONString()); HttpResponse execute = post.execute(); String body = execute.body(); execute.close(); JSONObject jsonObject = JSON.parseObject(body); System.err.println(body); System.err.println("短信响应:" + body); Integer status = jsonObject.getInteger("status"); if(null != status && 1701 == status){ return true; @@ -305,10 +308,13 @@ System.err.println("短信发送失败:" + jsonObject.toJSONString()); return false; } } public static void main(String[] ages){ //{"callback_url":"http://182.160.16.251:80/user/base/sendCellulantMessageCallback","msisdn":"233244915521","message":"Your verification code is 2358,it is valid within 5 minutes, please do not reveal it to others.","key":"ru#0flkf3993qh!!rg!@y4)nhwi08c#tg_vasek!ja)kvfnfjyoljoz(@nai(jkf","sender_id":"I-GO"} SMSUtil smsUtil = new SMSUtil(); smsUtil.sendCellulantMessage("233244915521", "Votre code de validation est 123456 et il est valide pendant 5 minutes. Veuillez ne pas le révéler à d’autres personnes."); smsUtil.sendCellulantMessage("233244915521", "Your verification code is 2358,it is valid within 5 minutes, please do not reveal it to others."); } }