From 5d496e06bd40cde06cf3d9b26502afa7565148ab Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 05 二月 2024 17:53:46 +0800
Subject: [PATCH] BUG修改

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java |  134 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 114 insertions(+), 20 deletions(-)

diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
index 843d0b9..3c69268 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -11,6 +11,7 @@
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService;
+import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
 import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
@@ -83,7 +84,8 @@
 
     @Autowired
     private IUserInfoService userInfoService;
-
+    @Resource
+    private UserActivityDiscount1Mapper userActivityDiscount1Mapper;
     @Autowired
     private IPaymentRecordService paymentRecordService;
 
@@ -299,8 +301,8 @@
 
         //添加消息
         systemNoticeService.addSystemNotice(1, language == 1 ? "您的市内包裹订单已下单成功,我们正在为您指派司机,请稍后!" :
-                                            language == 2 ? "You've placed the package order successfully, we are assigning you a driver, please wait."
-                                                    : "Vous avez passé la commande de colis avec succès, nous vous attribuons un chauffeur, veuillez patienter.", orderLogistics.getUserId(), 1);
+                                            language == 2 ? "You've placed the delivery order successfully, we are assigning you a driver, please wait."
+                                                    : "Vous avez passé la commande de livraison avec succès, nous vous attribuons un chauffeur, veuillez patienter.", orderLogistics.getUserId(), 1);
 
         BaseWarpper baseWarpper = new BaseWarpper();
         baseWarpper.setId(orderLogistics.getId());
@@ -479,7 +481,7 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil payLogisticsOrder(Integer payType, Integer bankCardId, Integer orderId, Integer type, Integer language) throws Exception {
+    public ResultUtil payLogisticsOrder(Integer payType, Integer bankCardId, Integer orderId,Integer couponId, Integer type, Integer language) throws Exception {
         OrderLogistics orderLogistics = this.selectById(orderId);
         if(orderLogistics.getState() != 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.", "");
@@ -491,6 +493,32 @@
         }
         UserInfo userInfo = userInfoService.selectById(uid);
         ResultUtil resultUtil = ResultUtil.success("");
+        orderLogistics.setCouponMoney(0D);//初始化历史数据
+        orderLogistics.setCouponId(null);
+        //计算优惠券
+        UserCouponRecord userCouponRecord = null;
+        if(null != couponId){
+            userCouponRecord = userCouponRecordService.selectById(couponId);
+            if(userCouponRecord.getCompanyId() != orderLogistics.getCompanyId()){
+                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.getState() == 2){
+                return ResultUtil.error(language == 1 ? "优惠券已使用" : language == 2 ? "Coupon has been used." : "Le coupon a été utilisé.", "");
+            }
+            if(userCouponRecord.getState() == 3){
+                return ResultUtil.error(language == 1 ? "优惠券已过期" : language == 2 ? "Coupon is expired." : "Le coupon a expiré.", "");
+            }
+            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){
+                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();
+            orderLogistics.setCouponMoney(userCouponRecord.getMoney());
+            orderLogistics.setCouponId(couponId);
+        }
+        orderMoney=new BigDecimal(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
 
         if(payType == 1) {//手机支付
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
@@ -554,6 +582,13 @@
             SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
 
+            //处理优惠券
+            if(null != userCouponRecord){
+                userCouponRecord.setState(2);
+                userCouponRecord.setEndTime(new Date());
+                userCouponRecordService.updateById(userCouponRecord);
+            }
+
             //添加交易明细
             transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId);
             userInfoService.updateById(userInfo);
@@ -571,14 +606,21 @@
             }).start();
 
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单支付,谢谢使用!" : language == 2
-                    ? "You've paid for the package order successfully, thank you for using I-GO" :
-                    "Vous avez payé la commande de colis avec succès, merci d’utiliser I-GO", uid, 1);
+                    ? "You've paid for the delivery order successfully, thank you for using I-GO" :
+                    "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", uid, 1);
             this.pushOrder(orderLogistics);//推单
         }
 
         if(payType == 4){//现金支付
             SysIntegral query1 = sysIntegralMapper.query(orderLogistics.getCompanyId());
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
+
+            //处理优惠券和红包
+            if(null != userCouponRecord){
+                userCouponRecord.setState(2);
+                userCouponRecord.setEndTime(new Date());
+                userCouponRecordService.updateById(userCouponRecord);
+            }
 
             //添加交易明细
             transactionDetailsService.saveData(uid, "包裹下单支付", orderMoney, 2, 1, 1, 4, orderId);
@@ -599,8 +641,8 @@
             }).start();
 
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单支付,谢谢使用!" : language == 2
-                    ? "You've paid for the package order successfully, thank you for using I-GO" :
-                    "Vous avez payé la commande de colis avec succès, merci d’utiliser I-GO", uid, 1);
+                    ? "You've paid for the delivery order successfully, thank you for using I-GO" :
+                    "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", uid, 1);
 
             this.pushOrder(orderLogistics);//推单
         }
