1. 增加 XXL-Job starter
2. 迁移 pay 服务的 Job 逻辑
This commit is contained in:
@@ -38,6 +38,17 @@ public interface TradeOrderRpc {
|
||||
*/
|
||||
CommonResult<PageResult<TradeOrderRespDTO>> pageTradeOrder(TradeOrderPageReqDTO pageDTO);
|
||||
|
||||
// TODO 芋艿:需要重构成入参是 DTO,方便后续升级;返回是 CommonResult,用于返回失败的原因
|
||||
|
||||
/**
|
||||
* 更新交易订单支付成功
|
||||
*
|
||||
* 目前用于对接 pay-service 支付服务,回调该交易订单在三方支付平台,支付成功
|
||||
*
|
||||
* @param tradeOrderId 交易订单编号
|
||||
* @param payAmount 支付金额
|
||||
* @return 成功
|
||||
*/
|
||||
CommonResult<Boolean> updateTradeOrderPaySuccess(String tradeOrderId, Integer payAmount);
|
||||
|
||||
}
|
||||
|
||||
@@ -20,4 +20,9 @@ public interface TradeOrderItemMapper extends BaseMapper<TradeOrderItemDO> {
|
||||
return selectList(new QueryWrapper<TradeOrderItemDO>().in("order_id", orderIds));
|
||||
}
|
||||
|
||||
default int updateListByOrderId(TradeOrderItemDO update, Integer orderId, Integer whereStatus) {
|
||||
return update(update, new QueryWrapper<TradeOrderItemDO>().eq("order_id", orderId)
|
||||
.eq("status", whereStatus));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
|
||||
import cn.iocoder.mall.mybatis.core.util.PageUtil;
|
||||
import cn.iocoder.mall.tradeservice.dal.mysql.dataobject.order.TradeOrderDO;
|
||||
import cn.iocoder.mall.tradeservice.rpc.order.dto.TradeOrderPageReqDTO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@@ -17,4 +18,9 @@ public interface TradeOrderMapper extends BaseMapper<TradeOrderDO> {
|
||||
.eqIfPresent("status", pageReqDTO.getOrderStatus()));
|
||||
}
|
||||
|
||||
default int update(TradeOrderDO update, Integer whereOrderStatus) {
|
||||
return update(update, new QueryWrapper<TradeOrderDO>()
|
||||
.eq("id", update.getId()).eq("order_status", whereOrderStatus));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,4 +37,10 @@ public class TradeOrderRpcImpl implements TradeOrderRpc {
|
||||
return success(tradeOrderService.pageTradeOrder(pageDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateTradeOrderPaySuccess(String tradeOrderId, Integer payAmount) {
|
||||
tradeOrderService.updateTradeOrderPaySuccess(Integer.valueOf(tradeOrderId), payAmount);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,4 +37,12 @@ public interface TradeOrderService {
|
||||
*/
|
||||
PageResult<TradeOrderRespDTO> pageTradeOrder(TradeOrderPageReqDTO pageReqDTO);
|
||||
|
||||
/**
|
||||
* 更新交易订单支付成功
|
||||
*
|
||||
* @param tradeOrderId 交易订单编号
|
||||
* @param payAmount 支付金额
|
||||
*/
|
||||
void updateTradeOrderPaySuccess(Integer tradeOrderId, Integer payAmount);
|
||||
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.common.framework.util.CollectionUtils.convertSet;
|
||||
import static cn.iocoder.mall.tradeservice.enums.OrderErrorCodeConstants.ORDER_GET_GOODS_INFO_INCORRECT;
|
||||
import static cn.iocoder.mall.tradeservice.enums.OrderErrorCodeConstants.*;
|
||||
import static cn.iocoder.mall.userservice.enums.UserErrorCodeConstants.USER_ADDRESS_NOT_FOUND;
|
||||
|
||||
/**
|
||||
@@ -240,4 +240,40 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateTradeOrderPaySuccess(Integer tradeOrderId, Integer payAmount) {
|
||||
// if (true) {
|
||||
// throw new IllegalArgumentException("测试失败的情况");
|
||||
// }
|
||||
// 校验交易订单,是否可以
|
||||
TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(tradeOrderId);
|
||||
if (tradeOrderDO == null) { // 订单不存在
|
||||
throw ServiceExceptionUtil.exception(ORDER_NOT_EXISTENT);
|
||||
}
|
||||
if (!tradeOrderDO.getOrderStatus().equals(TradeOrderStatusEnum.WAITING_PAYMENT.getValue())) { // 状态不处于等待支付
|
||||
throw ServiceExceptionUtil.exception(ORDER_STATUS_NOT_WAITING_PAYMENT);
|
||||
}
|
||||
if (!tradeOrderDO.getPresentPrice().equals(payAmount)) { // 支付金额不正确
|
||||
throw ServiceExceptionUtil.exception(ORDER_PAY_AMOUNT_ERROR);
|
||||
}
|
||||
|
||||
// 更新 TradeOrderDO 状态为已支付,等待发货
|
||||
TradeOrderDO updateOrderObj = new TradeOrderDO().setId(tradeOrderId)
|
||||
.setOrderStatus(TradeOrderStatusEnum.WAIT_SHIPMENT.getValue())
|
||||
.setPayPrice(payAmount)
|
||||
.setPayTime(new Date());
|
||||
int updateCount = tradeOrderMapper.update(updateOrderObj, TradeOrderStatusEnum.WAITING_PAYMENT.getValue());
|
||||
if (updateCount <= 0) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_STATUS_NOT_WAITING_PAYMENT);
|
||||
}
|
||||
|
||||
// 更新 TradeOrderItemDO 状态为已支付,等待发货
|
||||
TradeOrderItemDO updateOrderItemObj = new TradeOrderItemDO()
|
||||
.setStatus(TradeOrderStatusEnum.WAIT_SHIPMENT.getValue());
|
||||
tradeOrderItemMapper.updateListByOrderId(updateOrderItemObj, tradeOrderId,
|
||||
TradeOrderStatusEnum.WAITING_PAYMENT.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
# 数据源配置项
|
||||
datasource:
|
||||
url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_trade?useSSL=false&useUnicode=true&characterEncoding=UTF-8
|
||||
url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_trade?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: 3WLiVUBEwTbvAfsh
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
# 数据源配置项
|
||||
datasource:
|
||||
url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_trade?useSSL=false&useUnicode=true&characterEncoding=UTF-8
|
||||
url: jdbc:mysql://400-infra.server.iocoder.cn:3306/mall_trade?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: 3WLiVUBEwTbvAfsh
|
||||
@@ -25,3 +25,8 @@ dubbo:
|
||||
# Dubbo 服务提供者的配置
|
||||
provider:
|
||||
tag: ${DUBBO_TAG} # Dubbo 路由分组
|
||||
|
||||
# MyBatis Plus 配置
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 本地开发环境下,多打印 SQL 到控制台
|
||||
|
||||
Reference in New Issue
Block a user