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