@@ -724,8 +766,8 @@
             }).start();
 
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单差价支付,谢谢使用!" : language == 2
-                    ? "You've paid for the difference of package order successfully, thank you for using I-GO"
-                    : "Vous avez payé la différence de commande de colis avec succès, merci d’utiliser I-GO", uid, 1);
+                    ? "You've paid for the difference of delivery order successfully, thank you for using I-GO"
+                    : "Vous avez payé la différence de commande de livraison avec succès, merci d’utiliser I-GO", uid, 1);
         }
 
         if(payType == 4){//现金支付
@@ -781,8 +823,8 @@
             }).start();
 
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单差价支付,谢谢使用!" : language == 2
-                    ? "You've paid for the difference of package order successfully, thank you for using I-GO"
-                    : "Vous avez payé la différence de commande de colis avec succès, merci d’utiliser I-GO", uid, 1);
+                    ? "You've paid for the difference of delivery order successfully, thank you for using I-GO"
+                    : "Vous avez payé la différence de commande de livraison avec succès, merci d’utiliser I-GO", uid, 1);
         }
 
 
@@ -809,6 +851,14 @@
             userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
             userInfoService.updateById(userInfo);
 
+            //处理优惠券和红包
+            if(null != orderLogistics.getCouponId()){
+                UserCouponRecord userCouponRecord = userCouponRecordService.selectById(orderLogistics.getCouponId());
+                userCouponRecord.setState(2);
+                userCouponRecord.setEndTime(new Date());
+                userCouponRecordService.updateById(userCouponRecord);
+            }
+
             query.setState(2);
             query.setCode(order_id);
             paymentRecordService.updateById(query);
@@ -823,8 +873,8 @@
 
 
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单支付,谢谢使用!" : language == 2
-                    ? "You've paid for the package order successfully, thank you for using I-GO" :
-                    "Vous avez payé la commande de colis avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
+                    ? "You've paid for the delivery order successfully, thank you for using I-GO" :
+                    "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
 
             this.pushOrder(orderLogistics);//推单
         }else{
@@ -898,8 +948,8 @@
             }).start();
 
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成包裹订单差价支付,谢谢使用!" : language == 2
-                    ? "You've paid for the difference of package order successfully, thank you for using I-GO"
-                    : "Vous avez payé la différence de commande de colis avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
+                    ? "You've paid for the difference of delivery order successfully, thank you for using I-GO"
+                    : "Vous avez payé la différence de commande de livraison avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
         }else{
             System.err.println("预支付数据异常(orderId = "  + id + ")");
         }
