init
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package com.ruoyi.xq.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.xq.domain.UserAuth;
|
||||
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
|
||||
|
||||
/**
|
||||
* 用户认证管理Service接口
|
||||
@@ -11,4 +14,6 @@ import com.ruoyi.xq.domain.UserAuth;
|
||||
*/
|
||||
public interface UserAuthService extends IService<UserAuth> {
|
||||
UserAuth getByUserId(Long userId);
|
||||
|
||||
Page<UserAuthAdminVo> pageApp(PageQuery pageQuery, UserAuthAdminVo bo);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package com.ruoyi.xq.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.domain.UserVip;
|
||||
import com.ruoyi.xq.domain.VipOrder;
|
||||
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.AddVipReq;
|
||||
|
||||
/**
|
||||
* VIP用户Service接口
|
||||
@@ -18,4 +23,11 @@ public interface UserVipService extends IService<UserVip> {
|
||||
|
||||
UserVip getByUserVipMaster(Long userId);
|
||||
|
||||
void updateVipOrderAdmin(AddVipReq bo, User user);
|
||||
|
||||
void incsVip(User user, Integer vipType, Integer vipMonth);
|
||||
|
||||
Page<UserVipAdminVo> pageApp(PageQuery pageQuery, UserVipAdminVo bo);
|
||||
|
||||
void removeVip(Long id);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.ruoyi.xq.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.xq.domain.VipOrder;
|
||||
import com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo;
|
||||
|
||||
/**
|
||||
* VIP订单Service接口
|
||||
@@ -11,4 +14,6 @@ import com.ruoyi.xq.domain.VipOrder;
|
||||
*/
|
||||
public interface VipOrderService extends IService<VipOrder> {
|
||||
VipOrder createVipOrder(Long userId, Long vipPriceSettingId);
|
||||
|
||||
Page<VipOrderAdminVo> pageApp(PageQuery pageQuery, VipOrderAdminVo bo);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.ruoyi.xq.service.impl;
|
||||
|
||||
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.common.core.domain.PageQuery;
|
||||
import com.ruoyi.xq.domain.UserAuth;
|
||||
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
|
||||
import com.ruoyi.xq.mapper.UserAuthMapper;
|
||||
import com.ruoyi.xq.service.UserAuthService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -21,4 +24,9 @@ public class UserAuthServiceImpl extends ServiceImpl<UserAuthMapper,UserAuth> im
|
||||
return this.getOne(Wrappers.lambdaQuery(UserAuth.class)
|
||||
.eq(UserAuth::getUserId, userId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<UserAuthAdminVo> pageApp(PageQuery pageQuery, UserAuthAdminVo bo) {
|
||||
return baseMapper.pageApp(pageQuery.build(), bo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,32 @@
|
||||
package com.ruoyi.xq.service.impl;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
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.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.domain.UserVip;
|
||||
import com.ruoyi.xq.domain.VipOrder;
|
||||
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.AddVipReq;
|
||||
import com.ruoyi.xq.enums.common.OrderTypeEnum;
|
||||
import com.ruoyi.xq.enums.pay.PayStatusEnum;
|
||||
import com.ruoyi.xq.enums.vip.VipStatusEnum;
|
||||
import com.ruoyi.xq.enums.vip.VipTypeEnum;
|
||||
import com.ruoyi.xq.manager.OrderNoUtil;
|
||||
import com.ruoyi.xq.mapper.UserVipMapper;
|
||||
import com.ruoyi.xq.service.UserVipService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import com.ruoyi.xq.service.VipOrderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -19,10 +36,12 @@ import java.util.List;
|
||||
* @author 77
|
||||
* @date 2024-03-04
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class UserVipServiceImpl extends ServiceImpl<UserVipMapper,UserVip> implements UserVipService {
|
||||
|
||||
@Autowired
|
||||
private VipOrderService vipOrderService;
|
||||
|
||||
@Override
|
||||
public UserVip getUserVip(Long userId, Integer vipType){
|
||||
return this.getOne(Wrappers.lambdaQuery(UserVip.class)
|
||||
@@ -50,4 +69,70 @@ public class UserVipServiceImpl extends ServiceImpl<UserVipMapper,UserVip> imple
|
||||
return userVipList.stream().max(Comparator.comparing(UserVip::getVipType)).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 后台管理强制覆盖VIP
|
||||
* @param bo
|
||||
* @param user
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateVipOrderAdmin(AddVipReq bo, User user) {
|
||||
VipTypeEnum vipTypeEnum = VipTypeEnum.getByCode(bo.getOpenVipType());
|
||||
if(vipTypeEnum == null || bo.getOpenVipMonthNum() == null || bo.getOpenVipMonthNum() < 1){
|
||||
throw new ServiceException("参数异常!");
|
||||
}
|
||||
String text = String.format("管理员开通%s %s个月", vipTypeEnum.getText(), bo.getOpenVipMonthNum());
|
||||
VipOrder vipOrder = new VipOrder();
|
||||
vipOrder.setUserId(user.getId());
|
||||
vipOrder.setUsercode(user.getUsercode());
|
||||
vipOrder.setVipType(vipTypeEnum.getCode());
|
||||
vipOrder.setVipMonth(bo.getOpenVipMonthNum());
|
||||
vipOrder.setOrderName(text);
|
||||
vipOrder.setOrderNo(OrderNoUtil.gen(OrderTypeEnum.VIP));
|
||||
vipOrder.setPayStatus(PayStatusEnum.NO_PAY.getCode());
|
||||
vipOrder.setAdmin(true);
|
||||
vipOrder.setAdminId(LoginHelper.getUserId());
|
||||
vipOrderService.save(vipOrder);
|
||||
UserVipService userVipService = SpringUtil.getBean(UserVipService.class);
|
||||
userVipService.incsVip(user,bo.getOpenVipType(),bo.getOpenVipMonthNum());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incsVip(User user, Integer vipType, Integer vipMonth){
|
||||
// TODO 加锁
|
||||
UserVip userVip = this.getUserVip(user.getId(),vipType);
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 以前会员失效
|
||||
if(userVip == null ||
|
||||
!VipStatusEnum.NORMAL.getCode().equals(userVip.getVipStatus()) || // 会员不可用
|
||||
userVip.getVipTimeout().isBefore(now)){
|
||||
if(userVip == null){
|
||||
userVip = new UserVip();
|
||||
}
|
||||
userVip.setUserId(user.getId());
|
||||
userVip.setUsercode(user.getUsercode());
|
||||
userVip.setVipType(vipType);
|
||||
LocalDate expireDate = now.plusMonths(vipMonth).plusDays(1).toLocalDate();
|
||||
userVip.setVipTimeout(LocalDateTime.of(expireDate, LocalTime.MIN));
|
||||
userVip.setVipStatus(VipStatusEnum.NORMAL.getCode());
|
||||
this.saveOrUpdate(userVip);
|
||||
}else{
|
||||
userVip.setVipTimeout(userVip.getVipTimeout().plusMonths(vipMonth));
|
||||
this.saveOrUpdate(userVip);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<UserVipAdminVo> pageApp(PageQuery pageQuery, UserVipAdminVo bo) {
|
||||
return baseMapper.pageApp(pageQuery.build(), bo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeVip(Long id) {
|
||||
this.update(Wrappers.lambdaUpdate(UserVip.class)
|
||||
.eq(UserVip::getId,id)
|
||||
.set(UserVip::getVipStatus, VipStatusEnum.CLOSE.getCode()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.ruoyi.xq.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.domain.VipOrder;
|
||||
import com.ruoyi.xq.domain.VipPrice;
|
||||
import com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo;
|
||||
import com.ruoyi.xq.enums.common.OrderTypeEnum;
|
||||
import com.ruoyi.xq.enums.pay.PayStatusEnum;
|
||||
import com.ruoyi.xq.manager.OrderNoUtil;
|
||||
@@ -51,4 +54,9 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
|
||||
this.save(vipOrder);
|
||||
return vipOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<VipOrderAdminVo> pageApp(PageQuery pageQuery, VipOrderAdminVo bo) {
|
||||
return baseMapper.pageApp(pageQuery.build(), bo);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user