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