@@ -978,6 +1028,7 @@
         endTime = dateUtil.getStartOrEndDate(endTime, "end");
         List<Map<String, Object>> list = orderLogisticsMapper.queryInvoiceOrder(type, startTime, endTime, startMoney, endMoney, uid, orderType);
         for (Map<String, Object> map : list) {
+            map.put("orderName", language == 1 ? "包裹订单" : language == 2 ? "Delivery" : "Livraison");
             if(null != map.get("time")){
                 String time = map.get("time").toString();
                 map.put("time", DateUtil.conversionFormat(language, time));
@@ -1040,6 +1091,9 @@
             this.updateById(orderLogistics);
             //调用回退接口
             PaymentRecord query = paymentRecordService.query(1, orderLogistics.getUserId(), 1, orderLogistics.getId(), orderLogistics.getType(), 1, 2);
+            if(null == query){
+                return ResultUtil.error("支付数据异常,无法完成退款");
+            }
             UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             String payerTransactionID = sdf.format(new Date()) + orderCancel.getId();
@@ -1068,7 +1122,10 @@
             this.updateById(orderLogistics);
             integer = orderCancel.getId();
             //调用回退接口
-            PaymentRecord query = paymentRecordService.query(1, orderLogistics.getUserId(), 1, orderLogistics.getId(), orderLogistics.getType(), 1, 2);
+            PaymentRecord query = paymentRecordService.query(1, orderLogistics.getUserId(), 1, orderLogistics.getId(), orderLogistics.getType(), 2, 2);
+            if(null == query){
+                return ResultUtil.error("支付数据异常,无法完成退款");
+            }
             UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             String payerTransactionID = sdf.format(new Date()) + orderCancel.getId();
@@ -1105,6 +1162,29 @@
             transactionDetailsService.saveData(orderLogistics.getUserId(), "包裹取消退款", orderLogistics.getPayMoney(), 1, 1, 1, 4, orderLogistics.getId());
         }
 
+
+        if(null != orderLogistics.getPayType() && orderLogistics.getPayType() == 4){//现金
+//            UserInfo userInfo = userInfoService.selectById(orderLogistics.getUserId());
+//            userInfo.setBalance(userInfo.getBalance() + orderLogistics.getPayMoney());
+//            userInfoService.updateById(userInfo);
+            OrderCancel orderCancel = new OrderCancel();
+            orderCancel.setOrderId(id);
+            orderCancel.setOrderType(orderLogistics.getType());
+            orderCancel.setReason(reason);
+            orderCancel.setRemark(remark);
+            orderCancel.setState(2);
+            orderCancel.setInsertTime(new Date());
+            orderCancel.setUserType(1);
+            orderCancelService.insert(orderCancel);
+
+            orderLogistics.setState(10);
+            this.updateById(orderLogistics);
+            integer = orderCancel.getId();
+
+            //添加交易明细
+            transactionDetailsService.saveData(orderLogistics.getUserId(), "包裹取消退款", orderLogistics.getPayMoney(), 1, 1, 1, 4, orderLogistics.getId());
+        }
+
         if(null != orderLogistics.getDriverId()){
             new Thread(new Runnable() {
                 @Override
@@ -1115,8 +1195,8 @@
         }
 
         //添加消息
-        systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功取消包裹订单,谢谢使用!" : language == 2 ? "You've cancelled the package order successfully, thank you for using I-GO "
-                : "Vous avez annulé la commande de colis avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
+        systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功取消包裹订单,谢谢使用!" : language == 2 ? "You've cancelled the delivery order successfully, thank you for using I-GO "
+                : "Vous avez annulé la commande de livraison avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
         Map<String, Object> map = new HashMap<>();
         map.put("id", integer);
         return ResultUtil.success(map);
@@ -1171,7 +1251,21 @@
         Map<String, Object> map = new HashMap<>();
         UserInfo userInfo = userInfoService.selectById(uid);
         map.put("balance", userInfo.getBalance());
-        map.put("coupon", 0);
+        OrderLogistics orderLogistics = this.selectById(orderId);
+        UserActivityDiscount1 query2 = userActivityDiscount1Mapper.query(orderLogistics.getCompanyId());
+        double v = orderLogistics.getOrderMoney();
+        if(null != query2){
+            Integer orderNum=this.selectCount(new EntityWrapper<OrderLogistics>().eq("userId",orderLogistics.getUserId()).eq("activityId",query2.getId()).last(" and to_days(getoffTime) = to_days(now())"));
+            if(query2.getDistance()*1000>orderLogistics.getMileage() && query2.getOrderNum()>orderNum){
+                Double special = query2.getSpecial();
+                orderLogistics.setDiscount(special);
+                Double orderMoney = orderLogistics.getOrderMoney();
+                v = new BigDecimal(orderMoney).multiply(new BigDecimal(special / 10)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+            }
+        }
+        int i = userCouponRecordService.queryAvailable(uid, orderLogistics.getCompanyId(), 1, 4, v);
+        i = i + userCouponRecordService.queryAvailable(uid, orderLogistics.getCompanyId(), 1, 0, v);
+        map.put("coupon", i);
         return map;
     }
 

--
Gitblit v1.7.1