第15天 支付一半
This commit is contained in:
parent
314fffde91
commit
2b3cfeb61c
Binary file not shown.
|
@ -61,9 +61,33 @@ public class OrderInfo extends BaseEntity {
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private List<OrderDerate> orderDerateList;
|
private List<OrderDerate> orderDerateList;
|
||||||
|
|
||||||
@TableField(exist = false)
|
|
||||||
private String orderStatusName;
|
// @TableField(exist = false)
|
||||||
@TableField(exist = false)
|
// private String orderStatusName;
|
||||||
private String payWayName;
|
// @TableField(exist = false)
|
||||||
|
// private String payWayName;
|
||||||
|
|
||||||
|
//更改这个实体类 我们转json的任何框架都是通过获取get方法去改的
|
||||||
|
//将get去掉获取属性名称 将get方法返回值作为属性值
|
||||||
|
public String getOrderStatusName() {
|
||||||
|
if("0901".equals(orderStatus)){
|
||||||
|
return "未支付";
|
||||||
|
} else if ("0902".equals(orderStatus)) {
|
||||||
|
return "已支付";
|
||||||
|
} else if ("0903".equals(orderStatus)) {
|
||||||
|
return "已取消";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public String getPayWayName() {
|
||||||
|
if ("1101".equals(payWay)) {
|
||||||
|
return "微信";
|
||||||
|
} else if ("1102".equals(payWay)) {
|
||||||
|
return "支付宝";
|
||||||
|
} else if ("1103".equals(payWay)) {
|
||||||
|
return "余额";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
|
@ -2,8 +2,11 @@ package com.atguigu.tingshu.account;
|
||||||
|
|
||||||
import com.atguigu.tingshu.account.impl.AccountDegradeFeignClient;
|
import com.atguigu.tingshu.account.impl.AccountDegradeFeignClient;
|
||||||
import com.atguigu.tingshu.common.result.Result;
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
|
import com.atguigu.tingshu.model.account.RechargeInfo;
|
||||||
import com.atguigu.tingshu.vo.account.AccountDeductVo;
|
import com.atguigu.tingshu.vo.account.AccountDeductVo;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
@ -24,4 +27,7 @@ public interface AccountFeignClient {
|
||||||
@PostMapping("/userAccount/checkAndDeduct")
|
@PostMapping("/userAccount/checkAndDeduct")
|
||||||
public Result checkAndDeduct(@RequestBody AccountDeductVo accountDeductVo);
|
public Result checkAndDeduct(@RequestBody AccountDeductVo accountDeductVo);
|
||||||
|
|
||||||
|
@GetMapping("/rechargeInfo/getRechargeInfo/{orderNo}")
|
||||||
|
public Result<RechargeInfo> getRechargeInfo(@PathVariable String orderNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.atguigu.tingshu.account.impl;
|
||||||
|
|
||||||
import com.atguigu.tingshu.account.AccountFeignClient;
|
import com.atguigu.tingshu.account.AccountFeignClient;
|
||||||
import com.atguigu.tingshu.common.result.Result;
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
|
import com.atguigu.tingshu.model.account.RechargeInfo;
|
||||||
import com.atguigu.tingshu.vo.account.AccountDeductVo;
|
import com.atguigu.tingshu.vo.account.AccountDeductVo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -16,4 +17,10 @@ public class AccountDegradeFeignClient implements AccountFeignClient {
|
||||||
log.error("[账户服务]checkAndDeduct服务调用失败");
|
log.error("[账户服务]checkAndDeduct服务调用失败");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<RechargeInfo> getRechargeInfo(String orderNo) {
|
||||||
|
log.error("[账户服务]getRechargeInfo服务调用失败");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -9,7 +9,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
Binary file not shown.
|
@ -1,7 +1,11 @@
|
||||||
package com.atguigu.tingshu.order.client;
|
package com.atguigu.tingshu.order.client;
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
import com.atguigu.tingshu.order.client.impl.OrderDegradeFeignClient;
|
import com.atguigu.tingshu.order.client.impl.OrderDegradeFeignClient;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -10,8 +14,10 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||||
*
|
*
|
||||||
* @author atguigu
|
* @author atguigu
|
||||||
*/
|
*/
|
||||||
@FeignClient(value = "service-order", fallback = OrderDegradeFeignClient.class)
|
@FeignClient(value = "service-order",path = "api/order", fallback = OrderDegradeFeignClient.class)
|
||||||
public interface OrderFeignClient {
|
public interface OrderFeignClient {
|
||||||
|
@GetMapping("/orderInfo/getOrderInfo/{orderNo}")
|
||||||
|
public Result<OrderInfo> getOrderInfo(@PathVariable String orderNo);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,19 @@
|
||||||
package com.atguigu.tingshu.order.client.impl;
|
package com.atguigu.tingshu.order.client.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
import com.atguigu.tingshu.order.client.OrderFeignClient;
|
import com.atguigu.tingshu.order.client.OrderFeignClient;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class OrderDegradeFeignClient implements OrderFeignClient {
|
public class OrderDegradeFeignClient implements OrderFeignClient {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<OrderInfo> getOrderInfo(String orderNo) {
|
||||||
|
log.error("[订单服务]提供远程调用方法getOrderInfo执行服务降级");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,8 +1,14 @@
|
||||||
package com.atguigu.tingshu.account.api;
|
package com.atguigu.tingshu.account.api;
|
||||||
|
|
||||||
import com.atguigu.tingshu.account.service.RechargeInfoService;
|
import com.atguigu.tingshu.account.service.RechargeInfoService;
|
||||||
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
|
import com.atguigu.tingshu.model.account.RechargeInfo;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@ -15,5 +21,21 @@ public class RechargeInfoApiController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RechargeInfoService rechargeInfoService;
|
private RechargeInfoService rechargeInfoService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据充值订单编号查询充值信息
|
||||||
|
* @param orderNo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Operation(summary = "根据订单编号查询充值信息")
|
||||||
|
@GetMapping("/rechargeInfo/getRechargeInfo/{orderNo}")
|
||||||
|
public Result<RechargeInfo> getRechargeInfo(@PathVariable String orderNo){
|
||||||
|
RechargeInfo rechargeInfo = rechargeInfoService.getOne(
|
||||||
|
new LambdaQueryWrapper<RechargeInfo>()
|
||||||
|
.eq(RechargeInfo::getOrderNo, orderNo)
|
||||||
|
);
|
||||||
|
return Result.ok(rechargeInfo);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
spring.application.name=service-canal
|
||||||
|
spring.profiles.active=dev
|
||||||
|
spring.main.allow-bean-definiton-overriding=true
|
||||||
|
spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848
|
||||||
|
spring.cloud.nacos.config.server-addr=192.168.200.6:8848
|
||||||
|
spring.cloud.nacos.config.prefix=${spring.application.name}
|
||||||
|
spring.cloud.nacos.config.file-extension=yaml
|
||||||
|
spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -3,16 +3,15 @@ package com.atguigu.tingshu.order.api;
|
||||||
import com.atguigu.tingshu.common.login.GuiGuLogin;
|
import com.atguigu.tingshu.common.login.GuiGuLogin;
|
||||||
import com.atguigu.tingshu.common.result.Result;
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
import com.atguigu.tingshu.common.util.AuthContextHolder;
|
import com.atguigu.tingshu.common.util.AuthContextHolder;
|
||||||
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
import com.atguigu.tingshu.order.service.OrderInfoService;
|
import com.atguigu.tingshu.order.service.OrderInfoService;
|
||||||
import com.atguigu.tingshu.vo.order.OrderInfoVo;
|
import com.atguigu.tingshu.vo.order.OrderInfoVo;
|
||||||
import com.atguigu.tingshu.vo.order.TradeVo;
|
import com.atguigu.tingshu.vo.order.TradeVo;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -48,6 +47,32 @@ public class OrderInfoApiController {
|
||||||
return Result.ok(result);
|
return Result.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单及订单明细+优惠列表
|
||||||
|
*
|
||||||
|
* @param orderNo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Operation(summary = "查询订单及订单明细+优惠列表")
|
||||||
|
@GetMapping("/orderInfo/getOrderInfo/{orderNo}")
|
||||||
|
public Result<OrderInfo> getOrderInfo(@PathVariable String orderNo) {
|
||||||
|
OrderInfo orderInfo = orderInfoService.getOrderInfo(orderNo);
|
||||||
|
return Result.ok(orderInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GuiGuLogin
|
||||||
|
@Operation(summary = "分页获取当前用户订单列表")
|
||||||
|
@GetMapping("/orderInfo/findUserPage/{page}/{limit}")
|
||||||
|
public Result<Page<OrderInfo>> findUserOrderPage(@PathVariable Long page, @PathVariable Long limit){
|
||||||
|
Page<OrderInfo> pageInfo =new Page<>(page,limit);
|
||||||
|
Long userId = AuthContextHolder.getUserId();
|
||||||
|
Page<OrderInfo> pageModel =orderInfoService.findUserOrderPage(pageInfo,userId);
|
||||||
|
return Result.ok(pageModel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.atguigu.tingshu.order.config;
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.common.rabbit.constant.MqConst;
|
||||||
|
import org.springframework.amqp.core.Binding;
|
||||||
|
import org.springframework.amqp.core.BindingBuilder;
|
||||||
|
import org.springframework.amqp.core.CustomExchange;
|
||||||
|
import org.springframework.amqp.core.Queue;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class CanelOrderMqConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Queue cancelQueue() {
|
||||||
|
// 第一个参数是创建的queue的名字,第二个参数是是否支持持久化
|
||||||
|
return new Queue(MqConst.QUEUE_CANCEL_ORDER, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public CustomExchange cancelExchange() {
|
||||||
|
Map<String, Object> args = new HashMap<String, Object>();
|
||||||
|
args.put("x-delayed-type", "direct");
|
||||||
|
return new CustomExchange(MqConst.EXCHANGE_CANCEL_ORDER, "x-delayed-message", true, false, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Binding bindingCancel() {
|
||||||
|
return BindingBuilder.bind(cancelQueue()).to(cancelExchange()).with(MqConst.ROUTING_CANCEL_ORDER).noargs();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.atguigu.tingshu.order.receiver;
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.common.rabbit.constant.MqConst;
|
||||||
|
import com.atguigu.tingshu.order.service.OrderInfoService;
|
||||||
|
import com.rabbitmq.client.Channel;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.amqp.core.Message;
|
||||||
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: atguigu
|
||||||
|
* @create: 2025-08-05 14:03
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class OrderReceiver {
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderInfoService orderInfoService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 延迟关单监听器
|
||||||
|
*
|
||||||
|
* @param orderId
|
||||||
|
*/
|
||||||
|
@SneakyThrows
|
||||||
|
@RabbitListener(queues = MqConst.QUEUE_CANCEL_ORDER)
|
||||||
|
public void cancelOrder(Long orderId, Channel channel, Message message) {
|
||||||
|
if (orderId != null) {
|
||||||
|
log.info("[订单服务]监听到延迟关单消息:{}", orderId);
|
||||||
|
orderInfoService.cancelOrder(orderId);
|
||||||
|
}
|
||||||
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.atguigu.tingshu.order.service;
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
|
|
||||||
|
public interface AccountPayBizService {
|
||||||
|
/**
|
||||||
|
* 处理账户支付业务逻辑
|
||||||
|
* @param orderInfo
|
||||||
|
*/
|
||||||
|
public void handlerAccountPay(OrderInfo orderInfo);
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package com.atguigu.tingshu.order.service;
|
||||||
import com.atguigu.tingshu.model.order.OrderInfo;
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
import com.atguigu.tingshu.vo.order.OrderInfoVo;
|
import com.atguigu.tingshu.vo.order.OrderInfoVo;
|
||||||
import com.atguigu.tingshu.vo.order.TradeVo;
|
import com.atguigu.tingshu.vo.order.TradeVo;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -15,4 +16,11 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
||||||
Map<String, String> submitOrder(OrderInfoVo orderInfoVo, Long userId);
|
Map<String, String> submitOrder(OrderInfoVo orderInfoVo, Long userId);
|
||||||
|
|
||||||
OrderInfo saveOrderInfo(OrderInfoVo orderInfoVo, Long userId);
|
OrderInfo saveOrderInfo(OrderInfoVo orderInfoVo, Long userId);
|
||||||
|
|
||||||
|
OrderInfo getOrderInfo(String orderNo);
|
||||||
|
|
||||||
|
Page<OrderInfo> findUserOrderPage(Page<OrderInfo> pageInfo, Long userId);
|
||||||
|
|
||||||
|
void cancelOrder(Long orderId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
package com.atguigu.tingshu.order.service.impl;
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.account.AccountFeignClient;
|
||||||
|
import com.atguigu.tingshu.common.constant.SystemConstant;
|
||||||
|
import com.atguigu.tingshu.common.execption.GuiguException;
|
||||||
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
|
import com.atguigu.tingshu.model.order.OrderDetail;
|
||||||
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
|
import com.atguigu.tingshu.order.mapper.OrderInfoMapper;
|
||||||
|
import com.atguigu.tingshu.order.service.AccountPayBizService;
|
||||||
|
import com.atguigu.tingshu.order.service.OrderDetailService;
|
||||||
|
import com.atguigu.tingshu.user.client.UserFeignClient;
|
||||||
|
import com.atguigu.tingshu.vo.account.AccountDeductVo;
|
||||||
|
import com.atguigu.tingshu.vo.user.UserPaidRecordVo;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import io.seata.spring.annotation.GlobalTransactional;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class AccountPayBizServiceImpl implements AccountPayBizService {
|
||||||
|
@Autowired
|
||||||
|
private AccountFeignClient accountFeignClient;
|
||||||
|
@Autowired
|
||||||
|
private OrderInfoMapper orderInfoMapper;
|
||||||
|
@Autowired
|
||||||
|
private OrderDetailService orderDetailService;
|
||||||
|
@Autowired
|
||||||
|
private UserFeignClient userFeignClient;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@GlobalTransactional(rollbackFor = Exception.class)
|
||||||
|
public void handlerAccountPay(OrderInfo orderInfo) {
|
||||||
|
//余额扣减
|
||||||
|
//4.1 远程调用账户服务扣减账户余额
|
||||||
|
AccountDeductVo accountDeductVo = new AccountDeductVo();
|
||||||
|
accountDeductVo.setAmount(orderInfo.getOrderAmount());
|
||||||
|
accountDeductVo.setOrderNo(orderInfo.getOrderNo());
|
||||||
|
accountDeductVo.setContent(orderInfo.getOrderTitle());
|
||||||
|
accountDeductVo.setUserId(orderInfo.getUserId());
|
||||||
|
|
||||||
|
|
||||||
|
Result result = accountFeignClient.checkAndDeduct(accountDeductVo);
|
||||||
|
//判断是否为扣减成功
|
||||||
|
if (result.getCode().intValue() != 200) {
|
||||||
|
throw new GuiguException(result.getCode(), result.getMessage());
|
||||||
|
}
|
||||||
|
//4.2 如果扣减余额成功,修改订单状态改为:已支付
|
||||||
|
orderInfo.setOrderStatus(SystemConstant.ORDER_STATUS_PAID);
|
||||||
|
orderInfoMapper.updateById(orderInfo);
|
||||||
|
|
||||||
|
//4.3 远程调用用户服务虚拟物品发货
|
||||||
|
//4.3.1 构建虚拟发货VO对象
|
||||||
|
UserPaidRecordVo userPaidRecordVo = new UserPaidRecordVo();
|
||||||
|
userPaidRecordVo.setOrderNo(orderInfo.getOrderNo());
|
||||||
|
userPaidRecordVo.setUserId(orderInfo.getUserId());
|
||||||
|
userPaidRecordVo.setItemType(orderInfo.getItemType());
|
||||||
|
//根据订单编号查询订单明细获取购买项目ID列表
|
||||||
|
List<OrderDetail> orderDetailList = orderDetailService.list(
|
||||||
|
new LambdaQueryWrapper<OrderDetail>()
|
||||||
|
.eq(OrderDetail::getOrderId, orderInfo.getId())
|
||||||
|
.select(OrderDetail::getItemId)
|
||||||
|
);
|
||||||
|
List<Long> itemIdList = orderDetailList.stream()
|
||||||
|
.map(OrderDetail::getItemId).collect(Collectors.toList());
|
||||||
|
userPaidRecordVo.setItemIdList(itemIdList);
|
||||||
|
//4.3.2 远程调用用户服务,发放用户权益
|
||||||
|
result = userFeignClient.savePaidRecord(userPaidRecordVo);
|
||||||
|
//4.3.3 判断远程调用结果业务状态码是否为200
|
||||||
|
if (result.getCode().intValue() != 200) {
|
||||||
|
throw new GuiguException(result.getCode(), result.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,25 +3,23 @@ package com.atguigu.tingshu.order.service.impl;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.atguigu.tingshu.account.AccountFeignClient;
|
import com.atguigu.tingshu.account.AccountFeignClient;
|
||||||
import com.atguigu.tingshu.album.AlbumFeignClient;
|
import com.atguigu.tingshu.album.AlbumFeignClient;
|
||||||
import com.atguigu.tingshu.common.constant.RedisConstant;
|
import com.atguigu.tingshu.common.constant.RedisConstant;
|
||||||
import com.atguigu.tingshu.common.constant.SystemConstant;
|
import com.atguigu.tingshu.common.constant.SystemConstant;
|
||||||
import com.atguigu.tingshu.common.execption.GuiguException;
|
import com.atguigu.tingshu.common.execption.GuiguException;
|
||||||
|
import com.atguigu.tingshu.common.rabbit.constant.MqConst;
|
||||||
|
import com.atguigu.tingshu.common.rabbit.service.RabbitService;
|
||||||
import com.atguigu.tingshu.common.result.Result;
|
import com.atguigu.tingshu.common.result.Result;
|
||||||
import com.atguigu.tingshu.common.util.AuthContextHolder;
|
|
||||||
import com.atguigu.tingshu.model.album.AlbumInfo;
|
|
||||||
import com.atguigu.tingshu.model.album.TrackInfo;
|
|
||||||
import com.atguigu.tingshu.model.order.OrderDerate;
|
import com.atguigu.tingshu.model.order.OrderDerate;
|
||||||
import com.atguigu.tingshu.model.order.OrderDetail;
|
import com.atguigu.tingshu.model.order.OrderDetail;
|
||||||
import com.atguigu.tingshu.model.order.OrderInfo;
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
import com.atguigu.tingshu.model.user.VipServiceConfig;
|
|
||||||
import com.atguigu.tingshu.order.helper.SignHelper;
|
import com.atguigu.tingshu.order.helper.SignHelper;
|
||||||
import com.atguigu.tingshu.order.mapper.OrderInfoMapper;
|
import com.atguigu.tingshu.order.mapper.OrderInfoMapper;
|
||||||
import com.atguigu.tingshu.order.pattern.TradeTypeStrategy;
|
import com.atguigu.tingshu.order.pattern.TradeTypeStrategy;
|
||||||
import com.atguigu.tingshu.order.pattern.factory.TradeTypeStrategyFactory;
|
import com.atguigu.tingshu.order.pattern.factory.TradeTypeStrategyFactory;
|
||||||
|
import com.atguigu.tingshu.order.service.AccountPayBizService;
|
||||||
import com.atguigu.tingshu.order.service.OrderDerateService;
|
import com.atguigu.tingshu.order.service.OrderDerateService;
|
||||||
import com.atguigu.tingshu.order.service.OrderDetailService;
|
import com.atguigu.tingshu.order.service.OrderDetailService;
|
||||||
import com.atguigu.tingshu.order.service.OrderInfoService;
|
import com.atguigu.tingshu.order.service.OrderInfoService;
|
||||||
|
@ -31,21 +29,20 @@ import com.atguigu.tingshu.vo.order.OrderDerateVo;
|
||||||
import com.atguigu.tingshu.vo.order.OrderDetailVo;
|
import com.atguigu.tingshu.vo.order.OrderDetailVo;
|
||||||
import com.atguigu.tingshu.vo.order.OrderInfoVo;
|
import com.atguigu.tingshu.vo.order.OrderInfoVo;
|
||||||
import com.atguigu.tingshu.vo.order.TradeVo;
|
import com.atguigu.tingshu.vo.order.TradeVo;
|
||||||
import com.atguigu.tingshu.vo.user.UserInfoVo;
|
|
||||||
import com.atguigu.tingshu.vo.user.UserPaidRecordVo;
|
import com.atguigu.tingshu.vo.user.UserPaidRecordVo;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import io.seata.spring.annotation.GlobalTransactional;
|
import io.seata.spring.annotation.GlobalTransactional;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@ -69,6 +66,12 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
private AccountFeignClient accountFeignClient;
|
private AccountFeignClient accountFeignClient;
|
||||||
@Autowired
|
@Autowired
|
||||||
private TradeTypeStrategyFactory tradeTypeStrategyFactory;
|
private TradeTypeStrategyFactory tradeTypeStrategyFactory;
|
||||||
|
@Autowired
|
||||||
|
private AccountPayBizService accountPayBizService;
|
||||||
|
@Value("${order.cancel}")
|
||||||
|
private int ttl;
|
||||||
|
@Autowired
|
||||||
|
private RabbitService rabbitService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -116,57 +119,21 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
OrderInfo orderInfo = this.saveOrderInfo(orderInfoVo, userId);
|
OrderInfo orderInfo = this.saveOrderInfo(orderInfoVo, userId);
|
||||||
//支付方式:1101-微信 1102-支付宝 1103-账户余额
|
//支付方式:1101-微信 1102-支付宝 1103-账户余额
|
||||||
String payWay = orderInfoVo.getPayWay();
|
String payWay = orderInfoVo.getPayWay();
|
||||||
//4.TODO 判断支付方式:余额扣减核心业务
|
//4. 判断支付方式:余额扣减核心业务
|
||||||
if(SystemConstant.ORDER_PAY_ACCOUNT.equals(payWay)){
|
if (SystemConstant.ORDER_PAY_ACCOUNT.equals(payWay)) {
|
||||||
//余额扣减
|
//进行提取 其他两个功能用分布式事务@GlobalTransactional去修饰
|
||||||
//4.1 远程调用账户服务扣减账户余额
|
accountPayBizService.handlerAccountPay(orderInfo);
|
||||||
AccountDeductVo accountDeductVo = new AccountDeductVo();
|
|
||||||
accountDeductVo.setAmount(orderInfo.getOrderAmount());
|
|
||||||
accountDeductVo.setOrderNo(orderInfo.getOrderNo());
|
|
||||||
accountDeductVo.setContent(orderInfo.getOrderTitle());
|
|
||||||
accountDeductVo.setUserId(orderInfo.getUserId());
|
|
||||||
|
|
||||||
|
|
||||||
Result result = accountFeignClient.checkAndDeduct(accountDeductVo);
|
|
||||||
//判断是否为扣减成功
|
|
||||||
if(result.getCode().intValue()!=200){
|
|
||||||
throw new GuiguException(result.getCode(), result.getMessage());
|
|
||||||
}
|
|
||||||
//4.2 如果扣减余额成功,修改订单状态改为:已支付
|
|
||||||
orderInfo.setOrderStatus(SystemConstant.ORDER_STATUS_PAID);
|
|
||||||
orderInfoMapper.updateById(orderInfo);
|
|
||||||
|
|
||||||
//4.3 远程调用用户服务虚拟物品发货
|
|
||||||
//4.3.1 构建虚拟发货VO对象
|
|
||||||
UserPaidRecordVo userPaidRecordVo =new UserPaidRecordVo();
|
|
||||||
userPaidRecordVo.setOrderNo(orderInfo.getOrderNo());
|
|
||||||
userPaidRecordVo.setUserId(orderInfo.getUserId());
|
|
||||||
userPaidRecordVo.setItemType(orderInfo.getItemType());
|
|
||||||
//根据订单编号查询订单明细获取购买项目ID列表
|
|
||||||
List<OrderDetail> orderDetailList = orderDetailService.list(
|
|
||||||
new LambdaQueryWrapper<OrderDetail>()
|
|
||||||
.eq(OrderDetail::getOrderId, orderInfo.getId())
|
|
||||||
.select(OrderDetail::getItemId)
|
|
||||||
);
|
|
||||||
List<Long> itemIdList = orderDetailList.stream()
|
|
||||||
.map(OrderDetail::getItemId).collect(Collectors.toList());
|
|
||||||
userPaidRecordVo.setItemIdList(itemIdList);
|
|
||||||
//4.3.2 远程调用用户服务,发放用户权益
|
|
||||||
result = userFeignClient.savePaidRecord(userPaidRecordVo);
|
|
||||||
//4.3.3 判断远程调用结果业务状态码是否为200
|
|
||||||
if (result.getCode().intValue() != 200) {
|
|
||||||
throw new GuiguException(result.getCode(), result.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//5.TODO 判断支付方式:微信
|
//5.TODO 判断支付方式:微信
|
||||||
//else if(SystemConstant.ORDER_PAY_WAY_WEIXIN.equals(payWay)){
|
if(SystemConstant.ORDER_PAY_WAY_WEIXIN.equals(payWay)){
|
||||||
|
//发送一个延时关闭的延时插件
|
||||||
|
rabbitService.sendDealyMessage(MqConst.EXCHANGE_CANCEL_ORDER,
|
||||||
|
MqConst.ROUTING_CANCEL_ORDER, orderInfo.getId(), ttl);
|
||||||
|
|
||||||
//}
|
}
|
||||||
//6.响应结果
|
//6.响应结果
|
||||||
return Map.of("orderNo", orderInfo.getOrderNo());
|
return Map.of("orderNo", orderInfo.getOrderNo());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -215,4 +182,73 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
return orderInfo;
|
return orderInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OrderInfo getOrderInfo(String orderNo) {
|
||||||
|
//1.根据订单编号查询订单信息
|
||||||
|
OrderInfo orderInfo = orderInfoMapper.selectOne(
|
||||||
|
new LambdaQueryWrapper<OrderInfo>()
|
||||||
|
.eq(OrderInfo::getOrderNo, orderNo)
|
||||||
|
);
|
||||||
|
Long orderInfoId = orderInfo.getId();
|
||||||
|
|
||||||
|
//2.根据订单ID查询订单明细
|
||||||
|
List<OrderDetail> list = orderDetailService.list(
|
||||||
|
new LambdaQueryWrapper<OrderDetail>()
|
||||||
|
.eq(OrderDetail::getOrderId, orderInfoId)
|
||||||
|
);
|
||||||
|
orderInfo.setOrderDetailList(list);
|
||||||
|
//3.根据订单ID查询订单减免列表
|
||||||
|
List<OrderDerate> orderDerateList = orderDerateService.list(
|
||||||
|
new LambdaQueryWrapper<OrderDerate>()
|
||||||
|
.eq(OrderDerate::getOrderId, orderInfoId)
|
||||||
|
);
|
||||||
|
orderInfo.setOrderDerateList(orderDerateList);
|
||||||
|
return orderInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<OrderInfo> findUserOrderPage(Page<OrderInfo> pageInfo, Long userId) {
|
||||||
|
//2.TODO 方式二:单独分页查询订单,在根据订单ID集合查询订单明细,封装订单明细列表
|
||||||
|
//先查出来订单的分页对象
|
||||||
|
Page<OrderInfo> orderInfoPage = orderInfoMapper.selectPage(pageInfo,
|
||||||
|
new LambdaQueryWrapper<OrderInfo>()
|
||||||
|
.eq(OrderInfo::getId, userId)
|
||||||
|
.select(OrderInfo::getId, OrderInfo::getOrderNo, OrderInfo::getOrderStatus,
|
||||||
|
OrderInfo::getPayWay, OrderInfo::getOriginalAmount, OrderInfo::getOrderAmount,
|
||||||
|
OrderInfo::getDerateAmount)
|
||||||
|
.orderByDesc(OrderInfo::getId));
|
||||||
|
|
||||||
|
//根据分页对象查出订单的id,将其变成一个list
|
||||||
|
List<Long> orderIdList = orderInfoPage.getRecords().stream().map(OrderInfo::getId).collect(Collectors.toList());
|
||||||
|
//4.查询所有订单明细列表
|
||||||
|
List<OrderDetail> orderDetailList = orderDetailService.list(
|
||||||
|
new LambdaQueryWrapper<OrderDetail>()
|
||||||
|
.in(OrderDetail::getOrderId, orderIdList)
|
||||||
|
.select(OrderDetail::getOrderId, OrderDetail::getItemId, OrderDetail::getItemName,
|
||||||
|
OrderDetail::getItemPrice, OrderDetail::getItemUrl)
|
||||||
|
);
|
||||||
|
//将所有订单明细表作为value存入一个map中,key为订单的id
|
||||||
|
Map<Long, List<OrderDetail>> orderDetailListMap = orderDetailList.stream().collect(Collectors.groupingBy(OrderDetail::getOrderId));
|
||||||
|
//遍历 将其都改成订单的明细列表
|
||||||
|
for (OrderInfo record : orderInfoPage.getRecords()) {
|
||||||
|
record.setOrderDetailList(orderDetailListMap.get(record.getId()));
|
||||||
|
}
|
||||||
|
return orderInfoPage;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//关单 如果长时间没有支付的话我们就将订单的状态由未支付改为已取消
|
||||||
|
@Override
|
||||||
|
public void cancelOrder(Long orderId) {
|
||||||
|
OrderInfo orderInfo = orderInfoMapper.selectById(orderId);
|
||||||
|
String orderStatus = orderInfo.getOrderStatus();
|
||||||
|
if(SystemConstant.ORDER_STATUS_UNPAID.equals(orderStatus)){
|
||||||
|
orderInfo.setOrderStatus(SystemConstant.ORDER_STATUS_CANCEL);
|
||||||
|
orderInfoMapper.updateById(orderInfo);
|
||||||
|
//TODO 关闭第三方支付平台(微信支付)支付订单
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -4,5 +4,13 @@ import com.atguigu.tingshu.model.payment.PaymentInfo;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
public interface PaymentInfoService extends IService<PaymentInfo> {
|
public interface PaymentInfoService extends IService<PaymentInfo> {
|
||||||
|
/**
|
||||||
|
* 保存本地交易记录
|
||||||
|
*
|
||||||
|
* @param paymentType:支付类型 1301-订单 1302-充值
|
||||||
|
* @param orderNo: 订单编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public PaymentInfo savePaymentInfo(String paymentType, String orderNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,84 @@
|
||||||
package com.atguigu.tingshu.payment.service.impl;
|
package com.atguigu.tingshu.payment.service.impl;
|
||||||
|
|
||||||
|
import com.atguigu.tingshu.account.AccountFeignClient;
|
||||||
|
import com.atguigu.tingshu.common.constant.SystemConstant;
|
||||||
|
import com.atguigu.tingshu.model.account.RechargeInfo;
|
||||||
|
import com.atguigu.tingshu.model.order.OrderInfo;
|
||||||
import com.atguigu.tingshu.model.payment.PaymentInfo;
|
import com.atguigu.tingshu.model.payment.PaymentInfo;
|
||||||
|
import com.atguigu.tingshu.order.client.OrderFeignClient;
|
||||||
import com.atguigu.tingshu.payment.mapper.PaymentInfoMapper;
|
import com.atguigu.tingshu.payment.mapper.PaymentInfoMapper;
|
||||||
import com.atguigu.tingshu.payment.service.PaymentInfoService;
|
import com.atguigu.tingshu.payment.service.PaymentInfoService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@SuppressWarnings({"all"})
|
@SuppressWarnings("all")
|
||||||
public class PaymentInfoServiceImpl extends ServiceImpl<PaymentInfoMapper, PaymentInfo> implements PaymentInfoService {
|
public class PaymentInfoServiceImpl extends ServiceImpl<PaymentInfoMapper, PaymentInfo> implements PaymentInfoService {
|
||||||
|
@Autowired
|
||||||
|
private OrderFeignClient orderFeignClient;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AccountFeignClient accountFeignClient;
|
||||||
|
@Autowired
|
||||||
|
private PaymentInfoMapper paymentInfoMapper;
|
||||||
|
//保存本地的用户信息
|
||||||
|
@Override
|
||||||
|
public PaymentInfo savePaymentInfo(String paymentType, String orderNo) {
|
||||||
|
//根据订单id去获取订单的支付信息
|
||||||
|
PaymentInfo paymentInfo = paymentInfoMapper.selectOne(
|
||||||
|
new LambdaQueryWrapper<PaymentInfo>()
|
||||||
|
.eq(PaymentInfo::getOrderNo, orderNo)
|
||||||
|
);
|
||||||
|
if (paymentInfo != null) {
|
||||||
|
return paymentInfo;
|
||||||
|
}
|
||||||
|
//2.如果不存在,则构建本地交易记录对象
|
||||||
|
paymentInfo = new PaymentInfo();
|
||||||
|
//2.1 交易状态:1401-未支付 1402-已支付
|
||||||
|
paymentInfo.setPaymentStatus(SystemConstant.PAYMENT_STATUS_UNPAID);
|
||||||
|
//2.2 交易编号(微信或支付)
|
||||||
|
paymentInfo.setPayWay(SystemConstant.ORDER_PAY_WAY_WEIXIN);
|
||||||
|
//2.3 支付类型:1301-订单 1302-充值
|
||||||
|
paymentInfo.setPaymentType(paymentType);
|
||||||
|
//2.4 订单编号
|
||||||
|
paymentInfo.setOrderNo(orderNo);
|
||||||
|
//处理支付类型为 订单
|
||||||
|
if (SystemConstant.PAYMENT_TYPE_ORDER.equals(paymentType)){
|
||||||
|
//远程调用订单服务获取订单信息,封装用户ID,交易金额,交易内容
|
||||||
|
OrderInfo orderInfo = orderFeignClient.getOrderInfo(orderNo).getData();
|
||||||
|
String orderStatus = orderInfo.getOrderStatus();
|
||||||
|
if (!SystemConstant.ORDER_STATUS_UNPAID.equals(orderStatus)) {
|
||||||
|
throw new RuntimeException("订单状态有误!");
|
||||||
|
}
|
||||||
|
//2.5 用户ID
|
||||||
|
paymentInfo.setUserId(orderInfo.getUserId());
|
||||||
|
//2.6 交易金额
|
||||||
|
paymentInfo.setAmount(orderInfo.getOrderAmount());
|
||||||
|
//2.7 交易内容
|
||||||
|
paymentInfo.setContent(orderInfo.getOrderTitle());
|
||||||
|
|
||||||
|
}
|
||||||
|
//处理支付类型为充值
|
||||||
|
if (SystemConstant.PAYMENT_TYPE_RECHARGE.equals(paymentType)) {
|
||||||
|
//远程调用账户服务获取充值信息,封装用户ID,交易金额,交易内容
|
||||||
|
RechargeInfo rechargeInfo = accountFeignClient.getRechargeInfo(orderNo).getData();
|
||||||
|
String rechargeStatus = rechargeInfo.getRechargeStatus();
|
||||||
|
if (!SystemConstant.ORDER_STATUS_UNPAID.equals(rechargeStatus)) {
|
||||||
|
throw new RuntimeException("充值状态有误!");
|
||||||
|
}
|
||||||
|
//2.5 用户ID
|
||||||
|
paymentInfo.setUserId(rechargeInfo.getUserId());
|
||||||
|
//2.6 交易金额
|
||||||
|
paymentInfo.setAmount(rechargeInfo.getRechargeAmount());
|
||||||
|
//2.7 交易内容
|
||||||
|
paymentInfo.setContent("充值:" + rechargeInfo.getRechargeAmount());
|
||||||
|
}
|
||||||
|
paymentInfoMapper.insert(paymentInfo);
|
||||||
|
return paymentInfo;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue