砍价订单实现

This commit is contained in:
lifenlong 2021-07-20 16:18:54 +08:00
parent eef270ff9c
commit 6607506929
17 changed files with 115 additions and 66 deletions

View File

@ -4,12 +4,6 @@
##### 官方qq群 961316482官方公众号/小程序体验,扫描二维码 ##### 官方qq群 961316482官方公众号/小程序体验,扫描二维码
![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png)
[![star](https://gitee.com/beijing_hongye_huicheng/lilishop/badge/star.svg?theme=dark)](https://gitee.com/beijing_hongye_huicheng/lilishop/stargazers)
  ![github](https://img.shields.io/github/stars/hongyehuicheng/lilishop.svg?style=social&logo=#181717)
### 🔥介绍 ### 🔥介绍
**官网**https://pickmall.cn **官网**https://pickmall.cn

View File

@ -50,22 +50,22 @@ public class KanjiaGoodsActivityBuyerController {
@GetMapping @GetMapping
@ApiOperation(value = "分页获取砍价商品") @ApiOperation(value = "分页获取砍价商品")
public ResultMessage<IPage<KanjiaActivityGoodsListVO>> kanJiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) { public ResultMessage<IPage<KanjiaActivityGoodsListVO>> kanjiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) {
// 会员端查询到的肯定是已经开始的活动商品 // 会员端查询到的肯定是已经开始的活动商品
kanjiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name()); kanjiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name());
return ResultUtil.data(kanJiaActivityGoodsService.kanJiaGoodsVOPage(kanjiaActivityGoodsParams, page)); return ResultUtil.data(kanJiaActivityGoodsService.kanjiaGoodsVOPage(kanjiaActivityGoodsParams, page));
} }
@GetMapping("/{id}") @GetMapping("/{id}")
@ApiOperation(value = "获取砍价活动商品") @ApiOperation(value = "获取砍价活动商品")
@ApiImplicitParam(name = "id", value = "砍价活动商品ID", required = true, paramType = "path") @ApiImplicitParam(name = "id", value = "砍价活动商品ID", required = true, paramType = "path")
public ResultMessage<KanjiaActivityGoodsVO> getPointsGoodsPage(@PathVariable String id) { public ResultMessage<KanjiaActivityGoodsVO> getKanjiaActivityGoods(@PathVariable String id) {
return ResultUtil.data(kanJiaActivityGoodsService.getKanJiaGoodsVO(id)); return ResultUtil.data(kanJiaActivityGoodsService.getKanJiaGoodsVO(id));
} }
@GetMapping("/getKanjiaActivity/logs") @GetMapping("/getKanjiaActivity/logs")
@ApiOperation(value = "分页获取砍价活动-帮砍记录") @ApiOperation(value = "分页获取砍价活动-帮砍记录")
public ResultMessage<IPage<KanjiaActivityLog>> getPointsGoodsPage(KanJiaActivityLogQuery kanJiaActivityLogQuery, PageVO page) { public ResultMessage<IPage<KanjiaActivityLog>> getKanjiaActivityLog(KanJiaActivityLogQuery kanJiaActivityLogQuery, PageVO page) {
return ResultUtil.data(kanJiaActivityLogService.getForPage(kanJiaActivityLogQuery, page)); return ResultUtil.data(kanJiaActivityLogService.getForPage(kanJiaActivityLogQuery, page));
} }

View File

@ -10,9 +10,11 @@ import cn.lili.modules.promotion.service.PointsGoodsCategoryService;
import cn.lili.modules.promotion.service.PointsGoodsService; import cn.lili.modules.promotion.service.PointsGoodsService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -44,4 +46,11 @@ public class PointsGoodsBuyerController {
return ResultUtil.data(pointsGoodsCategoryService.getCategoryByPage(name, page)); return ResultUtil.data(pointsGoodsCategoryService.getCategoryByPage(name, page));
} }
@GetMapping("/{id}")
@ApiOperation(value = "获取积分活动商品")
@ApiImplicitParam(name = "id", value = "积分商品ID", required = true, paramType = "path")
public ResultMessage<PointsGoodsVO> getPointsGoodsPage(@PathVariable String id) {
return ResultUtil.data(pointsGoodsService.getPointsGoodsDetail(id));
}
} }

