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 String VIP_ORDER_SUB = "V";
|
||||
public static final String RECHARGE_ORDER_SUB = "R";
|
||||
public static String createOrderNo(OrderTypeEnum sub){
|
||||
return sub.getType() + snowflake.nextIdStr();
|
||||
}
|
||||
|
||||
public static String createOrderNo(String sub){
|
||||
return sub + snowflake.nextIdStr();
|
||||
public static OrderTypeEnum getType(String orderNo){
|
||||
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.mapper.AccountMapper;
|
||||
import com.ruoyi.cai.mapper.RechargeOrderMapper;
|
||||
import com.ruoyi.cai.pay.OrderNoUtil;
|
||||
import com.ruoyi.cai.pay.PayStatusEnum;
|
||||
import com.ruoyi.cai.pay.PlatformTypeEnum;
|
||||
import com.ruoyi.cai.pay.RechargeTypeEnum;
|
||||
import com.ruoyi.cai.pay.*;
|
||||
import com.ruoyi.cai.service.*;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
@@ -69,6 +66,10 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public RechargeOrder addRechargeOrder(AddRechargeOrderDto addRechargeOrderDto){
|
||||
Long goodId = addRechargeOrderDto.getGoodId();
|
||||
User user = userService.getById(addRechargeOrderDto.getUserId());
|
||||
if(user == null){
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
Goods goods = goodsService.getById(goodId);
|
||||
if(goods == null){
|
||||
throw new ServiceException("充值价格错误");
|
||||
@@ -80,7 +81,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
||||
order.setRechargeCoin(goods.getAmount());
|
||||
order.setRechargeType(RechargeTypeEnum.COIN.getCode());
|
||||
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.setAdmin(false);
|
||||
this.save(order);
|
||||
@@ -140,7 +141,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
||||
order.setRechargeCoin(dto.getRechargeCoin());
|
||||
order.setPrice(BigDecimal.ZERO);
|
||||
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.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
||||
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.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.MemberPrice;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.domain.UserMember;
|
||||
import com.ruoyi.cai.domain.VipOrder;
|
||||
import com.ruoyi.cai.dto.admin.vo.VipOrderAdminVo;
|
||||
import com.ruoyi.cai.dto.dto.AddVipOrderDto;
|
||||
import com.ruoyi.cai.mapper.VipOrderMapper;
|
||||
import com.ruoyi.cai.pay.MemberStatusEnum;
|
||||
import com.ruoyi.cai.pay.OrderNoUtil;
|
||||
import com.ruoyi.cai.pay.PayStatusEnum;
|
||||
import com.ruoyi.cai.pay.PlatformTypeEnum;
|
||||
import com.ruoyi.cai.pay.*;
|
||||
import com.ruoyi.cai.service.*;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
@@ -40,6 +38,8 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
||||
private MemberPriceService memberPriceService;
|
||||
@Autowired
|
||||
private UserMemberService userMemberService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
/**
|
||||
* 强制修改VIP
|
||||
@@ -60,7 +60,7 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
||||
vipOrder.setVipExpire(memberPrice.getExpires());
|
||||
vipOrder.setVipLongs(memberPrice.getLongs());
|
||||
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.setPlatformType(PlatformTypeEnum.ADMIN.name());
|
||||
vipOrder.setOperateIp(ServletUtils.getClientIP());
|
||||
@@ -86,6 +86,10 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
||||
@Override
|
||||
public VipOrder addVipOrder(AddVipOrderDto addVipOrder){
|
||||
Long memberPriceId = addVipOrder.getMemberPriceId();
|
||||
User user = userService.getById(addVipOrder.getUserId());
|
||||
if(user == null){
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
MemberPrice memberPrice = memberPriceService.getById(memberPriceId);
|
||||
if(memberPrice == null){
|
||||
throw new ServiceException("VIP价格错误");
|
||||
@@ -98,7 +102,7 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
||||
vipOrder.setVipExpire(memberPrice.getExpires());
|
||||
vipOrder.setVipLongs(memberPrice.getLongs());
|
||||
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());
|
||||
this.save(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){
|
||||
UserMember userMember = userMemberService.getByUserId(userId);
|
||||
UserMember userMember = userMemberService.getByUserIdAndType(userId,memberType);
|
||||
LocalDateTime createTime = LocalDateTime.now();
|
||||
// 以前会员失效 , 买了不同的会员等级 不做续费操作
|
||||
// 以前会员失效
|
||||
if(userMember == null ||
|
||||
!MemberStatusEnum.NORMAL.getCode().equals(userMember.getMemberStatus()) || // 会员不可用
|
||||
userMember.getExpireDate().isBefore(createTime) || // 时间已经失效了 定时任务还没有执行
|
||||
!memberType.equals(userMember.getMemberType()) // 会员类型变更
|
||||
userMember.getExpireDate().isBefore(createTime)
|
||||
){
|
||||
if(userMember == null){
|
||||
userMember = new UserMember();
|
||||
|
||||
Reference in New Issue
Block a user