二次支付接口开发,bug修改

This commit is contained in:
jieyuu 2024-11-09 16:21:03 +08:00
parent 44fcc17624
commit 760dc505cc
6 changed files with 24 additions and 15 deletions

View File

@ -7,5 +7,5 @@ public class TimeConstant {
* 订单超时 毫秒 默认30分钟
*/
// todo 测试时将时间改为了5分钟 记得改回30分钟
public static final long ORDER_PAY_TIMEOUT_MILLS = 1000 * 60 * 30;
public static final long ORDER_PAY_TIMEOUT_MILLS = 1000 * 60 * 5;
}

View File

@ -16,6 +16,7 @@ import net.jieyuu.enums.ProductOrderPayTypeEnum;
import net.jieyuu.request.ConfirmOrderRequest;
import net.jieyuu.request.RepayOrderRequest;
import net.jieyuu.service.ProductOrderService;
import net.jieyuu.utils.CommonUtil;
import net.jieyuu.utils.JsonData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -90,6 +91,7 @@ public class ProductOrderController {
} else {
log.error("创建订单失败{}:", jsonData.toString());
CommonUtil.sendJsonMessage(response, jsonData);
}
}
@ -117,6 +119,7 @@ public class ProductOrderController {
} else {
log.error("重复支付订单失败{}:", jsonData.toString());
CommonUtil.sendJsonMessage(response, jsonData);
}
}

View File

@ -193,7 +193,6 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
productOrderDO.setHeadImg(loginUser.getHeadImg());
productOrderDO.setNickname(loginUser.getName());
productOrderDO.setOutTradeNo(orderOutTradeNo);
productOrderDO.setDel(0);
productOrderDO.setOrderType(ProductOrderTypeEnum.DAILY.name());
@ -205,6 +204,10 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
productOrderDO.setState(ProductOrderStateEnum.NEW.name());
productOrderDO.setPayType(ProductOrderPayTypeEnum.valueOf(orderRequest.getPayType()).name());
productOrderDO.setDel(0);
productOrderDO.setCreateTime(new Date());
productOrderDO.setUpdateTime(new Date());
// 收货地址
productOrderDO.setReceiverAddress(JSON.toJSONString(addressVO));
@ -393,7 +396,8 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
@Override
public boolean closeProductOrder(OrderMessage orderMessage) {
ProductOrderDO productOrderDO = productOrderMapper.selectOne(new QueryWrapper<ProductOrderDO>().eq("out_trade_no", orderMessage.getOutTradeNo()));
ProductOrderDO productOrderDO = productOrderMapper.selectOne(new QueryWrapper<ProductOrderDO>()
.eq("out_trade_no", orderMessage.getOutTradeNo()));
if (productOrderDO == null) {
log.warn("直接确认消息,订单不存在:{}", orderMessage);
@ -507,6 +511,8 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
public JsonData repay(RepayOrderRequest repayOrderRequest) {
LoginUser loginUser = LoginInterceptor.threadLocal.get();
// 还可以增加订单支付日志信息 比如新增一个数据库记录所有支付记录 todo
ProductOrderDO productOrderDO = productOrderMapper.selectOne(new QueryWrapper<ProductOrderDO>()
.eq("out_trade_no", repayOrderRequest.getOutTradeNo())
.eq("user_id", loginUser.getId()));
@ -531,8 +537,7 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
return JsonData.buildResult(BizCodeEnum.PAY_ORDER_PAY_TIMEOUT);
} else {
// 假如用户重新支付使用不同的支付方式比如使用微信支付这里可以考虑进行更新
// todo 可以更新订单支付参数 payType
// 假如用户重新支付使用不同的支付方式比如使用微信支付
if (!productOrderDO.getPayType().equals(repayOrderRequest.getPayType())) {
// 更新
UpdateWrapper<ProductOrderDO> updateWrapper = new UpdateWrapper<ProductOrderDO>()
@ -541,7 +546,6 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
productOrderMapper.update(null, updateWrapper);
}
long timeout = TimeConstant.ORDER_PAY_TIMEOUT_MILLS - orderLiveTime;
//创建支付
PayInfoVO payInfoVO = new PayInfoVO(productOrderDO.getOutTradeNo(),
@ -565,8 +569,5 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
}
}
}
// 还可以增加订单支付日志信息 比如新增一个数据库记录所有支付记录
}
}

View File

@ -61,7 +61,7 @@ mqconfig:
order_close_routing_key: order.close.routing.key
#消息过期时间,毫秒,测试改为15秒
ttl: 15000
ttl: 900000
# 支付宝配置
alipay:

View File

@ -101,10 +101,15 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, ProductDO> im
*/
@Override
public List<ProductVO> findProductByIdBatch(List<Long> productIdList) {
if(!productIdList.isEmpty()){
List<ProductDO> productDOList = productMapper.selectList(new QueryWrapper<ProductDO>().in("id", productIdList));
List<ProductVO> productVOList = productDOList.stream().map(obj -> beanProcess(obj)).collect(Collectors.toList());
return productVOList;
}
return null;
}
/**
* 锁定商品库存

View File

@ -61,5 +61,5 @@ mqconfig:
#消息过期进入释放队列的key
stock_release_routing_key: stock.release.routing.key
#消息过期时间,毫秒,测试改为15
ttl: 15000
#消息过期时间,毫秒,测试改为15分钟
ttl: 300000