View File

@ -37,9 +37,6 @@ spring:
# replica-set-name: mongoreplset # replica-set-name: mongoreplset
cache: cache:
type: redis type: redis
#amqp
# rabbitmq:
# host: 192.168.0.116
jpa: jpa:
# 自动生成表结构 # 自动生成表结构
generate-ddl: true generate-ddl: true

View File

@ -48,12 +48,15 @@ public class TradeBuilder {
*/ */
int[] defaultRender = {0, 1, 2, 4, 5, 6, 7}; int[] defaultRender = {0, 1, 2, 4, 5, 6, 7};
int[] danbiRender = {0, 2, 4, 5, 6, 7};
/** /**
* 购物车购物车渲染 * 购物车购物车渲染
* 0-> 校验商品 1- 满优惠渲染 2->渲染优惠 5->计算价格 * 0-> 校验商品 1- 满优惠渲染 2->渲染优惠 5->计算价格
*/ */
int[] cartRender = {0, 1, 2, 5}; int[] cartRender = {0, 1, 2, 5};
/** /**
* 构造购物车 * 构造购物车
* 购物车与结算信息不一致的地方主要是优惠券计算和运费计算其他规则都是一致都 * 购物车与结算信息不一致的地方主要是优惠券计算和运费计算其他规则都是一致都
@ -98,12 +101,23 @@ public class TradeBuilder {
//将购物车到sku未选择信息过滤 //将购物车到sku未选择信息过滤
List<CartSkuVO> collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList()); List<CartSkuVO> collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList());
tradeDTO.setSkuList(collect); tradeDTO.setSkuList(collect);
//按照计划进行渲染 if (checkedWay.equals(CartTypeEnum.CART) || checkedWay.equals(CartTypeEnum.BUY_NOW) || checkedWay.equals(CartTypeEnum.VIRTUAL)) {
for (int index : defaultRender) { //按照计划进行渲染
try { for (int index : defaultRender) {
cartRenderSteps.get(index).render(tradeDTO); try {
} catch (Exception e) { cartRenderSteps.get(index).render(tradeDTO);
log.error("购物车{}渲染异常:", cartRenderSteps.get(index).getClass(), e); } catch (Exception e) {
log.error("购物车{}渲染异常:", cartRenderSteps.get(index).getClass(), e);
}
}
} else {
//按照计划进行渲染
for (int index : danbiRender) {
try {
cartRenderSteps.get(index).render(tradeDTO);
} catch (Exception e) {
log.error("购物车{}渲染异常:", cartRenderSteps.get(index).getClass(), e);
}
} }
} }

View File

@ -97,7 +97,10 @@ public class CartPriceRender implements CartRenderStep {
if (Boolean.TRUE.equals(cartSkuVO.getChecked())) { if (Boolean.TRUE.equals(cartSkuVO.getChecked())) {
PriceDetailDTO priceDetailDTO = cartSkuVO.getPriceDetailDTO(); PriceDetailDTO priceDetailDTO = cartSkuVO.getPriceDetailDTO();
//流水金额(入账 出帐金额) = goodsPrice + freight - discountPrice - couponPrice //流水金额(入账 出帐金额) = goodsPrice + freight - discountPrice - couponPrice
double flowPrice = CurrencyUtil.sub(CurrencyUtil.add(priceDetailDTO.getGoodsPrice(), priceDetailDTO.getFreightPrice()), CurrencyUtil.add(priceDetailDTO.getDiscountPrice(), priceDetailDTO.getCouponPrice() != null ? priceDetailDTO.getCouponPrice() : 0)); double flowPrice = CurrencyUtil.sub(
CurrencyUtil.add(priceDetailDTO.getGoodsPrice(), priceDetailDTO.getFreightPrice()),
CurrencyUtil.add(priceDetailDTO.getDiscountPrice(),
priceDetailDTO.getCouponPrice() != null ? priceDetailDTO.getCouponPrice() : 0));
priceDetailDTO.setFlowPrice(flowPrice); priceDetailDTO.setFlowPrice(flowPrice);
//最终结算金额 = flowPrice - platFormCommission - distributionCommission //最终结算金额 = flowPrice - platFormCommission - distributionCommission

View File

@ -27,10 +27,8 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
import cn.lili.modules.promotion.entity.dos.MemberCoupon; import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dos.Pintuan; import cn.lili.modules.promotion.entity.dos.Pintuan;
import cn.lili.modules.promotion.entity.dos.PromotionGoods; import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum; import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum; import cn.lili.modules.promotion.entity.enums.*;
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams; import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.service.*; import cn.lili.modules.promotion.service.*;
import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dos.EsGoodsIndex;
@ -98,6 +96,8 @@ public class CartServiceImpl implements CartService {
*/ */
@Autowired @Autowired
private KanjiaActivityService kanjiaActivityService; private KanjiaActivityService kanjiaActivityService;
@Autowired
private KanjiaActivityGoodsService kanjiaActivityGoodsService;
/** /**
* 交易 * 交易
*/ */
@ -691,25 +691,25 @@ public class CartServiceImpl implements CartService {
*/ */
private void checkKanjia(CartSkuVO cartSkuVO) { private void checkKanjia(CartSkuVO cartSkuVO) {
List<PromotionGoods> currentPromotion = cartSkuVO.getPromotions().stream().filter( //根据skuId获取砍价商品
promotionGoods -> (promotionGoods.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name()))) KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO=kanjiaActivityGoodsService.getKanjiaGoodsBySkuId(cartSkuVO.getGoodsSku().getId());
.collect(Collectors.toList());
//校验砍价活动是否满足条件 //查找当前会员的砍价商品活动
KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams(); KanjiaActivitySearchParams kanjiaActivitySearchParams = new KanjiaActivitySearchParams();
kanjiaActivitySearchParams.setKanjiaActivityGoodsId(currentPromotion.get(0).getSkuId()); kanjiaActivitySearchParams.setKanjiaActivityGoodsId(kanjiaActivityGoodsDTO.getId());
kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId()); kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId());
kanjiaActivitySearchParams.setStatus(KanJiaStatusEnum.SUCCESS.name());
KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams); KanjiaActivity kanjiaActivity = kanjiaActivityService.getKanjiaActivity(kanjiaActivitySearchParams);
//校验砍价活动是否满足条件
//判断发起砍价活动 //判断发起砍价活动
if (kanjiaActivity == null) { if (kanjiaActivity == null) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR); throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR);
//判断砍价活动是否已满足条件 //判断砍价活动是否已满足条件
} else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) { } else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR); throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR);
//判断砍价商品数量
} else if (cartSkuVO.getNum() > 1) {
throw new ServiceException(ResultCode.KANJIA_NUM_BUY_ERROR);
} }
//砍价商品默认一件货物
cartSkuVO.setNum(1);
} }
} }

View File

@ -1,5 +1,6 @@
package cn.lili.modules.order.order.entity.dos; package cn.lili.modules.order.order.entity.dos;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.base.BaseEntity; import cn.lili.base.BaseEntity;
import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.BeanUtil;
@ -167,7 +168,7 @@ public class Order extends BaseEntity {
private Boolean needReceipt; private Boolean needReceipt;
@ApiModelProperty(value = "是否为其他订单下的订单如果是则为依赖订单的sn否则为空") @ApiModelProperty(value = "是否为其他订单下的订单如果是则为依赖订单的sn否则为空")
private String parentOrderSn=""; private String parentOrderSn = "";
@ApiModelProperty(value = "是否为某订单类型的订单如果是则为订单类型的id否则为空") @ApiModelProperty(value = "是否为某订单类型的订单如果是则为订单类型的id否则为空")
private String promotionId; private String promotionId;
@ -215,7 +216,7 @@ public class Order extends BaseEntity {
BeanUtil.copyProperties(cartVO.getPriceDetailDTO(), this); BeanUtil.copyProperties(cartVO.getPriceDetailDTO(), this);
BeanUtil.copyProperties(cartVO, this); BeanUtil.copyProperties(cartVO, this);
//填写订单类型 //填写订单类型
this.setTradeType(cartVO,tradeDTO); this.setTradeType(cartVO, tradeDTO);
setId(oldId); setId(oldId);
//设置默认支付状态 //设置默认支付状态
@ -253,22 +254,23 @@ public class Order extends BaseEntity {
* 2.普通订单进行区分实物订单虚拟订单 * 2.普通订单进行区分实物订单虚拟订单
* 3.促销订单判断货物进行区分实物虚拟商品 * 3.促销订单判断货物进行区分实物虚拟商品
* 4.拼团订单需要填写父订单ID * 4.拼团订单需要填写父订单ID
* @param cartVO 购物车VO *
* @param cartVO 购物车VO
* @param tradeDTO 交易DTO * @param tradeDTO 交易DTO
*/ */
private void setTradeType(CartVO cartVO, TradeDTO tradeDTO){ private void setTradeType(CartVO cartVO, TradeDTO tradeDTO) {
//判断是否为普通订单促销订单 //判断是否为普通订单促销订单
if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.CART) || tradeDTO.getCartTypeEnum().equals(CartTypeEnum.BUY_NOW)) { if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.CART) || tradeDTO.getCartTypeEnum().equals(CartTypeEnum.BUY_NOW)) {
this.setOrderType(OrderTypeEnum.NORMAL.name()); this.setOrderType(OrderTypeEnum.NORMAL.name());
}else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.VIRTUAL)) { } else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.VIRTUAL)) {
this.setOrderType(OrderTypeEnum.VIRTUAL.name()); this.setOrderType(OrderTypeEnum.VIRTUAL.name());
}else{ } else {
//促销订单拼团积分-判断购买的是虚拟商品还是实物商品 //促销订单拼团积分-判断购买的是虚拟商品还是实物商品
String goodsType=cartVO.getSkuList().get(0).getGoodsSku().getGoodsType(); String goodsType = cartVO.getSkuList().get(0).getGoodsSku().getGoodsType();
if(goodsType.equals(GoodsTypeEnum.PHYSICAL_GOODS.name())){ if (StrUtil.isEmpty(goodsType) || goodsType.equals(GoodsTypeEnum.PHYSICAL_GOODS.name())) {
this.setOrderType(OrderTypeEnum.NORMAL.name()); this.setOrderType(OrderTypeEnum.NORMAL.name());
}else{ } else {
this.setOrderType(OrderTypeEnum.VIRTUAL.name()); this.setOrderType(OrderTypeEnum.VIRTUAL.name());
} }
//填写订单的促销类型 //填写订单的促销类型

View File

@ -27,10 +27,6 @@ public class FullDiscount extends BasePromotion {
private static final long serialVersionUID = 430433787214894166L; private static final long serialVersionUID = 430433787214894166L;
@NotEmpty(message = "活动名称不能为空")
@ApiModelProperty(value = "活动名称", required = true)
private String promotionName;
@NotNull(message = "请填写优惠门槛") @NotNull(message = "请填写优惠门槛")
@DecimalMax(value = "99999999.00", message = "优惠券门槛金额超出限制") @DecimalMax(value = "99999999.00", message = "优惠券门槛金额超出限制")
@ApiModelProperty(value = "优惠门槛金额", required = true) @ApiModelProperty(value = "优惠门槛金额", required = true)

View File

@ -17,7 +17,7 @@ import lombok.Data;
@ApiModel(value = "砍价活动参与记录对象") @ApiModel(value = "砍价活动参与记录对象")
public class KanjiaActivityDTO extends KanjiaActivityLog { public class KanjiaActivityDTO extends KanjiaActivityLog {
@ApiModelProperty(value = "砍价金额") @ApiModelProperty(value = "砍价商品Id")
private String kanjiaActivityGoodsId; private String kanjiaActivityGoodsId;
} }

View File

@ -16,12 +16,18 @@ import lombok.Data;
public class KanjiaActivityVO extends KanjiaActivity { public class KanjiaActivityVO extends KanjiaActivity {
@ApiModelProperty(value = "是否可以砍价") @ApiModelProperty(value = "是否可以砍价")
private Boolean help = false; private Boolean help;
@ApiModelProperty(value = "是否已发起砍价") @ApiModelProperty(value = "是否已发起砍价")
private Boolean launch = false; private Boolean launch;
@ApiModelProperty(value = "是否可购买") @ApiModelProperty(value = "是否可购买")
private Boolean pass = false; private Boolean pass;
public KanjiaActivityVO() {
this.setHelp(false);
this.setLaunch(false);
this.setPass(false);
}
} }

View File

@ -47,7 +47,7 @@ public interface KanjiaActivityGoodsService extends IService<KanjiaActivityGoods
* @param pageVO 分页信息 * @param pageVO 分页信息
* @return 砍价商品 * @return 砍价商品
*/ */
IPage<KanjiaActivityGoodsListVO> kanJiaGoodsVOPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO); IPage<KanjiaActivityGoodsListVO> kanjiaGoodsVOPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO pageVO);
/** /**
* 查询砍价活动商品 * 查询砍价活动商品
@ -55,7 +55,14 @@ public interface KanjiaActivityGoodsService extends IService<KanjiaActivityGoods
* @param goodsId 砍价活动商品id * @param goodsId 砍价活动商品id
* @return 砍价活动商品信息 * @return 砍价活动商品信息
*/ */
KanjiaActivityGoodsDTO getKanJiaGoodsDetail(String goodsId); KanjiaActivityGoodsDTO getKanjiaGoodsDetail(String goodsId);
/**
* 根据SkuId获取正在进行中的砍价商品
* @param skuId 商品规格Id
* @return 砍价商品
*/
KanjiaActivityGoodsDTO getKanjiaGoodsBySkuId(String skuId);
/** /**
* 查询砍价活动商品VO * 查询砍价活动商品VO
@ -67,10 +74,10 @@ public interface KanjiaActivityGoodsService extends IService<KanjiaActivityGoods
/** /**
* 修改看见商品信息 * 修改看见商品信息
* *
* @param kanJiaActivityGoodsDTO 砍价商品信息 * @param kanjiaActivityGoodsDTO 砍价商品信息
* @return 是否修改成功 * @return 是否修改成功
*/ */
boolean updateKanJiaActivityGoods(KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO); boolean updateKanjiaActivityGoods(KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO);
/** /**
* 删除砍价商品 * 删除砍价商品

View File

@ -140,7 +140,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
} }
@Override @Override
public IPage<KanjiaActivityGoodsListVO> kanJiaGoodsVOPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO pageVO) { public IPage<KanjiaActivityGoodsListVO> kanjiaGoodsVOPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO pageVO) {
return this.baseMapper.kanjiaActivityGoodsVOPage(PageUtil.initPage(pageVO),kanjiaActivityGoodsParams.wrapper()); return this.baseMapper.kanjiaActivityGoodsVOPage(PageUtil.initPage(pageVO),kanjiaActivityGoodsParams.wrapper());
} }
@ -225,7 +225,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
} }
@Override @Override
public KanjiaActivityGoodsDTO getKanJiaGoodsDetail(String goodsId) { public KanjiaActivityGoodsDTO getKanjiaGoodsDetail(String goodsId) {
KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.mongoTemplate.findById(goodsId, KanjiaActivityGoodsDTO.class); KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.mongoTemplate.findById(goodsId, KanjiaActivityGoodsDTO.class);
if (kanJiaActivityGoodsDTO == null) { if (kanJiaActivityGoodsDTO == null) {
log.error("id为" + goodsId + "的砍价商品不存在!"); log.error("id为" + goodsId + "的砍价商品不存在!");
@ -234,6 +234,16 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
return kanJiaActivityGoodsDTO; return kanJiaActivityGoodsDTO;
} }
@Override
public KanjiaActivityGoodsDTO getKanjiaGoodsBySkuId(String skuId) {
Query query = new Query();
query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name()));
query.addCriteria(Criteria.where("skuId").is(skuId));
List<KanjiaActivityGoodsDTO> kanjiaActivityGoodsDTOS = this.mongoTemplate.find(query, KanjiaActivityGoodsDTO.class);
return kanjiaActivityGoodsDTOS.get(0);
}
@Override @Override
public KanjiaActivityGoodsVO getKanJiaGoodsVO(String id) { public KanjiaActivityGoodsVO getKanJiaGoodsVO(String id) {
@ -252,9 +262,9 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
} }
@Override @Override
public boolean updateKanJiaActivityGoods(KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) { public boolean updateKanjiaActivityGoods(KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) {
//校验砍价商品是否存在 //校验砍价商品是否存在
KanjiaActivityGoodsDTO dbKanJiaActivityGoods = this.getKanJiaGoodsDetail(kanJiaActivityGoodsDTO.getId()); KanjiaActivityGoodsDTO dbKanJiaActivityGoods = this.getKanjiaGoodsDetail(kanJiaActivityGoodsDTO.getId());
//校验当前活动是否已经开始,只有新建的未开始的活动可以编辑 //校验当前活动是否已经开始,只有新建的未开始的活动可以编辑
if (!dbKanJiaActivityGoods.getPromotionStatus().equals(PromotionStatusEnum.NEW.name())) { if (!dbKanJiaActivityGoods.getPromotionStatus().equals(PromotionStatusEnum.NEW.name())) {
throw new ServiceException(ResultCode.PROMOTION_UPDATE_ERROR); throw new ServiceException(ResultCode.PROMOTION_UPDATE_ERROR);
@ -297,7 +307,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
public boolean deleteKanJiaGoods(List<String> ids) { public boolean deleteKanJiaGoods(List<String> ids) {
List<String> skuIds = new ArrayList<>(); List<String> skuIds = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.getKanJiaGoodsDetail(id); KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.getKanjiaGoodsDetail(id);
this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR, this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR,
kanJiaActivityGoodsDTO.getStartTime().getTime(), kanJiaActivityGoodsDTO.getStartTime().getTime(),
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.KANJIA.name() + kanJiaActivityGoodsDTO.getId())), DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.KANJIA.name() + kanJiaActivityGoodsDTO.getId())),
@ -318,8 +328,8 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
public KanjiaActivityGoodsDTO getKanJiaGoodsBySku(String skuId) { public KanjiaActivityGoodsDTO getKanJiaGoodsBySku(String skuId) {
//mongo查询条件 //mongo查询条件
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("skuId").ne(skuId)) query.addCriteria(Criteria.where("skuId").is(skuId))
.addCriteria(Criteria.where("promotionStatus").ne(PromotionStatusEnum.START.name())); .addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name()));
List<KanjiaActivityGoodsDTO> kanjiaActivityGoodsDTOList=this.mongoTemplate.find(query, KanjiaActivityGoodsDTO.class); List<KanjiaActivityGoodsDTO> kanjiaActivityGoodsDTOList=this.mongoTemplate.find(query, KanjiaActivityGoodsDTO.class);
return kanjiaActivityGoodsDTOList.get(0); return kanjiaActivityGoodsDTOList.get(0);
} }

View File

@ -66,6 +66,10 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
public KanjiaActivityVO getKanjiaActivityVO(KanjiaActivitySearchParams kanJiaActivitySearchParams) { public KanjiaActivityVO getKanjiaActivityVO(KanjiaActivitySearchParams kanJiaActivitySearchParams) {
KanjiaActivity kanjiaActivity = this.getKanjiaActivity(kanJiaActivitySearchParams); KanjiaActivity kanjiaActivity = this.getKanjiaActivity(kanJiaActivitySearchParams);
KanjiaActivityVO kanjiaActivityVO = new KanjiaActivityVO(); KanjiaActivityVO kanjiaActivityVO = new KanjiaActivityVO();
//判断是否参与活动
if (kanjiaActivity == null) {
return kanjiaActivityVO;
}
BeanUtil.copyProperties(kanjiaActivity, kanjiaActivityVO); BeanUtil.copyProperties(kanjiaActivity, kanjiaActivityVO);
//判断是否发起了砍价活动,如果发起可参与活动 //判断是否发起了砍价活动,如果发起可参与活动
@ -195,6 +199,10 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
return surplusPrice; return surplusPrice;
} }
//如果金额相等则直接返回
if (kanjiaActivityGoods.getLowestPrice().equals(kanjiaActivityGoods.getHighestPrice())) {
return kanjiaActivityGoods.getLowestPrice();
}
//获取随机砍价金额 //获取随机砍价金额
BigDecimal bigDecimal = RandomUtil.randomBigDecimal(Convert.toBigDecimal(kanjiaActivityGoods.getLowestPrice()), BigDecimal bigDecimal = RandomUtil.randomBigDecimal(Convert.toBigDecimal(kanjiaActivityGoods.getLowestPrice()),
Convert.toBigDecimal(kanjiaActivityGoods.getHighestPrice())); Convert.toBigDecimal(kanjiaActivityGoods.getHighestPrice()));

View File

@ -141,7 +141,8 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
queryWrapper.eq(MemberCoupon::getMemberId, memberId); queryWrapper.eq(MemberCoupon::getMemberId, memberId);
queryWrapper.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); queryWrapper.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name());
queryWrapper.eq(MemberCoupon::getScopeType, CouponScopeTypeEnum.ALL.name()); queryWrapper.eq(MemberCoupon::getScopeType, CouponScopeTypeEnum.ALL.name());
queryWrapper.gt(MemberCoupon::getEndTime, new Date()).and(i -> i.in(MemberCoupon::getStoreId, storeId).or(j -> j.eq(MemberCoupon::getIsPlatform, true))); queryWrapper.gt(MemberCoupon::getEndTime, new Date());
//queryWrapper.and(i -> i.in(MemberCoupon::getStoreId, storeId).or(j -> j.eq(MemberCoupon::getIsPlatform, true)));
return this.list(queryWrapper); return this.list(queryWrapper);
} }

View File

@ -66,7 +66,7 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
@Override @Override
public PromotionPriceDTO calculationPromotionPrice(List<PromotionPriceParamDTO> tradeSkuList, List<MemberCoupon> memberCouponList, CartTypeEnum cartTypeEnum) { public PromotionPriceDTO calculationPromotionPrice(List<PromotionPriceParamDTO> tradeSkuList, List<MemberCoupon> memberCouponList, CartTypeEnum cartTypeEnum) {
List<GoodsSkuPromotionPriceDTO> priceDTOList=new ArrayList<>(); List<GoodsSkuPromotionPriceDTO> priceDTOList = new ArrayList<>();
//拆分出SkuId列表 //拆分出SkuId列表
List<String> skuIds = tradeSkuList.parallelStream().map(PromotionPriceParamDTO::getSkuId).collect(Collectors.toList()); List<String> skuIds = tradeSkuList.parallelStream().map(PromotionPriceParamDTO::getSkuId).collect(Collectors.toList());
@ -75,9 +75,9 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
//判断交易类型进行不同的处理 //判断交易类型进行不同的处理
if (cartTypeEnum.equals(CartTypeEnum.POINTS)) { if (cartTypeEnum.equals(CartTypeEnum.POINTS)) {
this.pointGoodsPromotion(tradeSkuList); priceDTOList = this.pointGoodsPromotion(tradeSkuList);
} else if (cartTypeEnum.equals(CartTypeEnum.KANJIA)) { } else if (cartTypeEnum.equals(CartTypeEnum.KANJIA)) {
this.kanjiaPromotion(tradeSkuList); priceDTOList = this.kanjiaPromotion(tradeSkuList);
} else { } else {
//参与计算的缓存中的商品SKU列表 //参与计算的缓存中的商品SKU列表
List<GoodsSku> goodsSkus = goodsSkuService.getGoodsSkuByIdFromCache(skuIds); List<GoodsSku> goodsSkus = goodsSkuService.getGoodsSkuByIdFromCache(skuIds);
@ -288,6 +288,8 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
goodsSkuPromotionPrice.setTotalDiscountPrice(CurrencyUtil.sub(goodsSkuPromotionPrice.getOriginalPrice(), kanjiaActivityGoodsDTO.getPurchasePrice())); goodsSkuPromotionPrice.setTotalDiscountPrice(CurrencyUtil.sub(goodsSkuPromotionPrice.getOriginalPrice(), kanjiaActivityGoodsDTO.getPurchasePrice()));
//购买价格=砍价成交金额 //购买价格=砍价成交金额
goodsSkuPromotionPrice.setTotalFinalePrice(kanjiaActivityGoodsDTO.getPurchasePrice()); goodsSkuPromotionPrice.setTotalFinalePrice(kanjiaActivityGoodsDTO.getPurchasePrice());
//原价
goodsSkuPromotionPrice.setTotalOriginalPrice(goodsSkuPromotionPrice.getOriginalPrice());
priceDTOList.add(goodsSkuPromotionPrice); priceDTOList.add(goodsSkuPromotionPrice);
return priceDTOList; return priceDTOList;
} }

View File

@ -51,7 +51,7 @@ public class KanJiaActivityGoodsManagerController {
@GetMapping("/{id}") @GetMapping("/{id}")
@ApiOperation(value = "获取积分商品详情") @ApiOperation(value = "获取积分商品详情")
public ResultMessage<Object> getPointsGoodsDetail(@PathVariable("id") String goodsId) { public ResultMessage<Object> getPointsGoodsDetail(@PathVariable("id") String goodsId) {
KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = kanJiaActivityGoodsService.getKanJiaGoodsDetail(goodsId); KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = kanJiaActivityGoodsService.getKanjiaGoodsDetail(goodsId);
return ResultUtil.data(kanJiaActivityGoodsDTO); return ResultUtil.data(kanJiaActivityGoodsDTO);
} }
@ -59,7 +59,7 @@ public class KanJiaActivityGoodsManagerController {
@PutMapping @PutMapping
@ApiOperation(value = "修改砍价商品") @ApiOperation(value = "修改砍价商品")
public ResultMessage<Object> updatePointsGoods(@RequestBody KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) { public ResultMessage<Object> updatePointsGoods(@RequestBody KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO) {
kanJiaActivityGoodsService.updateKanJiaActivityGoods(kanJiaActivityGoodsDTO); kanJiaActivityGoodsService.updateKanjiaActivityGoods(kanJiaActivityGoodsDTO);
return ResultUtil.success(); return ResultUtil.success();
} }