添加会员类型
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,9 @@ public class MemberUser {
|
||||
/** 用户ID */
|
||||
private Long userId;
|
||||
|
||||
/** 会员类型 1=正式 2=试用;一旦变为正式(付费)不可再回退为试用 */
|
||||
private Integer memberType;
|
||||
|
||||
/** 会员到期时间 */
|
||||
private Instant expireTime;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user