会员过期时间

This commit is contained in:
khy 2024-11-05 16:20:09 +08:00
parent 837aa53c11
commit ed01e71dc6
3 changed files with 35 additions and 14 deletions

View File

@ -6,8 +6,10 @@ import cn.iocoder.yudao.module.member.controller.app.type.vo.AppMemberCardTypeRe
import cn.iocoder.yudao.module.member.convert.type.MemberCardTypeConvert; import cn.iocoder.yudao.module.member.convert.type.MemberCardTypeConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.membercardtype.PaidMemberCardTypeDO; import cn.iocoder.yudao.module.member.dal.dataobject.membercardtype.PaidMemberCardTypeDO;
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.dal.dataobject.user.PaidMemberUserDO;
import cn.iocoder.yudao.module.member.service.membercardtype.PaidMemberCardTypeService; import cn.iocoder.yudao.module.member.service.membercardtype.PaidMemberCardTypeService;
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 io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Member; import java.lang.reflect.Member;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -32,6 +35,9 @@ public class AppMemberCardTypeController {
@Resource @Resource
private MemberUserService userService; private MemberUserService userService;
@Resource
private PaidMemberUserService paidMemberUserService;
@GetMapping("/list") @GetMapping("/list")
@Operation(summary = "获得会员卡类型列表") @Operation(summary = "获得会员卡类型列表")
public CommonResult<List<AppMemberCardTypeRespVO>> list() { public CommonResult<List<AppMemberCardTypeRespVO>> list() {
@ -39,7 +45,13 @@ public class AppMemberCardTypeController {
MemberUserDO memberUserDO = userService.getUser(getLoginUserId()); MemberUserDO memberUserDO = userService.getUser(getLoginUserId());
/** 根据用户查询是否有试用会员的类型列表 */ /** 根据用户查询是否有试用会员的类型列表 */
List<PaidMemberCardTypeDO> list = cardService.getCardTypeList(memberUserDO.getActivate()); List<PaidMemberCardTypeDO> list = cardService.getCardTypeList(memberUserDO.getActivate());
return success(MemberCardTypeConvert.INSTANCE.convertList(list)); List<AppMemberCardTypeRespVO> cardTypes = MemberCardTypeConvert.INSTANCE.convertList(list);
//设置过期时间
cardTypes.forEach(card ->{
LocalDateTime expireTime = paidMemberUserService.getDeadLineDay(card.getName(), getLoginUserId());
card.setCardExpirationTime(expireTime);
});
return success(cardTypes);
} }

View File

@ -6,8 +6,13 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "用户 App - 会员卡类型 Response VO") @Schema(description = "用户 App - 会员卡类型 Response VO")
@Data @Data
public class AppMemberCardTypeRespVO { public class AppMemberCardTypeRespVO {
@ -22,4 +27,8 @@ public class AppMemberCardTypeRespVO {
@Schema(description = "会员卡优惠价", example = "12301") @Schema(description = "会员卡优惠价", example = "12301")
private BigDecimal specialPrice; private BigDecimal specialPrice;
@Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDateTime cardExpirationTime;
} }

View File

@ -25,6 +25,8 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.member.controller.admin.user.vo.*; import cn.iocoder.yudao.module.member.controller.admin.user.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.user.PaidMemberUserDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.PaidMemberUserDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -156,17 +158,11 @@ public class PaidMemberUserServiceImpl implements PaidMemberUserService {
public LocalDateTime getDay(String cardName,LocalDateTime dateTime) { public LocalDateTime getDay(String cardName,LocalDateTime dateTime) {
LocalDateTime deadlineDay; LocalDateTime deadlineDay;
PaidMemberCardTypeDO paidMemberCardTypeDO = memberCardTypeService.selectByName(cardName); PaidMemberCardTypeDO paidMemberCardTypeDO = memberCardTypeService.selectByName(cardName);
if (cardName.equals("试用")){ if (cardName.equals("永久")){
deadlineDay = dateTime.plus(Long.parseLong(paidMemberCardTypeDO.getVid()), ChronoUnit.DAYS);
} else if (cardName.equals("月卡")) {
deadlineDay = dateTime.plus(1,ChronoUnit.MONTHS);
} else if (cardName.equals("季卡")) {
deadlineDay = dateTime.plus(3,ChronoUnit.MONTHS);
} else if (cardName.equals("年卡")) {
deadlineDay = dateTime.plus(1,ChronoUnit.YEARS);
} else {
//永久设置为一个非常远的的日期 //永久设置为一个非常远的的日期
deadlineDay = LocalDateTime.of(9999,12,31,23,59,59); deadlineDay = LocalDateTime.of(9999,12,31,23,59,59);
} else {
deadlineDay = dateTime.plus(Long.parseLong(paidMemberCardTypeDO.getVid()), ChronoUnit.DAYS);
} }
return deadlineDay; return deadlineDay;
} }
@ -201,13 +197,17 @@ public class PaidMemberUserServiceImpl implements PaidMemberUserService {
@Override @Override
public PaidMemberUserDO getPaidMemberUserByUid(Long uid) { public PaidMemberUserDO getPaidMemberUserByUid(Long uid) {
List<PaidMemberUserDO> list = paidMemberUserMapper.selectList( List<PaidMemberUserDO> list = paidMemberUserMapper.selectLatestPaidMemberUsers();
new LambdaQueryWrapperX<PaidMemberUserDO>().eq(PaidMemberUserDO::getUid,uid)
.orderByDesc(PaidMemberUserDO::getId));
if(list.isEmpty()){ if(list.isEmpty()){
return null; return null;
} }
PaidMemberUserDO paidMemberUserDO = list.get(0); List<PaidMemberUserDO> filters = list.stream()
.filter(user -> user.getUid().equals(uid))
.collect(Collectors.toList());
PaidMemberUserDO paidMemberUserDO = filters.get(0);
if (paidMemberUserDO.getCardExpirationTime().isBefore(LocalDateTime.now())){
return null;
}
return paidMemberUserDO; return paidMemberUserDO;
} }