From 998eb5d9c41e6f953236868a99c68804cd0c8e26 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 12 十一月 2020 00:44:04 +0800
Subject: [PATCH] 优化代码

---
 service-goods/src/main/java/com/java110/goods/bmo/storeOrder/impl/UpdateStoreOrderBMOImpl.java |  207 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 202 insertions(+), 5 deletions(-)

diff --git a/service-goods/src/main/java/com/java110/goods/bmo/storeOrder/impl/UpdateStoreOrderBMOImpl.java b/service-goods/src/main/java/com/java110/goods/bmo/storeOrder/impl/UpdateStoreOrderBMOImpl.java
index 76f7fba..0f97c97 100644
--- a/service-goods/src/main/java/com/java110/goods/bmo/storeOrder/impl/UpdateStoreOrderBMOImpl.java
+++ b/service-goods/src/main/java/com/java110/goods/bmo/storeOrder/impl/UpdateStoreOrderBMOImpl.java
@@ -1,19 +1,66 @@
 package com.java110.goods.bmo.storeOrder.impl;
 
 import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.groupBuy.GroupBuyDto;
+import com.java110.dto.groupBuyProduct.GroupBuyProductDto;
+import com.java110.dto.productSpecValue.ProductSpecValueDto;
+import com.java110.dto.storeCart.StoreCartDto;
+import com.java110.dto.storeOrder.StoreOrderDto;
+import com.java110.dto.storeOrderCart.StoreOrderCartDto;
 import com.java110.goods.bmo.storeOrder.IUpdateStoreOrderBMO;
-import com.java110.intf.IStoreOrderInnerServiceSMO;
+import com.java110.intf.goods.IStoreOrderCartInnerServiceSMO;
+import com.java110.intf.goods.IStoreOrderInnerServiceSMO;
+import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.goods.IGroupBuyInnerServiceSMO;
+import com.java110.intf.goods.IGroupBuyProductInnerServiceSMO;
+import com.java110.intf.goods.IProductSpecValueInnerServiceSMO;
+import com.java110.intf.goods.IStoreCartInnerServiceSMO;
+import com.java110.po.fee.PayFeeDetailPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.groupBuy.GroupBuyPo;
+import com.java110.po.storeCart.StoreCartPo;
 import com.java110.po.storeOrder.StoreOrderPo;
