package cn.itcast.order.service.impl;
import cn.itcast.order.client.AccountClient;
import cn.itcast.order.client.StorageClient;
import cn.itcast.order.entity.Order;
import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.service.OrderService;
import feign.FeignException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author 虎哥
*/
@Slf4j
@Service
public class OrderServiceImpl implements OrderService {
private final AccountClient accountClient;
private final StorageClient storageClient;
private final OrderMapper orderMapper;
public OrderServiceImpl(AccountClient accountClient, StorageClient storageClient, OrderMapper orderMapper) {
this.accountClient = accountClient;
this.storageClient = storageClient;
this.orderMapper = orderMapper;
}
@Override
@Transactional
public Long create(Order order) {
// 创建订单
orderMapper.insert(order);
try {
// 扣用户余额
accountClient.deduct(order.getUserId(), order.getMoney());
// 扣库存
storageClient.deduct(order.getCommodityCode(), order.getCount());
} catch (FeignException e) {
log.error("下单失败,原因:{}", e.contentUTF8(), e);
throw new RuntimeException(e.contentUTF8(), e);
}
return order.getId();
}
}
分布式事务资料提供的微服务
需积分: 0 86 浏览量
2023-08-29
19:50:46
上传
评论
收藏 24KB ZIP 举报
厚积邦邦
- 粉丝: 16
- 资源: 4
最新资源
- 常用工具配置docker,elasticsearch,minio,nfs,nginx,tippercane,vsftp
- 基于IIC接口E2PROM(AT24C64)芯片FPGA读写VERILOG 设计源码+仿真激励文件.zip
- 基于FPGA深度学习的Block 模块方案实战,适合FPGA初学者
- 20225T9050袁凤(1).py
- Rsa算法详解.docx
- Youren Shang InClassQuiz.ipynb
- code-qat.zip
- usb-serial-for-android
- drools决策表示例Excel文件
- AD5724芯片FPGA Verilog驱动源码+4通道12bit位宽的DAC芯片AD5724技术手册.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