init
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
package com.ruoyi.cai.controller.test;
|
||||||
|
|
||||||
|
import com.ruoyi.cai.domain.RechargeOrder;
|
||||||
|
import com.ruoyi.cai.domain.VipOrder;
|
||||||
|
import com.ruoyi.cai.dto.AddRechargeOrderDto;
|
||||||
|
import com.ruoyi.cai.dto.dto.AddVipOrderDto;
|
||||||
|
import com.ruoyi.cai.pay.PayManager;
|
||||||
|
import com.ruoyi.cai.service.RechargeOrderService;
|
||||||
|
import com.ruoyi.cai.service.VipOrderService;
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/cai/test/pay")
|
||||||
|
public class TestPayController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VipOrderService vipOrderService;
|
||||||
|
@Autowired
|
||||||
|
private RechargeOrderService rechargeOrderService;
|
||||||
|
@Autowired
|
||||||
|
private PayManager payManager;
|
||||||
|
|
||||||
|
@GetMapping("/vip")
|
||||||
|
public R<Void> vip(Long memberPriceId, Long userId){
|
||||||
|
AddVipOrderDto addVipOrderDto = new AddVipOrderDto();
|
||||||
|
addVipOrderDto.setUserId(userId);
|
||||||
|
addVipOrderDto.setMemberPriceId(memberPriceId);
|
||||||
|
VipOrder vipOrder = vipOrderService.addVipOrder(addVipOrderDto);
|
||||||
|
payManager.callBack(vipOrder.getOrderNo());
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/recharge")
|
||||||
|
public R<Void> recharge(Long goodId, Long userId){
|
||||||
|
AddRechargeOrderDto dto = new AddRechargeOrderDto();
|
||||||
|
dto.setUserId(userId);
|
||||||
|
dto.setGoodId(goodId);
|
||||||
|
RechargeOrder order = rechargeOrderService.addRechargeOrder(dto);
|
||||||
|
payManager.callBack(order.getOrderNo());
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,10 +8,20 @@ public class OrderNoUtil {
|
|||||||
|
|
||||||
public static final Snowflake snowflake = IdUtil.getSnowflake(1, 1);
|
public static final Snowflake snowflake = IdUtil.getSnowflake(1, 1);
|
||||||
|
|
||||||
public static final String VIP_ORDER_SUB = "V";
|
public static String createOrderNo(OrderTypeEnum sub){
|
||||||
public static final String RECHARGE_ORDER_SUB = "R";
|
return sub.getType() + snowflake.nextIdStr();
|
||||||
|
}
|
||||||
|
|
||||||
public static String createOrderNo(String sub){
|
public static OrderTypeEnum getType(String orderNo){
|
||||||
return sub + snowflake.nextIdStr();
|
if(orderNo == null){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
OrderTypeEnum[] values = OrderTypeEnum.values();
|
||||||
|
for (OrderTypeEnum value : values) {
|
||||||
|
if(orderNo.startsWith(value.getType())){
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
16
ruoyi-cai/src/main/java/com/ruoyi/cai/pay/OrderTypeEnum.java
Normal file
16
ruoyi-cai/src/main/java/com/ruoyi/cai/pay/OrderTypeEnum.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package com.ruoyi.cai.pay;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public enum OrderTypeEnum {
|
||||||
|
VIP_ORDER_SUB("V"),
|
||||||
|
RECHARGE_ORDER_SUB("R"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String type;
|
||||||
|
|
||||||
|
OrderTypeEnum(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
36
ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java
Normal file
36
ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.ruoyi.cai.pay;
|
||||||
|
|
||||||
|
import com.ruoyi.cai.service.RechargeOrderService;
|
||||||
|
import com.ruoyi.cai.service.VipOrderService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class PayManager {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VipOrderService vipOrderService;
|
||||||
|
@Autowired
|
||||||
|
private RechargeOrderService rechargeOrderService;
|
||||||
|
|
||||||
|
public void callBack(String orderNo){
|
||||||
|
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
|
||||||
|
if(orderTypeEnum == null){
|
||||||
|
log.error("订单类型有误!orderNo={}",orderNo);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (orderTypeEnum){
|
||||||
|
case VIP_ORDER_SUB:
|
||||||
|
vipOrderService.orderSuccess(orderNo);
|
||||||
|
break;
|
||||||
|
case RECHARGE_ORDER_SUB:
|
||||||
|
rechargeOrderService.orderSuccess(orderNo);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,10 +15,7 @@ import com.ruoyi.cai.enums.ConsumeLogType;
|
|||||||
import com.ruoyi.cai.manager.IdManager;
|
import com.ruoyi.cai.manager.IdManager;
|
||||||
import com.ruoyi.cai.mapper.AccountMapper;
|
import com.ruoyi.cai.mapper.AccountMapper;
|
||||||
import com.ruoyi.cai.mapper.RechargeOrderMapper;
|
import com.ruoyi.cai.mapper.RechargeOrderMapper;
|
||||||
import com.ruoyi.cai.pay.OrderNoUtil;
|
import com.ruoyi.cai.pay.*;
|
||||||
import com.ruoyi.cai.pay.PayStatusEnum;
|
|
||||||
import com.ruoyi.cai.pay.PlatformTypeEnum;
|
|
||||||
import com.ruoyi.cai.pay.RechargeTypeEnum;
|
|
||||||
import com.ruoyi.cai.service.*;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
@@ -69,6 +66,10 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public RechargeOrder addRechargeOrder(AddRechargeOrderDto addRechargeOrderDto){
|
public RechargeOrder addRechargeOrder(AddRechargeOrderDto addRechargeOrderDto){
|
||||||
Long goodId = addRechargeOrderDto.getGoodId();
|
Long goodId = addRechargeOrderDto.getGoodId();
|
||||||
|
User user = userService.getById(addRechargeOrderDto.getUserId());
|
||||||
|
if(user == null){
|
||||||
|
throw new ServiceException("用户不存在");
|
||||||
|
}
|
||||||
Goods goods = goodsService.getById(goodId);
|
Goods goods = goodsService.getById(goodId);
|
||||||
if(goods == null){
|
if(goods == null){
|
||||||
throw new ServiceException("充值价格错误");
|
throw new ServiceException("充值价格错误");
|
||||||
@@ -80,7 +81,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
|||||||
order.setRechargeCoin(goods.getAmount());
|
order.setRechargeCoin(goods.getAmount());
|
||||||
order.setRechargeType(RechargeTypeEnum.COIN.getCode());
|
order.setRechargeType(RechargeTypeEnum.COIN.getCode());
|
||||||
order.setPrice(goods.getPrice());
|
order.setPrice(goods.getPrice());
|
||||||
order.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.RECHARGE_ORDER_SUB));
|
order.setOrderNo(OrderNoUtil.createOrderNo(OrderTypeEnum.RECHARGE_ORDER_SUB));
|
||||||
order.setPayStatus(PayStatusEnum.READY_PAY.getCode());
|
order.setPayStatus(PayStatusEnum.READY_PAY.getCode());
|
||||||
order.setAdmin(false);
|
order.setAdmin(false);
|
||||||
this.save(order);
|
this.save(order);
|
||||||
@@ -140,7 +141,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
|||||||
order.setRechargeCoin(dto.getRechargeCoin());
|
order.setRechargeCoin(dto.getRechargeCoin());
|
||||||
order.setPrice(BigDecimal.ZERO);
|
order.setPrice(BigDecimal.ZERO);
|
||||||
order.setRechargeType(dto.getRechargeType());
|
order.setRechargeType(dto.getRechargeType());
|
||||||
order.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.RECHARGE_ORDER_SUB));
|
order.setOrderNo(OrderNoUtil.createOrderNo(OrderTypeEnum.RECHARGE_ORDER_SUB));
|
||||||
order.setPlatformType(PlatformTypeEnum.ADMIN.name());
|
order.setPlatformType(PlatformTypeEnum.ADMIN.name());
|
||||||
order.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
order.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
||||||
order.setOperateIp(ServletUtils.getClientIP());
|
order.setOperateIp(ServletUtils.getClientIP());
|
||||||
|
|||||||
@@ -5,15 +5,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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 com.ruoyi.cai.domain.MemberPrice;
|
import com.ruoyi.cai.domain.MemberPrice;
|
||||||
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.domain.UserMember;
|
import com.ruoyi.cai.domain.UserMember;
|
||||||
import com.ruoyi.cai.domain.VipOrder;
|
import com.ruoyi.cai.domain.VipOrder;
|
||||||
import com.ruoyi.cai.dto.admin.vo.VipOrderAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.VipOrderAdminVo;
|
||||||
import com.ruoyi.cai.dto.dto.AddVipOrderDto;
|
import com.ruoyi.cai.dto.dto.AddVipOrderDto;
|
||||||
import com.ruoyi.cai.mapper.VipOrderMapper;
|
import com.ruoyi.cai.mapper.VipOrderMapper;
|
||||||
import com.ruoyi.cai.pay.MemberStatusEnum;
|
import com.ruoyi.cai.pay.*;
|
||||||
import com.ruoyi.cai.pay.OrderNoUtil;
|
|
||||||
import com.ruoyi.cai.pay.PayStatusEnum;
|
|
||||||
import com.ruoyi.cai.pay.PlatformTypeEnum;
|
|
||||||
import com.ruoyi.cai.service.*;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
@@ -40,6 +38,8 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
|||||||
private MemberPriceService memberPriceService;
|
private MemberPriceService memberPriceService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserMemberService userMemberService;
|
private UserMemberService userMemberService;
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 强制修改VIP
|
* 强制修改VIP
|
||||||
@@ -60,7 +60,7 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
|||||||
vipOrder.setVipExpire(memberPrice.getExpires());
|
vipOrder.setVipExpire(memberPrice.getExpires());
|
||||||
vipOrder.setVipLongs(memberPrice.getLongs());
|
vipOrder.setVipLongs(memberPrice.getLongs());
|
||||||
vipOrder.setPrice(memberPrice.getPrice());
|
vipOrder.setPrice(memberPrice.getPrice());
|
||||||
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.VIP_ORDER_SUB));
|
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderTypeEnum.VIP_ORDER_SUB));
|
||||||
vipOrder.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
vipOrder.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
||||||
vipOrder.setPlatformType(PlatformTypeEnum.ADMIN.name());
|
vipOrder.setPlatformType(PlatformTypeEnum.ADMIN.name());
|
||||||
vipOrder.setOperateIp(ServletUtils.getClientIP());
|
vipOrder.setOperateIp(ServletUtils.getClientIP());
|
||||||
@@ -86,6 +86,10 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
|||||||
@Override
|
@Override
|
||||||
public VipOrder addVipOrder(AddVipOrderDto addVipOrder){
|
public VipOrder addVipOrder(AddVipOrderDto addVipOrder){
|
||||||
Long memberPriceId = addVipOrder.getMemberPriceId();
|
Long memberPriceId = addVipOrder.getMemberPriceId();
|
||||||
|
User user = userService.getById(addVipOrder.getUserId());
|
||||||
|
if(user == null){
|
||||||
|
throw new ServiceException("用户不存在");
|
||||||
|
}
|
||||||
MemberPrice memberPrice = memberPriceService.getById(memberPriceId);
|
MemberPrice memberPrice = memberPriceService.getById(memberPriceId);
|
||||||
if(memberPrice == null){
|
if(memberPrice == null){
|
||||||
throw new ServiceException("VIP价格错误");
|
throw new ServiceException("VIP价格错误");
|
||||||
@@ -98,7 +102,7 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
|||||||
vipOrder.setVipExpire(memberPrice.getExpires());
|
vipOrder.setVipExpire(memberPrice.getExpires());
|
||||||
vipOrder.setVipLongs(memberPrice.getLongs());
|
vipOrder.setVipLongs(memberPrice.getLongs());
|
||||||
vipOrder.setPrice(memberPrice.getPrice());
|
vipOrder.setPrice(memberPrice.getPrice());
|
||||||
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.VIP_ORDER_SUB));
|
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderTypeEnum.VIP_ORDER_SUB));
|
||||||
vipOrder.setPayStatus(PayStatusEnum.READY_PAY.getCode());
|
vipOrder.setPayStatus(PayStatusEnum.READY_PAY.getCode());
|
||||||
this.save(vipOrder);
|
this.save(vipOrder);
|
||||||
return vipOrder;
|
return vipOrder;
|
||||||
@@ -134,13 +138,12 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean incVip(Long userId,Integer memberType,Integer expire,Integer longs){
|
public boolean incVip(Long userId,Integer memberType,Integer expire,Integer longs){
|
||||||
UserMember userMember = userMemberService.getByUserId(userId);
|
UserMember userMember = userMemberService.getByUserIdAndType(userId,memberType);
|
||||||
LocalDateTime createTime = LocalDateTime.now();
|
LocalDateTime createTime = LocalDateTime.now();
|
||||||
// 以前会员失效 , 买了不同的会员等级 不做续费操作
|
// 以前会员失效
|
||||||
if(userMember == null ||
|
if(userMember == null ||
|
||||||
!MemberStatusEnum.NORMAL.getCode().equals(userMember.getMemberStatus()) || // 会员不可用
|
!MemberStatusEnum.NORMAL.getCode().equals(userMember.getMemberStatus()) || // 会员不可用
|
||||||
userMember.getExpireDate().isBefore(createTime) || // 时间已经失效了 定时任务还没有执行
|
userMember.getExpireDate().isBefore(createTime)
|
||||||
!memberType.equals(userMember.getMemberType()) // 会员类型变更
|
|
||||||
){
|
){
|
||||||
if(userMember == null){
|
if(userMember == null){
|
||||||
userMember = new UserMember();
|
userMember = new UserMember();
|
||||||
|
|||||||
Reference in New Issue
Block a user