From 22be02314dae32d2fcfa2f3f31e7213cbbca5260 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 15 一月 2025 15:34:49 +0800
Subject: [PATCH] 修改bug
---
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java | 5 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 86 +++++++++++++++++++++++++++-
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 33 +++++-----
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 11 +++
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java | 6 ++
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java | 9 +++
6 files changed, 129 insertions(+), 21 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
index 60c15e0..e7a43e0 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java
@@ -111,6 +111,11 @@
}
@Override
+ public void vipDemotion(Long appUserId) {
+ R.fail("检查会员等级降级失败:" + cause.getMessage());
+ }
+
+ @Override
public void demotionDetection() {
R.fail("用户降级检测失败:" + cause.getMessage());
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 6d3c044..3e367f9 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -101,6 +101,15 @@
/**
+ * 检查会员降级
+ * @param appUserId
+ */
+ @PostMapping("/app-user/vipDemotion")
+ void vipDemotion(@RequestParam("appUserId") Long appUserId);
+
+
+
+ /**
* 用户降级检测
*/
@PostMapping("/app-user/demotionDetection")
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
index f6d33b5..8474fe0 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -977,6 +977,17 @@
/**
+ * 检查会员降级
+ * @param appUserId
+ */
+ @PostMapping("/app-user/vipDemotion")
+ public void vipDemotion(@RequestParam("appUserId") Long appUserId){
+ appUserService.vipDemotion(appUserId);
+ }
+
+
+
+ /**
* 用户降级检测
*/
@PostMapping("/demotionDetection")
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java
index 7dc3c41..f0671a0 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java
@@ -94,6 +94,12 @@
*/
void vipUpgrade(Long appUserId);
+ /**
+ * 处理用户会员降级
+ * @param appUserId
+ */
+ void vipDemotion(Long appUserId);
+
/**
* 降级检测
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
index 6f84c3e..7567718 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -179,7 +179,8 @@
}
//查询用户是否注册,没有注册则跳转到注册页面
- AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone()).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
+ AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone())
+ .ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
if(null == appUser){
LoginVo loginVo = new LoginVo();
loginVo.setSkipPage(2);
@@ -200,8 +201,7 @@
loginUser.setUsername(appUser.getName());
Map<String, Object> tokenApplet = tokenService.createTokenApplet(loginUser);
loginVo.setToken(tokenApplet.get("access_token").toString());
- loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString()));
-
+ loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString()));
appUser.setLastLoginTime(LocalDateTime.now());
this.updateById(appUser);
return R.ok(loginVo);
@@ -608,7 +608,85 @@
}
}
-
+ /**
+ * 处理会员降级
+ * @param appUserId
+ */
+ @Override
+ public void vipDemotion(Long appUserId) {
+ AppUser appUser = this.getById(appUserId);
+ Integer vipId = appUser.getVipId();
+ //黄金会员
+ VipSetting vipSetting2 = vipSettingClient.getVipSetting(2).getData();
+ //消费积分满足升级
+ if(1 == vipSetting2.getVipLevelUpShopRole() && appUser.getShopPoint() >= vipSetting2.getVipLevelUpShop() && appUser.getVipId() > 2){
+ appUser.setVipId(2);
+ this.updateById(appUser);
+ //添加等级变化记录
+ UserChangeLog userChangeLog = new UserChangeLog();
+ userChangeLog.setDelFlag(0);
+ userChangeLog.setCreateTime(LocalDateTime.now());
+ userChangeLog.setAppUserId(appUser.getId());
+ userChangeLog.setBeforeVipId(vipId);
+ userChangeLog.setAfterVipId(appUser.getVipId());
+ userChangeLog.setChangeType(0);
+ userChangeLogService.save(userChangeLog);
+ return;
+ }
+ //返佣积分满足升级
+ if(1 == vipSetting2.getVipLevelUpShareRole() && appUser.getSharePoint() >= vipSetting2.getVipLevelUpShare() && appUser.getVipId() > 2){
+ appUser.setVipId(2);
+ this.updateById(appUser);
+ //添加等级变化记录
+ UserChangeLog userChangeLog = new UserChangeLog();
+ userChangeLog.setDelFlag(0);
+ userChangeLog.setCreateTime(LocalDateTime.now());
+ userChangeLog.setAppUserId(appUser.getId());
+ userChangeLog.setBeforeVipId(vipId);
+ userChangeLog.setAfterVipId(appUser.getVipId());
+ userChangeLog.setChangeType(0);
+ userChangeLogService.save(userChangeLog);
+ return;
+ }
+ //下级人数满足升级
+ Integer vipLevelUpNumRole = vipSetting2.getVipLevelUpNumRole();
+ Integer vipDirectNum = vipSetting2.getVipDirectNum();
+ Integer vipTeamNum = vipSetting2.getVipTeamNum();
+ if(1 == vipLevelUpNumRole && appUser.getVipId() > 2){
+ //查询直推用户达到X人或者团队人数达到X人后,可升级
+ //直推用户数
+ long count = this.count(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1).eq(AppUser::getInviteUserId, appUserId));
+ //团队用户数
+ List<AppUser> subordinate = getSubordinate(appUserId);
+ if(vipDirectNum <= count || vipTeamNum <= subordinate.size()){
+ appUser.setVipId(2);
+ this.updateById(appUser);
+ //添加等级变化记录
+ UserChangeLog userChangeLog = new UserChangeLog();
+ userChangeLog.setDelFlag(0);
+ userChangeLog.setCreateTime(LocalDateTime.now());
+ userChangeLog.setAppUserId(appUser.getId());
+ userChangeLog.setBeforeVipId(vipId);
+ userChangeLog.setAfterVipId(appUser.getVipId());
+ userChangeLog.setChangeType(0);
+ userChangeLogService.save(userChangeLog);
+ return;
+ }
+ }
+ if(appUser.getVipId() > 2){
+ appUser.setVipId(1);
+ this.updateById(appUser);
+ //添加等级变化记录
+ UserChangeLog userChangeLog = new UserChangeLog();
+ userChangeLog.setDelFlag(0);
+ userChangeLog.setCreateTime(LocalDateTime.now());
+ userChangeLog.setAppUserId(appUser.getId());
+ userChangeLog.setBeforeVipId(vipId);
+ userChangeLog.setAfterVipId(appUser.getVipId());
+ userChangeLog.setChangeType(0);
+ userChangeLogService.save(userChangeLog);
+ }
+ }
/**
* 递归查询顶级推广人
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 1bcaf22..940e5a4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -6,10 +6,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.account.api.feignClient.AppUserClient;
-import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient;
-import com.ruoyi.account.api.feignClient.UserCouponClient;
-import com.ruoyi.account.api.feignClient.UserPointClient;
+import com.ruoyi.account.api.feignClient.*;
import com.ruoyi.account.api.model.*;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
@@ -89,9 +86,6 @@
private UserPointClient userPointClient;
@Resource
- private PointSettingClient pointSettingClient;
-
- @Resource
private OrderBalancePaymentService orderBalancePaymentService;
@Resource
@@ -115,6 +109,9 @@
@Resource
private UserCouponClient userCouponClient;
+
+ @Resource
+ private UserChangeLogClient userChangeLogClient;
@@ -518,11 +515,6 @@
}
appUser.setTotalPoint(appUser.getTotalPoint() - shopPoint);
- boolean vipDemotion = vipDemotion(appUser.getShopPoint(), appUser.getVipId());
- if(vipDemotion){
- appUser.setVipId(appUser.getVipId() - 1);
- }
-
//构建积分流水明细
UserPoint userPoint = new UserPoint();
userPoint.setType(1);
@@ -534,6 +526,12 @@
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
appUserClient.editAppUserById(appUser);
+
+ //降级检测
+ boolean vipDemotion = vipDemotion(appUser.getShopPoint(), appUser.getVipId());
+ if(vipDemotion){
+ appUserClient.vipDemotion(appUser.getId());
+ }
//回退优惠券状态
if(null != order.getUserCouponId()){
UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
@@ -650,11 +648,6 @@
}
appUser.setTotalPoint(appUser.getTotalPoint() - shopPoint);
- boolean vipDemotion = vipDemotion(appUser.getShopPoint(), appUser.getVipId());
- if(vipDemotion){
- appUser.setVipId(appUser.getVipId() - 1);
- }
-
//构建积分流水明细
UserPoint userPoint = new UserPoint();
userPoint.setType(1);
@@ -666,6 +659,12 @@
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
appUserClient.editAppUserById(appUser);
+
+ //降级检测
+ boolean vipDemotion = vipDemotion(appUser.getShopPoint(), appUser.getVipId());
+ if(vipDemotion){
+ appUserClient.vipDemotion(appUser.getId());
+ }
//回退优惠券状态
if(null != order.getUserCouponId()){
--
Gitblit v1.7.1