Browse Source

商城前端、后台订单提交业务新增下单商品是否上架校验业务功能

multiwx
dy-hu 11 months ago
parent
commit
69b8427aa1
  1. 8
      cereshop-app/src/main/java/com/shop/cereshop/app/dao/product/CereProductSkuDAO.java
  2. 18
      cereshop-app/src/main/java/com/shop/cereshop/app/service/order/impl/CereShopOrderServiceImpl.java
  3. 7
      cereshop-app/src/main/java/com/shop/cereshop/app/service/product/CereProductSkuService.java
  4. 9
      cereshop-app/src/main/java/com/shop/cereshop/app/service/product/impl/CereProductSkuServiceImpl.java
  5. 6
      cereshop-app/src/main/resources/mybatis/mapper/product/CereProductSkuDAO.xml

8
cereshop-app/src/main/java/com/shop/cereshop/app/dao/product/CereProductSkuDAO.java

@ -9,11 +9,8 @@ import com.shop.cereshop.app.page.cart.CartSku;
import com.shop.cereshop.app.page.product.*;
import com.shop.cereshop.app.param.groupwork.GroupWorkSettlementParam;
import com.shop.cereshop.app.param.settlement.ProductSku;
import com.shop.cereshop.commons.domain.product.CereProductSku;
import com.shop.cereshop.commons.domain.product.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shop.cereshop.commons.domain.product.Sku;
import com.shop.cereshop.commons.domain.product.SkuName;
import com.shop.cereshop.commons.domain.product.SkuValue;
import com.shop.cereshop.commons.domain.tool.CereComposeSkuInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -110,4 +107,7 @@ public interface CereProductSkuDAO extends BaseMapper<CereProductSku> {
List<CereProductSku> selectSceneTypeList(@Param("shopId") Long shopId,
@Param("sceneType") Integer sceneType);
CereShopProduct findShopProdBySkuId(@Param("skuId") Long skuId);
}

18
cereshop-app/src/main/java/com/shop/cereshop/app/service/order/impl/CereShopOrderServiceImpl.java

@ -9,6 +9,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -125,10 +126,7 @@ import com.shop.cereshop.commons.domain.order.CereOrderReconciliation;
import com.shop.cereshop.commons.domain.order.CereShopOrder;
import com.shop.cereshop.commons.domain.pay.CerePayLog;
import com.shop.cereshop.commons.domain.platformtool.*;
import com.shop.cereshop.commons.domain.product.CereCommentWord;
import com.shop.cereshop.commons.domain.product.CereProductMember;
import com.shop.cereshop.commons.domain.product.CereProductSku;
import com.shop.cereshop.commons.domain.product.CereProductStatsByDay;
import com.shop.cereshop.commons.domain.product.*;
import com.shop.cereshop.commons.domain.scene.CereShopScene;
import com.shop.cereshop.commons.domain.scene.CereShopSceneMember;
import com.shop.cereshop.commons.domain.sensitive.CerePlatformSensitive;
@ -399,6 +397,18 @@ public class CereShopOrderServiceImpl implements CereShopOrderService {
}else if (param.getPaymentMode() == null) {
param.setPaymentMode(PayConfig.paymentMode);
}
//校验商品是否有效(非上架商品为无效)
if (ObjectUtils.isNotEmpty(param.getShops())){
for (OrderProductParam shop : param.getShops()) {
for (ProductSku productSku : shop.getSkus()) {
CereShopProduct product = cereProductSkuService.findShopProdBySkuId(productSku.getSkuId());
if (product.getShelveState() != 1){
throw new CoBusinessException(CoReturnFormat.HAVE_INVALID_PRODUCT);
}
}
}
}
//额外的校验
PlaceOrderTemplate placeOrderTemplate = placeOrderFactory.getPlaceOrderTemplate(param.getType());
return placeOrderTemplate.placeOrder(param, user, ip, time);

7
cereshop-app/src/main/java/com/shop/cereshop/app/service/product/CereProductSkuService.java

@ -9,10 +9,7 @@ import com.shop.cereshop.app.page.cart.CartSku;
import com.shop.cereshop.app.page.product.*;
import com.shop.cereshop.app.param.groupwork.GroupWorkSettlementParam;
import com.shop.cereshop.app.param.settlement.ProductSku;
import com.shop.cereshop.commons.domain.product.CereProductSku;
import com.shop.cereshop.commons.domain.product.Sku;
import com.shop.cereshop.commons.domain.product.SkuName;
import com.shop.cereshop.commons.domain.product.SkuValue;
import com.shop.cereshop.commons.domain.product.*;
import com.shop.cereshop.commons.exception.CoBusinessException;
import java.util.List;
@ -85,4 +82,6 @@ public interface CereProductSkuService {
int rollbackStock(Long skuId, Integer buyNumber);
List<SkuValue> findSkuValueBySkuId(String skuName, Long skuId);
CereShopProduct findShopProdBySkuId(Long skuId);
}

9
cereshop-app/src/main/java/com/shop/cereshop/app/service/product/impl/CereProductSkuServiceImpl.java

@ -11,10 +11,7 @@ import com.shop.cereshop.app.page.product.*;
import com.shop.cereshop.app.param.groupwork.GroupWorkSettlementParam;
import com.shop.cereshop.app.param.settlement.ProductSku;
import com.shop.cereshop.app.service.product.CereProductSkuService;
import com.shop.cereshop.commons.domain.product.CereProductSku;
import com.shop.cereshop.commons.domain.product.Sku;
import com.shop.cereshop.commons.domain.product.SkuName;
import com.shop.cereshop.commons.domain.product.SkuValue;
import com.shop.cereshop.commons.domain.product.*;
import com.shop.cereshop.commons.exception.CoBusinessException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -200,4 +197,8 @@ public class CereProductSkuServiceImpl implements CereProductSkuService {
return cereProductSkuDAO.findSkuValueBySkuId(skuName, skuId);
}
@Override
public CereShopProduct findShopProdBySkuId(Long skuId) {
return cereProductSkuDAO.findShopProdBySkuId(skuId);
}
}

6
cereshop-app/src/main/resources/mybatis/mapper/product/CereProductSkuDAO.xml

@ -613,4 +613,10 @@
join cere_sku_real_info b on b.sku_id = a.sku_id and b.activity_type = #{sceneType}
join cere_shop_product c on b.product_id = c.product_id and c.shop_id = #{shopId} and c.shelve_state = 1
</select>
<select id="findShopProdBySkuId" resultType="com.shop.cereshop.commons.domain.product.CereShopProduct">
SELECT csp.* from cere_shop_product csp
join cere_product_sku cps on csp.product_id = cps.product_id
where cps.sku_id = #{skuId}
</select>
</mapper>
Loading…
Cancel
Save