添加会员类型

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;
/** 会员类型 1=正式 2=试用 */
private Integer memberType;
/** 到期时间 */
private Instant expireTime;
@@ -48,11 +48,12 @@ public class MemberGrantService {
* 发放会员权益(按天数)
* <p>1. 续费会员(不存在则创建,存在则延期) 2. 发放功能权限 3. 发放菜单权限</p>
*
* @param userId 用户ID
* @param days 会员天数
* @param userId 用户ID
* @param days 会员天数
* @param memberType 会员类型 1=正式 2=试用;发正式必置正式,发试用时若已是正式则保持正式(一旦正式不可回退)
*/
@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);
// 1. 续费会员
@@ -61,10 +62,16 @@ public class MemberGrantService {
MemberUser newMember = new MemberUser();
newMember.setUserId(userId);
newMember.setExpireTime(expireTime);
newMember.setMemberType(memberType);
memberUserMapper.insert(newMember);
} else {
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. 发放功能权限
@@ -141,7 +141,7 @@ public class MemberProductService {
// 查商品拿 durationDays,发放会员权益
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());
log.info("会员支付成功处理完成 orderNo:{} userId:{} durationDays:{}", orderNo, order.getUserId(), product.getDurationDays());
@@ -52,9 +52,7 @@ public class MemberStatusService {
public MemberStatusDto status() {
Long userId = UserSecurityTool.getUserId();
MemberUser memberUser = memberUserMapper.selectOne(
new LambdaQueryWrapper<MemberUser>().eq(MemberUser::getUserId, userId)
);
MemberUser memberUser = memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUser>().eq(MemberUser::getUserId, userId));
MemberStatusDto dto = new MemberStatusDto();
if (memberUser == null) {
@@ -63,6 +61,7 @@ public class MemberStatusService {
}
dto.setIsMember(memberUser.getExpireTime().isAfter(Instant.now()));
dto.setMemberType(memberUser.getMemberType());
dto.setExpireTime(memberUser.getExpireTime());
dto.setCreateTime(memberUser.getCreateTime());
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);
return user;
@@ -121,7 +121,7 @@ public class UserRegisterService {
userInviteMapper.insert(invite);
// 发放邀请人会员权益
memberGrantService.grant(inviter.getId(), inviteDays);
memberGrantService.grant(inviter.getId(), inviteDays, 2); // 2=试用
messageService.sendToUser(1, inviter.getId(), "邀请奖励到账", "您邀请的好友已成功注册," + inviteDays + "天会员权益已到账", null, null);
}