JAVA全系列 教程
3762个小节阅读:7088.6k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
接下来我们修改商品服务模块代码,在修改商品后发送消息同步修改购物车数据;在下架商品后发送消息同步删除购物车数据:
在RocketMQ中创建主题del_cart_queue
和sync_cart_queue
修改商品服务实现类中的修改商品、上下架商品方法:
xxxxxxxxxx
@DubboService
public class GoodsServiceImpl implements GoodsService {
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private GoodsImageMapper goodsImageMapper;
@Autowired
private RocketMQTemplate rocketMQTemplate; // RocketMQ工具类
// 同步商品到ES主题
private final String SYNC_GOOD_QUEUE = "sync_goods_queue";
// 删除商品到ES主题
private final String DEL_GOOD_QUEUE = "del_goods_queue";
// 同步商品到购物车主题
private final String SYNC_CART_QUEUE = "sync_cart_queue";
// 删除商品到购物车主题
private final String DEL_CART_QUEUE = "del_cart_queue";
@Override
public void update(Goods goods) {
// 删除旧图片数据
Long goodsId = goods.getId(); // 获取商品主键
QueryWrapper<GoodsImage> queryWrapper = new QueryWrapper();
queryWrapper.eq("goodsId",goodsId);
goodsImageMapper.delete(queryWrapper);
// 删除旧规格数据
goodsMapper.deleteGoodsSpecificationOption(goodsId);
// 修改商品数据
goodsMapper.updateById(goods);
// 插入图片数据
List<GoodsImage> images = goods.getImages(); // 商品图片集合
for (GoodsImage image : images) {
image.setGoodsId(goodsId); // 给图片设置商品id
goodsImageMapper.insert(image); // 插入图片
}
// 插入商品_规格项数据
// 1.获取规格
List<Specification> specifications = goods.getSpecifications();
// 2.获取规格项
List<SpecificationOption> options = new ArrayList();
// 遍历规格,获取规格中的所有规格项
for (Specification specification : specifications) {
options.addAll(specification.getSpecificationOptions());
}
// 遍历规格项,插入商品_规格项数据
for (SpecificationOption option : options) {
goodsMapper.addGoodsSpecificationOption(goodsId,option.getId());
}
// 将商品数据同步到ES中
GoodsDesc goodsDesc = findDesc(goodsId);
rocketMQTemplate.syncSend(SYNC_GOOD_QUEUE,goodsDesc);
// 将商品数据同步到购物车中
CartGoods cartGoods = new CartGoods();
cartGoods.setGoodId(goods.getId());
cartGoods.setGoodsName(goods.getGoodsName());
cartGoods.setHeaderPic(goods.getHeaderPic());
cartGoods.setPrice(goods.getPrice());
rocketMQTemplate.syncSend(SYNC_CART_QUEUE,cartGoods);
}
@Override
public void putAway(Long id, Boolean isMarketable) {
goodsMapper.putAway(id,isMarketable);
// 上架时数据同步到ES,下架时删除ES数据
if (isMarketable){
// 将商品数据同步到ES中
GoodsDesc goodsDesc = findDesc(id);
rocketMQTemplate.syncSend(SYNC_GOOD_QUEUE,goodsDesc);
}else {
// 删除商品数据同步到ES中
rocketMQTemplate.syncSend(DEL_GOOD_QUEUE,id);
// 删除商品数据同步到购物车中
rocketMQTemplate.syncSend(DEL_CART_QUEUE,id);
}
}
}