会员支付
This commit is contained in:
parent
11dd5f7f6f
commit
5cb71e0889
@ -32,7 +32,7 @@ public class PaidMemberOrderPageReqVO extends PageParam {
|
|||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@Schema(description = "期限天数")
|
@Schema(description = "期限天数")
|
||||||
private Integer deadlineDay;
|
private String deadlineDay;
|
||||||
|
|
||||||
@Schema(description = "会员卡原价", example = "16244")
|
@Schema(description = "会员卡原价", example = "16244")
|
||||||
private BigDecimal originalPrice;
|
private BigDecimal originalPrice;
|
||||||
|
@ -39,7 +39,7 @@ public class PaidMemberOrderRespVO {
|
|||||||
|
|
||||||
@Schema(description = "期限天数", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "期限天数", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("期限天数")
|
@ExcelProperty("期限天数")
|
||||||
private Integer deadlineDay;
|
private String deadlineDay;
|
||||||
|
|
||||||
@Schema(description = "会员卡原价", requiredMode = Schema.RequiredMode.REQUIRED, example = "16244")
|
@Schema(description = "会员卡原价", requiredMode = Schema.RequiredMode.REQUIRED, example = "16244")
|
||||||
@ExcelProperty("会员卡原价")
|
@ExcelProperty("会员卡原价")
|
||||||
|
@ -35,7 +35,7 @@ public class PaidMemberOrderSaveReqVO {
|
|||||||
|
|
||||||
@Schema(description = "期限天数", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "期限天数", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "期限天数不能为空")
|
@NotNull(message = "期限天数不能为空")
|
||||||
private Integer deadlineDay;
|
private String deadlineDay;
|
||||||
|
|
||||||
@Schema(description = "会员卡原价", requiredMode = Schema.RequiredMode.REQUIRED, example = "16244")
|
@Schema(description = "会员卡原价", requiredMode = Schema.RequiredMode.REQUIRED, example = "16244")
|
||||||
@NotNull(message = "会员卡原价不能为空")
|
@NotNull(message = "会员卡原价不能为空")
|
||||||
|
@ -13,6 +13,6 @@ public interface PaidMemberOrderConvert {
|
|||||||
PaidMemberOrderConvert INSTANCE = Mappers.getMapper(PaidMemberOrderConvert.class);
|
PaidMemberOrderConvert INSTANCE = Mappers.getMapper(PaidMemberOrderConvert.class);
|
||||||
|
|
||||||
PaidMemberOrderDO convert(Long uid, String cardName, Integer type,
|
PaidMemberOrderDO convert(Long uid, String cardName, Integer type,
|
||||||
String payChannel, BigDecimal price, LocalDateTime payTime);
|
String payChannel, BigDecimal price, LocalDateTime payTime,String deadlineDay,LocalDateTime cardExpirationTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ public class PaidMemberOrderDO extends TenantBaseDO {
|
|||||||
/**
|
/**
|
||||||
* 期限天数
|
* 期限天数
|
||||||
*/
|
*/
|
||||||
private Integer deadlineDay;
|
private String deadlineDay;
|
||||||
/**
|
/**
|
||||||
* 会员卡原价
|
* 会员卡原价
|
||||||
*/
|
*/
|
||||||
|
@ -68,4 +68,10 @@ public interface PaidMemberCardTypeService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
PaidMemberCardTypeDO selectMemberCardType(Integer type, BigDecimal price);
|
PaidMemberCardTypeDO selectMemberCardType(Integer type, BigDecimal price);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据会员卡名查询
|
||||||
|
*/
|
||||||
|
PaidMemberCardTypeDO selectByName(String cardName);
|
||||||
}
|
}
|
@ -112,5 +112,12 @@ public class PaidMemberCardTypeServiceImpl implements PaidMemberCardTypeService
|
|||||||
return paidMemberCardTypeDO;
|
return paidMemberCardTypeDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PaidMemberCardTypeDO selectByName(String cardName) {
|
||||||
|
PaidMemberCardTypeDO paidMemberCardTypeDO = cardMapper.selectOne(new LambdaQueryWrapperX<PaidMemberCardTypeDO>()
|
||||||
|
.eqIfPresent(PaidMemberCardTypeDO::getName,cardName));
|
||||||
|
return paidMemberCardTypeDO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.order;
|
package cn.iocoder.yudao.module.member.service.order;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import javax.validation.*;
|
import javax.validation.*;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.*;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.*;
|
||||||
@ -77,4 +78,10 @@ public interface PaidMemberOrderService {
|
|||||||
*/
|
*/
|
||||||
void updateOrder(@Valid PaidMemberOrderDO updateReqVO);
|
void updateOrder(@Valid PaidMemberOrderDO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据订单会员类型
|
||||||
|
* 获得到期时间
|
||||||
|
*/
|
||||||
|
LocalDateTime getDeadLineDay(String cardName);
|
||||||
|
|
||||||
}
|
}
|
@ -10,6 +10,8 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.*;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.*;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.PaidMemberOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.PaidMemberOrderDO;
|
||||||
@ -115,4 +117,22 @@ public class PaidMemberOrderServiceImpl implements PaidMemberOrderService {
|
|||||||
paidMemberOrderMapper.updateById(updateReqVO);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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.convert.order.PaidMemberOrderConvert;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.PaidMemberOrderDO;
|
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.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.order.PaidMemberOrderService;
|
||||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||||
import cn.iocoder.yudao.module.member.service.user.PaidMemberUserService;
|
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.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.AppPaidMemberOrderReqVO;
|
||||||
import cn.iocoder.yudao.module.pay.controller.app.member.vo.AppPaidMemberOrderRespVO;
|
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.convert.member.PayMemberOrderConvert;
|
||||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
|
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
|
||||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
|
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
|
||||||
@ -65,7 +64,8 @@ public class AppPaidMembeOrderController {
|
|||||||
@Resource
|
@Resource
|
||||||
private PayOrderService payOrderService01;
|
private PayOrderService payOrderService01;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PaidMemberCardTypeService cardService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -77,11 +77,11 @@ public class AppPaidMembeOrderController {
|
|||||||
// 判断当前用户是否选择过试用会员
|
// 判断当前用户是否选择过试用会员
|
||||||
if(memberUserDO.getActivate() == 0 && memberUserDO != null){
|
if(memberUserDO.getActivate() == 0 && memberUserDO != null){
|
||||||
memberUserDO.setActivate(CommonStatusEnum.DISABLE.getStatus());
|
memberUserDO.setActivate(CommonStatusEnum.DISABLE.getStatus());
|
||||||
|
}
|
||||||
|
// 若不是会员则往会员表插入数据
|
||||||
|
if(memberUserService1.getMemberUser(memberUserDO.getId()) == null){
|
||||||
BeanUtils.copyProperties(memberUserDO,paidMemberUserSaveReqVO);
|
BeanUtils.copyProperties(memberUserDO,paidMemberUserSaveReqVO);
|
||||||
// 若不是会员则往会员表插入数据
|
memberUserService1.createMemberUser(paidMemberUserSaveReqVO);
|
||||||
if(memberUserService1.getMemberUser(memberUserDO.getId()) == null){
|
|
||||||
memberUserService1.createMemberUser(paidMemberUserSaveReqVO);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//判断会员类型
|
//判断会员类型
|
||||||
if(reqVO.getCardName().equals("试用")){
|
if(reqVO.getCardName().equals("试用")){
|
||||||
@ -91,14 +91,22 @@ public class AppPaidMembeOrderController {
|
|||||||
}else {
|
}else {
|
||||||
reqVO.setType(1);
|
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(),
|
BigDecimal payPrice = paidMemberOrderService1.createMemberRecord(getLoginUserId(),
|
||||||
getLoginUserType(),getClientIP(),reqVO.getPrice(),reqVO.getType());
|
getLoginUserType(),getClientIP(),reqVO.getPrice(),reqVO.getType());
|
||||||
BigDecimal p = payPrice.multiply(new BigDecimal("100"));
|
BigDecimal p = payPrice.multiply(new BigDecimal("100"));
|
||||||
Integer payPriceInt = p.intValue();
|
Integer payPriceInt = p.intValue();
|
||||||
PayWalletDO walletDO = memberWalletService.getWalletByUserIdAndType(getLoginUserId(),getLoginUserType());
|
// PayWalletDO walletDO = memberWalletService.getWalletByUserIdAndType(getLoginUserId(),getLoginUserType());
|
||||||
LocalDateTime payTime = LocalDateTime.now();
|
//订单对象赋值
|
||||||
PaidMemberOrderDO paidMemberOrderDO = PaidMemberOrderConvert.INSTANCE.convert(getLoginUserId(),
|
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()
|
Long payOrderId = payOrderService01.createOrder(new PayOrderCreateReqDTO()
|
||||||
.setAppId(1L).setUserIp(getClientIP())
|
.setAppId(1L).setUserIp(getClientIP())
|
||||||
.setMerchantOrderId(""+paidMemberOrderDO.getId()) // 业务的订单编号
|
.setMerchantOrderId(""+paidMemberOrderDO.getId()) // 业务的订单编号
|
||||||
@ -107,26 +115,7 @@ public class AppPaidMembeOrderController {
|
|||||||
.setExpireTime(addTime(Duration.ofHours(2L)))); // TODO @芋艿:支付超时时间
|
.setExpireTime(addTime(Duration.ofHours(2L)))); // TODO @芋艿:支付超时时间
|
||||||
paidMemberOrderDO.setPayOrderId(payOrderId);
|
paidMemberOrderDO.setPayOrderId(payOrderId);
|
||||||
userService1.updateUserDo(memberUserDO);
|
userService1.updateUserDo(memberUserDO);
|
||||||
paidMemberOrderService1.createOrder(paidMemberOrderDO);
|
paidMemberOrderService1.updateOrder(paidMemberOrderDO);
|
||||||
return success(PayMemberOrderConvert.INSTANCE.convert(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));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user