puzhibing
2023-08-22 00caef45a8833dc58919e23eb88a3484cfacdaa4
更新
17个文件已修改
20个文件已添加
1369 ■■■■ 已修改文件
UserIGOTravel/guns-admin/pom.xml 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementAllocationMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementDetailMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementAllocationMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementDetailMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementAllocation.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementDetail.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IOrderService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementAllocationService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementDetailService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementAllocationServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementDetailServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OBSUploadUtil.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/SMSUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/HtmlToPdfUtils.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/WaterMarkEventHandler.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderWarpper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/resources/application.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/resources/redis.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/test/java/com/stylefeng/guns/TestGunsApplication.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>&lt;!&ndash; 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart &ndash;&gt;-->
                <!--</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>-->
                            <!--&lt;!&ndash;把本地lib里面的jar复制到lib&ndash;&gt;-->
                            <!--<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>-->
                    <!--&lt;!&ndash; 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 &ndash;&gt;-->
                    <!--<failOnMissingWebXml>false</failOnMissingWebXml>-->
                    <!--&lt;!&ndash;打包后的项目名&ndash;&gt;-->
                    <!--&lt;!&ndash;<warName>example</warName>&ndash;&gt;-->
                    <!--&lt;!&ndash;<webResources>&ndash;&gt;-->
                        <!--&lt;!&ndash;<resource>&ndash;&gt;-->
                            <!--&lt;!&ndash;&lt;!&ndash;把本地lib里面的jar复制到lib&ndash;&gt;&ndash;&gt;-->
                            <!--&lt;!&ndash;<directory>${project.basedir}/lib</directory>&ndash;&gt;-->
                            <!--&lt;!&ndash;<targetPath>WEB-INF/lib/</targetPath>&ndash;&gt;-->
                            <!--&lt;!&ndash;<includes>&ndash;&gt;-->
                                <!--&lt;!&ndash;<include>**/*.jar</include>&ndash;&gt;-->
                            <!--&lt;!&ndash;</includes>&ndash;&gt;-->
                        <!--&lt;!&ndash;</resource>&ndash;&gt;-->
                    <!--&lt;!&ndash;</webResources>&ndash;&gt;-->
                <!--</configuration>-->
            <!--</plugin>-->
        <!--</plugins>-->
        <resources>
            <resource>
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();
            }
        }
    }
}
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){
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;
    }
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;
    }
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementAllocationMapper.java
New file
@@ -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> {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementDetailMapper.java
New file
@@ -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> {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/SettlementRecordMapper.java
New file
@@ -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> {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementAllocationMapper.xml
New file
@@ -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>
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementDetailMapper.xml
New file
@@ -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>
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/SettlementRecordMapper.xml
New file
@@ -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>
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementAllocation.java
New file
@@ -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;
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementDetail.java
New file
@@ -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;
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/SettlementRecord.java
New file
@@ -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;
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICarService.java
New file
@@ -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> {
}
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);
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementAllocationService.java
New file
@@ -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> {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementDetailService.java
New file
@@ -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> {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISettlementRecordService.java
New file
@@ -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> {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CarServiceImpl.java
New file
@@ -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 {
}
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;
    }
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementAllocationServiceImpl.java
New file
@@ -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 {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementDetailServiceImpl.java
New file
@@ -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 {
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
New file
@@ -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 {
}
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 不进行保存
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();
    }
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OBSUploadUtil.java
New file
@@ -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;
    }
}
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");
    }
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();
        }
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/HtmlToPdfUtils.java
New file
@@ -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();
    }
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/itextpdf/WaterMarkEventHandler.java
New file
@@ -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();
    }
}
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());
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);
            }
        }
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);
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/
---
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·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£©
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();
//        }
//    }
//}