Browse Source

订单回调逻辑处理优化

xlq 1 day ago
parent
commit
3f21756f4f

+ 3 - 5
src/main/java/com/qmrb/system/service/impl/ContractServiceImpl.java

@@ -107,13 +107,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         user.setContractId(entity.getId());
         List<SysRole> roles = null;
         if (form.getMaxParkingLotNum() != null) {
-            user.setUserType("3");// 用户类型 1 系统用户 2扫码协议用户  3包租协议用户
-            roles = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getCode, "BZ_CONTRACT"));// 协议用户角色
-
+            user.setUserType("3");// 用户类型 1系统用户 2扫码协议用户  3包租协议用户
+            roles = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getCode, "BZ_CONTRACT"));// 包租用户角色
         } else {
-            user.setUserType("2");// 用户类型 1 系统用户 2扫码协议用户  3包租协议用户
+            user.setUserType("2");// 用户类型 1系统用户 2扫码协议用户  3包租协议用户
             roles = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getCode, "SCAN_CONTRACT"));// 协议用户角色
-
         }
         user.setDeptId(1L);//默认部门
         user.setMobile(form.getContactPhone());

+ 22 - 6
src/main/java/com/qmrb/system/service/impl/OrderServiceImpl.java

@@ -19,7 +19,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.qmrb.parking.fee.ParkingFeeCalculator;
 import com.qmrb.system.converter.PayOrderConverter;
 import com.qmrb.system.mapper.CouponMapper;
 import com.qmrb.system.mapper.OrderMapper;
@@ -27,7 +26,6 @@ import com.qmrb.system.pojo.entity.*;
 import com.qmrb.system.pojo.form.BarnRecordForm;
 import com.qmrb.system.pojo.form.PayOrderForm;
 import com.qmrb.system.pojo.query.PayOrderQuery;
-import com.qmrb.system.pojo.vo.BarnRecordVO;
 import com.qmrb.system.pojo.vo.PayOrderVO;
 import com.qmrb.system.pojo.vo.ReCreateOrderVO;
 import com.qmrb.system.pojo.vo.ToCreateOrderVO;
@@ -60,8 +58,6 @@ import java.math.BigDecimal;
 import java.net.URISyntaxException;
 import java.nio.charset.StandardCharsets;
 import java.security.PrivateKey;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -288,6 +284,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         wrapper.set("pay_status",status).eq("id",pkId);
         update(wrapper);
     }
+    // 更新订单实付金额
+    void updateAmountActuallyPaid(BigDecimal amountsPayable, String orderNo) {
+        UpdateWrapper<Order> wrapper = new UpdateWrapper<>();
+        wrapper.set("amount_actually_paid",amountsPayable).eq("id",orderNo);
+        update(wrapper);
+    }
+
+    // 更新退款实付金额为0 退款时间赋值当前时间
+    void updateRefundOrderAmountActuallyPaid(BigDecimal amountsPayable, String orderNo) {
+        UpdateWrapper<Order> wrapper = new UpdateWrapper<>();
+        wrapper.set("amount_actually_paid", amountsPayable)
+                .set("refund_time", new Date())
+                .eq("id", orderNo);
+        update(wrapper);
+    }
 
     Integer getStatus(String pkId) {
         QueryWrapper<Order> wrapper = new QueryWrapper<>();
@@ -315,13 +326,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 if (StrUtil.equals(WXOrderConstant.WX_BACK_OK, tradeState)) {
                     //1.查询数据库 对比支付金额
                     if(WxPayUtil.verifyMoney(node, queryAmountByOrderNo(orderNo))) {
-                        //2.对比成功 账单状态 已支付
+                        //2.对比成功 账单状态 已支付 更新实付金额
                         updateStatus(SystemConstant.NUM_ONE,orderNo);
+
                         //   更新计费金额,已收金额
                         BarnRecordForm barnRecordForm = barnRecordService.chargingByBarnId(Long.parseLong(orderNo));
                         Order order = this.getById(orderNo);
                         // 支付金额
-                        BigDecimal amountsPayable = new BigDecimal(order.getAmountsPayable()).divide(new BigDecimal(100)); 
+                        BigDecimal amountsPayable = new BigDecimal(order.getAmountsPayable()).divide(new BigDecimal(100));
+                        // 更新订单实付金额
+                        updateAmountActuallyPaid(amountsPayable,orderNo);
                         barnRecordForm.setReceivedAmount(barnRecordForm.getReceivedAmount().add(amountsPayable));
                         barnRecordForm.setBillingStartTime(new Date());
                         // 查询优惠券
@@ -458,6 +472,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     log.info("微信退款回调 退款订单编号(系统生成)============{}===========订单状态======{}", outRefundNo, refundStatus);
                     //1.退款表状态修改 微信退款id(微信生成)  退款 调起退款则给用户退款 不根据本系统回调反馈 所以修改状态不成功 依旧返回true
                       updateStatus(statusCode,outRefundNo);
+                    //2.更新实付金额为0,并且更新退款时间
+                    updateRefundOrderAmountActuallyPaid(BigDecimal.ZERO, outRefundNo);
                     return true;
                 }
             } catch (Exception e) {