From 2d3b7304911a393e73ec0dd48712f22ddfa8053a Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期五, 19 四月 2024 17:55:11 +0800 Subject: [PATCH] 新增加功能 --- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java | 1404 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1,370 insertions(+), 34 deletions(-) diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java index ada1b3e..ef450be 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java @@ -13,7 +13,10 @@ import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService; +import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper; import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; +import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; +import com.stylefeng.guns.modular.specialTrain.server.impl.OrderPrivateCarServiceImpl; import com.stylefeng.guns.modular.system.dao.*; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; @@ -162,6 +165,39 @@ @Autowired private IUserRedPacketRecordService userRedPacketRecordService; + + @Autowired + private IOrderPrivateCarService orderPrivateCarService; + + @Resource + private OrderPrivateCarMapper orderPrivateCarMapper; + + @Autowired + private IDriverServiceService driverServiceService; + + @Autowired + private ISettlementRecordService settlementRecordService; + + @Resource + private CarServiceMapper carServiceMapper; + + @Autowired + private IAssignOrderService assignOrderService; + + @Autowired + private ISettlementDetailService settlementDetailService; + + @Autowired + private ISettlementAllocationService settlementAllocationService; + + @Resource + private CarMapper carMapper; + + @Autowired + private IOrderEvaluateService orderEvaluateService; + + @Autowired + private IUserActivityRedenvelopeService userActivityRedenvelopeService; @@ -328,15 +364,14 @@ activityId = Integer.valueOf(data.get("activityId").toString()); } orderLogistics.setOrderMoney((cargoType == 1 ? ordinary : precious) + tipMoney); - orderLogistics.setTravelMoney((cargoType == 1 ? ordinary : precious)); +// orderLogistics.setTravelMoney((cargoType == 1 ? ordinary : precious)); if(type == 5){ orderLogistics.setOrderMoney(((cargoType == 1 ? ordinary : precious) * cargoNumber) + tipMoney); - orderLogistics.setTravelMoney((cargoType == 1 ? ordinary : precious) * cargoNumber); +// orderLogistics.setTravelMoney((cargoType == 1 ? ordinary : precious) * cargoNumber); } orderLogistics.setDiscount(discount); orderLogistics.setDiscountMoney(discountMoney); orderLogistics.setActivityId(activityId); - orderLogistics.setTipMoney(tipMoney); orderLogistics.setState(7);//待支付 orderLogistics.setInsertTime(new Date()); orderLogistics.setTravelTime(null == travelTime ? new Date() : travelTime); @@ -494,7 +529,7 @@ for(int i = 1; i <= querys.size(); i++){ PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); //获取空闲司机 - List<Driver> list = driverService.queryIdleDriver(orderLogistics.getType(), null, orderLogistics.getStartLon(), orderLogistics.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + List<Driver> list = driverService.queryIdleDriver(orderLogistics.getType(), orderLogistics.getServerCarModelId(), orderLogistics.getStartLon(), orderLogistics.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 System.err.println("【" + orderLogistics.getId() + "】空闲司机:" + JSON.toJSONString(list)); if(list.size() > 0){ double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 @@ -530,10 +565,246 @@ } }).start(); } - - - - + + + /** + * 包裹下单2.0 + * @param remark + * @param placementLon + * @param placementLat + * @param startLon + * @param startLat + * @param startAddress + * @param recipient + * @param recipientPhone + * @param endLon + * @param endLat + * @param endAddress + * @param serverCarModelId + * @param driverId + * @param orderSource + * @param uid + * @param language + * @return + */ + @Override + public ResultUtil placeOrderPackage(String remark, String placementLon, String placementLat, String startLon, String startLat, String startAddress, + String recipient, String recipientPhone, String endLon, String endLat, String endAddress, + Integer serverCarModelId, Integer driverId, Integer orderSource, Integer uid, Integer language) throws Exception { + /** + * 1.下了即时单就不能下预约单和即时单 + * 2.下了预约单和再下一张即时单不能再下预约单 + */ + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); + if(orderPrivateCars.size() > 0){ + return ResultUtil.error(language == 1 ? "有未完成的订单" : language == 2 ? "Uncompleted order(s)" : "Commande(s) non complétée(s)"); + } + int selectCount = this.selectCount(new EntityWrapper<OrderLogistics>().eq("userId", uid).eq("isDelete", 1) + .in("state", Arrays.asList(1, 2, 3, 4, 5, 7, 11, 12))); + if(0 < selectCount){ + return ResultUtil.error(language == 1 ? "有未完成的订单" : language == 2 ? "Uncompleted order(s)" : "Commande(s) non complétée(s)"); + } + 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(language == 1 ? "请选择服务车型" : language == 2 ? "Please select vehicle-type" : "Veuillez sélectionner le type de véhicule"); + } + + OrderLogistics orderLogistics = new OrderLogistics(); + orderLogistics.setType(4); + orderLogistics.setUserId(uid); + orderLogistics.setServerCarModelId(serverCarModelId); + orderLogistics.setOrderNum(this.getOrderNum()); + orderLogistics.setPlacementLon(Double.valueOf(placementLon)); + orderLogistics.setPlacementLat(Double.valueOf(placementLat)); + orderLogistics.setCargoType(1); + orderLogistics.setUrgent(1); + orderLogistics.setCargoNumber(1); + + ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(Double.valueOf(placementLat), Double.valueOf(placementLon)); + orderLogistics.setPlacementAddress(reverseGeocode.getAddress()); + orderLogistics.setStartLon(Double.valueOf(startLon)); + orderLogistics.setStartLat(Double.valueOf(startLat)); + orderLogistics.setStartAddress(startAddress); + orderLogistics.setEndLon(Double.valueOf(endLon)); + orderLogistics.setEndLat(Double.valueOf(endLat)); + orderLogistics.setEndAddress(endAddress); + orderLogistics.setRecipient(recipient); + orderLogistics.setRecipientPhone(recipientPhone); + orderLogistics.setState(1); + orderLogistics.setInsertTime(new Date()); + orderLogistics.setTravelTime(new Date()); + orderLogistics.setOrderSource(orderSource); + if(orderSource == 2){//扫码下单 + Driver driver = driverService.selectById(driverId); + if(null == driver){ + return ResultUtil.error(language == 1 ? "司机信息有误,无法完成下单" : language == 2 ? "Wrong driver-information, unable to place an order." : "Informations erronées sur le chauffeur, il ne peut donc pas passer une commande."); + } + if(driver.getAuthState() == 1){ + return ResultUtil.error(language == 1 ? "司机信息还未完成审核,无法完成下单" : language == 2 ? "The driver is not yet done with review, unable to place an order." : "Le chauffeur n’a pas encore terminé son examen, il ne peut donc pas passer une commande."); + } + if(driver.getAuthState() == 3){ + return ResultUtil.error(language == 1 ? "司机账户已被冻结,无法提供服务" : language == 2 ? "Driver account is frozen, unable to provide service." : "Le compte du chauffeur est gelé, il n’est donc pas possible de fournir des services."); + } + if(driver.getAuthState() == 4){ + return ResultUtil.error(language == 1 ? "司机信息未通过审核,无法提供服务" : language == 2 ? "The driver is not verified and qualified, unable to provide service." : "Le chauffeur n’est pas vérifié et qualifié, incapable de fournir le services."); + } + if(driver.getState() == 1){ + return ResultUtil.error(language == 1 ? "司机还未上线,无法提供服务" : language == 2 ? "The driver is not online, unable to provide service." : "Le chauffeur n’est pas en ligne, incapable de fournir le services."); + } + if(driver.getState() == 3){ + return ResultUtil.error(language == 1 ? "司机正在服务中,无法提供服务" : language == 2 ? "The driver is on a trip, unable to provide service." : "Le chauffeur est en service, incapable de fournir des services."); + } + List<DriverService> query = driverServiceService.query(driverId, 4); + if(query.size() == 0){ + return ResultUtil.error(language == 1 ? "该司机不能服务此业务" : language == 2 ? "Driver has outstanding fees to pay, unable to receive orders." : "Le chauffeur a des frais impayés à payer, incapable de recevoir des commandes."); + } + int count = settlementRecordService.selectCount(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1)); + if(count > 0){ + return ResultUtil.error(language == 1 ? "司机未支付订单费用,无法进行接单" : language == 2 ? "Driver has outstanding fees to pay, unable to receive orders." : "Le chauffeur a des frais impayés à payer, incapable de recevoir des commandes."); + } + + orderLogistics.setDriverId(driverId); + orderLogistics.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( + driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); + orderLogistics.setState(2); + orderLogistics.setCarId(driver.getCarId()); + CarService query1 = carServiceMapper.query(1, driver.getCarId()); + orderLogistics.setServerCarModelId(query1.getServerCarModelId()); + orderLogistics.setSnatchOrderTime(new Date()); + + driver.setState(3); + driverService.updateById(driver); + } + + orderLogistics.setIsReassign(1); + orderLogistics.setIsDelete(1); + this.insert(orderLogistics); + + if(orderSource == 2){//扫码下单 + new Thread(new Runnable() { + @Override + public void run() { + pushUtil.pushOrderState(1, uid, orderLogistics.getId(), 4, 2, 0); + pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), 4, 2, 0); + } + }).start(); + } + + + // TODO: 2021/5/11 修改,根据后台设定的派单范围查询范围内有无司机,将单子指派给距离最近的司机(距离相同随机取),范围内没有司机再进行推单流程 + if(orderLogistics.getState() == 1){ + Company query = companyCityService.query1(orderLogistics.getStartLon().toString(), orderLogistics.getStartLat().toString()); + if(null == query){ + return ResultUtil.error(language == 1 ? "起点暂未企业提供服务" : language == 2 ? "Starting point no enterprise to provide services" : "Point de départ pas encore disponible pour les entreprises"); + } + AssignOrder assignOrder = assignOrderService.selectOne(new EntityWrapper<AssignOrder>().eq("companyId", query.getId()).eq("type", 1)); + if(null != assignOrder && assignOrder.getPeople() > 0){//配置了指派规则才处理 + //获取空闲司机 + List<Driver> drivers = driverService.queryIdleDriver(4, orderLogistics.getServerCarModelId(), orderLogistics.getStartLon(), orderLogistics.getStartLat(), assignOrder.getDistance(), null);//获取范围内空闲司机 + 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; + long m = 0; + int index = 0; + for(int j = 0; j < drivers.size(); j++){ + String value = redisUtil.getValue("DRIVER" + drivers.get(j).getId()); + if(null != value){ + String[] split = value.split(","); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); + Long distance = distancematrix.getDistance(); + if((0 == m && null == driver) || (distance < m)){ + driver = drivers.get(j); + m = distance; + index = j; + } + } + } + ds.add(driver); + drivers.remove(index); + } + + //再根据直线距离最短的司机中找出行驶距离最短的司机 + Long m = 0L; + for(Driver driver : ds){ + String value = redisUtil.getValue("DRIVER" + driver.getId()); + if(null != value){ + String[] split = value.split(","); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); + Long d = distancematrix.getDistance(); + if((0 == m && null == dr) || (d.intValue() < m.intValue())){ + dr = driver; + m = d; + } + } + } + }else{ + dr = drivers.get(0); + } + + orderLogistics.setDriverId(dr.getId()); + orderLogistics.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : ( + dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1)); + orderLogistics.setState(2); + orderLogistics.setCarId(dr.getCarId()); + CarService query1 = carServiceMapper.query(1, dr.getCarId()); + orderLogistics.setServerCarModelId(query1.getServerCarModelId()); + orderLogistics.setSnatchOrderTime(new Date()); + + dr.setState(3); + driverService.updateById(dr); + this.updateById(orderLogistics); + + new Thread(new Runnable() { + @Override + public void run() { + pushUtil.pushOrderState(1, uid, orderLogistics.getId(), 4, 2, 0); + pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), 4, 2, 0); + } + }).start(); + } + } + } + + + //推单操作 + 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); + } + } + + + //添加消息 + systemNoticeService.addSystemNotice(1, language == 1 ? "您的市内包裹订单已下单成功,我们正在为您指派司机,请稍后!" : + language == 2 ? "You've placed the delivery order successfully, we are assigning you a driver, please wait." + : "Vous avez passé la commande de livraison avec succès, nous vous attribuons un chauffeur, veuillez patienter.", orderLogistics.getUserId(), 1); + + BaseWarpper baseWarpper = new BaseWarpper(); + baseWarpper.setState(orderLogistics.getState()); + baseWarpper.setId(orderLogistics.getId()); + return ResultUtil.success(baseWarpper); + } + /** * 订单支付 * @param payType @@ -551,7 +822,7 @@ Integer uid = orderLogistics.getUserId(); Double orderMoney = orderLogistics.getOrderMoney(); if(orderLogistics.getUrgent() == 2){ - orderMoney += null != orderLogistics.getTipMoney() ? orderLogistics.getTipMoney() : 0; +// orderMoney += null != orderLogistics.getTipMoney() ? orderLogistics.getTipMoney() : 0; } UserInfo userInfo = userInfoService.selectById(uid); ResultUtil resultUtil = ResultUtil.success(""); @@ -735,9 +1006,56 @@ transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId); userInfoService.updateById(userInfo); - orderLogistics.setState(1);//小件物流先支付后司机抢单 + orderLogistics.setState(8); orderLogistics.setPayType(3); orderLogistics.setPayMoney(orderMoney); + orderLogistics.setOrderMoney(orderLogistics.getOrderMoney()+orderLogistics.getFreeMoney().doubleValue()); + + //处理优惠券和红包 + if(null != userCouponRecord){ + userCouponRecord.setState(2); + userCouponRecord.setEndTime(new Date()); + userCouponRecordService.updateById(userCouponRecord); + } + if(null != orderLogistics.getRedPacketId()){ + JSONArray jsonArray = JSON.parseArray(orderLogistics.getRedPacketId()); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + Integer id1 = jsonObject.getInteger("id"); + Double money = jsonObject.getDouble("money"); + UserRedPacketRecord userRedPacketRecord = userRedPacketRecordService.selectById(id1); + userRedPacketRecord.setRemainingAmount(userRedPacketRecord.getRemainingAmount() - money); + if(0 == userRedPacketRecord.getRemainingAmount()){ + userRedPacketRecord.setState(2); + userRedPacketRecord.setEndTime(new Date()); + } + userRedPacketRecordService.updateById(userRedPacketRecord); + } + } + + if(orderLogistics.getIsplatPay()==1){ + //添加已收入明细 + Company company = companyService.selectById(orderLogistics.getCompanyId()); + Double speMoney = company.getSpeMoney(); + BigDecimal d = null;//企业收入 + BigDecimal c = null;//司机收入 + if(company.getIsSpeFixedOrProportional() == 2){//固定 + d = new BigDecimal(speMoney); + c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 + } + if(company.getIsSpeFixedOrProportional() == 1){//比例 + Double price = orderLogistics.getStartMoney() + orderLogistics.getMileageMoney() + orderLogistics.getWaitMoney() + orderLogistics.getDurationMoney() + orderLogistics.getLongDistanceMoney(); + d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))); + c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); + } + incomeService.saveData(1, orderLogistics.getCompanyId(), 2, orderLogistics.getId(), 4, d.doubleValue()); + incomeService.saveData(2, orderLogistics.getDriverId(), 2, orderLogistics.getId(), 4, c.doubleValue()); + Driver driver = driverService.selectById(orderLogistics.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); + } // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 new Thread(new Runnable() { @@ -750,13 +1068,280 @@ systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单支付,谢谢使用!" : language == 2 ? "You've paid for the delivery order successfully, thank you for using I-GO" : "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", uid, 1); - this.pushOrder(orderLogistics);//推单 + + + + language = userInfo.getLanguage(); + String payTypeChinese = ""; + String payTypeEnglish = ""; + String payTypeFrench = ""; + if(orderLogistics.getPayType() == 3){ + payTypeChinese = "余额支付"; + payTypeEnglish = "I-GO Wallet"; + payTypeFrench = "Portefeuille I-GO"; + } + + if(ToolUtil.isNotEmpty(userInfo.getEmail())){ + String path = templatePath + "user/receiptLogistics.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Driver driver = driverService.selectById(orderLogistics.getDriverId()); + Car car = carMapper.selectById(orderLogistics.getCarId()); + Double aDouble = 0D; + if(null != orderLogistics.getDriverId()){ + aDouble = orderEvaluateService.queryDriverScore(orderLogistics.getDriverId()); + } + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("I-GO电子收据"); + Element title_chinese = document.getElementById("title_chinese"); + title_chinese.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",您在I-GO此订单消费GHS " + orderLogistics.getPayMoney()); + Element xcf_chinese = document.getElementById("xcf_chinese"); + xcf_chinese.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_chinese = document.getElementById("yhq_chinese"); + yhq_chinese.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_chinese_div = document.getElementById("yhq_chinese_div"); + yhq_chinese_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_chinese = document.getElementById("zk_chinese"); + zk_chinese.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_chinese_div = document.getElementById("zk_chinese_div"); + zk_chinese_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_chinese = document.getElementById("hb_chinese"); + hb_chinese.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_chinese_div = document.getElementById("hb_chinese_div"); + hb_chinese_div.remove(); + } + Element xj_chinese = document.getElementById("xj_chinese"); + xj_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_chinese = document.getElementById("pay_type_chinese"); + pay_type_chinese.text(payTypeChinese); + Element pay_money_chinese = document.getElementById("pay_money_chinese"); + pay_money_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4"); + Element lost_item_chinese = document.getElementById("lost_item_chinese"); + lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4"); +// Element track_chinese = document.getElementById("track_chinese"); +// track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_chinese = document.getElementById("pay_time_chinese"); + pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_chinese = document.getElementsByClass("driver_chinese"); + for (int i = 0; i < driver_chinese.size(); i++) { + Element element = driver_chinese.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_chinese = document.getElementById("cp_chinese"); + cp_chinese.text("车牌:" + car.getCarLicensePlate()); + Element pf_chinese = document.getElementById("pf_chinese"); + pf_chinese.text("司机评分:" + aDouble); + Element start_address_chinese = document.getElementById("start_address_chinese"); + start_address_chinese.text(orderLogistics.getStartAddress()); + Element end_address_chinese = document.getElementById("end_address_chinese"); + end_address_chinese.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_chinese = document.getElementById("server_tel_chinese"); + server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("Receipt"); + Element title_english = document.getElementById("title_english"); + title_english.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip "); + Element xcf_english = document.getElementById("xcf_english"); + xcf_english.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_english = document.getElementById("yhq_english"); + yhq_english.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_english_div = document.getElementById("yhq_english_div"); + yhq_english_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_english = document.getElementById("zk_english"); + zk_english.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_english_div = document.getElementById("zk_english_div"); + zk_english_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_english = document.getElementById("hb_english"); + hb_english.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_english_div = document.getElementById("hb_english_div"); + hb_english_div.remove(); + } + Element xj_english = document.getElementById("xj_english"); + xj_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_english = document.getElementById("pay_type_english"); + pay_type_english.text(payTypeEnglish); + Element pay_money_english = document.getElementById("pay_money_english"); + pay_money_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4"); + Element lost_item_english = document.getElementById("lost_item_english"); + lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4"); +// Element track_english = document.getElementById("track_english"); +// track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_english = document.getElementById("pay_time_english"); + pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_english = document.getElementsByClass("driver_english"); + for (int i = 0; i < driver_english.size(); i++) { + Element element = driver_english.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_english = document.getElementById("cp_english"); + cp_english.text("Number Plate:" + car.getCarLicensePlate()); + Element pf_english = document.getElementById("pf_english"); + pf_english.text("Driver Rating:" + aDouble); + Element start_address_english = document.getElementById("start_address_english"); + start_address_english.text(orderLogistics.getStartAddress()); + Element end_address_english = document.getElementById("end_address_english"); + end_address_english.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_english = document.getElementById("server_tel_english"); + server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + document.getElementsByTag("title").get(0).text("Reçu"); + Element title_french = document.getElementById("title_french"); + title_french.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",Vous consommez GHS " + orderLogistics.getPayMoney() + " sur votre commande i-go1 le "); + Element xcf_french = document.getElementById("xcf_french"); + xcf_french.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_french = document.getElementById("yhq_french"); + yhq_french.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_french_div = document.getElementById("yhq_french_div"); + yhq_french_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_french = document.getElementById("zk_french"); + zk_french.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_french_div = document.getElementById("zk_french_div"); + zk_french_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_french = document.getElementById("hb_french"); + hb_french.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_french_div = document.getElementById("hb_french_div"); + hb_french_div.remove(); + } + Element xj_french = document.getElementById("xj_french"); + xj_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_french = document.getElementById("pay_type_french"); + pay_type_french.text(payTypeFrench); + Element pay_money_french = document.getElementById("pay_money_french"); + pay_money_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4"); + Element lost_item_french = document.getElementById("lost_item_french"); + lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4"); +// Element track_french = document.getElementById("track_french"); +// track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_french = document.getElementById("pay_time_french"); + pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_french = document.getElementsByClass("driver_french"); + for (int i = 0; i < driver_french.size(); i++) { + Element element = driver_french.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_french = document.getElementById("cp_french"); + cp_french.text("Plaque: GS " + car.getCarLicensePlate()); + Element pf_french = document.getElementById("pf_french"); + pf_french.text("Note du chauffeur: " + aDouble); + Element start_address_french = document.getElementById("start_address_french"); + start_address_french.text(orderLogistics.getStartAddress()); + Element end_address_french = document.getElementById("end_address_french"); + end_address_french.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_french = document.getElementById("server_tel_french"); + server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + + EmailUtil.send(userInfo.getEmail(), language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu", document.html()); + + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + try{ + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html", "I-GO", fileOutputStream); + }catch (Exception e){ + e.printStackTrace(); + System.out.println("html转pdf异常"); + } + + String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(userInfo.getId()); + tEmail.setType(1); + tEmail.setName(language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu"); + tEmail.setOrderId(orderId); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + String week = EmailUtil.getWeek(language, i); + tEmail.setWeek(week); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi"); + } + emailService.insert(tEmail); + } + + } Driver driver = driverService.selectById(orderLogistics.getDriverId()); if(payType == 4){//现金支付 SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId()); userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 + //添加交易明细 + transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId); + userInfoService.updateById(userInfo); + + orderLogistics.setState(1);//小件物流先支付后司机抢单 + orderLogistics.setDriverPay(1); + orderLogistics.setPayType(4); + orderLogistics.setPayMoney(orderMoney); + orderLogistics.setOrderMoney(orderLogistics.getOrderMoney()+orderLogistics.getFreeMoney().doubleValue()); + //处理优惠券和红包 if(null != userCouponRecord){ userCouponRecord.setState(2); @@ -791,15 +1376,91 @@ driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); driverService.updateById(driver); } + + if(null != orderLogistics.getDiscountMoney() && 0 < orderLogistics.getDiscountMoney()){ + Double money = orderLogistics.getDiscountMoney(); + incomeService.saveData(2, orderLogistics.getDriverId(), 6, orderLogistics.getId(), 4, money); + driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + driverService.updateById(driver); + } + + + if(orderLogistics.getIsplatPay()==1){ + //添加已收入明细 + Company company = companyService.selectById(orderLogistics.getCompanyId()); + Double speMoney = company.getSpeMoney(); + BigDecimal d = null;//企业收入 + BigDecimal c = null;//司机收入 + if(company.getIsSpeFixedOrProportional() == 2){//固定 + d = new BigDecimal(speMoney); + c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 + } + if(company.getIsSpeFixedOrProportional() == 1){//比例 + Double price = orderLogistics.getStartMoney() + orderLogistics.getMileageMoney() + orderLogistics.getWaitMoney() + orderLogistics.getDurationMoney() + orderLogistics.getLongDistanceMoney(); + d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))); + c = new BigDecimal(orderLogistics.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()); - //添加交易明细 - transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId); - userInfoService.updateById(userInfo); - - orderLogistics.setState(1);//小件物流先支付后司机抢单 - orderLogistics.setDriverPay(1); - orderLogistics.setPayType(4); - orderLogistics.setPayMoney(orderMoney); +// 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); + + + //记录司机待结算金额 + if(d.compareTo(new BigDecimal(0)) > 0){ + SettlementDetail settlementDetail = new SettlementDetail(); + settlementDetail.setOrderId(orderId); + settlementDetail.setOrderType(1); + settlementDetail.setDriverId(driver.getId()); + settlementDetail.setOrderMoney(orderLogistics.getOrderMoney()); + settlementDetail.setPrice(d.doubleValue()); + settlementDetail.setCreateTime(new Date()); + settlementDetailService.insert(settlementDetail); + + SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null); + if(null != settlementAllocation){ + JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent()); + Double maxPrice = jsonObject.getDouble("maxPrice"); + Integer type1 = jsonObject.getInteger("type"); + if(1 == type1){ + List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driver.getId()).isNull("settlementRecordId").last(" and DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(createTime, '%Y-%m-%d')")); + BigDecimal total = new BigDecimal(0); + for (SettlementDetail detail : settlementDetailList) { + total = total.add(new BigDecimal(detail.getPrice())); + } + if(maxPrice.compareTo(total.doubleValue()) <= 0){ + SettlementRecord settlementRecord = settlementRecordService.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", orderLogistics.getDriverId()) + .eq("type", type1).eq("paymentStatus", 1).last(" and day = DATE_FORMAT(now(), '%Y-%m-%d')")); + if(null == settlementRecord){ + settlementRecord = new SettlementRecord(); + settlementRecord.setDay(new Date()); + settlementRecord.setDriverId(orderLogistics.getDriverId()); + settlementRecord.setType(type1); + settlementRecord.setPaymentStatus(1); + settlementRecord.setPayMoney(total.doubleValue()); + settlementRecord.setInsertTime(new Date()); + settlementRecordService.insert(settlementRecord); + }else{ + settlementRecord.setPayMoney(total.doubleValue()); + settlementRecordService.updateById(settlementRecord); + } + for (SettlementDetail detail : settlementDetailList) { + detail.setSettlementRecordId(settlementRecord.getId()); + settlementDetailService.updateById(detail); + } + } + } + } + } + } + + + // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 new Thread(new Runnable() { @@ -813,8 +1474,259 @@ systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单支付,谢谢使用!" : language == 2 ? "You've paid for the delivery order successfully, thank you for using I-GO" : "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", uid, 1); - - this.pushOrder(orderLogistics);//推单 + + language = userInfo.getLanguage(); + String payTypeChinese = ""; + String payTypeEnglish = ""; + String payTypeFrench = ""; + if(orderLogistics.getPayType() == 3){ + payTypeChinese = "现金"; + payTypeEnglish = "Cash"; + payTypeFrench = "En espèces"; + } + + if(ToolUtil.isNotEmpty(userInfo.getEmail())){ + String path = templatePath + "user/receiptLogistics.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Car car = carMapper.selectById(orderLogistics.getCarId()); + Double aDouble = 0D; + if(null != orderLogistics.getDriverId()){ + aDouble = orderEvaluateService.queryDriverScore(orderLogistics.getDriverId()); + } + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("I-GO电子收据"); + Element title_chinese = document.getElementById("title_chinese"); + title_chinese.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",您在I-GO此订单消费GHS " + orderLogistics.getPayMoney()); + Element xcf_chinese = document.getElementById("xcf_chinese"); + xcf_chinese.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_chinese = document.getElementById("yhq_chinese"); + yhq_chinese.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_chinese_div = document.getElementById("yhq_chinese_div"); + yhq_chinese_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_chinese = document.getElementById("zk_chinese"); + zk_chinese.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_chinese_div = document.getElementById("zk_chinese_div"); + zk_chinese_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_chinese = document.getElementById("hb_chinese"); + hb_chinese.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_chinese_div = document.getElementById("hb_chinese_div"); + hb_chinese_div.remove(); + } + Element xj_chinese = document.getElementById("xj_chinese"); + xj_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_chinese = document.getElementById("pay_type_chinese"); + pay_type_chinese.text(payTypeChinese); + Element pay_money_chinese = document.getElementById("pay_money_chinese"); + pay_money_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4"); + Element lost_item_chinese = document.getElementById("lost_item_chinese"); + lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4"); +// Element track_chinese = document.getElementById("track_chinese"); +// track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_chinese = document.getElementById("pay_time_chinese"); + pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_chinese = document.getElementsByClass("driver_chinese"); + for (int i = 0; i < driver_chinese.size(); i++) { + Element element = driver_chinese.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_chinese = document.getElementById("cp_chinese"); + cp_chinese.text("车牌:" + car.getCarLicensePlate()); + Element pf_chinese = document.getElementById("pf_chinese"); + pf_chinese.text("司机评分:" + aDouble); + Element start_address_chinese = document.getElementById("start_address_chinese"); + start_address_chinese.text(orderLogistics.getStartAddress()); + Element end_address_chinese = document.getElementById("end_address_chinese"); + end_address_chinese.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_chinese = document.getElementById("server_tel_chinese"); + server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("Receipt"); + Element title_english = document.getElementById("title_english"); + title_english.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip "); + Element xcf_english = document.getElementById("xcf_english"); + xcf_english.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_english = document.getElementById("yhq_english"); + yhq_english.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_english_div = document.getElementById("yhq_english_div"); + yhq_english_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_english = document.getElementById("zk_english"); + zk_english.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_english_div = document.getElementById("zk_english_div"); + zk_english_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_english = document.getElementById("hb_english"); + hb_english.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_english_div = document.getElementById("hb_english_div"); + hb_english_div.remove(); + } + Element xj_english = document.getElementById("xj_english"); + xj_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_english = document.getElementById("pay_type_english"); + pay_type_english.text(payTypeEnglish); + Element pay_money_english = document.getElementById("pay_money_english"); + pay_money_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4"); + Element lost_item_english = document.getElementById("lost_item_english"); + lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4"); +// Element track_english = document.getElementById("track_english"); +// track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_english = document.getElementById("pay_time_english"); + pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_english = document.getElementsByClass("driver_english"); + for (int i = 0; i < driver_english.size(); i++) { + Element element = driver_english.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_english = document.getElementById("cp_english"); + cp_english.text("Number Plate:" + car.getCarLicensePlate()); + Element pf_english = document.getElementById("pf_english"); + pf_english.text("Driver Rating:" + aDouble); + Element start_address_english = document.getElementById("start_address_english"); + start_address_english.text(orderLogistics.getStartAddress()); + Element end_address_english = document.getElementById("end_address_english"); + end_address_english.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_english = document.getElementById("server_tel_english"); + server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + document.getElementsByTag("title").get(0).text("Reçu"); + Element title_french = document.getElementById("title_french"); + title_french.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",Vous consommez GHS " + orderLogistics.getPayMoney() + " sur votre commande i-go1 le "); + Element xcf_french = document.getElementById("xcf_french"); + xcf_french.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_french = document.getElementById("yhq_french"); + yhq_french.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_french_div = document.getElementById("yhq_french_div"); + yhq_french_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_french = document.getElementById("zk_french"); + zk_french.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_french_div = document.getElementById("zk_french_div"); + zk_french_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_french = document.getElementById("hb_french"); + hb_french.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_french_div = document.getElementById("hb_french_div"); + hb_french_div.remove(); + } + Element xj_french = document.getElementById("xj_french"); + xj_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_french = document.getElementById("pay_type_french"); + pay_type_french.text(payTypeFrench); + Element pay_money_french = document.getElementById("pay_money_french"); + pay_money_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4"); + Element lost_item_french = document.getElementById("lost_item_french"); + lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4"); +// Element track_french = document.getElementById("track_french"); +// track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_french = document.getElementById("pay_time_french"); + pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_french = document.getElementsByClass("driver_french"); + for (int i = 0; i < driver_french.size(); i++) { + Element element = driver_french.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_french = document.getElementById("cp_french"); + cp_french.text("Plaque: GS " + car.getCarLicensePlate()); + Element pf_french = document.getElementById("pf_french"); + pf_french.text("Note du chauffeur: " + aDouble); + Element start_address_french = document.getElementById("start_address_french"); + start_address_french.text(orderLogistics.getStartAddress()); + Element end_address_french = document.getElementById("end_address_french"); + end_address_french.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_french = document.getElementById("server_tel_french"); + server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + + EmailUtil.send(userInfo.getEmail(), language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu", document.html()); + + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + try{ + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html", "I-GO", fileOutputStream); + }catch (Exception e){ + e.printStackTrace(); + System.out.println("html转pdf异常"); + } + + String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(userInfo.getId()); + tEmail.setType(1); + tEmail.setName(language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu"); + tEmail.setOrderId(orderId); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + String week = EmailUtil.getWeek(language, i); + tEmail.setWeek(week); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi"); + } + emailService.insert(tEmail); + } } this.updateById(orderLogistics); @@ -1012,7 +1924,7 @@ if(null != query){ //添加交易明细 transactionDetailsService.saveData(orderLogistics.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, orderLogistics.getType(), query.getOrderId()); - orderLogistics.setState(1);//先支付后抢单 + orderLogistics.setState(8); orderLogistics.setPayType(query.getPayType()); orderLogistics.setPayMoney(query.getAmount()); this.updateById(orderLogistics); @@ -1061,8 +1973,265 @@ systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单支付,谢谢使用!" : language == 2 ? "You've paid for the delivery order successfully, thank you for using I-GO" : "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1); - - this.pushOrder(orderLogistics);//推单 + + language = userInfo.getLanguage(); + String payTypeChinese = ""; + String payTypeEnglish = ""; + String payTypeFrench = ""; + if(orderLogistics.getPayType() == 1){ + payTypeChinese = "手机支付"; + payTypeEnglish = "Mobile money"; + payTypeFrench = "Argent mobile"; + } + if(orderLogistics.getPayType() == 2){ + payTypeChinese = "银行卡支付"; + payTypeEnglish = "Bank card"; + payTypeFrench = "Carte bancaire"; + } + + if(ToolUtil.isNotEmpty(userInfo.getEmail())){ + String path = templatePath + "user/receiptLogistics.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Driver driver = driverService.selectById(orderLogistics.getDriverId()); + Car car = carMapper.selectById(orderLogistics.getCarId()); + Double aDouble = 0D; + if(null != orderLogistics.getDriverId()){ + aDouble = orderEvaluateService.queryDriverScore(orderLogistics.getDriverId()); + } + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("I-GO电子收据"); + Element title_chinese = document.getElementById("title_chinese"); + title_chinese.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",您在I-GO此订单消费GHS " + orderLogistics.getPayMoney()); + Element xcf_chinese = document.getElementById("xcf_chinese"); + xcf_chinese.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_chinese = document.getElementById("yhq_chinese"); + yhq_chinese.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_chinese_div = document.getElementById("yhq_chinese_div"); + yhq_chinese_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_chinese = document.getElementById("zk_chinese"); + zk_chinese.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_chinese_div = document.getElementById("zk_chinese_div"); + zk_chinese_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_chinese = document.getElementById("hb_chinese"); + hb_chinese.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_chinese_div = document.getElementById("hb_chinese_div"); + hb_chinese_div.remove(); + } + Element xj_chinese = document.getElementById("xj_chinese"); + xj_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_chinese = document.getElementById("pay_type_chinese"); + pay_type_chinese.text(payTypeChinese); + Element pay_money_chinese = document.getElementById("pay_money_chinese"); + pay_money_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=4"); + Element lost_item_chinese = document.getElementById("lost_item_chinese"); + lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=4"); +// Element track_chinese = document.getElementById("track_chinese"); +// track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_chinese = document.getElementById("pay_time_chinese"); + pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_chinese = document.getElementsByClass("driver_chinese"); + for (int i = 0; i < driver_chinese.size(); i++) { + Element element = driver_chinese.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_chinese = document.getElementById("cp_chinese"); + cp_chinese.text("车牌:" + car.getCarLicensePlate()); + Element pf_chinese = document.getElementById("pf_chinese"); + pf_chinese.text("司机评分:" + aDouble); + Element start_address_chinese = document.getElementById("start_address_chinese"); + start_address_chinese.text(orderLogistics.getStartAddress()); + Element end_address_chinese = document.getElementById("end_address_chinese"); + end_address_chinese.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_chinese = document.getElementById("server_tel_chinese"); + server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("Receipt"); + Element title_english = document.getElementById("title_english"); + title_english.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip "); + Element xcf_english = document.getElementById("xcf_english"); + xcf_english.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_english = document.getElementById("yhq_english"); + yhq_english.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_english_div = document.getElementById("yhq_english_div"); + yhq_english_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_english = document.getElementById("zk_english"); + zk_english.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_english_div = document.getElementById("zk_english_div"); + zk_english_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_english = document.getElementById("hb_english"); + hb_english.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_english_div = document.getElementById("hb_english_div"); + hb_english_div.remove(); + } + Element xj_english = document.getElementById("xj_english"); + xj_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_english = document.getElementById("pay_type_english"); + pay_type_english.text(payTypeEnglish); + Element pay_money_english = document.getElementById("pay_money_english"); + pay_money_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=4"); + Element lost_item_english = document.getElementById("lost_item_english"); + lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=4"); +// Element track_english = document.getElementById("track_english"); +// track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_english = document.getElementById("pay_time_english"); + pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_english = document.getElementsByClass("driver_english"); + for (int i = 0; i < driver_english.size(); i++) { + Element element = driver_english.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_english = document.getElementById("cp_english"); + cp_english.text("Number Plate:" + car.getCarLicensePlate()); + Element pf_english = document.getElementById("pf_english"); + pf_english.text("Driver Rating:" + aDouble); + Element start_address_english = document.getElementById("start_address_english"); + start_address_english.text(orderLogistics.getStartAddress()); + Element end_address_english = document.getElementById("end_address_english"); + end_address_english.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_english = document.getElementById("server_tel_english"); + server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + document.getElementsByTag("title").get(0).text("Reçu"); + Element title_french = document.getElementById("title_french"); + title_french.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",Vous consommez GHS " + orderLogistics.getPayMoney() + " sur votre commande i-go1 le "); + Element xcf_french = document.getElementById("xcf_french"); + xcf_french.text("GHS " + new BigDecimal(orderLogistics.getOrderMoney()).setScale(2, RoundingMode.HALF_EVEN)); + if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){ + Element yhq_french = document.getElementById("yhq_french"); + yhq_french.text("GHS -" + new BigDecimal(orderLogistics.getCouponMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element yhq_french_div = document.getElementById("yhq_french_div"); + yhq_french_div.remove(); + } + if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){ + Element zk_french = document.getElementById("zk_french"); + zk_french.text("GHS -" + new BigDecimal(orderLogistics.getDiscountMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element zk_french_div = document.getElementById("zk_french_div"); + zk_french_div.remove(); + } + if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){ + Element hb_french = document.getElementById("hb_french"); + hb_french.text("GHS -" + new BigDecimal(orderLogistics.getRedPacketMoney()).setScale(2, RoundingMode.HALF_EVEN)); + }else{ + Element hb_french_div = document.getElementById("hb_french_div"); + hb_french_div.remove(); + } + Element xj_french = document.getElementById("xj_french"); + xj_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pay_type_french = document.getElementById("pay_type_french"); + pay_type_french.text(payTypeFrench); + Element pay_money_french = document.getElementById("pay_money_french"); + pay_money_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN)); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=4"); + Element lost_item_french = document.getElementById("lost_item_french"); + lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=4"); +// Element track_french = document.getElementById("track_french"); +// track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html"); + Element pay_time_french = document.getElementById("pay_time_french"); + pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime()))); + Elements driver_french = document.getElementsByClass("driver_french"); + for (int i = 0; i < driver_french.size(); i++) { + Element element = driver_french.get(i); + element.text(" " + driver.getFirstName() + "." + driver.getLastName()); + } + Element cp_french = document.getElementById("cp_french"); + cp_french.text("Plaque: GS " + car.getCarLicensePlate()); + Element pf_french = document.getElementById("pf_french"); + pf_french.text("Note du chauffeur: " + aDouble); + Element start_address_french = document.getElementById("start_address_french"); + start_address_french.text(orderLogistics.getStartAddress()); + Element end_address_french = document.getElementById("end_address_french"); + end_address_french.text(orderLogistics.getEndAddress()); + Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId())); + Element server_tel_french = document.getElementById("server_tel_french"); + server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : "")); + } + + EmailUtil.send(userInfo.getEmail(), language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu", document.html()); + + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/parcel_receipt_" + id + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + id + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + try{ + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf("/usr/local/nginx/html/files/html/parcel_receipt_" + id + ".html", "I-GO", fileOutputStream); + }catch (Exception e){ + e.printStackTrace(); + System.out.println("html转pdf异常"); + } + + String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + id + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(userInfo.getId()); + tEmail.setType(1); + tEmail.setName(language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu"); + tEmail.setOrderId(id); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + String week = EmailUtil.getWeek(language, i); + tEmail.setWeek(week); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi"); + } + emailService.insert(tEmail); + } }else{ System.err.println("预支付数据异常(orderId = " + id + ")"); } @@ -1290,7 +2459,6 @@ @Override public void run() { pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), 4, orderLogistics.getState(), 0); - System.err.println("推送取消操作---------------------"); } }).start(); @@ -1298,15 +2466,6 @@ Driver driver = driverService.selectById(orderLogistics.getDriverId()); driver.setState(2); driverService.updateById(driver); - } - - if(null != orderLogistics.getDriverId()){ - new Thread(new Runnable() { - @Override - public void run() { - pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0); - } - }).start(); } //添加消息 @@ -1413,6 +2572,13 @@ }else{ map.put("receipt", ""); } + Integer companyId = 1; + if(null != map.get("driverId")){ + companyId = Integer.valueOf(String.valueOf(map.get("companyId"))); + } + CancleOrder cancleOrder = cancleOrderService.selectOne(new EntityWrapper<CancleOrder>().eq("companyId", companyId)); + JSONObject jsonObject = JSON.parseObject(cancleOrder.getContent()); + map.put("timeOutCancel", jsonObject.getIntValue("driverTimeout")); return map; } @@ -1722,4 +2888,174 @@ this.updateById(orderLogistics); } } + + + + @Override + public synchronized ResultUtil<BaseWarpper> queryRedMoney(Integer orderId) throws Exception { + OrderLogistics orderLogistics = this.selectById(orderId); + Integer companyId = orderLogistics.getCompanyId(); + + Map<String, Object> query = userActivityRedenvelopeService.query(companyId, orderLogistics.getTravelTime()); + Double money = 0D; + BaseWarpper baseWarpper = new BaseWarpper(); + if(null != query){ + Integer type = Integer.valueOf(String.valueOf(query.get("type"))); + if(type == 1){//固定金额 + money = Double.valueOf(String.valueOf(query.get("money"))); + }else{//随机金额 + Double startMoney = Double.valueOf(String.valueOf(query.get("startMoney"))); + Double endMoney = Double.valueOf(String.valueOf(query.get("endMoney"))); + money = new BigDecimal(startMoney + (Math.random() * (endMoney - startMoney))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); + } + //判断当前红包是否大于剩余可领取总金额 + if(money.compareTo(Double.valueOf(query.get("lavePrice").toString())) > 0){ + baseWarpper.setAmount(0D); + return ResultUtil.success(baseWarpper); + } + } + + baseWarpper.setAmount(money); + + if(money > 0){ + //添加临时红包数据 + UserRedPacketRecord userRedPacketRecord = new UserRedPacketRecord(); + userRedPacketRecord.setMoney(money); + userRedPacketRecord.setRemainingAmount(money); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + Integer.valueOf(String.valueOf(query.get("effective")))); + userRedPacketRecord.setExpirationTime(calendar.getTime()); + userRedPacketRecord.setInsertTime(new Date()); + userRedPacketRecord.setCompanyId(Integer.valueOf(String.valueOf(query.get("companyId")))); + userRedPacketRecord.setState(0); + userRedPacketRecord.setOrderId(orderLogistics.getId()); + userRedPacketRecord.setOrderType(4); + userRedPacketRecord.setUserId(orderLogistics.getUserId()); + userRedPacketRecordService.insert(userRedPacketRecord); + } + + return ResultUtil.success(baseWarpper); + } + + + + @Override + public synchronized ResultUtil shareRedEnvelope(Integer orderId, Integer language) throws Exception { + OrderLogistics orderLogistics = this.selectById(orderId); + UserRedPacketRecord query = userRedPacketRecordService.query_(orderLogistics.getUserId(), orderLogistics.getCompanyId(), 0, 4, null); + if(null != query){ + Double money = query.getMoney(); + Map<String, Object> map = userActivityRedenvelopeService.query(orderLogistics.getCompanyId(), orderLogistics.getTravelTime()); + Double laveMoney = Double.valueOf(String.valueOf(map.get("laveMoney"))); + if(money.compareTo(laveMoney) > 0){ + return ResultUtil.error(language == 1 ? "手速太慢了,红包已派发完啦!" : language == 2 ? "Too slow, all the lucky-promo has been distributed!" : "Trop lent, toute la promo chanceuse a été distribuée !"); + } + //判断当前红包是否大于剩余可领取总金额 + if(money.compareTo(Double.valueOf(map.get("lavePrice").toString())) > 0){ + return ResultUtil.error(language == 1 ? "手速太慢了,红包已派发完啦!" : language == 2 ? "Too slow, all the lucky-promo has been distributed!" : "Trop lent, toute la promo chanceuse a été distribuée !"); + } + double v = new BigDecimal(laveMoney).subtract(new BigDecimal(money)).doubleValue(); + + UserActivityRedenvelope id = userActivityRedenvelopeService.selectById(String.valueOf(map.get("id"))); + id.setLaveMoney(v); + id.setLavePrice(new BigDecimal(id.getLavePrice() - money).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + userActivityRedenvelopeService.updateById(id); + + query.setState(1); + query.setRedPacketActivityId(id.getId()); + userRedPacketRecordService.updateById(query); + + UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId()); + if(ToolUtil.isNotEmpty(userInfo.getEmail())){ + String path = templatePath + "user/redEnvelopes.html"; + Document document = Jsoup.parse(new File(path), "UTF-8"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if(1 == language){ + document.getElementById("english").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("红包活动"); + 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(query.getInsertTime())) + " 至 " + DateUtil.conversionFormat(language, sdf.format(query.getExpirationTime())) + ",详情请查看I-GO平台"); + } + if(2 == language){ + document.getElementById("chinese").remove(); + document.getElementById("french").remove(); + document.getElementsByTag("title").get(0).text("Lucky-promo activities"); + 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(query.getInsertTime())) + " to " + DateUtil.conversionFormat(language, sdf.format(query.getExpirationTime())) + ",check more details on the app."); + } + if(3 == language){ + document.getElementById("chinese").remove(); + document.getElementById("english").remove(); + document.getElementsByTag("title").get(0).text("Activités bonus"); + 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(query.getInsertTime())) + " au " + DateUtil.conversionFormat(language, sdf.format(query.getExpirationTime())) + ". 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()); + //开始生成pdf收据和html收据 + File file = new File("/usr/local/nginx/html/files/html/"); + if(!file.exists()){ + file.mkdirs(); + } + file = new File("/usr/local/nginx/html/files/html/redpacket_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + + String link ="http://182.160.16.251:81/files/html/redpacket_" + orderId + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(userInfo.getId()); + tEmail.setType(1); + tEmail.setName(language == 1 ? "红包活动" : language == 2 ? "Lucky-promo activities" : "Activités bonus"); + tEmail.setOrderId(orderId); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + tEmail.setWeek(EmailUtil.getWeek(language,i)); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin"); + }else { + tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi"); + } + emailService.insert(tEmail); + + } + + } + return ResultUtil.success(); + } + + + + /** + * 获取红包使用记录 + * @param uid + * @return + * @throws Exception + */ + @Override + public List<Map<String, Object>> queryRedEnvelope(Integer language, Integer uid) throws Exception { + List<Map<String, Object>> list = this.baseMapper.queryRedEnvelope(uid); + for (Map<String, Object> map : list) { + map.put("name", language == 1 ? "包裹" : language == 2 ? "Delivery" : "Livraison"); + if(null != map.get("time")){ + String time = map.get("time").toString(); + map.put("time", DateUtil.conversionFormat(language, time)); + } + } + return list; + } } -- Gitblit v1.7.1