+import com.java110.po.storeOrderCart.StoreOrderCartPo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
 
 @Service("updateStoreOrderBMOImpl")
 public class UpdateStoreOrderBMOImpl implements IUpdateStoreOrderBMO {
 
     @Autowired
     private IStoreOrderInnerServiceSMO storeOrderInnerServiceSMOImpl;
+
+    @Autowired
+    private IStoreOrderCartInnerServiceSMO storeOrderCartInnerServiceSMOImpl;
+
+    @Autowired
+    private IStoreCartInnerServiceSMO storeCartInnerServiceSMOImpl;
+
+    @Autowired
+    private IGroupBuyInnerServiceSMO groupBuyInnerServiceSMOImpl;
+
+    @Autowired
+    private IGroupBuyProductInnerServiceSMO groupBuyProductInnerServiceSMOImpl;
+
+    @Autowired
+    private IProductSpecValueInnerServiceSMO productSpecValueInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
 
     /**
      * @param storeOrderPo
@@ -22,13 +69,163 @@
     @Java110Transactional
     public ResponseEntity<String> update(StoreOrderPo storeOrderPo) {
 
-        int flag = storeOrderInnerServiceSMOImpl.updateStoreOrder(storeOrderPo);
+        StoreOrderDto storeOrderDto = new StoreOrderDto();
+        storeOrderDto.setOrderId(storeOrderPo.getOrderId());
+        storeOrderDto.setState(StoreOrderDto.STATE_WAIT_PAY);
 
-        if (flag > 0) {
-            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
+        List<StoreOrderDto> storeOrderDtos = storeOrderInnerServiceSMOImpl.queryStoreOrders(storeOrderDto);
+
+        Assert.listOnlyOne(storeOrderDtos, "褰撳墠鏈壘鍒扮浉搴旇鍗�");
+
+        storeOrderPo.setState(StoreOrderDto.STATE_FINISH_PAY);
+        int flag = storeOrderInnerServiceSMOImpl.updateStoreOrder(storeOrderPo);
+        if (flag < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
         }
 
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
+        StoreOrderCartDto storeOrderCartDto = new StoreOrderCartDto();
+        storeOrderCartDto.setOrderId(storeOrderPo.getOrderId());
+        storeOrderCartDto.setState(StoreOrderCartDto.STATE_WAIT_BUY);
+        List<StoreOrderCartDto> storeOrderCartDtos = storeOrderCartInnerServiceSMOImpl.queryStoreOrderCarts(storeOrderCartDto);
+
+        if (storeOrderCartDtos == null || storeOrderCartDtos.size() < 1) {
+            throw new IllegalArgumentException("鏈壘鍒伴渶瑕佽喘涔板晢鍝�");
+        }
+
+        StoreOrderCartPo storeOrderCartPo = new StoreOrderCartPo();
+        storeOrderCartPo.setOrderId(storeOrderPo.getOrderId());
+        storeOrderCartPo.setState(StoreOrderCartDto.STATE_WAIT_SEND);
+        flag = storeOrderCartInnerServiceSMOImpl.updateStoreOrderCart(storeOrderCartPo);
+        if (flag < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨璐墿杞﹀け璐�");
+        }
+
+
+        for (StoreOrderCartDto tmpStoreOrderCartDto : storeOrderCartDtos) {
+            doDealStoreCart(tmpStoreOrderCartDto);
+            doDealGroupBuyProduct(tmpStoreOrderCartDto, storeOrderDtos.get(0));
+            doDealStoreCartFee(tmpStoreOrderCartDto, storeOrderDtos.get(0));
+        }
+
+        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
+
+
+    }
+
+    /**
+     * 璐墿杞︽敹璐�
+     *
+     * @param tmpStoreOrderCartDto
+     * @param storeOrderDto
+     */
+    private void doDealStoreCartFee(StoreOrderCartDto tmpStoreOrderCartDto, StoreOrderDto storeOrderDto) {
+
+        PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
+        payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+        payFeeDetailPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        payFeeDetailPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        payFeeDetailPo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+        payFeeDetailPo.setPrimeRate("1.0");
+        payFeeDetailPo.setCycles("1");
+        payFeeDetailPo.setReceivableAmount(tmpStoreOrderCartDto.getPayPrice() + "");
+        payFeeDetailPo.setReceivedAmount(tmpStoreOrderCartDto.getPayPrice() + "");
+        payFeeDetailPo.setCommunityId("-1");
+
+        int flag = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
+        if (flag < 1) {
+            throw new IllegalArgumentException("娣诲姞璐圭敤鏄庣粏澶辫触");
+        }
+
+
+        PayFeePo payFeePo = new PayFeePo();
+        payFeePo.setFeeId(payFeeDetailPo.getFeeId());
+        payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+        payFeePo.setIncomeObjId(tmpStoreOrderCartDto.getStoreId());
+        payFeePo.setCommunityId("-1");
+        payFeePo.setUserId("-1");
+        payFeePo.setPayerObjId(tmpStoreOrderCartDto.getPersonId());
+        payFeePo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        payFeePo.setFeeTypeCd(FeeConfigDto.FEE_TYPE_CD_SYSTEM);
+        payFeePo.setAmount(tmpStoreOrderCartDto.getPayPrice() + "");
+        payFeePo.setState(FeeDto.STATE_FINISH);
+        payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_RENTING);
+        payFeePo.setConfigId(FeeConfigDto.CONFIG_ID_GOODS);
+        List<PayFeePo> payFeePos = new ArrayList<>();
+        payFeePos.add(payFeePo);
+        flag = feeInnerServiceSMOImpl.saveFee(payFeePos);
+
+        if (flag < 1) {
+            throw new IllegalArgumentException("娣诲姞璐圭敤鏄庣粏澶辫触");
+        }
+    }
+
+    private void doDealGroupBuyProduct(StoreOrderCartDto tmpStoreOrderCartDto, StoreOrderDto storeOrderDto) {
+
+        GroupBuyProductDto groupBuyProductDto = new GroupBuyProductDto();
+        groupBuyProductDto.setProductId(tmpStoreOrderCartDto.getProductId());
+        groupBuyProductDto.setStoreId(tmpStoreOrderCartDto.getStoreId());
+        List<GroupBuyProductDto> groupBuyProductDtos = groupBuyProductInnerServiceSMOImpl.queryGroupBuyProducts(groupBuyProductDto);
+
+        if (groupBuyProductDtos == null || groupBuyProductDtos.size() < 1) {
+            return;
+        }
+
+        ProductSpecValueDto productSpecValueDto = new ProductSpecValueDto();
+        productSpecValueDto.setProductId(tmpStoreOrderCartDto.getProductId());
+        productSpecValueDto.setValueId(tmpStoreOrderCartDto.getValueId());
+        productSpecValueDto.setStoreId(tmpStoreOrderCartDto.getStoreId());
+        List<ProductSpecValueDto> productSpecValueDtos = productSpecValueInnerServiceSMOImpl.queryProductSpecValues(productSpecValueDto);
+        if (productSpecValueDtos == null || productSpecValueDtos.size() < 1) {
+            throw new IllegalArgumentException("鏈壘鍒伴渶瑕佽喘涔板晢鍝佽鏍�");
+        }
+        GroupBuyPo groupBuyPo = new GroupBuyPo();
+        groupBuyPo.setAmount(tmpStoreOrderCartDto.getPayPrice());
+        groupBuyPo.setBatchId(groupBuyProductDtos.get(0).getBatchId());
+        groupBuyPo.setBuyCount(tmpStoreOrderCartDto.getCartNum());
+        groupBuyPo.setBuyId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_buyId));
+        groupBuyPo.setGroupId(groupBuyProductDtos.get(0).getGroupId());
+        groupBuyPo.setGroupPrice(tmpStoreOrderCartDto.getPayPrice());
+        groupBuyPo.setPersionId(tmpStoreOrderCartDto.getPersonId());
+        groupBuyPo.setPersionName(storeOrderDto.getPersonName());
+        groupBuyPo.setProductId(tmpStoreOrderCartDto.getProductId());
+        groupBuyPo.setSpecId(productSpecValueDtos.get(0).getSpecId());
+        groupBuyPo.setState(GroupBuyDto.STATE_SUCCESS);
+        groupBuyPo.setStoreId(tmpStoreOrderCartDto.getStoreId());
+
+        int flag = groupBuyInnerServiceSMOImpl.saveGroupBuy(groupBuyPo);
+
+        if (flag < 1) {
+            throw new IllegalArgumentException("娣诲姞鎷煎洟澶辫触");
+        }
+
+    }
+
+    /**
+     * 澶勭悊璁㈠崟 璐墿杞� 鍜�  鎷煎洟
+     *
+     * @param tmpStoreOrderCartDto
+     */
+    private void doDealStoreCart(StoreOrderCartDto tmpStoreOrderCartDto) {
+        StoreCartDto storeCartDto = new StoreCartDto();
+        storeCartDto.setCartId(tmpStoreOrderCartDto.getCartId());
+        storeCartDto.setStoreId(tmpStoreOrderCartDto.getStoreId());
+        List<StoreCartDto> storeCarts = storeCartInnerServiceSMOImpl.queryStoreCarts(storeCartDto);
+
+        if (storeCarts == null || storeCarts.size() < 1) {
+            return;
+        }
+
+        StoreCartPo storeCartPo = new StoreCartPo();
+        storeCartPo.setCartId(tmpStoreOrderCartDto.getCartId());
+        storeCartPo.setStoreId(tmpStoreOrderCartDto.getStoreId());
+        storeCartPo.setState(StoreCartDto.STATE_FINISH_BUY);
+        int flag = storeCartInnerServiceSMOImpl.updateStoreCart(storeCartPo);
+
+        if (flag < 1) {
+            throw new IllegalArgumentException("淇敼璐墿杞﹀け璐�");
+        }
+
     }
 
 }

--
Gitblit v1.8.0