提交新功能 分销商 积分 会员体系
This commit is contained in:
@ -8,15 +8,19 @@
|
||||
*/
|
||||
package co.yixiang.yshop.module.cart.controller.app.cart;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import co.yixiang.yshop.framework.common.pojo.CommonResult;
|
||||
import co.yixiang.yshop.framework.security.core.annotations.PreAuthenticated;
|
||||
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartChangeSkuParam;
|
||||
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartIdsParm;
|
||||
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartNumParam;
|
||||
import co.yixiang.yshop.module.cart.controller.app.cart.param.AppCartParam;
|
||||
import co.yixiang.yshop.module.cart.enums.OrderTypeEnum;
|
||||
import co.yixiang.yshop.module.cart.service.storecart.AppStoreCartService;
|
||||
import co.yixiang.yshop.module.product.controller.app.campaigninfo.vo.CampaignNumberJudgeVO;
|
||||
import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO;
|
||||
import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.UserCouponVO;
|
||||
import co.yixiang.yshop.module.product.service.campaigninfo.AppCampaignInfoService;
|
||||
import co.yixiang.yshop.module.product.service.teamworkinfo.TeamworkInfoService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -50,6 +54,10 @@ public class AppCartController {
|
||||
|
||||
private final AppStoreCartService appStoreCartService;
|
||||
|
||||
private final TeamworkInfoService teamworkInfoService;
|
||||
|
||||
private final AppCampaignInfoService appCampaignInfoService;
|
||||
|
||||
/**
|
||||
* 购物车 获取数量
|
||||
*/
|
||||
@ -71,8 +79,17 @@ public class AppCartController {
|
||||
@Operation(summary = "添加购物车")
|
||||
|
||||
public CommonResult<Map<String,Object>> add(@Validated @RequestBody AppCartParam cartParam){
|
||||
Map<String,Object> map = new LinkedHashMap<>();
|
||||
Long uid = getLoginUserId();
|
||||
if(OrderTypeEnum.CAMPAIGN_ORDER.getValue().equals(cartParam.getOrderType())){
|
||||
// 判断是否重复参加拼团
|
||||
if(ObjectUtil.isNotEmpty(cartParam.getTeamworkId()))
|
||||
teamworkInfoService.joinJudge(uid, cartParam.getTeamworkId());
|
||||
// 活动商品购买数量限制
|
||||
appCampaignInfoService.numberJudge(new CampaignNumberJudgeVO
|
||||
(cartParam.getUniqueId(), uid, cartParam.getCartNum()));
|
||||
}
|
||||
// 加入购物车并返回购物车id
|
||||
Map<String,Object> map = new LinkedHashMap<>();
|
||||
map.put("cartId",appStoreCartService.addCart(uid,cartParam.getProductId(),cartParam.getCartNum(),
|
||||
cartParam.getUniqueId(),cartParam.getIsNew(),cartParam.getCombinationId(),
|
||||
cartParam.getSecKillId(),cartParam.getBargainId()));
|
||||
|
@ -43,4 +43,13 @@ public class AppCartParam {
|
||||
|
||||
@Schema(description = "产品砍价ID", required = true)
|
||||
private Long bargainId = 0L;
|
||||
|
||||
@Schema(description = "活动id", required = true)
|
||||
private Long campaignId;
|
||||
|
||||
@Schema(description = "下单类型:1、普通下单,2、商品活动下单", required = true)
|
||||
private Integer orderType;
|
||||
|
||||
@Schema(description = "拼团id", required = true)
|
||||
private Long teamworkId;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public interface AppStoreCartService extends IService<StoreCartDO> {
|
||||
* 购物车列表
|
||||
* @param uid 用户id
|
||||
* @param cartIds 购物车id,多个逗号隔开
|
||||
* @param status 0-购购物车列表
|
||||
* @param status 0-购购物车列表,2-活动商品
|
||||
* @return map valid-有效购物车 invalid-失效购物车
|
||||
*/
|
||||
Map<String,Object> getUserProductCartList(Long uid, String cartIds, Integer status);
|
||||
|
@ -12,16 +12,19 @@ import co.yixiang.yshop.module.cart.convert.storecart.StoreCartConvert;
|
||||
import co.yixiang.yshop.module.cart.dal.dataobject.storecart.StoreCartDO;
|
||||
import co.yixiang.yshop.module.cart.dal.mysql.storecart.StoreCartMapper;
|
||||
import co.yixiang.yshop.module.cart.enums.CartTypeEnum;
|
||||
import co.yixiang.yshop.module.product.controller.app.campaigninfo.vo.CampaignSkuVO;
|
||||
import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo;
|
||||
import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO;
|
||||
import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductRespVo;
|
||||
import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO;
|
||||
import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO;
|
||||
import co.yixiang.yshop.module.product.service.campaigninfo.AppCampaignInfoService;
|
||||
import co.yixiang.yshop.module.product.service.productcouponrelation.AppCouponRelationService;
|
||||
import co.yixiang.yshop.module.product.service.productcouponrelation.dto.CartCouponDto;
|
||||
import co.yixiang.yshop.module.product.service.storeproduct.AppStoreProductService;
|
||||
import co.yixiang.yshop.module.product.service.storeproductattrvalue.StoreProductAttrValueService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -32,13 +35,13 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static co.yixiang.yshop.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.STORE_STOCK_ERROR;
|
||||
import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.*;
|
||||
import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.STORE_PRODUCT_NOT_EXISTS;
|
||||
import static co.yixiang.yshop.module.cart.enums.ErrorCodeConstants.STORE_CART_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 购物车 Service 实现类
|
||||
@ -60,6 +63,9 @@ public class AppStoreCartServiceImpl extends ServiceImpl<StoreCartMapper, StoreC
|
||||
@Resource
|
||||
private AppCouponRelationService couponRelationService;
|
||||
|
||||
@Resource
|
||||
private AppCampaignInfoService appCampaignInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 返回当前用户购物车总数量
|
||||
@ -161,7 +167,7 @@ public class AppStoreCartServiceImpl extends ServiceImpl<StoreCartMapper, StoreC
|
||||
*
|
||||
* @param uid 用户id
|
||||
* @param cartIds 购物车id,多个逗号隔开
|
||||
* @param status 0-购购物车列表
|
||||
* @param status 0-购购物车列表,2-活动商品
|
||||
* @return map valid-有效购物车 invalid-失效购物车
|
||||
*/
|
||||
@Override
|
||||
@ -181,8 +187,33 @@ public class AppStoreCartServiceImpl extends ServiceImpl<StoreCartMapper, StoreC
|
||||
List<AppStoreCartQueryVo> valid = new ArrayList<>();
|
||||
List<AppStoreCartQueryVo> invalid = new ArrayList<>();
|
||||
|
||||
Map<Long, AppStoreProductRespVo> productMap = null;
|
||||
Map<String, StoreProductAttrValueDO> skuMap = null;
|
||||
Map<String, CampaignSkuVO> campaignSkuVOMap = null;
|
||||
if(CollectionUtils.isNotEmpty(carts)){
|
||||
// 查询商品列表
|
||||
List<Long> productIds = carts.stream().map(StoreCartDO::getProductId).collect(Collectors.toList());
|
||||
List<AppStoreProductRespVo> products = appStoreProductService.getStoreProductByIds(productIds);
|
||||
productMap = products.stream().collect(Collectors.toMap(AppStoreProductRespVo::getId, Function.identity()));
|
||||
// 查询商品规格列表
|
||||
List<String> skuUniques =
|
||||
carts.stream().map(StoreCartDO::getProductAttrUnique).collect(Collectors.toList());
|
||||
List<StoreProductAttrValueDO> skus =
|
||||
storeProductAttrValueService.list(Wrappers.<StoreProductAttrValueDO>lambdaQuery()
|
||||
.in(StoreProductAttrValueDO::getUnique, skuUniques));
|
||||
skuMap = skus.stream().collect(Collectors.toMap(StoreProductAttrValueDO::getUnique, Function.identity()));
|
||||
// 活动下单查询
|
||||
if (OrderInfoEnum.CAMPAIGN_ORDER.getValue().equals(status)) {
|
||||
List<CampaignSkuVO> campaignSkuVOS = appCampaignInfoService.getCampaignsByProductAttrUniques(skuUniques);
|
||||
if (CollectionUtils.isEmpty(campaignSkuVOS)) throw exception(CAMPAIGN_NOT_EXISTS);
|
||||
campaignSkuVOMap =
|
||||
campaignSkuVOS.stream().collect(Collectors
|
||||
.toMap(CampaignSkuVO::getProductAttrUnique, Function.identity()));
|
||||
}
|
||||
}
|
||||
|
||||
for (StoreCartDO storeCart : carts) {
|
||||
AppStoreProductRespVo storeProduct = appStoreProductService.getStoreProductById(storeCart.getProductId());
|
||||
AppStoreProductRespVo storeProduct = productMap.get(storeCart.getProductId());
|
||||
AppStoreCartQueryVo storeCartQueryVo = StoreCartConvert.INSTANCE.convert01(storeCart);
|
||||
if (ObjectUtil.isNull(storeProduct)) {
|
||||
this.removeById(storeCart.getId());
|
||||
@ -191,9 +222,7 @@ public class AppStoreCartServiceImpl extends ServiceImpl<StoreCartMapper, StoreC
|
||||
storeCartQueryVo.setProductInfo(storeProduct);
|
||||
invalid.add(storeCartQueryVo);
|
||||
} else {
|
||||
StoreProductAttrValueDO productAttrValue =
|
||||
storeProductAttrValueService.getOne(Wrappers.<StoreProductAttrValueDO>lambdaQuery()
|
||||
.eq(StoreProductAttrValueDO::getUnique, storeCart.getProductAttrUnique()));
|
||||
StoreProductAttrValueDO productAttrValue = skuMap.get(storeCart.getProductAttrUnique());
|
||||
if (ObjectUtil.isNull(productAttrValue) || productAttrValue.getStock() == 0) {
|
||||
storeCartQueryVo.setProductInfo(storeProduct);
|
||||
invalid.add(storeCartQueryVo);
|
||||
@ -202,6 +231,7 @@ public class AppStoreCartServiceImpl extends ServiceImpl<StoreCartMapper, StoreC
|
||||
storeCartQueryVo.setProductInfo(storeProduct);
|
||||
// 普通商品金额
|
||||
BigDecimal truePrice = productAttrValue.getPrice();
|
||||
Integer stock = productAttrValue.getStock();
|
||||
// 设置拼团价格
|
||||
if (storeCart.getCombinationId() > 0) {
|
||||
truePrice = productAttrValue.getPinkPrice();
|
||||
@ -210,8 +240,14 @@ public class AppStoreCartServiceImpl extends ServiceImpl<StoreCartMapper, StoreC
|
||||
if (storeCart.getSeckillId() > 0) {
|
||||
truePrice = productAttrValue.getSeckillPrice();
|
||||
}
|
||||
// 设置活动价格
|
||||
if (ObjectUtil.isNotNull(campaignSkuVOMap) &&
|
||||
campaignSkuVOMap.containsKey(productAttrValue.getUnique())) {
|
||||
truePrice = campaignSkuVOMap.get(productAttrValue.getUnique()).getPrice();
|
||||
stock = campaignSkuVOMap.get(productAttrValue.getUnique()).getStock();
|
||||
}
|
||||
storeCartQueryVo.setTruePrice(truePrice);
|
||||
storeCartQueryVo.setTrueStock(productAttrValue.getStock());
|
||||
storeCartQueryVo.setTrueStock(stock);
|
||||
valid.add(storeCartQueryVo);
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user