会员支付

This commit is contained in:
khy 2024-10-21 10:59:45 +08:00
parent 11dd5f7f6f
commit 5cb71e0889
10 changed files with 64 additions and 35 deletions

View File

@ -32,7 +32,7 @@ public class PaidMemberOrderPageReqVO extends PageParam {
private Integer type;
@Schema(description = "期限天数")
private Integer deadlineDay;
private String deadlineDay;
@Schema(description = "会员卡原价", example = "16244")
private BigDecimal originalPrice;

View File

@ -39,7 +39,7 @@ public class PaidMemberOrderRespVO {
@Schema(description = "期限天数", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("期限天数")
private Integer deadlineDay;
private String deadlineDay;
@Schema(description = "会员卡原价", requiredMode = Schema.RequiredMode.REQUIRED, example = "16244")
@ExcelProperty("会员卡原价")

View File

@ -35,7 +35,7 @@ public class PaidMemberOrderSaveReqVO {
@Schema(description = "期限天数", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "期限天数不能为空")
private Integer deadlineDay;
private String deadlineDay;
@Schema(description = "会员卡原价", requiredMode = Schema.RequiredMode.REQUIRED, example = "16244")
@NotNull(message = "会员卡原价不能为空")

View File

@ -13,6 +13,6 @@ public interface PaidMemberOrderConvert {
PaidMemberOrderConvert INSTANCE = Mappers.getMapper(PaidMemberOrderConvert.class);
PaidMemberOrderDO convert(Long uid, String cardName, Integer type,
String payChannel, BigDecimal price, LocalDateTime payTime);
String payChannel, BigDecimal price, LocalDateTime payTime,String deadlineDay,LocalDateTime cardExpirationTime);
}

View File

@ -56,7 +56,7 @@ public class PaidMemberOrderDO extends TenantBaseDO {
/**
* 期限天数
*/
private Integer deadlineDay;
private String deadlineDay;
/**
* 会员卡原价
*/

View File

@ -68,4 +68,10 @@ public interface PaidMemberCardTypeService {
* @return
*/
PaidMemberCardTypeDO selectMemberCardType(Integer type, BigDecimal price);
/**
* 根据会员卡名查询
*/
PaidMemberCardTypeDO selectByName(String cardName);
}

View File

@ -112,5 +112,12 @@ public class PaidMemberCardTypeServiceImpl implements PaidMemberCardTypeService
return paidMemberCardTypeDO;
}
@Override
public PaidMemberCardTypeDO selectByName(String cardName) {
PaidMemberCardTypeDO paidMemberCardTypeDO = cardMapper.selectOne(new LambdaQueryWrapperX<PaidMemberCardTypeDO>()
.eqIfPresent(PaidMemberCardTypeDO::getName,cardName));
return paidMemberCardTypeDO;
}
}

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.member.service.order;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.order.vo.*;
@ -77,4 +78,10 @@ public interface PaidMemberOrderService {
*/
void updateOrder(@Valid PaidMemberOrderDO updateReqVO);
/**
* 根据订单会员类型
* 获得到期时间
*/
LocalDateTime getDeadLineDay(String cardName);
}

View File

@ -10,6 +10,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import cn.iocoder.yudao.module.member.controller.admin.order.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.order.PaidMemberOrderDO;
@ -115,4 +117,22 @@ public class PaidMemberOrderServiceImpl implements PaidMemberOrderService {
paidMemberOrderMapper.updateById(updateReqVO);
}
@Override
public LocalDateTime getDeadLineDay(String cardName) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime deadlineDay;
if (cardName.equals("试用")){
deadlineDay = now.plus(1, ChronoUnit.DAYS);
} else if (cardName.equals("月卡")) {
deadlineDay = now.plus(1,ChronoUnit.MONTHS);
} else if (cardName.equals("季卡")) {
deadlineDay = now.plus(3,ChronoUnit.MONTHS);
} else if (cardName.equals("年卡")) {
deadlineDay = now.plus(1,ChronoUnit.YEARS);
} else {
deadlineDay = null;
}
return deadlineDay;
}
}

View File

