java110
2020-11-12 998eb5d9c41e6f953236868a99c68804cd0c8e26
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("修改购物车失败");
        }
    }
}