|
@@ -1,11 +1,16 @@
|
|
package com.citu.module.menduner.system.mq.consumer;
|
|
package com.citu.module.menduner.system.mq.consumer;
|
|
|
|
|
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
|
+import com.citu.module.menduner.system.controller.base.user.vip.UserEntitlementSaveReqVO;
|
|
import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.order.TradeOrderDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
|
|
import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.user.UserEntitlementDO;
|
|
|
|
+import com.citu.module.menduner.system.dal.dataobject.user.UserPackageDO;
|
|
import com.citu.module.menduner.system.enums.TradeOrderTypeMq;
|
|
import com.citu.module.menduner.system.enums.TradeOrderTypeMq;
|
|
-import com.citu.module.menduner.system.enums.user.UserVipFlagEnum;
|
|
|
|
import com.citu.module.menduner.system.service.order.TradeOrderService;
|
|
import com.citu.module.menduner.system.service.order.TradeOrderService;
|
|
import com.citu.module.menduner.system.service.user.MdeUserService;
|
|
import com.citu.module.menduner.system.service.user.MdeUserService;
|
|
|
|
+import com.citu.module.menduner.system.service.user.UserEntitlementService;
|
|
|
|
+import com.citu.module.menduner.system.service.user.UserPackageService;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
|
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
|
import org.apache.rocketmq.spring.core.RocketMQListener;
|
|
import org.apache.rocketmq.spring.core.RocketMQListener;
|
|
@@ -35,6 +40,12 @@ public class UserMemberConsumer implements RocketMQListener<Long> {
|
|
@Resource
|
|
@Resource
|
|
private MdeUserService mdeUserService;
|
|
private MdeUserService mdeUserService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private UserPackageService userPackageService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private UserEntitlementService userEntitleService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 判断给定的时间是否已过期
|
|
* 判断给定的时间是否已过期
|
|
**/
|
|
**/
|
|
@@ -47,27 +58,29 @@ public class UserMemberConsumer implements RocketMQListener<Long> {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @DSTransactional
|
|
public void onMessage(Long orderId) {
|
|
public void onMessage(Long orderId) {
|
|
log.info("接收到队列消息[{}]", orderId);
|
|
log.info("接收到队列消息[{}]", orderId);
|
|
TradeOrderDO order = tradeOrderService.getOrder(orderId);
|
|
TradeOrderDO order = tradeOrderService.getOrder(orderId);
|
|
- UserVipFlagEnum vipFlagEnum = UserVipFlagEnum.from(order.getType());
|
|
|
|
|
|
+// UserVipFlagEnum vipFlagEnum = UserVipFlagEnum.from(order.getType());
|
|
// 查询用户
|
|
// 查询用户
|
|
MdeUserDO user = mdeUserService.getMdeUser(order.getUserId());
|
|
MdeUserDO user = mdeUserService.getMdeUser(order.getUserId());
|
|
- if (null == vipFlagEnum || null == user) {
|
|
|
|
|
|
+ UserPackageDO packageDO = userPackageService.getUserPackage(order.getSpuId());
|
|
|
|
+ if (null == packageDO || null == user) {
|
|
throw exception(MDE_USER_NOT_EXISTS);
|
|
throw exception(MDE_USER_NOT_EXISTS);
|
|
}
|
|
}
|
|
// 不算今天
|
|
// 不算今天
|
|
- long day = Long.parseLong(vipFlagEnum.getFlag()) + 1;
|
|
|
|
|
|
+ long day = packageDO.getDay() + 1;
|
|
|
|
|
|
if (!StringUtils.hasText(user.getVipFlag())) {
|
|
if (!StringUtils.hasText(user.getVipFlag())) {
|
|
// 没有开过会员
|
|
// 没有开过会员
|
|
- user.setVipFlag(vipFlagEnum.getFlag());
|
|
|
|
|
|
+ user.setVipFlag(String.valueOf(packageDO.getId()));
|
|
user.setVipExpireDate(LocalDateTime.now().plusDays(day));
|
|
user.setVipExpireDate(LocalDateTime.now().plusDays(day));
|
|
} else {
|
|
} else {
|
|
// 开过会员
|
|
// 开过会员
|
|
if (isExpired(user.getVipExpireDate())) {
|
|
if (isExpired(user.getVipExpireDate())) {
|
|
// 过期值覆盖
|
|
// 过期值覆盖
|
|
- user.setVipFlag(vipFlagEnum.getFlag());
|
|
|
|
|
|
+ user.setVipFlag(String.valueOf(packageDO.getId()));
|
|
// 不算今天
|
|
// 不算今天
|
|
user.setVipExpireDate(LocalDateTime.now().plusDays(day));
|
|
user.setVipExpireDate(LocalDateTime.now().plusDays(day));
|
|
} else {
|
|
} else {
|
|
@@ -75,14 +88,14 @@ public class UserMemberConsumer implements RocketMQListener<Long> {
|
|
// 累加时间,如果当前权益大于user.getVipFlag()则覆盖,并且累加时间
|
|
// 累加时间,如果当前权益大于user.getVipFlag()则覆盖,并且累加时间
|
|
// TODO 不允许小于当前权益
|
|
// TODO 不允许小于当前权益
|
|
Long currentVipFlag = Long.parseLong(user.getVipFlag());
|
|
Long currentVipFlag = Long.parseLong(user.getVipFlag());
|
|
- Long newVipFlag = Long.parseLong(vipFlagEnum.getFlag());
|
|
|
|
|
|
+ Long newVipFlag = packageDO.getId();
|
|
|
|
|
|
if (currentVipFlag == Long.parseLong(user.getVipFlag())) {
|
|
if (currentVipFlag == Long.parseLong(user.getVipFlag())) {
|
|
// 买一样的,加天数
|
|
// 买一样的,加天数
|
|
user.setVipExpireDate(user.getVipExpireDate().plusDays(day));
|
|
user.setVipExpireDate(user.getVipExpireDate().plusDays(day));
|
|
} else if (newVipFlag > currentVipFlag) {
|
|
} else if (newVipFlag > currentVipFlag) {
|
|
// 新套餐大于套餐
|
|
// 新套餐大于套餐
|
|
- user.setVipFlag(vipFlagEnum.getFlag());
|
|
|
|
|
|
+ user.setVipFlag(String.valueOf(packageDO.getId()));
|
|
user.setVipExpireDate(user.getVipExpireDate().plusDays(day));
|
|
user.setVipExpireDate(user.getVipExpireDate().plusDays(day));
|
|
} else {
|
|
} else {
|
|
// 新套餐小于套餐
|
|
// 新套餐小于套餐
|
|
@@ -90,8 +103,35 @@ public class UserMemberConsumer implements RocketMQListener<Long> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ // 修改会员权益
|
|
mdeUserService.updateVip(user.getId(), user.getVipFlag(), user.getVipExpireDate());
|
|
mdeUserService.updateVip(user.getId(), user.getVipFlag(), user.getVipExpireDate());
|
|
|
|
+ // 查询用户权益
|
|
|
|
+ UserEntitlementDO entitlement = userEntitleService.getByUserId(user.getId());
|
|
|
|
+
|
|
|
|
+ if (null == entitlement) {
|
|
|
|
+ userEntitleService.createUserEntitlement(UserEntitlementSaveReqVO.builder()
|
|
|
|
+ .userId(user.getId())
|
|
|
|
+ .resumeRefreshCount(packageDO.getResumeRefreshCount())
|
|
|
|
+ .resumePrivacy(packageDO.getResumePrivacy())
|
|
|
|
+ .priorityRecommend(packageDO.getPriorityRecommend())
|
|
|
|
+ .resumeTemplate(packageDO.getResumeTemplate())
|
|
|
|
+ .viewersList(packageDO.getViewersList())
|
|
|
|
+ .salaryReport(packageDO.getSalaryReport())
|
|
|
|
+ .build()
|
|
|
|
+ );
|
|
|
|
+ } else {
|
|
|
|
+ userEntitleService.updateUserEntitlement(UserEntitlementSaveReqVO.builder()
|
|
|
|
+ .userId(user.getId())
|
|
|
|
+ .resumeRefreshCount(packageDO.getResumeRefreshCount() + packageDO.getResumeRefreshCount())
|
|
|
|
+ // 覆盖权限,以新套餐为准,不会出现,买大权益套餐还能买小权益套餐的情况
|
|
|
|
+ .resumePrivacy(packageDO.getResumePrivacy())
|
|
|
|
+ .priorityRecommend(packageDO.getPriorityRecommend())
|
|
|
|
+ .resumeTemplate(packageDO.getResumeTemplate())
|
|
|
|
+ .viewersList(packageDO.getViewersList())
|
|
|
|
+ .salaryReport(packageDO.getSalaryReport())
|
|
|
|
+ .build()
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|