@ -10,14 +10,13 @@ import cn.iocoder.yudao.module.member.controller.admin.user.vo.PaidMemberUserSav
import cn.iocoder.yudao.module.member.convert.order.PaidMemberOrderConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.order.PaidMemberOrderDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.service.membercardtype.PaidMemberCardTypeService;
import cn.iocoder.yudao.module.member.service.order.PaidMemberOrderService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.member.service.user.PaidMemberUserService;
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
import cn.iocoder.yudao.module.pay.controller.app.member.vo.AppPaidMemberOrderReqVO;
import cn.iocoder.yudao.module.pay.controller.app.member.vo.AppPaidMemberOrderRespVO;
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO;
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionRespVO;
import cn.iocoder.yudao.module.pay.convert.member.PayMemberOrderConvert;
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
@ -65,7 +64,8 @@ public class AppPaidMembeOrderController {
@Resource
private PayOrderService payOrderService01;
@Resource
private PaidMemberCardTypeService cardService;
@ -77,11 +77,11 @@ public class AppPaidMembeOrderController {
// 判断当前用户是否选择过试用会员
if(memberUserDO.getActivate() == 0 && memberUserDO != null){
memberUserDO.setActivate(CommonStatusEnum.DISABLE.getStatus());
}
// 若不是会员则往会员表插入数据
if(memberUserService1.getMemberUser(memberUserDO.getId()) == null){
BeanUtils.copyProperties(memberUserDO,paidMemberUserSaveReqVO);
// 若不是会员则往会员表插入数据
if(memberUserService1.getMemberUser(memberUserDO.getId()) == null){
memberUserService1.createMemberUser(paidMemberUserSaveReqVO);
}
memberUserService1.createMemberUser(paidMemberUserSaveReqVO);
}
//判断会员类型
if(reqVO.getCardName().equals("试用")){
@ -91,14 +91,22 @@ public class AppPaidMembeOrderController {
}else {
reqVO.setType(1);
}
//获得对应会员期限天数
String deadlineDay = cardService.selectByName(reqVO.getCardName()).getVid();
LocalDateTime payTime = LocalDateTime.now();
LocalDateTime cardExpirationTime = paidMemberOrderService1.getDeadLineDay(reqVO.getCardName());
//获得支付金额
BigDecimal payPrice = paidMemberOrderService1.createMemberRecord(getLoginUserId(),
getLoginUserType(),getClientIP(),reqVO.getPrice(),reqVO.getType());
BigDecimal p = payPrice.multiply(new BigDecimal("100"));
Integer payPriceInt = p.intValue();
PayWalletDO walletDO = memberWalletService.getWalletByUserIdAndType(getLoginUserId(),getLoginUserType());
LocalDateTime payTime = LocalDateTime.now();
// PayWalletDO walletDO = memberWalletService.getWalletByUserIdAndType(getLoginUserId(),getLoginUserType());
//订单对象赋值
PaidMemberOrderDO paidMemberOrderDO = PaidMemberOrderConvert.INSTANCE.convert(getLoginUserId(),
reqVO.getCardName(),reqVO.getType(),reqVO.getPayChannel(),reqVO.getPrice(),payTime);
reqVO.getCardName(),reqVO.getType(),reqVO.getPayChannel(),reqVO.getPrice(),payTime,deadlineDay,cardExpirationTime);
paidMemberOrderService1.createOrder(paidMemberOrderDO);
Long payOrderId = payOrderService01.createOrder(new PayOrderCreateReqDTO()
.setAppId(1L).setUserIp(getClientIP())
.setMerchantOrderId(""+paidMemberOrderDO.getId()) // 业务的订单编号
@ -107,26 +115,7 @@ public class AppPaidMembeOrderController {
.setExpireTime(addTime(Duration.ofHours(2L)))); // TODO @芋艿支付超时时间
paidMemberOrderDO.setPayOrderId(payOrderId);
userService1.updateUserDo(memberUserDO);
paidMemberOrderService1.createOrder(paidMemberOrderDO);
paidMemberOrderService1.updateOrder(paidMemberOrderDO);
return success(PayMemberOrderConvert.INSTANCE.convert(paidMemberOrderDO));
// BigDecimal payPrice = paidMemberOrderService1.createMemberRecord(getLoginUserId(),
// getLoginUserType(),getClientIP(),reqVO.getPrice(),reqVO.getType());
// BigDecimal p = payPrice.multiply(new BigDecimal("100"));
// Integer payPriceInt = p.intValue();
// PayWalletDO walletDO = memberWalletService.getWalletByUserIdAndType(getLoginUserId(),getLoginUserType());
// LocalDateTime payTime = LocalDateTime.now();
// PaidMemberOrderDO paidMemberOrderDO = PaidMemberOrderConvert.INSTANCE.convert(getLoginUserId(),
// reqVO.getCardName(),reqVO.getType(),reqVO.getPayChannel(),reqVO.getPrice(),payTime);
//
// Long payOrderId = payOrderService01.createOrder(new PayOrderCreateReqDTO()
// .setAppId(1L).setUserIp(getClientIP())
// .setMerchantOrderId(""+paidMemberOrderDO.getId()) // 业务的订单编号
// .setSubject("会员支付").setBody("")
// .setPrice(payPriceInt)
// .setExpireTime(addTime(Duration.ofHours(2L)))); // TODO @芋艿支付超时时间
// paidMemberOrderDO.setPayOrderId(payOrderId);
// paidMemberOrderService1.createOrder(paidMemberOrderDO);
// return success(PayMemberOrderConvert.INSTANCE.convert(paidMemberOrderDO));
}
}