123
This commit is contained in:
@@ -17,4 +17,6 @@ public interface UserMemberService extends IService<UserMember> {
|
||||
Page<UserMemberAdminVo> pageAdmin(PageQuery pageQuery, UserMemberAdminVo bo);
|
||||
|
||||
UserMember getByUserId(Long userId);
|
||||
|
||||
void relieveMember(Long id);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.ruoyi.cai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.VipOrder;
|
||||
import com.ruoyi.cai.dto.admin.vo.VipOrderAdminVo;
|
||||
import com.ruoyi.cai.dto.dto.AddVipOrderDto;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
|
||||
/**
|
||||
* VIP订单Service接口
|
||||
@@ -11,4 +15,13 @@ import com.ruoyi.cai.domain.VipOrder;
|
||||
*/
|
||||
public interface VipOrderService extends IService<VipOrder> {
|
||||
|
||||
VipOrder updateVipOrderAdmin(Long memberPriceId, Long userId);
|
||||
|
||||
VipOrder addVipOrder(AddVipOrderDto addVipOrder);
|
||||
|
||||
VipOrder getByOrderNo(String orderNo);
|
||||
|
||||
void orderSuccess(String orderNo);
|
||||
|
||||
Page<VipOrderAdminVo> pageAdmin(PageQuery pageQuery, VipOrderAdminVo bo);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,14 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
|
||||
@Autowired
|
||||
private ConsumeLogService consumeLogService;
|
||||
@Autowired
|
||||
private UserInviteService userInviteService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private UnionUserService unionUserService;
|
||||
@Autowired
|
||||
private UnionService unionService;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -77,15 +85,28 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
consumeLogService.save(consumeLog);
|
||||
return consumeLog;
|
||||
}
|
||||
@Autowired
|
||||
private UserInviteService userInviteService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private UnionUserService unionUserService;
|
||||
@Autowired
|
||||
private UnionService unionService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void withdraw(Long userId, Long incomeCoin){
|
||||
Account account = this.getByUserId(userId);
|
||||
if(account == null){
|
||||
throw new ServiceException("无效账号");
|
||||
}
|
||||
if(account.getIncomeCoin() < incomeCoin){
|
||||
throw new ServiceException("需"+incomeCoin+"紫贝才可提现");
|
||||
}
|
||||
long incs = baseMapper.decrIncomeCoin(userId, incomeCoin);
|
||||
if(incs <= 0){
|
||||
throw new ServiceException("需"+incomeCoin+"紫贝才可提现");
|
||||
}
|
||||
// TODO
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo) {
|
||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||
}
|
||||
|
||||
private void fenxiao(CaiConsumeLog consumeLog){
|
||||
if(ConsumeLogType.PAY.getCode().equals(consumeLog.getType())){
|
||||
@@ -153,25 +174,4 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void withdraw(Long userId, Long incomeCoin){
|
||||
Account account = this.getByUserId(userId);
|
||||
if(account == null){
|
||||
throw new ServiceException("无效账号");
|
||||
}
|
||||
if(account.getIncomeCoin() < incomeCoin){
|
||||
throw new ServiceException("需"+incomeCoin+"紫贝才可提现");
|
||||
}
|
||||
long incs = baseMapper.decrIncomeCoin(userId, incomeCoin);
|
||||
if(incs <= 0){
|
||||
throw new ServiceException("需"+incomeCoin+"紫贝才可提现");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<AccountAdminVo> pageAdmin(PageQuery pageQuery, AccountAdminVo bo) {
|
||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.UserMember;
|
||||
import com.ruoyi.cai.dto.admin.vo.UserMemberAdminVo;
|
||||
import com.ruoyi.cai.mapper.UserMemberMapper;
|
||||
import com.ruoyi.cai.pay.MemberStatusEnum;
|
||||
import com.ruoyi.cai.service.UserMemberService;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -28,4 +29,11 @@ public class UserMemberServiceImpl extends ServiceImpl<UserMemberMapper, UserMem
|
||||
public UserMember getByUserId(Long userId) {
|
||||
return this.getOne(Wrappers.lambdaQuery(UserMember.class).eq(UserMember::getUserId,userId).last("limit 1"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void relieveMember(Long id) {
|
||||
this.update(Wrappers.lambdaUpdate(UserMember.class)
|
||||
.eq(UserMember::getId,id)
|
||||
.set(UserMember::getMemberStatus, MemberStatusEnum.FAIL.getCode()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,30 @@
|
||||
package com.ruoyi.cai.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
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.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.service.MemberSkillService;
|
||||
import com.ruoyi.cai.service.VipOrderService;
|
||||
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.service.*;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* VIP订单Service业务层处理
|
||||
@@ -15,10 +33,145 @@ import org.springframework.stereotype.Service;
|
||||
* @date 2024-01-03
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> implements VipOrderService {
|
||||
|
||||
public void addVipOrder(){
|
||||
@Autowired
|
||||
private MemberPriceService memberPriceService;
|
||||
@Autowired
|
||||
private ConsumeLogService consumeLogService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private UserMemberService userMemberService;
|
||||
|
||||
/**
|
||||
* 强制修改VIP
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public VipOrder updateVipOrderAdmin(Long memberPriceId, Long userId){
|
||||
MemberPrice memberPrice = memberPriceService.getById(memberPriceId);
|
||||
if(memberPrice == null){
|
||||
throw new ServiceException("VIP价格错误");
|
||||
}
|
||||
VipOrder vipOrder = new VipOrder();
|
||||
vipOrder.setUserId(userId);
|
||||
vipOrder.setVipId(memberPrice.getId());
|
||||
vipOrder.setVipType(memberPrice.getMemberType());
|
||||
vipOrder.setVipName(memberPrice.getName());
|
||||
vipOrder.setVipExpire(memberPrice.getExpires());
|
||||
vipOrder.setVipLongs(memberPrice.getLongs());
|
||||
vipOrder.setPrice(memberPrice.getPrice());
|
||||
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.VIP_ORDER_SUB));
|
||||
vipOrder.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
||||
vipOrder.setPlatformType(PlatformTypeEnum.ADMIN.name());
|
||||
vipOrder.setOperateIp(ServletUtils.getClientIP());
|
||||
vipOrder.setAdmin(true);
|
||||
vipOrder.setAdminId(LoginHelper.getUserId());
|
||||
this.save(vipOrder);
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
UserMember userMember = userMemberService.getByUserId(userId);
|
||||
if(userMember == null){
|
||||
userMember = new UserMember();
|
||||
}
|
||||
userMember.setUserId(userId);
|
||||
userMember.setMemberType(memberPrice.getMemberType());
|
||||
userMember.setExpire(memberPrice.getExpires());
|
||||
userMember.setLongs(memberPrice.getLongs());
|
||||
userMember.setExpireDate(now.plusDays(memberPrice.getExpires()));
|
||||
userMember.setCreateTime(now);
|
||||
userMember.setMemberStatus(MemberStatusEnum.NORMAL.getCode());
|
||||
userMemberService.saveOrUpdate(userMember);
|
||||
return vipOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VipOrder addVipOrder(AddVipOrderDto addVipOrder){
|
||||
Long memberPriceId = addVipOrder.getMemberPriceId();
|
||||
MemberPrice memberPrice = memberPriceService.getById(memberPriceId);
|
||||
if(memberPrice == null){
|
||||
throw new ServiceException("VIP价格错误");
|
||||
}
|
||||
VipOrder vipOrder = new VipOrder();
|
||||
vipOrder.setUserId(addVipOrder.getUserId());
|
||||
vipOrder.setVipId(memberPrice.getId());
|
||||
vipOrder.setVipType(memberPrice.getMemberType());
|
||||
vipOrder.setVipName(memberPrice.getName());
|
||||
vipOrder.setVipExpire(memberPrice.getExpires());
|
||||
vipOrder.setVipLongs(memberPrice.getLongs());
|
||||
vipOrder.setPrice(memberPrice.getPrice());
|
||||
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.VIP_ORDER_SUB));
|
||||
vipOrder.setPayStatus(PayStatusEnum.READY_PAY.getCode());
|
||||
this.save(vipOrder);
|
||||
return vipOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VipOrder getByOrderNo(String orderNo){
|
||||
return this.getOne(Wrappers.lambdaQuery(VipOrder.class).eq(VipOrder::getOrderNo,orderNo)
|
||||
.last("limit 1"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void orderSuccess(String orderNo){
|
||||
VipOrder vipOrder = this.getByOrderNo(orderNo);
|
||||
if(vipOrder == null){
|
||||
throw new ServiceException("订单不存在");
|
||||
}
|
||||
if(!PayStatusEnum.READY_PAY.getCode().equals(vipOrder.getPayStatus())){
|
||||
log.error("订单支付状态错误!vipOrder={}", JSON.toJSONString(vipOrder));
|
||||
throw new ServiceException("订单支付状态错误!");
|
||||
}
|
||||
boolean update = this.update(Wrappers.lambdaUpdate(VipOrder.class)
|
||||
.eq(VipOrder::getOrderNo, vipOrder.getOrderNo())
|
||||
.eq(VipOrder::getPayStatus, PayStatusEnum.READY_PAY.getCode())
|
||||
.set(VipOrder::getPayStatus, PayStatusEnum.PAY.getCode()));
|
||||
if(!update){
|
||||
log.error("订单支付状态错误!vipOrder={}", JSON.toJSONString(vipOrder));
|
||||
throw new ServiceException("订单支付状态错误!");
|
||||
}
|
||||
// 新增会员
|
||||
incVip(vipOrder.getUserId(),vipOrder.getVipType(),vipOrder.getVipExpire(),vipOrder.getVipLongs());
|
||||
}
|
||||
|
||||
public boolean incVip(Long userId,Integer memberType,Integer expire,Integer longs){
|
||||
UserMember userMember = userMemberService.getByUserId(userId);
|
||||
LocalDateTime createTime = LocalDateTime.now();
|
||||
// 以前会员失效 , 买了不同的会员等级 不做续费操作
|
||||
if(userMember == null ||
|
||||
!MemberStatusEnum.NORMAL.getCode().equals(userMember.getMemberStatus()) || // 会员不可用
|
||||
userMember.getExpireDate().isBefore(createTime) || // 时间已经失效了 定时任务还没有执行
|
||||
!memberType.equals(userMember.getMemberType()) // 会员类型变更
|
||||
){
|
||||
if(userMember == null){
|
||||
userMember = new UserMember();
|
||||
}
|
||||
userMember.setUserId(userId);
|
||||
userMember.setMemberType(memberType);
|
||||
userMember.setExpire(expire);
|
||||
userMember.setLongs(longs);
|
||||
userMember.setExpireDate(createTime.plusDays(expire));
|
||||
userMember.setCreateTime(createTime);
|
||||
userMember.setMemberStatus(MemberStatusEnum.NORMAL.getCode());
|
||||
userMemberService.saveOrUpdate(userMember);
|
||||
return true;
|
||||
}
|
||||
if(longs == 1){ // 已经是永久会员还买? 什么都不干
|
||||
return true;
|
||||
}
|
||||
userMember.setCreateTime(createTime);
|
||||
userMember.setExpireDate(userMember.getExpireDate().plusDays(expire));
|
||||
userMember.setLongs(longs);
|
||||
userMemberService.saveOrUpdate(userMember);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<VipOrderAdminVo> pageAdmin(PageQuery pageQuery, VipOrderAdminVo bo) {
|
||||
return baseMapper.pageAdmin(pageQuery.build(),bo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user