新增交易订单

This commit is contained in:
khy 2024-10-25 16:14:01 +08:00
parent 6beabe3478
commit f8de72bc6a
7 changed files with 52 additions and 5 deletions

View File

@ -109,4 +109,6 @@ public class PaidMemberUserPageReqVO extends PageParam {
@Schema(description = "会员类型")
private String payMemberType;
@Schema(description = "商户订单编号")
private String merchantOrderId;
}

View File

@ -127,4 +127,7 @@ public class PaidMemberUserRespVO {
@Schema(description = "会员类型")
private String payMemberType;
@Schema(description = "商户订单编号")
private String merchantOrderId;
}

View File

@ -106,4 +106,7 @@ public class PaidMemberUserSaveReqVO {
@Schema(description = "会员类型", requiredMode = Schema.RequiredMode.REQUIRED)
private String payMemberType;
@Schema(description = "商户订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String merchantOrderId;
}

View File

@ -156,5 +156,12 @@ public class PaidMemberUserDO extends TenantBaseDO {
*/
private String payMemberType;
/**
* 商户订单编号
*
* 例如说内部系统 A 的订单号需要保证每个 PayAppDO 唯一
*/
private String merchantOrderId;
}

View File

@ -92,4 +92,5 @@ public interface PaidMemberUserService {
*/
public Long buildTradeOrder(PaidMemberUserDO updateReqVO);
void updateTradeOrderId(Long merchantOrderId, Long payOrderId);
}

View File

@ -1,9 +1,12 @@
package cn.iocoder.yudao.module.member.service.user;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.api.address.MemberAddressApi;
import cn.iocoder.yudao.module.member.api.address.dto.MemberAddressRespDTO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.service.membercardtype.PaidMemberCardTypeService;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
@ -58,6 +61,9 @@ public class PaidMemberUserServiceImpl implements PaidMemberUserService {
@Resource
private TradeOrderMapper tradeOrderMapper;
@Resource
private MemberAddressApi addressApi;
@Override
public Long createMemberUser(PaidMemberUserSaveReqVO createReqVO) {
@ -212,19 +218,38 @@ public class PaidMemberUserServiceImpl implements PaidMemberUserService {
@Override
public Long buildTradeOrder(PaidMemberUserDO updateReqVO) {
TradeOrderDO orderDO = new TradeOrderDO();
orderDO.setUserId(updateReqVO.getUid());
orderDO.setType(TradeOrderTypeEnum.NORMAL.getType());
orderDO.setNo(updateReqVO.getOrderNo());
orderDO.setStatus(TradeOrderStatusEnum.UNPAID.getStatus());
orderDO.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus());
orderDO.setProductCount(1);
orderDO.setUserIp(getClientIP()).setTerminal(getTerminal());
orderDO.setPayOrderId(updateReqVO.getPayOrderId());
orderDO.setPayChannelCode(updateReqVO.getPayChannel());
orderDO.setDeliveryType(DeliveryTypeEnum.EXPRESS.getType());
tradeOrderMapper.insert(orderDO);
// orderDO = tradeOrderMapper.s
//获取用户地址
// MemberAddressRespDTO address = addressApi.getDefaultAddress(updateReqVO.getUid());
// orderDO.setReceiverName(address.getName()).setReceiverMobile(address.getMobile())
// .setReceiverAreaId(address.getAreaId()).setReceiverDetailAddress(address.getDetailAddress());
//插入新增交易订单
tradeOrderMapper.insert(orderDO);
//查询最新的交易订单数据
List<TradeOrderDO> list = tradeOrderMapper.selectList(new LambdaQueryWrapperX<TradeOrderDO>()
.eqIfPresent(TradeOrderDO::getUserId,updateReqVO.getUid())
.orderByDesc(TradeOrderDO::getId));
if(list.isEmpty()){
return null;
}
orderDO = CollUtil.getFirst(list);
return orderDO.getId();
}
@Override
public void updateTradeOrderId(Long merchantOrderId, Long payOrderId) {
TradeOrderDO orderDO = tradeOrderMapper.selectOne(new LambdaQueryWrapperX<TradeOrderDO>()
.eqIfPresent(TradeOrderDO::getId,merchantOrderId));
orderDO.setPayOrderId(payOrderId);
tradeOrderMapper.updateById(orderDO);
}
}

View File

@ -95,6 +95,7 @@ public class AppPaidMembeController {
//初始化支付金额,单位为分
int price = 0;
Long payOrderId = null;
Long merchantOrderId = null;
if(reqVO.getCardName().equals("试用")){
BeanUtils.copyProperties(memberUserDO,paidMemberUserSaveReqVO);
paidMemberUserSaveReqVO.setPayMemberType(reqVO.getCardName());
@ -139,14 +140,19 @@ public class AppPaidMembeController {
Long id = paidMemberUserService.createMemberUser(paidMemberUserSaveReqVO);
//查询新增的会员订单记录
paidMemberUserDO = paidMemberUserService.getMemberUser(id);
//创建交易订单号
merchantOrderId = paidMemberUserService.buildTradeOrder(paidMemberUserDO);
paidMemberUserDO.setMerchantOrderId(String.valueOf(merchantOrderId));
//创建支付订单号
payOrderId = payOrderService.createOrder(new PayOrderCreateReqDTO()
.setAppId(1L).setUserIp(getClientIP())
.setMerchantOrderId(""+paidMemberUserDO.getId())
.setMerchantOrderId(""+paidMemberUserDO.getMerchantOrderId())
.setSubject(PAID_MEMBER_USER_SUBJECT).setBody("")
.setPrice(paidMemberUserDO.getPrice())
.setExpireTime(addTime(Duration.ofHours(2L)))); // TODO @芋艿支付超时时间
paidMemberUserDO.setPayOrderId(payOrderId);
//将支付订单号更新到交易订单中
paidMemberUserService.updateTradeOrderId(merchantOrderId,payOrderId);
//跟新支付订单号进付费会员表里
paidMemberUserService.update(paidMemberUserDO);
}