砍价订单实现
This commit is contained in:
parent
eef270ff9c
commit
6607506929
@ -4,12 +4,6 @@
|
|||||||
|
|
||||||
##### 官方qq群 961316482,官方公众号/小程序体验,扫描二维码
|
##### 官方qq群 961316482,官方公众号/小程序体验,扫描二维码
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[](https://gitee.com/beijing_hongye_huicheng/lilishop/stargazers)
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
### 🔥介绍
|
### 🔥介绍
|
||||||
**官网**:https://pickmall.cn
|
**官网**:https://pickmall.cn
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
//填写订单的促销类型
|
//填写订单的促销类型
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除砍价商品
|
* 删除砍价商品
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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()));
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user