1.下单的时候,调用订单微服务系统的下单方法,首先,先给订单实体赋值,然后在向MQ发送消息,接收到MQ返回来的消息后,保存订单,在生成微信或支付宝的签名字符串
2.下单(购买)接口
@PostMapping("/payGoods")
public Result payGoods(@RequestBody OrderSGoods orderSGoods, HttpServletRequest request) throws ParserConfigurationException, IOException, SAXException {
//得到用户id
Result result = jwtUtil.getUserId() ;
if(!result.isFlag()){
return result ;
}
//用户id
String userId = (String)result.getData() ;
System.out.println(orderSGoods);
//判断参数是否为空
if(orderSGoods==null){
return ResultUtil.error(StatusCode.ERROR,"对象不能为空") ;
}
if(StringUtils.isEmpty(orderSGoods.getArea())|| StringUtils.isEmpty(orderSGoods.getCity())
|| StringUtils.isEmpty(orderSGoods.getDetail())|| StringUtils.isEmpty(orderSGoods.getMobile())
|| StringUtils.isEmpty(orderSGoods.getProvince())|| StringUtils.isEmpty(orderSGoods.getStreet())
|| StringUtils.isEmpty(orderSGoods.getUserName())||orderSGoods.getOrderShopModels().size()<1
||orderSGoods.getTotalNum()<1||orderSGoods.getTotalPrice()<1|| StringUtils.isEmpty(orderSGoods.getChannel())){
return ResultUtil.error(StatusCode.ERROR,"参数不能为空") ;
}
//TODO 判断库存是否充足,从缓存中得库存
/****************赋值****************/
Date date = new Date() ;
//订单商家表
List<OrderShopModel> orderShops = orderSGoods.getOrderShopModels() ;
//订单个数,前期只有一个订单
int len = orderShops.size() ;
List<OrderSave> orderSaves = new ArrayList<>();
//TODO 订单总金额
Double money = orderSGoods.getTotalPrice(); ;
//订单编号
String orderNo = Long.toString(idWorker.nextId())+"0";
for(int i =0;i<len;i++){
//订单id
String id = Long.toString(idWorker.nextId());
//订单表
Order order = new Order() ;
order.setState(OrderPayConstant.STATE_WAIT_PAY);
order.setUserId(userId);
order.setStateDes("待付款");
order.setGenTime(date);
order.setId(id);
order.setTotalNum(orderSGoods.getTotalNum());
order.setTotalPrice(orderSGoods.getTotalPrice());
order.setOrderNo(orderNo);
order.setUserName(orderSGoods.getUserName());
order.setOrderDesc("购买商品");
order.setChannel(orderSGoods.getChannel());
order.setType(OrderPayConstant.TYPE_ORDER_BUY);
//订单商家表
OrderShopModel orderShopModel = orderShops.get(0) ;
OrderShop orderShop = new OrderShop();
orderShop.setGenTime(date);
orderShop.setId(Long.toString(idWorker.nextId()));
orderShop.setOrderId(id);
orderShop.setPostFee(orderShopModel.getPostFee());
if(StringUtils.isNotEmpty(orderShopModel.getRemark())){
orderShop.setRemark(orderShopModel.getRemark());