1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| package xyz.shi.shop.app.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import xyz.shi.shop.app.popj.BuyParams; import xyz.shi.shop.app.service.BuyService; import xyz.shi.shop.common.Result; import xyz.shi.shop.common.goods.GoodsBO; import xyz.shi.shop.common.user.UserBO; import xyz.shi.shop.order.pojo.Order;
import java.math.BigDecimal; import java.util.Map;
@Service public class BuyServiceImpl implements BuyService { @Autowired private RestTemplate restTemplate;
@Override public Result submitOrder(BuyParams buyParams) { String userResult = restTemplate.getForObject("http://localhost:8001/user/findUser/" + buyParams.getUserId(), String.class); Result<UserBO> userBOResult = JSON.parseObject(userResult,new TypeReference<Result<UserBO>>(){}); if (userBOResult == null || !userBOResult.isSuccess() || userBOResult.getData() == null){ return Result.fail(10001,"用户不存在"); } UserBO userBO = userBOResult.getData();
String goodsResult = restTemplate.getForObject("http://localhost:8002/goods/findGoods/" + buyParams.getGoodsId(), String.class); Result<GoodsBO> goodsBOResult = JSON.parseObject(goodsResult,new TypeReference<Result<GoodsBO>>(){});
if (goodsBOResult == null || !goodsBOResult.isSuccess() || goodsBOResult.getData() == null){ return Result.fail(10002,"商品不存在"); } GoodsBO goodsBO = (GoodsBO) goodsBOResult.getData(); Integer goodsStock = goodsBO.getGoodsStock(); if (goodsStock < 0){ return Result.fail(10003,"商品库存不足"); } BigDecimal goodsPrice = goodsBO.getGoodsPrice(); BigDecimal account = userBO.getAccount(); if (account.compareTo(goodsPrice) < 0){ return Result.fail(10004,"余额不足"); } Order orderParams = new Order(); orderParams.setUserId(userBO.getId()); orderParams.setGoodsId(goodsBO.getId()); orderParams.setOrderPrice(goodsBO.getGoodsPrice()); String orderResult = restTemplate.postForObject("http://localhost:8003/order/createOrder", orderParams, String.class); Result<String> orderResultString = JSON.parseObject(orderResult,new TypeReference<Result<String>>(){}); if (orderResultString == null || !orderResultString.isSuccess()){ return Result.fail(10005,"下单失败"); } String orderId = orderResultString.getData();
return Result.success(orderId); } }
|