Procházet zdrojové kódy

待确认订单修改订单余额返还

zhijiezhao před 2 měsíci
rodič
revize
081c069455

+ 1 - 0
src/main/java/com/caimei365/order/controller/OrderSubmitApi.java

@@ -30,6 +30,7 @@ import java.util.Map;
 @RequiredArgsConstructor
 @RequestMapping("/order/submit")
 public class OrderSubmitApi {
+
     private final SubmitService submitService;
     private final UserFeign userFeign;
     private final CmReportingClubService cmReportingClubService;

+ 2 - 10
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -15,33 +15,25 @@ import com.caimei365.order.model.po.CartPo;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.CartClubService;
 import com.caimei365.order.service.RemoteCallService;
-import com.caimei365.order.utils.ImageUtil;
 import com.caimei365.order.utils.MathUtil;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.AtomicDouble;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
-import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import redis.clients.jedis.Jedis;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static com.alibaba.fastjson.JSON.parseArray;
 
-import static com.alibaba.fastjson.JSON.parseArray;
-import static com.alibaba.fastjson.JSON.parseObject;
-
 
 /**
  * Description
@@ -986,8 +978,8 @@ public class CartClubServiceImpl implements CartClubService {
         String helpContent = null;
         boolean flag = false;
         if (null != shopList && shopList.size() > 0) {
-            // 遍历供应商列表
-            List<String> finalIdList = skuIdList;//购物车商品skuId列表
+            // 遍历供应商列表 购物车商品skuId列表
+            List<String> finalIdList = skuIdList;
             Integer finalUserIdentity = userIdentity;
             Integer finalUserClubType = userClubType;
             Integer finalUserIdentity1 = userIdentity;

+ 18 - 5
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -4,14 +4,12 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.components.ProductService;
 import com.caimei365.order.components.WeChatService;
-import com.caimei365.order.constant.Constant;
 import com.caimei365.order.mapper.*;
 import com.caimei365.order.model.ResponseJson;
-import com.caimei365.order.model.bo.PayParamBo;
+import com.caimei365.order.model.bo.OrderParamBo;
 import com.caimei365.order.model.dto.RechargeDto;
-import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.dto.SubmitDto;
-import com.caimei365.order.model.bo.OrderParamBo;
+import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.RemoteCallService;
 import com.caimei365.order.service.SubmitService;
@@ -29,7 +27,6 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -2520,7 +2517,23 @@ public class SubmitServiceImpl implements SubmitService {
          *  由于余额抵扣过的子订单可以修改,有收款非余额抵扣的仅需改变子订单相关应收/应付金额
          *  如果有余额抵扣,应计算余额抵扣金额,如果子订单应收总金额减少且余额抵扣金额大于应收,
          *  则退还余额给用户,同时计算子订单的收款状态修改
+         *
+         *  未确认订单的余额抵扣记录还没有生成,额外逻辑处理
          */
+        if (0 == shopOrder.getStatus() && null != shopOrder.getAccountAmount() && MathUtil.compare(shopOrder.getAccountAmount(), 0) > 0) {
+            /**
+             * 涨价 余额不够抵扣,不做操作
+             * 降价 1.余额超出,退还余额 2.余额不够,不做操作
+             * 不变 不做操作
+             */
+            if (shopOrder.getNeedPayAmount() < shopOrder.getAccountAmount()) {
+                double updateMoney = MathUtil.sub(shopOrder.getAccountAmount(), shopOrder.getNeedPayAmount()).doubleValue();
+                // 差价+原金额
+                double ableUserMoney = MathUtil.add(baseMapper.getAbleUserMoney(shopOrder.getUserId()), updateMoney).doubleValue();
+                // 退还用户余额
+                orderClubMapper.updateAbleUserMoneyByUserId(ableUserMoney, shopOrder.getUserId());
+            }
+        }
         List<BalanceRecordPo> records = baseMapper.findShopOrderBalanceRecord(shopOrder.getShopOrderId());
         if (null != records && records.size() > 0) {
             double total = records.stream().mapToDouble(BalanceRecordPo::getAmount).sum();