1.完善砍价商品加入购物车。

2.完善砍价帮砍
3.完善砍价价格计算。
This commit is contained in:
lifenlong 2021-07-14 08:47:13 +08:00
parent 4718ce292d
commit 0f8a5aba05
13 changed files with 204 additions and 121 deletions

View File

@ -241,6 +241,7 @@ public enum ResultCode {
PROMOTION_UPDATE_ERROR(40008,"当前活动已开始/结束,无法编辑!"),
PROMOTION_ACTIVITY_GOODS_ERROR(40009,"当前活动已经开始无法添加商品"),
PROMOTION_ACTIVITY_ERROR(40009,"当前促销活动不存在"),
PROMOTION_LOG_EXIST(40010,"活动已参加,已发重复参加"),
/**
* 优惠券
@ -339,6 +340,8 @@ public enum ResultCode {
KANJIA_ACTIVITY_NOT_FOUND_ERROR(48008, "砍价记录不存在"),
KANJIA_ACTIVITY_LOG_MEMBER_ERROR(48009, "当前会员已经帮砍"),
KANJIA_ACTIVITY_MEMBER_ERROR(48010, "当前会员已经发起此砍价商品活动"),
KANJIA_ACTIVITY_NOT_PASS_ERROR(48011, "当前砍价未满足条件,不能进行购买"),
KANJIA_NUM_BUY_ERROR(48012, "砍价商品购买数量不正确"),
/**
* 店铺
*/

View File

@ -27,6 +27,10 @@ public enum CartTypeEnum {
/**
* 虚拟商品
*/
VIRTUAL;
VIRTUAL,
/**
* 砍价商品
*/
KANJIA;
}

View File

@ -10,6 +10,7 @@ import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
import cn.lili.modules.order.cart.entity.vo.CartVO;
@ -42,13 +43,15 @@ public class CheckDataRender implements CartRenderStep {
@Override
public void render(TradeDTO tradeDTO) {
//校验商品有效性
checkData(tradeDTO);
//店铺分组数据初始化
groupStore(tradeDTO);
//预校验
preCalibration(tradeDTO);
//校验商品有效性
checkData(tradeDTO);
//店铺分组数据初始化
groupStore(tradeDTO);
}
/**
@ -125,15 +128,22 @@ public class CheckDataRender implements CartRenderStep {
* @param tradeDTO
*/
private void preCalibration(TradeDTO tradeDTO) {
//拼团判定不能参与自己创建的拼团
if (tradeDTO.getParentOrderSn() != null) {
//订单接受
cn.lili.modules.order.order.entity.dos.Order parentOrder = orderService.getBySn(tradeDTO.getParentOrderSn());
//参与活动判定
if (parentOrder.getMemberId().equals(UserContext.getCurrentUser().getId())) {
throw new ServiceException(ResultCode.PINTUAN_JOIN_ERROR);
//拼团订单预校验
if(tradeDTO.getCartTypeEnum().equals(CartTypeEnum.PINTUAN)){
//拼团判定不能参与自己创建的拼团
if (tradeDTO.getParentOrderSn() != null) {
//订单接受
cn.lili.modules.order.order.entity.dos.Order parentOrder = orderService.getBySn(tradeDTO.getParentOrderSn());
//参与活动判定
if (parentOrder.getMemberId().equals(UserContext.getCurrentUser().getId())) {
throw new ServiceException(ResultCode.PINTUAN_JOIN_ERROR);
}
}
}else if(tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)){
}
}
}

View File

@ -70,7 +70,7 @@ public class SkuPromotionRender implements CartRenderStep {
/**
* 渲染单品优惠 积分/拼团/秒杀
* 渲染单品优惠 积分/拼团/秒杀/砍价
*
* @param tradeDTO 购物车视图
*/

View File

@ -23,16 +23,16 @@ import cn.lili.modules.order.cart.entity.vo.TradeParams;
import cn.lili.modules.order.cart.render.TradeBuilder;
import cn.lili.modules.order.order.entity.dos.Trade;
import cn.lili.modules.order.order.entity.vo.ReceiptVO;
import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dos.Pintuan;
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.service.MemberAddressService;
import cn.lili.modules.promotion.service.MemberCouponService;
import cn.lili.modules.promotion.service.PintuanService;
import cn.lili.modules.promotion.service.PromotionGoodsService;
import cn.lili.modules.promotion.entity.vos.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.service.*;
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.service.EsGoodsSearchService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -93,6 +93,11 @@ public class CartServiceImpl implements CartService {
*/
@Autowired
private PintuanService pintuanService;
/**
* 砍价
*/
@Autowired
private KanjiaActivityService kanjiaActivityService;
/**
* 交易
*/
@ -147,32 +152,26 @@ public class CartServiceImpl implements CartService {
CartSkuVO cartSkuVO = new CartSkuVO(dataSku);
cartSkuVO.setCartType(cartTypeEnum);
promotionGoodsService.updatePromotion(cartSkuVO);
//再设置加入购物车的数量
this.checkSetGoodsQuantity(cartSkuVO, skuId, num);
//拼团判定
checkPintuan(cartTypeEnum, cartSkuVO);
//检测购物车数据
checkCart(cartTypeEnum, cartSkuVO, skuId, num);
//计算购物车小计
cartSkuVO.setSubTotal(CurrencyUtil.mul(cartSkuVO.getPurchasePrice(), cartSkuVO.getNum()));
cartSkuVOS.add(cartSkuVO);
}
tradeDTO.setCartTypeEnum(cartTypeEnum);
//如购物车发生更改则重置优惠券
tradeDTO.setStoreCoupons(null);
tradeDTO.setPlatformCoupon(null);
this.resetTradeDTO(tradeDTO);
} catch (ServiceException se) {
throw se;
} catch (ServiceException serviceException) {
throw serviceException;
} catch (Exception e) {
log.error("购物车渲染异常", e);
throw new ServiceException(errorMessage);
}
}
@Override
public void updateNum(String skuId, int num) {
try {
@ -637,32 +636,80 @@ public class CartServiceImpl implements CartService {
}
/**
* 校验拼团信息
* 检测购物车
*
* @param cartTypeEnum 购物车枚举
* @param cartSkuVO 购物车信息
* @param cartSkuVO SKUVO
* @param skuId SkuId
* @param num 数量
*/
private void checkPintuan(CartTypeEnum cartTypeEnum, CartSkuVO cartSkuVO) {
//拼团活动的话需要对限购数量进行判定
private void checkCart(CartTypeEnum cartTypeEnum, CartSkuVO cartSkuVO, String skuId, Integer num) {
//拼团判定
if (cartTypeEnum.equals(CartTypeEnum.PINTUAN)) {
//获取拼团信息
List<PromotionGoods> currentPromotion = cartSkuVO.getPromotions().stream().filter(
promotionGoods -> (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())))
.collect(Collectors.toList());
//拼团活动判定
if (!currentPromotion.isEmpty()) {
//写入拼团信息
cartSkuVO.setPintuanId(currentPromotion.get(0).getPromotionId());
} else {
throw new ServiceException(ResultCode.CART_PINTUAN_NOT_EXIST_ERROR);
}
checkPintuan(cartSkuVO);
//砍价判定
} else if (cartTypeEnum.equals(CartTypeEnum.KANJIA)) {
checkKanjia(cartSkuVO);
//检测购物车的数量
} else {
this.checkSetGoodsQuantity(cartSkuVO, skuId, num);
}
Pintuan pintuan = pintuanService.getPintuanById(cartSkuVO.getPintuanId());
Integer limitNum = pintuan.getLimitNum();
if (limitNum != 0 && cartSkuVO.getNum() > limitNum) {
throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR);
}
}
/**
* 校验拼团信息
*
* @param cartSkuVO 购物车信息
*/
private void checkPintuan(CartSkuVO cartSkuVO) {
//拼团活动需要对限购数量进行判定
//获取拼团信息
List<PromotionGoods> currentPromotion = cartSkuVO.getPromotions().stream().filter(
promotionGoods -> (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())))
.collect(Collectors.toList());
//拼团活动判定
if (!currentPromotion.isEmpty()) {
//写入拼团信息
cartSkuVO.setPintuanId(currentPromotion.get(0).getPromotionId());
} else {
throw new ServiceException(ResultCode.CART_PINTUAN_NOT_EXIST_ERROR);
}
//检测拼团限购数量
Pintuan pintuan = pintuanService.getPintuanById(cartSkuVO.getPintuanId());
Integer limitNum = pintuan.getLimitNum();
if (limitNum != 0 && cartSkuVO.getNum() > limitNum) {
throw new ServiceException(ResultCode.CART_PINTUAN_LIMIT_ERROR);
}
}
/**
* 校验砍价信息
*
* @param cartSkuVO 购物车信息
*/
private void checkKanjia(CartSkuVO cartSkuVO) {
List<PromotionGoods> currentPromotion = cartSkuVO.getPromotions().stream().filter(
promotionGoods -> (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())))
.collect(Collectors.toList());
//校验砍价活动是否满足条件
KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams();
kanjiaActivitySearchParams.setKanjiaActivityGoodsId(currentPromotion.get(0).getSkuId());
kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId());
KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams);
//判断发起砍价活动
if (kanjiaActivity == null) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR);
//判断砍价活动是否已满足条件
} else if (!KanJiaStatusEnum.PASS.name().equals(kanjiaActivity.getStatus())) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR);
//判断砍价商品数量
} else if (cartSkuVO.getNum() > 1) {
throw new ServiceException(ResultCode.KANJIA_NUM_BUY_ERROR);
}
}
}

