From 00caef45a8833dc58919e23eb88a3484cfacdaa4 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 22 八月 2023 17:53:25 +0800 Subject: [PATCH] 更新 --- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java | 275 ++++------- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java | 15 UserIGOTravel/guns-admin/src/test/java/com/stylefeng/guns/TestGunsApplication.java | 19 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementDetailServiceImpl.java | 15 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java | 4 UserIGOTravel/guns-admin/pom.xml | 68 +- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementAllocationService.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementDetailService.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java | 15 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java | 70 +++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java | 2 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/HtmlToPdfUtils.java | 53 ++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 10 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OBSUploadUtil.java | 37 + UserIGOTravel/guns-admin/src/main/resources/redis.properties | 2 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 230 +++++++++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java | 16 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementDetailMapper.xml | 16 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementAllocationServiceImpl.java | 15 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml | 17 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementDetailMapper.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java | 44 + UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderWarpper.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/WaterMarkEventHandler.java | 80 +++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java | 2 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementAllocation.java | 26 + UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementDetail.java | 58 ++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 10 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementAllocationMapper.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java | 146 ++++++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementAllocationMapper.xml | 10 UserIGOTravel/guns-admin/src/main/resources/application.yml | 10 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java | 11 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java | 5 37 files changed, 1,125 insertions(+), 244 deletions(-) diff --git a/UserIGOTravel/guns-admin/pom.xml b/UserIGOTravel/guns-admin/pom.xml index 5581d4a..859f017 100644 --- a/UserIGOTravel/guns-admin/pom.xml +++ b/UserIGOTravel/guns-admin/pom.xml @@ -13,7 +13,7 @@ <name>guns-admin</name> <description>guns 的spring boot版本</description> - <packaging>war</packaging> + <packaging>jar</packaging> <dependencies> <dependency> @@ -242,45 +242,57 @@ <version>1.18.20</version> <scope>provided</scope> </dependency> + <!-- itext7html转pdf --> + <dependency> + <groupId>com.itextpdf</groupId> + <artifactId>html2pdf</artifactId> + <version>3.0.2</version> + </dependency> + <!-- 中文字体支持 --> + <dependency> + <groupId>com.itextpdf</groupId> + <artifactId>font-asian</artifactId> + <version>7.1.13</version> + </dependency> </dependencies> <build> <!--打包jar包方式--> - <!--<plugins>--> - <!--<plugin>--> - <!--<groupId>org.springframework.boot</groupId>--> - <!--<artifactId>spring-boot-maven-plugin</artifactId>--> - <!--<configuration>--> - <!--<fork>true</fork><!– 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart –>--> - <!--</configuration>--> - <!--</plugin>--> - <!--</plugins>--> - - <!--打包war包引入本地jar的打包方式--> <plugins> <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-war-plugin</artifactId> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> <configuration> - <!-- 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 --> - <failOnMissingWebXml>false</failOnMissingWebXml> - <!--打包后的项目名--> - <!--<warName>example</warName>--> - <!--<webResources>--> - <!--<resource>--> - <!--<!–把本地lib里面的jar复制到lib–>--> - <!--<directory>${project.basedir}/lib</directory>--> - <!--<targetPath>WEB-INF/lib/</targetPath>--> - <!--<includes>--> - <!--<include>**/*.jar</include>--> - <!--</includes>--> - <!--</resource>--> - <!--</webResources>--> + <fork>true</fork><!-- 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --> </configuration> </plugin> </plugins> + <!--打包war包引入本地jar的打包方式--> + <!--<plugins>--> + <!--<plugin>--> + <!--<groupId>org.apache.maven.plugins</groupId>--> + <!--<artifactId>maven-war-plugin</artifactId>--> + <!--<configuration>--> + <!--<!– 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 –>--> + <!--<failOnMissingWebXml>false</failOnMissingWebXml>--> + <!--<!–打包后的项目名–>--> + <!--<!–<warName>example</warName>–>--> + <!--<!–<webResources>–>--> + <!--<!–<resource>–>--> + <!--<!–<!–把本地lib里面的jar复制到lib–>–>--> + <!--<!–<directory>${project.basedir}/lib</directory>–>--> + <!--<!–<targetPath>WEB-INF/lib/</targetPath>–>--> + <!--<!–<includes>–>--> + <!--<!–<include>**/*.jar</include>–>--> + <!--<!–</includes>–>--> + <!--<!–</resource>–>--> + <!--<!–</webResources>–>--> + <!--</configuration>--> + <!--</plugin>--> + <!--</plugins>--> + <resources> <resource> diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java index 744bbb1..e12337e 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java @@ -22,11 +22,16 @@ import org.jsoup.nodes.Element; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import java.io.File; +import java.io.*; import java.math.BigDecimal; import java.util.*; @@ -56,6 +61,9 @@ @Autowired private IBankCardService bankCardService; + + @Autowired + private IOrderService orderService; @Value("${spring.mail.template-path}") private String templatePath; @@ -272,6 +280,20 @@ if(phone.indexOf("233") < 0){ phone = "233" + phone; } + switch (phoneOperator){ + case "MTN": + phoneOperator = "GH-MTN-B2C"; + break; + case "TIGO": + phoneOperator = "GH-TIGO-B2C"; + break; + case "VODAFONE": + phoneOperator = "GH-VODAFONE-B2C"; + break; + case "AIRTEL": + phoneOperator = "GH-AIRTEL-B2C"; + break; + } return userInfoService.captchaLogin(phoneOperator, phone, code, registIp, lat, lng,null,null,null,language); }catch (Exception e){ e.printStackTrace(); @@ -306,6 +328,20 @@ } if(phone.indexOf("233") < 0){ phone = "233" + phone; + } + switch (phoneOperator){ + case "MTN": + phoneOperator = "GH-MTN-B2C"; + break; + case "TIGO": + phoneOperator = "GH-TIGO-B2C"; + break; + case "VODAFONE": + phoneOperator = "GH-VODAFONE-B2C"; + break; + case "AIRTEL": + phoneOperator = "GH-AIRTEL-B2C"; + break; } return userInfoService.captchaLogin(phoneOperator, phone, code, uid, type, userType, language); }catch (Exception e){ @@ -495,6 +531,20 @@ } if(phone.indexOf("233") < 0){ phone = "233" + phone; + } + switch (phoneOperator){ + case "MTN": + phoneOperator = "GH-MTN-B2C"; + break; + case "TIGO": + phoneOperator = "GH-TIGO-B2C"; + break; + case "VODAFONE": + phoneOperator = "GH-VODAFONE-B2C"; + break; + case "AIRTEL": + phoneOperator = "GH-AIRTEL-B2C"; + break; } return userInfoService.bindingPhone(uid, phoneOperator, phone, code, language); }catch (Exception e){ @@ -708,6 +758,20 @@ } if(phone.indexOf("233") < 0){ phone = "233" + phone; + } + switch (phoneOperator){ + case "MTN": + phoneOperator = "GH-MTN-B2C"; + break; + case "TIGO": + phoneOperator = "GH-TIGO-B2C"; + break; + case "VODAFONE": + phoneOperator = "GH-VODAFONE-B2C"; + break; + case "AIRTEL": + phoneOperator = "GH-AIRTEL-B2C"; + break; } return userInfoService.updatePhone(code, phoneOperator, phone, uid, language); }catch (Exception e){ @@ -991,6 +1055,39 @@ } + + @ResponseBody + @PostMapping("/base/user/queryOrderLicensePlate") + @ApiOperation(value = "获取报失也车牌等信息", tags = {"用户端-个人中心"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流,5=跨城小件物流)", name = "orderType", required = true, dataType = "int"), + @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), + }) + public ResultUtil queryOrderLicensePlate(Integer orderType, Integer orderId){ + try { + Map<String, Object> map = orderService.queryOrderLicensePlate(orderType, orderId); + return ResultUtil.success(map); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + + @ResponseBody + @RequestMapping("/base/user/image") + public String image(@RequestPart("file") MultipartFile file) { + try { + String pictureName = OBSUploadUtil.inputStreamUpload(file); + return pictureName; + } catch (IOException e1) { + return null; + } + } + + + @ResponseBody @PostMapping("/api/user/queryBankCardList") @ApiOperation(value = "获取银行卡列表【1.1】", tags = {"用户端-个人中心"}, notes = "") @@ -1081,4 +1178,51 @@ return ResultUtil.runErr(); } } + + + /** + * 下载pdf + * @param orderId + * @param orderType + * @param response + */ + @ResponseBody + @GetMapping("/base/order/uploadReceiptPdf") + public void uploadReceiptPdf(Integer orderId, Integer orderType, HttpServletResponse response){ + FileInputStream fileInputStream = null; + ServletOutputStream outputStream = null; + try { + if(orderType == 1){ + fileInputStream = new FileInputStream(new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + orderId + ".pdf")); + } + if(orderType == 4){ + fileInputStream = new FileInputStream(new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + orderId + ".pdf")); + } + BufferedInputStream bf = new BufferedInputStream(fileInputStream); + outputStream = response.getOutputStream(); + response.setContentType(MediaType.APPLICATION_PDF_VALUE); + response.setHeader("content-Disposition","attachment;filename=" + (orderId + "_" + orderType + ".pdf")); + byte[] b = new byte[bf.available() + 1000]; + int i; + while((i=bf.read(b))!=-1){ + outputStream.write(b,0, i); + } + outputStream.flush(); + outputStream.close(); + fileInputStream.close(); + }catch (Exception e){ + e.printStackTrace(); + }finally { + try { + if(null != outputStream){ + outputStream.close(); + } + if(null != fileInputStream){ + fileInputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index b78fc67..9734040 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -578,11 +578,11 @@ //调用移动的小号接口 Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); Region region = regionMapper.query(geocode.get("districtCode")); - Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); - if(String.valueOf(map.get("code")).equals("200")){ - orderCrossCity.setTelX(map.get("telX")); - orderCrossCity.setBindId(map.get("bindId")); - } +// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); +// if(String.valueOf(map.get("code")).equals("200")){ +// orderCrossCity.setTelX(map.get("telX")); +// orderCrossCity.setBindId(map.get("bindId")); +// } this.insert(orderCrossCity); if(driver.getState() == 2){ 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 8e24eca..c244630 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 @@ -22,6 +22,7 @@ import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest; import com.stylefeng.guns.modular.system.util.Tingg.model.PayoutResponse; import com.stylefeng.guns.modular.system.util.Tingg.model.Results; +import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.taxi.model.PaymentRecord; import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService; @@ -37,6 +38,9 @@ import javax.annotation.Resource; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileWriter; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; @@ -560,91 +564,28 @@ orderLogistics.setPayMoney(orderMoney); - - 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()); - if(1 == language){ - document.getElementById("english").remove(); - document.getElementById("french").remove(); - Element title_chinese = document.getElementById("title_chinese"); - title_chinese.text(sdf2.format(orderLogistics.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderLogistics.getPayMoney()); - Element xcf_chinese = document.getElementById("xcf_chinese"); - xcf_chinese.text("GHS " + orderLogistics.getOrderMoney()); - Element xj_chinese = document.getElementById("xj_chinese"); - xj_chinese.text("GHS " + orderLogistics.getOrderMoney()); - Element pay_type_chinese = document.getElementById("pay_type_chinese"); - pay_type_chinese.text("余额"); - Element pay_money_chinese = document.getElementById("pay_money_chinese"); - pay_money_chinese.text("GHS " + orderLogistics.getPayMoney()); - Element pay_time_chinese = document.getElementById("pay_time_chinese"); - pay_time_chinese.text(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 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()); - } - if(2 == language){ - document.getElementById("chinese").remove(); - document.getElementById("french").remove(); - Element title_english = document.getElementById("title_english"); - title_english.text(sdf2.format(orderLogistics.getTravelTime()) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip "); - Element xcf_english = document.getElementById("xcf_english"); - xcf_english.text("GHS " + orderLogistics.getOrderMoney()); - Element xj_english = document.getElementById("xj_english"); - xj_english.text("GHS " + orderLogistics.getOrderMoney()); - Element pay_type_english = document.getElementById("pay_type_english"); - pay_type_english.text("balance"); - Element pay_money_english = document.getElementById("pay_money_english"); - pay_money_english.text("GHS " + orderLogistics.getPayMoney()); - Element pay_time_english = document.getElementById("pay_time_english"); - pay_time_english.text(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 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()); - } - if(3 == language){ - document.getElementById("chinese").remove(); - document.getElementById("english").remove(); - Element title_french = document.getElementById("title_french"); - title_french.text(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 " + orderLogistics.getOrderMoney()); - Element xj_french = document.getElementById("xj_french"); - xj_french.text("GHS " + orderLogistics.getOrderMoney()); - Element pay_type_french = document.getElementById("pay_type_french"); - pay_type_french.text("Le solde"); - Element pay_money_french = document.getElementById("pay_money_french"); - pay_money_french.text("GHS " + orderLogistics.getPayMoney()); - Element pay_time_french = document.getElementById("pay_time_french"); - pay_time_french.text(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 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()); - } - - EmailUtil.send(userInfo.getEmail(), language == 1 ? "包裹收据" : language == 2 ? "Parcel receipt" : "Réception de colis", document.html()); + //添加已收入明细 + Company company = companyService.selectById(orderLogistics.getCompanyId()); + Double speMoney = company.getCrossLogisticsMoney(); + BigDecimal d = null;//企业收入 + BigDecimal c = null;//司机收入 + if(company.getIsCrossLogisticsFixedOrProportional() == 2){//固定 + d = new BigDecimal(speMoney); + c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 } + if(company.getIsSpeFixedOrProportional() == 1){//比例 + Double price = orderLogistics.getOrderMoney(); + 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() { @@ -675,7 +616,7 @@ 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 sdf2 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); Driver driver = driverService.selectById(orderLogistics.getDriverId()); if(1 == language){ @@ -691,6 +632,12 @@ pay_type_chinese.text("现金"); Element pay_money_chinese = document.getElementById("pay_money_chinese"); pay_money_chinese.text("GHS " + orderLogistics.getPayMoney()); + 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(sdf1.format(orderLogistics.getTravelTime())); Elements driver_chinese = document.getElementsByClass("driver_chinese"); @@ -716,6 +663,12 @@ pay_type_english.text("cash"); Element pay_money_english = document.getElementById("pay_money_english"); pay_money_english.text("GHS " + orderLogistics.getPayMoney()); + 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(sdf1.format(orderLogistics.getTravelTime())); Elements driver_english = document.getElementsByClass("driver_english"); @@ -741,6 +694,12 @@ pay_type_french.text("espèces"); Element pay_money_french = document.getElementById("pay_money_french"); pay_money_french.text("GHS " + orderLogistics.getPayMoney()); + 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(sdf1.format(orderLogistics.getTravelTime())); Elements driver_french = document.getElementsByClass("driver_french"); @@ -755,6 +714,31 @@ } EmailUtil.send(userInfo.getEmail(), language == 1 ? "包裹收据" : language == 2 ? "Parcel receipt" : "Réception de colis", 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(); + FileInputStream fileInputStream = new FileInputStream(file); + 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(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); } @@ -982,91 +966,27 @@ query.setCode(order_id); paymentRecordService.updateById(query); - if(ToolUtil.isNotEmpty(userInfo.getEmail())){ - String path = templatePath + "user/receiptLogistics.html"; - Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); - Driver driver = driverService.selectById(orderLogistics.getDriverId()); - if(1 == language){ - document.getElementById("english").remove(); - document.getElementById("french").remove(); - Element title_chinese = document.getElementById("title_chinese"); - title_chinese.text(sdf.format(orderLogistics.getTravelTime()) + ",您在I-GO1个订单消费GHS " + orderLogistics.getPayMoney()); - Element xcf_chinese = document.getElementById("xcf_chinese"); - xcf_chinese.text("GHS " + orderLogistics.getOrderMoney()); - Element xj_chinese = document.getElementById("xj_chinese"); - xj_chinese.text("GHS " + orderLogistics.getOrderMoney()); - Element pay_type_chinese = document.getElementById("pay_type_chinese"); - pay_type_chinese.text("余额"); - Element pay_money_chinese = document.getElementById("pay_money_chinese"); - pay_money_chinese.text("GHS " + orderLogistics.getPayMoney()); - Element pay_time_chinese = document.getElementById("pay_time_chinese"); - pay_time_chinese.text(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 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()); - } - if(2 == language){ - document.getElementById("chinese").remove(); - document.getElementById("french").remove(); - Element title_english = document.getElementById("title_english"); - title_english.text(sdf.format(orderLogistics.getTravelTime()) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip "); - Element xcf_english = document.getElementById("xcf_english"); - xcf_english.text("GHS " + orderLogistics.getOrderMoney()); - Element xj_english = document.getElementById("xj_english"); - xj_english.text("GHS " + orderLogistics.getOrderMoney()); - Element pay_type_english = document.getElementById("pay_type_english"); - pay_type_english.text("balance"); - Element pay_money_english = document.getElementById("pay_money_english"); - pay_money_english.text("GHS " + orderLogistics.getPayMoney()); - Element pay_time_english = document.getElementById("pay_time_english"); - pay_time_english.text(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 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()); - } - if(3 == language){ - document.getElementById("chinese").remove(); - document.getElementById("english").remove(); - Element title_french = document.getElementById("title_french"); - title_french.text(sdf.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 " + orderLogistics.getOrderMoney()); - Element xj_french = document.getElementById("xj_french"); - xj_french.text("GHS " + orderLogistics.getOrderMoney()); - Element pay_type_french = document.getElementById("pay_type_french"); - pay_type_french.text("Le solde"); - Element pay_money_french = document.getElementById("pay_money_french"); - pay_money_french.text("GHS " + orderLogistics.getPayMoney()); - Element pay_time_french = document.getElementById("pay_time_french"); - pay_time_french.text(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 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()); - } - - EmailUtil.send(userInfo.getEmail(), language == 1 ? "包裹收据" : language == 2 ? "Parcel receipt" : "Réception de colis", document.html()); + //添加已收入明细 + Company company = companyService.selectById(orderLogistics.getCompanyId()); + Double speMoney = company.getCrossLogisticsMoney(); + BigDecimal d = null;//企业收入 + BigDecimal c = null;//司机收入 + if(company.getIsCrossLogisticsFixedOrProportional() == 2){//固定 + d = new BigDecimal(speMoney); + c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机 } - + if(company.getIsSpeFixedOrProportional() == 1){//比例 + Double price = orderLogistics.getOrderMoney(); + 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 这里需要给司机和用户推送订单状态 @@ -1189,6 +1109,15 @@ public List<Map<String, Object>> queryMyOrderList(Integer uid, Integer pageNum, Integer size, Integer language) throws Exception { pageNum = (pageNum - 1) * size; List<Map<String, Object>> maps = orderLogisticsMapper.queryMyOrderList(uid, pageNum, size, language); + for (Map<String, Object> map : maps) { + Integer orderId = Integer.valueOf(String.valueOf(map.get("orderId"))); + Integer state = Integer.valueOf(String.valueOf(map.get("state"))); + if(state == 6){ + map.put("receipt", "http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html"); + }else{ + map.put("receipt", ""); + } + } return maps; } @@ -1403,12 +1332,13 @@ @Override public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { Map<String, Object> map = orderLogisticsMapper.queryOrderInfo(orderId); + Integer state = Integer.valueOf(String.valueOf(map.get("state"))); OrderLogistics orderLogistics = this.selectById(orderId); if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用 orderLogistics.setReassignNotice(0); this.updateById(orderLogistics); } - if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ + if(state == 11){ map.put("state", map.get("oldState")); } Map<String, String> geocode = gdMapGeocodingUtil.geocode(map.get("startLon").toString(), map.get("startLat").toString()); @@ -1419,6 +1349,11 @@ String driverId = redisUtil.getValue("DEVICE_" + map.get("driverId")); map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); map.put("orderType", orderLogistics.getType()); + if(state == 6){ + map.put("receipt", "http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html"); + }else{ + map.put("receipt", ""); + } return map; } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 547000e..e19ea4b 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -24,6 +24,7 @@ import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil; import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest; +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; @@ -50,10 +51,7 @@ import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; +import java.io.*; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; @@ -183,6 +181,15 @@ @Value("${spring.mail.template-path}") private String templatePath; + + @Autowired + private ISettlementDetailService settlementDetailService; + + @Autowired + private ISettlementRecordService settlementRecordService; + + @Autowired + private ISettlementAllocationService settlementAllocationService; @@ -828,6 +835,9 @@ return list; } + + + @Override public ResultUtil payPrivateCarOrder(Integer payType, Integer bankCardId, Integer orderId, Integer couponId, Integer type, Integer language) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); @@ -1000,7 +1010,7 @@ if(ToolUtil.isNotEmpty(userInfo.getEmail())){ String path = templatePath + "user/receipt.html"; Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); Car car = carMapper.selectById(orderPrivateCar.getCarId()); @@ -1023,6 +1033,12 @@ pay_type_chinese.text("余额"); Element pay_money_chinese = document.getElementById("pay_money_chinese"); pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + 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=1"); + Element track_chinese = document.getElementById("track_chinese"); + track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); Element pay_time_chinese = document.getElementById("pay_time_chinese"); pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_chinese = document.getElementsByClass("driver_chinese"); @@ -1058,6 +1074,12 @@ pay_type_english.text("balance"); Element pay_money_english = document.getElementById("pay_money_english"); pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + 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=1"); + Element track_english = document.getElementById("track_english"); + track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); Element pay_time_english = document.getElementById("pay_time_english"); pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_english = document.getElementsByClass("driver_english"); @@ -1093,6 +1115,12 @@ pay_type_french.text("Le solde"); Element pay_money_french = document.getElementById("pay_money_french"); pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + 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=1"); + Element track_french = document.getElementById("track_french"); + track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); Element pay_time_french = document.getElementById("pay_time_french"); pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_french = document.getElementsByClass("driver_french"); @@ -1115,8 +1143,32 @@ Element end_address_french = document.getElementById("end_address_french"); end_address_french.text(orderPrivateCar.getEndAddress()); } - EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", 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/ride_receipt_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); } @@ -1146,7 +1198,7 @@ orderPrivateCar.setState(8); orderPrivateCar.setPayType(4); - orderPrivateCar.setDriverPay(1); + orderPrivateCar.setDriverPay(2); orderPrivateCar.setPayMoney(orderMoney); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+orderPrivateCar.getFreeMoney().doubleValue()); @@ -1176,19 +1228,58 @@ d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))); c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); } - incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); - incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); +// incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue()); +// incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue()); Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); - driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driverService.updateById(driver); +// 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(orderPrivateCar.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"); + 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 = new SettlementRecord(); + settlementRecord.setDay(new Date()); + settlementRecord.setDriverId(driver.getId()); + settlementRecord.setType(1); + settlementRecord.setPaymentStatus(1); + settlementRecord.setPayMoney(total.doubleValue()); + settlementRecord.setInsertTime(new Date()); + settlementRecordService.insert(settlementRecord); + + for (SettlementDetail detail : settlementDetailList) { + detail.setSettlementRecordId(settlementRecord.getId()); + settlementDetailService.updateById(detail); + } + } + } + } } if(ToolUtil.isNotEmpty(userInfo.getEmail())){ String path = templatePath + "user/receipt.html"; Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); Car car = carMapper.selectById(orderPrivateCar.getCarId()); @@ -1211,6 +1302,12 @@ pay_type_chinese.text("现金"); Element pay_money_chinese = document.getElementById("pay_money_chinese"); pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + 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=1"); + Element track_chinese = document.getElementById("track_chinese"); + track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); Element pay_time_chinese = document.getElementById("pay_time_chinese"); pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_chinese = document.getElementsByClass("driver_chinese"); @@ -1246,6 +1343,12 @@ pay_type_english.text("Cash"); Element pay_money_english = document.getElementById("pay_money_english"); pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + 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=1"); + Element track_english = document.getElementById("track_english"); + track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); Element pay_time_english = document.getElementById("pay_time_english"); pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_english = document.getElementsByClass("driver_english"); @@ -1281,6 +1384,12 @@ pay_type_french.text("espèces"); Element pay_money_french = document.getElementById("pay_money_french"); pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=1"); + 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=1"); + Element track_french = document.getElementById("track_french"); + track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + orderId); Element pay_time_french = document.getElementById("pay_time_french"); pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_french = document.getElementsByClass("driver_french"); @@ -1305,6 +1414,31 @@ } EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", 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/ride_receipt_" + orderId + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + orderId + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); } @@ -1568,7 +1702,7 @@ if(ToolUtil.isNotEmpty(userInfo.getEmail())){ String path = templatePath + "user/receipt.html"; Document document = Jsoup.parse(new File(path), "UTF-8"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm"); Car car = carMapper.selectById(orderPrivateCar.getCarId()); @@ -1588,9 +1722,15 @@ Element xj_chinese = document.getElementById("xj_chinese"); xj_chinese.text("GHS " + orderPrivateCar.getOrderMoney()); Element pay_type_chinese = document.getElementById("pay_type_chinese"); - pay_type_chinese.text("现金"); + pay_type_chinese.text(orderPrivateCar.getPayType() == 1 ? "手机" : "银行卡"); Element pay_money_chinese = document.getElementById("pay_money_chinese"); pay_money_chinese.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_chinese = document.getElementById("pdf_chinese"); + pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=1"); + 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=1"); + Element track_chinese = document.getElementById("track_chinese"); + track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + id); Element pay_time_chinese = document.getElementById("pay_time_chinese"); pay_time_chinese.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_chinese = document.getElementsByClass("driver_chinese"); @@ -1623,9 +1763,15 @@ Element xj_english = document.getElementById("xj_english"); xj_english.text("GHS " + orderPrivateCar.getOrderMoney()); Element pay_type_english = document.getElementById("pay_type_english"); - pay_type_english.text("Cash"); + pay_type_english.text(orderPrivateCar.getPayType() == 1 ? "Mobile" : "Bank card"); Element pay_money_english = document.getElementById("pay_money_english"); pay_money_english.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_english = document.getElementById("pdf_english"); + pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=1"); + 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=1"); + Element track_english = document.getElementById("track_english"); + track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + id); Element pay_time_english = document.getElementById("pay_time_english"); pay_time_english.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_english = document.getElementsByClass("driver_english"); @@ -1658,9 +1804,15 @@ Element xj_french = document.getElementById("xj_french"); xj_french.text("GHS " + orderPrivateCar.getOrderMoney()); Element pay_type_french = document.getElementById("pay_type_french"); - pay_type_french.text("espèces"); + pay_type_french.text(orderPrivateCar.getPayType() == 1 ? "Mobile" : "Carte bancaire"); Element pay_money_french = document.getElementById("pay_money_french"); pay_money_french.text("GHS " + orderPrivateCar.getPayMoney()); + Element pdf_french = document.getElementById("pdf_french"); + pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + id + "&orderType=1"); + 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=1"); + Element track_french = document.getElementById("track_french"); + track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html?orderId=" + id); Element pay_time_french = document.getElementById("pay_time_french"); pay_time_french.text(sdf1.format(orderPrivateCar.getEndServiceTime())); Elements driver_french = document.getElementsByClass("driver_french"); @@ -1685,6 +1837,31 @@ } EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride", 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/ride_receipt_" + id + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document.html()); + fileWriter.flush(); + fileWriter.close(); + FileInputStream fileInputStream = new FileInputStream(file); + File file1 = new File("/usr/local/nginx/html/files/pdf/"); + if(!file1.exists()){ + file1.mkdirs(); + } + file1 = new File("/usr/local/nginx/html/files/pdf/ride_receipt_" + id + ".pdf"); + if(!file1.exists()){ + file1.createNewFile(); + } + FileOutputStream fileOutputStream = new FileOutputStream(file1); + HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream); } @@ -1715,8 +1892,15 @@ pageNum = (pageNum - 1) * size; List<Map<String, Object>> maps = orderPrivateCarMapper.queryMyOrderList(uid, pageNum, size); for(Map<String, Object> map : maps){ - if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ + Integer orderId = Integer.valueOf(String.valueOf(map.get("orderId"))); + Integer state = Integer.valueOf(String.valueOf(map.get("state"))); + if(state == 11){ map.put("state", map.get("oldState")); + } + if(state == 8 || state == 9){ + map.put("receipt", "http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html"); + }else{ + map.put("receipt", ""); } } return maps; @@ -1732,12 +1916,13 @@ @Override public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { Map<String, Object> map = orderPrivateCarMapper.queryOrderInfo(orderId); + Integer state = Integer.valueOf(String.valueOf(map.get("state"))); if(null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2){//改派完成,重新获取了新的司机数据,开始修改数据防止继续调用 OrderPrivateCar orderPrivateCar = this.selectById(orderId); orderPrivateCar.setReassignNotice(0); this.updateById(orderPrivateCar); } - if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){ + if(state == 11){ map.put("state", map.get("oldState")); } if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){ @@ -1765,6 +1950,11 @@ String driverId = redisUtil.getValue("DEVICE_" + map.get("driverId")); map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); map.put("orderType", 1); + if(state == 8 || state == 9){ + map.put("receipt", "http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html"); + }else{ + map.put("receipt", ""); + } return map; } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementAllocationMapper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementAllocationMapper.java new file mode 100644 index 0000000..553b480 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementAllocationMapper.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.SettlementAllocation; + +/** + * @author zhibing.pu + * @Date 2023/8/17 16:24 + */ +public interface SettlementAllocationMapper extends BaseMapper<SettlementAllocation> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementDetailMapper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementDetailMapper.java new file mode 100644 index 0000000..8e14086 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementDetailMapper.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.SettlementDetail; + +/** + * @author zhibing.pu + * @Date 2023/8/17 14:02 + */ +public interface SettlementDetailMapper extends BaseMapper<SettlementDetail> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java new file mode 100644 index 0000000..9343832 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.SettlementRecord; + +/** + * @author zhibing.pu + * @Date 2023/8/17 14:35 + */ +public interface SettlementRecordMapper extends BaseMapper<SettlementRecord> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementAllocationMapper.xml b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementAllocationMapper.xml new file mode 100644 index 0000000..856351c --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementAllocationMapper.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stylefeng.guns.modular.system.dao.SettlementAllocationMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.SettlementAllocation"> + <id column="id" property="id"/> + <result column="content" property="content"/> + </resultMap> +</mapper> \ No newline at end of file diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementDetailMapper.xml b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementDetailMapper.xml new file mode 100644 index 0000000..f568009 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementDetailMapper.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stylefeng.guns.modular.system.dao.SettlementDetailMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.SettlementDetail"> + <id column="id" property="id"/> + <result column="settlementRecordId" property="settlementRecordId"/> + <result column="orderId" property="orderId"/> + <result column="orderType" property="orderType"/> + <result column="driverId" property="driverId"/> + <result column="orderMoney" property="orderMoney"/> + <result column="orderMoney" property="orderMoney"/> + <result column="createTime" property="createTime"/> + </resultMap> +</mapper> \ No newline at end of file diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml new file mode 100644 index 0000000..8a9be42 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stylefeng.guns.modular.system.dao.SettlementRecordMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.SettlementRecord"> + <id column="id" property="id"/> + <result column="day" property="day"/> + <result column="driverId" property="driverId"/> + <result column="type" property="type"/> + <result column="paymentStatus" property="paymentStatus"/> + <result column="payMoney" property="payMoney"/> + <result column="payType" property="payType"/> + <result column="code" property="code"/> + <result column="insertTime" property="insertTime"/> + </resultMap> +</mapper> \ No newline at end of file diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementAllocation.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementAllocation.java new file mode 100644 index 0000000..031d212 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementAllocation.java @@ -0,0 +1,26 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +/** + * @author zhibing.pu + * @Date 2023/8/17 9:26 + */ +@Data +@TableName("t_settlement_allocation") +public class SettlementAllocation { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 配置json + */ + @TableField("content") + private String content; +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementDetail.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementDetail.java new file mode 100644 index 0000000..05b0067 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementDetail.java @@ -0,0 +1,58 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.util.Date; + +/** + * @author zhibing.pu + * @Date 2023/8/17 9:23 + */ +@Data +@TableName("t_settlement_detail") +public class SettlementDetail { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 结算主表id + */ + @TableField("settlementRecordId") + private Integer settlementRecordId; + /** + * 订单id + */ + @TableField("orderId") + private Integer orderId; + /** + * 订单类型(1=专车,4=同城小件) + */ + @TableField("orderType") + private Integer orderType; + /** + * 司机id + */ + @TableField("driverId") + private Integer driverId; + /** + * 订单金额 + */ + @TableField("orderMoney") + private Double orderMoney; + /** + * 结算金额 + */ + @TableField("price") + private Double price; + /** + * 添加日期 + */ + @TableField("createTime") + private Date createTime; +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java new file mode 100644 index 0000000..b1e2984 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java @@ -0,0 +1,70 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.util.Date; + +/** + * @author zhibing.pu + * @Date 2023/8/17 9:13 + */ +@Data +@TableName("t_settlement_record") +public class SettlementRecord { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 结算日期 + */ + @TableField("day") + private Date day; + /** + * 司机id + */ + @TableField("driverId") + private Integer driverId; + /** + * 结算周期(1=日结算,2=周结算,3=月结算) + */ + @TableField("type") + private Integer type; + /** + * 支付状态(1=待支付,2=已支付) + */ + @TableField("paymentStatus") + private Integer paymentStatus; + /** + * 支付金额 + */ + @TableField("payMoney") + private Double payMoney; + /** + * 支付方式(1=手机支付,2=银行卡支付,3=余额支付) + */ + @TableField("payType") + private Integer payType; + /** + * 支付时间 + */ + @TableField("payTime") + private Date payTime; + /** + * 支付单号 + */ + @TableField("code") + private String code; + /** + * 添加时间 + */ + @TableField("insertTime") + private Date insertTime; + + +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java new file mode 100644 index 0000000..f15b0c4 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.Car; + +/** + * @author zhibing.pu + * @Date 2023/8/16 14:35 + */ +public interface ICarService extends IService<Car> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java index 001598c..208b2d3 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java @@ -3,6 +3,8 @@ import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; +import java.util.Map; + public interface IOrderService { @@ -27,4 +29,13 @@ * @throws Exception */ ResultUtil weChatPay(Integer orderId, Integer orderType, Integer type, Integer userType, Integer uid, String content, Integer language) throws Exception; + + + /** + * 获取订单车牌信息 + * @param orderType + * @param orderId + * @return + */ + Map<String, Object> queryOrderLicensePlate(Integer orderType, Integer orderId); } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementAllocationService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementAllocationService.java new file mode 100644 index 0000000..d299396 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementAllocationService.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.SettlementAllocation; + +/** + * @author zhibing.pu + * @Date 2023/8/17 16:31 + */ +public interface ISettlementAllocationService extends IService<SettlementAllocation> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementDetailService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementDetailService.java new file mode 100644 index 0000000..71466cd --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementDetailService.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.SettlementDetail; + +/** + * @author zhibing.pu + * @Date 2023/8/17 14:04 + */ +public interface ISettlementDetailService extends IService<SettlementDetail> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java new file mode 100644 index 0000000..a20d0c0 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java @@ -0,0 +1,11 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.SettlementRecord; + +/** + * @author zhibing.pu + * @Date 2023/8/17 14:36 + */ +public interface ISettlementRecordService extends IService<SettlementRecord> { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java new file mode 100644 index 0000000..86b4e6a --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java @@ -0,0 +1,15 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.CarMapper; +import com.stylefeng.guns.modular.system.model.Car; +import com.stylefeng.guns.modular.system.service.ICarService; +import org.springframework.stereotype.Service; + +/** + * @author zhibing.pu + * @Date 2023/8/16 14:36 + */ +@Service +public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarService { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java index 5bc94bc..c2a091f 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java @@ -2,9 +2,15 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; +import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; +import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; +import com.stylefeng.guns.modular.system.model.Car; +import com.stylefeng.guns.modular.system.model.UserInfo; +import com.stylefeng.guns.modular.system.service.ICarService; import com.stylefeng.guns.modular.system.service.IOrderService; import com.stylefeng.guns.modular.system.service.IUserInfoService; import com.stylefeng.guns.modular.system.util.ChinaMobileUtil; @@ -23,6 +29,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; +import java.util.HashMap; import java.util.Map; @@ -52,6 +59,9 @@ @Autowired private IOrderLogisticsService orderLogisticsService; + + @Autowired + private ICarService carService; /** @@ -135,4 +145,38 @@ } return ResultUtil.success(); } + + + /** + * 获取订单车牌信息 + * @param orderType + * @param orderId + * @return + */ + @Override + public Map<String, Object> queryOrderLicensePlate(Integer orderType, Integer orderId) { + Map<String, Object> map = new HashMap<>(); + if(orderType == 1){ + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + if(null != orderPrivateCar.getCarId()){ + Car car = carService.selectById(orderPrivateCar.getCarId()); + map.put("licensePlate", car.getCarLicensePlate()); + } + map.put("userName", orderPrivateCar.getPassengers()); + map.put("phone", orderPrivateCar.getPassengersPhone()); + } + if(orderType == 4){ + OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); + if(null != orderLogistics.getCarId()){ + Car car = carService.selectById(orderLogistics.getCarId()); + map.put("licensePlate", car.getCarLicensePlate()); + } + if(null != orderLogistics.getUserId()){ + UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId()); + map.put("userName", ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()); + map.put("phone", userInfo.getPhone()); + } + } + return map; + } } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementAllocationServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementAllocationServiceImpl.java new file mode 100644 index 0000000..ed293c2 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementAllocationServiceImpl.java @@ -0,0 +1,15 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.SettlementAllocationMapper; +import com.stylefeng.guns.modular.system.model.SettlementAllocation; +import com.stylefeng.guns.modular.system.service.ISettlementAllocationService; +import org.springframework.stereotype.Service; + +/** + * @author zhibing.pu + * @Date 2023/8/17 16:31 + */ +@Service +public class SettlementAllocationServiceImpl extends ServiceImpl<SettlementAllocationMapper, SettlementAllocation> implements ISettlementAllocationService { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementDetailServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementDetailServiceImpl.java new file mode 100644 index 0000000..074d1b5 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementDetailServiceImpl.java @@ -0,0 +1,15 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.SettlementDetailMapper; +import com.stylefeng.guns.modular.system.model.SettlementDetail; +import com.stylefeng.guns.modular.system.service.ISettlementDetailService; +import org.springframework.stereotype.Service; + +/** + * @author zhibing.pu + * @Date 2023/8/17 14:07 + */ +@Service +public class SettlementDetailServiceImpl extends ServiceImpl<SettlementDetailMapper, SettlementDetail> implements ISettlementDetailService { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java new file mode 100644 index 0000000..9733b9b --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java @@ -0,0 +1,15 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.SettlementRecordMapper; +import com.stylefeng.guns.modular.system.model.SettlementRecord; +import com.stylefeng.guns.modular.system.service.ISettlementRecordService; +import org.springframework.stereotype.Service; + +/** + * @author zhibing.pu + * @Date 2023/8/17 14:36 + */ +@Service +public class SettlementRecordServiceImpl extends ServiceImpl<SettlementRecordMapper, SettlementRecord> implements ISettlementRecordService { +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java index 469ef05..bfcfee2 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java @@ -40,7 +40,6 @@ /** * 创建邮件内容 - * * @param sentToEmail 接收人邮箱 * @param subject 设置邮件主题 * @param content 内容 @@ -53,8 +52,8 @@ //选择ssl方式 gmailssl(props); - final String username = "southwindservice@gmail.com";// gmail 邮箱 - final String password = "ogsntijmguisoiuk";// Google应用专用密码 + final String username = "i-gotech@i-go.group";// gmail 邮箱 + final String password = "mhizkqkhuknbitps";// Google应用专用密码 // 当做多商户的时候需要使用getInstance, 如果只是一个邮箱发送的话就用getDefaultInstance // Session.getDefaultInstance 会将username,password保存在session会话中 // Session.getInstance 不进行保存 diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java index 2c1f1df..0414146 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java @@ -40,7 +40,7 @@ */ @Override public void run(ApplicationArguments args) throws Exception { - this.init(); +// this.init(); } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OBSUploadUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OBSUploadUtil.java new file mode 100644 index 0000000..d4d04f8 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OBSUploadUtil.java @@ -0,0 +1,37 @@ +package com.stylefeng.guns.modular.system.util; + +import com.obs.services.ObsClient; +import com.obs.services.model.PutObjectResult; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.UUID; + +public class OBSUploadUtil { + + //OSS图片访问域名 + public static String endPoint = "https://obs.af-south-1.myhuaweicloud.com"; + public static String accessKey = "RGQE7AADCGJB1TINX14N"; + public static String accessKeySecret = "oCaIH0CzUB02mTt2gDinMP5SybdrzuBP78UPZd3X"; + public static String bucketName="i-go"; + + + /** + * 流式上传 + * @param file + * @return + * @throws IOException + */ + public static String inputStreamUpload(MultipartFile file) throws IOException { + // 创建ObsClient实例 + ObsClient obsClient = new ObsClient(accessKey, accessKeySecret, endPoint); + String originalFilename = file.getOriginalFilename(); + String fileName = UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length()); + // 待上传的本地文件路径,需要指定到具体的文件名 + InputStream content = file.getInputStream();//获得指定文件的输入流 + PutObjectResult putObjectResult = obsClient.putObject(bucketName, fileName, content); + String objectUrl = putObjectResult.getObjectUrl(); + return objectUrl; + } +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java index 6ebc7bc..e82b985 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java @@ -780,7 +780,7 @@ // PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); // payMoneyUtil.weixinpay("测试", "123", "12.5", ""); PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); - payMoneyUtil.weixinpay("完成订单", "4861","4861_1_fei","172","/base/wxPayOrderTaxi","JSAPI","o5o4Q5Cwvoxa7m7DciaNZmZauFuM"); + payMoneyUtil.weixinpay("完成订单", "4861","4861_1_fei","172","/basewxPayOrderTaxi","JSAPI","o5o4Q5Cwvoxa7m7DciaNZmZauFuM"); } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java index a57141c..a381833 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java @@ -283,11 +283,11 @@ try { Twilio.init(ACCOUNT_SID, AUTH_TOKEN); Message message = Message.creator( - new PhoneNumber("+233500666666"), + new PhoneNumber("+233570111999"), new PhoneNumber("+16672740015"), "This is the ship that made the Kessel Run in fourteen parsecs?" ).create(); - System.out.println(message.getSid()); + System.out.println(message.getSid() + "--->" + message.getStatus().toString()); }catch (Exception e){ e.printStackTrace(); } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/HtmlToPdfUtils.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/HtmlToPdfUtils.java new file mode 100644 index 0000000..e814a8b --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/HtmlToPdfUtils.java @@ -0,0 +1,53 @@ +package com.stylefeng.guns.modular.system.util.itextpdf; + +import com.itextpdf.html2pdf.ConverterProperties; +import com.itextpdf.html2pdf.HtmlConverter; +import com.itextpdf.kernel.events.PdfDocumentEvent; +import com.itextpdf.kernel.font.PdfFont; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.geom.PageSize; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.layout.font.FontProvider; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * @author zhibing.pu + * @Date 2023/8/14 11:13 + */ +public class HtmlToPdfUtils { + + public static void convertToPdf(InputStream inputStream, String waterMark, OutputStream outputStream) throws IOException { + + PdfWriter pdfWriter = new PdfWriter(outputStream); + PdfDocument pdfDocument = new PdfDocument(pdfWriter); + //设置为A4大小 + pdfDocument.setDefaultPageSize(PageSize.A4); + //添加水印 + pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE, new WaterMarkEventHandler(waterMark)); + + //添加页码 + //pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE,new PageEventHandler()); + //添加中文字体支持 + ConverterProperties properties = new ConverterProperties(); + FontProvider fontProvider = new FontProvider(); + + PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false); + fontProvider.addFont(sysFont.getFontProgram(), "UniGB-UCS2-H"); + + //添加自定义字体,例如微软雅黑 + /*if (StringUtils.isNotBlank(fontPath)){ + PdfFont microsoft = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H, false); + fontProvider.addFont(microsoft.getFontProgram(), PdfEncodings.IDENTITY_H); + }*/ + + properties.setFontProvider(fontProvider); + HtmlConverter.convertToPdf(inputStream, pdfDocument, properties); + + pdfWriter.close(); + pdfDocument.close(); + } +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/WaterMarkEventHandler.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/WaterMarkEventHandler.java new file mode 100644 index 0000000..95c7aa3 --- /dev/null +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/WaterMarkEventHandler.java @@ -0,0 +1,80 @@ +package com.stylefeng.guns.modular.system.util.itextpdf; + +import com.itextpdf.kernel.colors.WebColors; +import com.itextpdf.kernel.events.Event; +import com.itextpdf.kernel.events.IEventHandler; +import com.itextpdf.kernel.events.PdfDocumentEvent; +import com.itextpdf.kernel.font.PdfFont; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.layout.Canvas; +import com.itextpdf.layout.element.Paragraph; +import com.itextpdf.layout.property.TextAlignment; +import com.itextpdf.layout.property.VerticalAlignment; + +import java.io.IOException; + +/** + * @author zhibing.pu + * @Date 2023/8/14 11:15 + */ +public class WaterMarkEventHandler implements IEventHandler { + /** + * 水印内容 + */ + private String waterMarkContent; + + /** + * 一页中有几列水印 + */ + private int waterMarkX; + + /** + * 一页中每列有多少水印 + */ + private int waterMarkY; + + public WaterMarkEventHandler(String waterMarkContent) { + this(waterMarkContent, 5, 5); + } + + public WaterMarkEventHandler(String waterMarkContent, int waterMarkX, int waterMarkY) { + this.waterMarkContent = waterMarkContent; + this.waterMarkX = waterMarkX; + this.waterMarkY = waterMarkY; + } + + @Override + public void handleEvent(Event event) { + + PdfDocumentEvent documentEvent = (PdfDocumentEvent) event; + PdfDocument document = documentEvent.getDocument(); + PdfPage page = documentEvent.getPage(); + Rectangle pageSize = page.getPageSize(); + + PdfFont pdfFont = null; + try { + pdfFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false); + } catch (IOException e) { + e.printStackTrace(); + } + + PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), document); + + Paragraph waterMark = new Paragraph(waterMarkContent).setOpacity(0.5f); + Canvas canvas = new Canvas(pdfCanvas, pageSize) + .setFontColor(WebColors.getRGBColor("lightgray")) + .setFontSize(16) + .setFont(pdfFont); + + for (int i = 0; i < waterMarkX; i++) { + for (int j = 0; j < waterMarkY; j++) { + canvas.showTextAligned(waterMark, (150 + i * 300), (160 + j * 150), document.getNumberOfPages(), TextAlignment.CENTER, VerticalAlignment.BOTTOM, 120); + } + } + canvas.close(); + } +} diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java index d163767..62961dc 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java @@ -127,7 +127,6 @@ private String cancelRemark; @ApiModelProperty("备注") private String remark; - @ApiModelProperty("是否首单免费1否,2是") private String isFree; @@ -143,6 +142,12 @@ private String moneyTime; private Integer startDuration; + /** + * 收据链接 + */ + @ApiModelProperty("收据链接") + private String receipt; + public Integer getStartDuration() { return startDuration; @@ -658,6 +663,14 @@ this.payType = payType; } + public String getReceipt() { + return receipt; + } + + public void setReceipt(String receipt) { + this.receipt = receipt; + } + @Override public String toString() { return "OrderInfoWarpper{" + @@ -785,6 +798,7 @@ orderInfoWarpper.setMoneyType(null != map.get("moneyType") ? Integer.valueOf(map.get("moneyType").toString()) :1); orderInfoWarpper.setMoneyTime(null != map.get("moneyTime") ? map.get("moneyTime").toString() :""); orderInfoWarpper.setPayType(null != map.get("payType") ? Integer.valueOf(map.get("payType").toString()) : 4); + orderInfoWarpper.setReceipt(null != map.get("receipt") ? map.get("receipt").toString() : ""); } if(orderInfoWarpper.getState()==7){ orderInfoWarpper.setOrderMoney(orderInfoWarpper.getOrderMoney()-orderInfoWarpper.getDiscountMoney()); diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderWarpper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderWarpper.java index 5f5c55b..7d384bd 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderWarpper.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderWarpper.java @@ -50,6 +50,8 @@ @ApiModelProperty("订单类型(1=专车,2=出租车,3=跨城出行,4=同城小件物流,5=跨城小件物流)") private Integer orderType; private Long insertTime; + @ApiModelProperty("收据链接") + private String receipt; public Integer getOrderId() { return orderId; @@ -195,6 +197,14 @@ this.differenceMoney = differenceMoney; } + public String getReceipt() { + return receipt; + } + + public void setReceipt(String receipt) { + this.receipt = receipt; + } + @Override public String toString() { return "OrderWarpper{" + @@ -240,6 +250,7 @@ orderWarpper.setCarTime(null != map.get("carTime") ? Integer.valueOf(String.valueOf(map.get("carTime"))) : 0); orderWarpper.setServerCarModel(null != map.get("serverCarModel") ? String.valueOf(map.get("serverCarModel")) : ""); orderWarpper.setDifferenceMoney(null != map.get("differenceMoney") ? Double.valueOf(map.get("differenceMoney").toString()) : 0D); + orderWarpper.setReceipt(null != map.get("receipt") ? String.valueOf(map.get("receipt")) : ""); list.add(orderWarpper); } } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java index 57dfd2e..11048c6 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java @@ -277,11 +277,11 @@ //调用移动的小号接口 Map<String, String> geocode1 = gdMapGeocodingUtil.geocode(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString()); Region region = regionMapper.query(geocode1.get("districtCode")); - Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); - if(String.valueOf(map.get("code")).equals("200")){ - orderTaxi.setTelX(map.get("telX")); - orderTaxi.setBindId(map.get("bindId")); - } +// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1))); +// if(String.valueOf(map.get("code")).equals("200")){ +// orderTaxi.setTelX(map.get("telX")); +// orderTaxi.setBindId(map.get("bindId")); +// } driver.setState(3); driverService.updateById(driver); diff --git a/UserIGOTravel/guns-admin/src/main/resources/application.yml b/UserIGOTravel/guns-admin/src/main/resources/application.yml index f133d11..d3cb2fb 100644 --- a/UserIGOTravel/guns-admin/src/main/resources/application.yml +++ b/UserIGOTravel/guns-admin/src/main/resources/application.yml @@ -62,11 +62,11 @@ ################# 测试环境 ################### #spring: # datasource: -# url: jdbc:mysql://127.0.0.1:3306/igotravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai +# url: jdbc:mysql://192.168.110.80:3306/igotravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai # username: root # password: 123456 # db-name: guns #用来搜集数据库的所有表 -# filters: wall,mergeStat +# filters: wall,mergeStat2 #多数据源情况的配置 guns: @@ -132,15 +132,15 @@ mail: host: smtp.gmail.com # 配置 smtp 服务器地址 port: 465 # smtp 服务器的端口 - username: southwindservice@gmail.com # 配置邮箱用户名(你的邮箱地址) - password: ogsntijmguisoiuk # 配置申请到的授权码(刚让复制的授权码) + username: i-gotech@i-go.group # 配置邮箱用户名(你的邮箱地址) + password: mhizkqkhuknbitps # 配置申请到的授权码(刚让复制的授权码) default-encoding: UTF-8 # 配置邮件编码 properties: mail: smtp: socketFactoryClass: javax.net.ssl.SSLSocketFactory # 配饰 SSL 加密工厂 debug: true - from: southwindservice@gmail.com # 发送方邮件,配在yml中可方便更改 + from: i-gotech@i-go.group # 发送方邮件,配在yml中可方便更改 template-path: /usr/local/nginx/html/mailbox/ --- diff --git a/UserIGOTravel/guns-admin/src/main/resources/redis.properties b/UserIGOTravel/guns-admin/src/main/resources/redis.properties index bc6b0e9..0bcf744 100644 --- a/UserIGOTravel/guns-admin/src/main/resources/redis.properties +++ b/UserIGOTravel/guns-admin/src/main/resources/redis.properties @@ -2,7 +2,7 @@ # Redis���ݿ�������Ĭ��Ϊ0�� spring.redis.database=0 # Redis��������ַ -spring.redis.host=127.0.0.1 +spring.redis.host=192.168.110.80 # Redis���������Ӷ˿� spring.redis.port=6379 # Redis�������������루Ĭ��Ϊ�գ� diff --git a/UserIGOTravel/guns-admin/src/test/java/com/stylefeng/guns/TestGunsApplication.java b/UserIGOTravel/guns-admin/src/test/java/com/stylefeng/guns/TestGunsApplication.java index f66d90d..6a36d48 100644 --- a/UserIGOTravel/guns-admin/src/test/java/com/stylefeng/guns/TestGunsApplication.java +++ b/UserIGOTravel/guns-admin/src/test/java/com/stylefeng/guns/TestGunsApplication.java @@ -1,6 +1,11 @@ //package com.stylefeng.guns; // //import com.stylefeng.guns.modular.system.util.Tingg.TinggPayoutUtil; +//import com.twilio.Twilio; +//import com.twilio.http.TwilioRestClient; +//import com.twilio.rest.api.v2010.Account; +//import com.twilio.rest.api.v2010.account.Message; +//import com.twilio.type.PhoneNumber; //import org.junit.Test; //import org.junit.runner.RunWith; //import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +26,18 @@ // // @Test // public void test(){ -// tinggPayoutUtil.sendPayout("GH-MTN-B2C", "+233277211131", "00007", 1D, "https://10pz685243.zicp.fun/base/IGO/tinggPayoutCallback", "Transfer remittance"); +// String ACCOUNT_SID = "AC1fd05e898bd59d17ba72db621afca537"; +// String AUTH_TOKEN = "7cee1a6cb0e2936a9037be577b1ffe57"; +// try { +// Twilio.init(ACCOUNT_SID, AUTH_TOKEN); +// Message message = Message.creator( +// new PhoneNumber("+233500666666"), +// new PhoneNumber("+16672740015"), +// "This is the ship that made the Kessel Run in fourteen parsecs?" +// ).create(); +// System.out.println(message.getSid()); +// }catch (Exception e){ +// e.printStackTrace(); +// } // } //} -- Gitblit v1.7.1