添加会员类型

This commit is contained in:
zk
2026-06-24 11:13:44 +08:00
parent b0dd5c98d7
commit 77186cfde7
6 changed files with 22 additions and 10 deletions
@@ -15,6 +15,9 @@ public class MemberStatusDto {
/** 是否是会员 */ /** 是否是会员 */
private Boolean isMember; private Boolean isMember;
/** 会员类型 1=正式 2=试用 */
private Integer memberType;
/** 到期时间 */ /** 到期时间 */
private Instant expireTime; private Instant expireTime;
@@ -48,11 +48,12 @@ public class MemberGrantService {
* 发放会员权益(按天数) * 发放会员权益(按天数)
* <p>1. 续费会员(不存在则创建,存在则延期) 2. 发放功能权限 3. 发放菜单权限</p> * <p>1. 续费会员(不存在则创建,存在则延期) 2. 发放功能权限 3. 发放菜单权限</p>
* *
* @param userId 用户ID * @param userId 用户ID
* @param days 会员天数 * @param days 会员天数
* @param memberType 会员类型 1=正式 2=试用;发正式必置正式,发试用时若已是正式则保持正式(一旦正式不可回退)
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void grant(Long userId, int days) { public void grant(Long userId, int days, int memberType) {
Instant expireTime = Instant.now().plus(days, ChronoUnit.DAYS); Instant expireTime = Instant.now().plus(days, ChronoUnit.DAYS);
// 1. 续费会员 // 1. 续费会员
@@ -61,10 +62,16 @@ public class MemberGrantService {
MemberUser newMember = new MemberUser(); MemberUser newMember = new MemberUser();
newMember.setUserId(userId); newMember.setUserId(userId);
newMember.setExpireTime(expireTime); newMember.setExpireTime(expireTime);
newMember.setMemberType(memberType);
memberUserMapper.insert(newMember); memberUserMapper.insert(newMember);
} else { } else {
Instant baseTime = memberUser.getExpireTime().isAfter(Instant.now()) ? memberUser.getExpireTime() : Instant.now(); Instant baseTime = memberUser.getExpireTime().isAfter(Instant.now()) ? memberUser.getExpireTime() : Instant.now();
memberUserMapper.update(null, new LambdaUpdateWrapper<MemberUser>().eq(MemberUser::getId, memberUser.getId()).set(MemberUser::getExpireTime, baseTime.plus(days, ChronoUnit.DAYS))); LambdaUpdateWrapper<MemberUser> update = new LambdaUpdateWrapper<MemberUser>().eq(MemberUser::getId, memberUser.getId()).set(MemberUser::getExpireTime, baseTime.plus(days, ChronoUnit.DAYS));
// 发正式则升级为正式;发试用时不改类型,避免把已有的正式会员降级(一旦正式不可回退)
if (memberType == 1) {
update.set(MemberUser::getMemberType, 1);
}
memberUserMapper.update(null, update);
} }
// 2. 发放功能权限 // 2. 发放功能权限
@@ -141,7 +141,7 @@ public class MemberProductService {
// 查商品拿 durationDays,发放会员权益 // 查商品拿 durationDays,发放会员权益
MemberProduct product = memberProductMapper.selectById(order.getProductId()); MemberProduct product = memberProductMapper.selectById(order.getProductId());
memberGrantService.grant(order.getUserId(), product.getDurationDays()); memberGrantService.grant(order.getUserId(), product.getDurationDays(), 1); // 1=正式
messageService.sendToUser(3, order.getUserId(), "会员购买成功", "您已成功购买会员," + product.getDurationDays() + "天会员权益已到账", "memberOrder", order.getId()); messageService.sendToUser(3, order.getUserId(), "会员购买成功", "您已成功购买会员," + product.getDurationDays() + "天会员权益已到账", "memberOrder", order.getId());
log.info("会员支付成功处理完成 orderNo:{} userId:{} durationDays:{}", orderNo, order.getUserId(), product.getDurationDays()); log.info("会员支付成功处理完成 orderNo:{} userId:{} durationDays:{}", orderNo, order.getUserId(), product.getDurationDays());
@@ -52,9 +52,7 @@ public class MemberStatusService {
public MemberStatusDto status() { public MemberStatusDto status() {
Long userId = UserSecurityTool.getUserId(); Long userId = UserSecurityTool.getUserId();
MemberUser memberUser = memberUserMapper.selectOne( MemberUser memberUser = memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUser>().eq(MemberUser::getUserId, userId));
new LambdaQueryWrapper<MemberUser>().eq(MemberUser::getUserId, userId)
);
MemberStatusDto dto = new MemberStatusDto(); MemberStatusDto dto = new MemberStatusDto();
if (memberUser == null) { if (memberUser == null) {
@@ -63,6 +61,7 @@ public class MemberStatusService {
} }
dto.setIsMember(memberUser.getExpireTime().isAfter(Instant.now())); dto.setIsMember(memberUser.getExpireTime().isAfter(Instant.now()));
dto.setMemberType(memberUser.getMemberType());
dto.setExpireTime(memberUser.getExpireTime()); dto.setExpireTime(memberUser.getExpireTime());
dto.setCreateTime(memberUser.getCreateTime()); dto.setCreateTime(memberUser.getCreateTime());
dto.setUpdateTime(memberUser.getUpdateTime()); dto.setUpdateTime(memberUser.getUpdateTime());
@@ -87,7 +87,7 @@ public class UserRegisterService {
} }
// 发放新用户注册会员权益 // 发放新用户注册会员权益
memberGrantService.grant(user.getId(), registerDays); memberGrantService.grant(user.getId(), registerDays, 2); // 2=试用
messageService.sendToUser(1, user.getId(), "欢迎加入OfferPie", "注册成功,已赠送您" + registerDays + "天会员权益,快来体验AI求职助手吧!", null, null); messageService.sendToUser(1, user.getId(), "欢迎加入OfferPie", "注册成功,已赠送您" + registerDays + "天会员权益,快来体验AI求职助手吧!", null, null);
return user; return user;
@@ -121,7 +121,7 @@ public class UserRegisterService {
userInviteMapper.insert(invite); userInviteMapper.insert(invite);
// 发放邀请人会员权益 // 发放邀请人会员权益
memberGrantService.grant(inviter.getId(), inviteDays); memberGrantService.grant(inviter.getId(), inviteDays, 2); // 2=试用
messageService.sendToUser(1, inviter.getId(), "邀请奖励到账", "您邀请的好友已成功注册," + inviteDays + "天会员权益已到账", null, null); messageService.sendToUser(1, inviter.getId(), "邀请奖励到账", "您邀请的好友已成功注册," + inviteDays + "天会员权益已到账", null, null);
} }
@@ -23,6 +23,9 @@ public class MemberUser {
/** 用户ID */ /** 用户ID */
private Long userId; private Long userId;
/** 会员类型 1=正式 2=试用;一旦变为正式(付费)不可再回退为试用 */
private Integer memberType;
/** 会员到期时间 */ /** 会员到期时间 */
private Instant expireTime; private Instant expireTime;