View File

@ -1,6 +1,7 @@
package cn.lili.modules.promotion.entity.dos;
import cn.lili.base.BaseEntity;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -46,6 +47,9 @@ public class KanjiaActivity extends BaseEntity {
@ApiModelProperty(value = "缩略图")
private String thumbnail;
/**
* @see KanJiaStatusEnum
*/
@ApiModelProperty(value = "我的砍价状态")
private String status;

View File

@ -30,10 +30,10 @@ public class KanJiaActivityLogQuery {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
if (CharSequenceUtil.isNotEmpty(kanJiaActivityId)) {
queryWrapper.like("kan_jia_activity_id", kanJiaActivityId);
queryWrapper.like("kanjia_activity_id", kanJiaActivityId);
}
if (memberId != null) {
queryWrapper.eq("kan_jia_member_id", memberId);
queryWrapper.eq("kanjia_member_id", memberId);
}
queryWrapper.eq("delete_flag", false);
queryWrapper.orderByDesc("create_time");

View File

@ -8,7 +8,22 @@ package cn.lili.modules.promotion.entity.enums;
*/
public enum KanJiaStatusEnum {
START("开始"), FAIL("失败"), SUCCESS("成功");
/**
* 已开始
*/
START("开始"),
/**
* 砍价失败
*/
FAIL("失败"),
/**
* 砍价成功
*/
SUCCESS("成功"),
/**
* 砍价活动结束
*/
END("已结束");
private final String description;

View File

@ -12,8 +12,8 @@ import lombok.Data;
@Data
public class KanjiaActivityGoodsListVO {
@ApiModelProperty(value = "品id")
private String skuId;
@ApiModelProperty(value = "砍价活动商品id")
private String id;
@ApiModelProperty(value = "货品名称")
private String goodsName;

View File

@ -34,9 +34,9 @@ public class KanjiaActivitySearchParams {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StrUtil.isNotEmpty(id), "id", id);
queryWrapper.eq(StrUtil.isNotEmpty(kanjiaActivityId), "id", kanjiaActivityId);
queryWrapper.eq(StrUtil.isNotEmpty(kanjiaActivityGoodsId), "kanJia_activity_goods_id", kanjiaActivityGoodsId);
queryWrapper.eq(StrUtil.isNotEmpty(kanjiaActivityGoodsId), "kanjia_activity_goods_id", kanjiaActivityGoodsId);
queryWrapper.eq(StrUtil.isNotEmpty(memberId), "member_id", memberId);
queryWrapper.eq(StrUtil.isNotEmpty(status), "status", status);
return wrapper();
return queryWrapper;
}
}

View File

@ -51,8 +51,8 @@ public class KanjiaActivityLogServiceImpl extends ServiceImpl<KanJiaActivityLogM
public KanjiaActivityLog addKanJiaActivityLog(KanjiaActivityDTO kanjiaActivityDTO) {
//校验当前会员是否已经参与过此次砍价
QueryWrapper<KanjiaActivityLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(kanjiaActivityDTO.getKanjiaMemberId() != null, "kan_jia_member_id", kanjiaActivityDTO.getKanjiaMemberId());
queryWrapper.eq(kanjiaActivityDTO.getKanjiaActivityId() != null, "kan_jia_activity_id", kanjiaActivityDTO.getKanjiaActivityId());
queryWrapper.eq(kanjiaActivityDTO.getKanjiaMemberId() != null, "kanjia_member_id", kanjiaActivityDTO.getKanjiaMemberId());
queryWrapper.eq(kanjiaActivityDTO.getKanjiaActivityId() != null, "kanjia_activity_id", kanjiaActivityDTO.getKanjiaActivityId());
Integer count = this.baseMapper.selectCount(queryWrapper);
if (count > 0) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_LOG_MEMBER_ERROR);

View File

@ -1,6 +1,8 @@
package cn.lili.modules.promotion.serviceimpl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.RandomUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext;
@ -23,6 +25,7 @@ import cn.lili.modules.promotion.mapper.KanJiaActivityMapper;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.service.KanjiaActivityLogService;
import cn.lili.modules.promotion.service.KanjiaActivityService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -30,6 +33,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
* 砍价活动参与记录业务层实现
@ -65,7 +70,7 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
Member member = memberService.getById(UserContext.getCurrentUser().getId());
//校验此活动是否已经发起过
QueryWrapper<KanjiaActivity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("kan_jia_activity_goods_id", kanJiaActivityGoods.getId());
queryWrapper.eq("kanjia_activity_goods_id", kanJiaActivityGoods.getId());
queryWrapper.eq("member_id", member.getId());
if (this.count(queryWrapper) > 0) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_MEMBER_ERROR);
@ -81,27 +86,14 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
kanJiaActivity.setMemberId(UserContext.getCurrentUser().getId());
kanJiaActivity.setMemberName(member.getUsername());
kanJiaActivity.setStatus(KanJiaStatusEnum.START.name());
//剩余砍价金额 开始 是商品金额-最低购买金额
Double surplusPrice = CurrencyUtil.sub(goodsSku.getPrice(), kanJiaActivityGoods.getPurchasePrice());
//获取砍价金额因为自己要给自己砍一刀 所以需要在可砍金额范围内 砍一刀
Double price = this.getKanjiaPrice(kanJiaActivityGoods, surplusPrice);
//剩余可砍金额就是 砍一刀后的金额
kanJiaActivity.setSurplusPrice(CurrencyUtil.sub(surplusPrice, price));
//剩余砍价金额 开始 是商品金额;
kanJiaActivity.setSurplusPrice(goodsSku.getPrice());
//保存我的砍价活动
boolean result = this.save(kanJiaActivity);
//因为发起砍价就是自己给自己砍一刀所以要添加砍价记录信息
if (result) {
KanjiaActivityDTO kanjiaActivityDTO = new KanjiaActivityDTO();
kanjiaActivityDTO.setKanjiaActivityGoodsId(kanJiaActivityGoods.getId());
kanjiaActivityDTO.setKanjiaActivityId(kanJiaActivity.getId());
kanjiaActivityDTO.setKanjiaPrice(price);
kanjiaActivityDTO.setSurplusPrice(kanJiaActivity.getSurplusPrice());
kanjiaActivityDTO.setKanjiaMemberId(kanJiaActivity.getMemberId());
kanjiaActivityDTO.setKanjiaMemberName(kanJiaActivity.getMemberName());
kanjiaActivityDTO.setKanjiaMemberFace(member.getFace());
return kanjiaActivityLogService.addKanJiaActivityLog(kanjiaActivityDTO);
this.helpKanJia(kanJiaActivity.getId());
}
}
throw new ServiceException(ResultCode.GOODS_NOT_EXIST);
}
@ -115,36 +107,49 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
Member member = memberService.getById(UserContext.getCurrentUser().getId());
//根据砍价发起活动id查询砍价活动信息
KanjiaActivity kanjiaActivity = this.getById(kanjiaActivityId);
if (kanjiaActivity != null && kanjiaActivity.getStatus().equals(PromotionStatusEnum.START.name())) {
if (member == null) {
throw new ServiceException(ResultCode.USER_NOT_EXIST);
}
//根据skuId查询当前sku是否参与活动并且是在活动进行中
KanjiaActivityGoods kanJiaActivityGoods = kanjiaActivityGoodsService.getById(kanjiaActivity.getKanjiaActivityGoodsId());
if (kanJiaActivityGoods == null) {
throw new ServiceException(ResultCode.PROMOTION_STATUS_END);
}
KanjiaActivityDTO kanjiaActivityDTO = new KanjiaActivityDTO();
kanjiaActivityDTO.setKanjiaActivityGoodsId(kanjiaActivity.getKanjiaActivityGoodsId());
kanjiaActivityDTO.setKanjiaActivityId(kanjiaActivityId);
//获取砍价金额
Double price = this.getKanjiaPrice(kanJiaActivityGoods, kanjiaActivity.getSurplusPrice());
kanjiaActivityDTO.setKanjiaPrice(price);
//获取可砍金额
kanjiaActivityDTO.setSurplusPrice(CurrencyUtil.sub(kanjiaActivity.getSurplusPrice(), price));
//如果可砍金额为0的话说明活动成功了
if (Double.doubleToLongBits(kanjiaActivityDTO.getSurplusPrice()) == Double.doubleToLongBits(0D)) {
kanjiaActivity.setStatus(KanJiaStatusEnum.SUCCESS.name());
this.updateById(kanjiaActivity);
}
kanjiaActivityDTO.setKanjiaMemberId(member.getId());
kanjiaActivityDTO.setKanjiaMemberName(member.getUsername());
kanjiaActivityDTO.setKanjiaMemberFace(member.getFace());
return kanjiaActivityLogService.addKanJiaActivityLog(kanjiaActivityDTO);
//判断活动非空或非正在进行中的活动
if (kanjiaActivity == null || !kanjiaActivity.getStatus().equals(PromotionStatusEnum.START.name())) {
throw new ServiceException(ResultCode.PROMOTION_STATUS_END);
} else if (member == null) {
throw new ServiceException(ResultCode.USER_NOT_EXIST);
}
throw new ServiceException(ResultCode.PROMOTION_STATUS_END);
//根据skuId查询当前sku是否参与活动并且是在活动进行中
KanjiaActivityGoods kanJiaActivityGoods = kanjiaActivityGoodsService.getById(kanjiaActivity.getKanjiaActivityGoodsId());
if (kanJiaActivityGoods == null) {
throw new ServiceException(ResultCode.PROMOTION_STATUS_END);
}
//判断是否已参与
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<KanjiaActivityLog>()
.eq(KanjiaActivityLog::getKanjiaActivityId, kanjiaActivityId)
.eq(KanjiaActivityLog::getKanjiaMemberId, member.getId());
if (kanjiaActivityLogService.count(lambdaQueryWrapper) > 0) {
throw new ServiceException(ResultCode.PROMOTION_LOG_EXIST);
}
//添加砍价记录
KanjiaActivityDTO kanjiaActivityDTO = new KanjiaActivityDTO();
kanjiaActivityDTO.setKanjiaActivityGoodsId(kanjiaActivity.getKanjiaActivityGoodsId());
kanjiaActivityDTO.setKanjiaActivityId(kanjiaActivityId);
//获取砍价金额
Double price = this.getKanjiaPrice(kanJiaActivityGoods, kanjiaActivity.getSurplusPrice());
kanjiaActivityDTO.setKanjiaPrice(price);
//计算剩余金额
kanjiaActivityDTO.setSurplusPrice(CurrencyUtil.sub(kanjiaActivity.getSurplusPrice(), price));
kanjiaActivityDTO.setKanjiaMemberId(member.getId());
kanjiaActivityDTO.setKanjiaMemberName(member.getUsername());
kanjiaActivityDTO.setKanjiaMemberFace(member.getFace());
KanjiaActivityLog kanjiaActivityLog = kanjiaActivityLogService.addKanJiaActivityLog(kanjiaActivityDTO);
//如果可砍金额为0的话说明活动成功了
if (Double.doubleToLongBits(kanjiaActivityDTO.getSurplusPrice()) == Double.doubleToLongBits(0D)) {
kanjiaActivity.setStatus(KanJiaStatusEnum.SUCCESS.name());
}
kanjiaActivity.setSurplusPrice(kanjiaActivityLog.getSurplusPrice());
this.updateById(kanjiaActivity);
return kanjiaActivityLog;
}
/**
* 随机获取砍一刀价格
*
@ -153,24 +158,16 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
* @return
*/
private Double getKanjiaPrice(KanjiaActivityGoods kanjiaActivityGoods, Double surplusPrice) {
double result = kanjiaActivityGoods.getHighestPrice() - kanjiaActivityGoods.getLowestPrice();
double num = (Math.random() * result);
//如果剩余金额小于最低可砍价金额则直接返回最小金额 砍价成功
//如果剩余砍价金额小于最低砍价金额则返回0
if (kanjiaActivityGoods.getLowestPrice() > surplusPrice) {
return surplusPrice;
}
Double price = 0D;
while (true) {
price = CurrencyUtil.round(num + kanjiaActivityGoods.getLowestPrice(), 2);
//从最大金额和最小金额之间获取随机砍价金额
if (price < surplusPrice) {
break;
} else {
price = surplusPrice;
break;
}
}
return price;
//获取随机砍价金额
BigDecimal bigDecimal = RandomUtil.randomBigDecimal(Convert.toBigDecimal(kanjiaActivityGoods.getHighestPrice()),
Convert.toBigDecimal(kanjiaActivityGoods.getLowestPrice()));
return Convert.toDouble(bigDecimal, 0.0);
}

View File

@ -17,7 +17,6 @@ import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
import cn.lili.modules.order.cart.entity.vo.FullDiscountVO;
import cn.lili.modules.promotion.entity.dos.PointsGoods;
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.dos.SeckillApply;
import cn.lili.modules.promotion.entity.dto.BasePromotion;
@ -123,10 +122,14 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
//下一次更新时间
cartSkuVO.setUpdatePromotionTime(date);
}
PointsGoods pointsGoods = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId());
if (pointsGoods != null) {
cartSkuVO.setPoint(pointsGoods.getPoints().intValue());
}
//TODO 积分商品逻辑实现
// PointsGoods pointsGoods = pointsGoodsService.getPointsGoodsDetailBySkuId(cartSkuVO.getGoodsSku().getId());
// if (pointsGoods != null) {
// cartSkuVO.setPoint(pointsGoods.getPoints().intValue());
// }
//分销商品
DistributionGoods distributionGoods = distributionGoodsService.distributionGoodsVOBySkuId(cartSkuVO.getGoodsSku().getId());
if (distributionGoods != null) {
cartSkuVO.setDistributionGoods(distributionGoods);