From a8267af843e8de910a09a4471131358a70c397e0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 15 一月 2025 15:57:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 129 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 121 insertions(+), 8 deletions(-)
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 44e89e9..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
@@ -10,6 +10,7 @@
import com.ruoyi.account.api.model.*;
import com.ruoyi.account.mapper.AppUserMapper;
import com.ruoyi.account.service.*;
+import com.ruoyi.account.util.GeodesyUtil;
import com.ruoyi.account.util.SMSUtil;
import com.ruoyi.account.util.payment.PaymentUtil;
import com.ruoyi.account.util.payment.model.CloseOrderResult;
@@ -21,6 +22,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.redis.annotation.DistributedLock;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.*;
@@ -43,10 +45,7 @@
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import static com.sun.xml.internal.ws.api.model.wsdl.WSDLBoundOperation.ANONYMOUS.optional;
-import static sun.plugin.util.ProgressMonitor.get;
/**
* <p>
@@ -180,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);
@@ -201,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);
@@ -290,6 +289,7 @@
appUser = appUser1;
}else if(null == appUser){
appUser = new AppUser();
+ appUser.setAvatar(registerAccount.getAvatar());
appUser.setName(registerAccount.getName());
appUser.setPhone(registerAccount.getPhone());
appUser.setWxOpenid(openid);
@@ -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);
+ }
+ }
/**
* 递归查询顶级推广人
@@ -691,6 +769,42 @@
String cityCode = citycode.substring(0, 4) + "00";
PageInfo<NearbyReferrerVo> pageInfo = new PageInfo(nearbyReferrer.getPageCurr(), nearbyReferrer.getPageSize());
List<NearbyReferrerVo> list = this.baseMapper.getNearbyReferrer(pageInfo, cityCode, nearbyReferrer);
+ for (NearbyReferrerVo nearbyReferrerVo : list) {
+ switch (nearbyReferrerVo.getVip()){
+ case "1":
+ nearbyReferrerVo.setVip("普通会员");
+ break;
+ case "2":
+ nearbyReferrerVo.setVip("黄金会员");
+ break;
+ case "3":
+ nearbyReferrerVo.setVip("钻石会员");
+ break;
+ case "4":
+ nearbyReferrerVo.setVip("准代理");
+ break;
+ case "5":
+ nearbyReferrerVo.setVip("代理");
+ break;
+ case "6":
+ nearbyReferrerVo.setVip("总代");
+ break;
+ case "7":
+ nearbyReferrerVo.setVip("合伙人");
+ break;
+ }
+
+ String latitude = nearbyReferrerVo.getLatitude();
+ String longitude = nearbyReferrerVo.getLongitude();
+ Double wgs84 = GeodesyUtil.getDistance(longitude + "," + latitude, nearbyReferrer.getLongitude() + "," + nearbyReferrer.getLatitude()).get("WGS84");
+ nearbyReferrerVo.setDistance(wgs84);
+ }
+ list.sort(new Comparator<NearbyReferrerVo>() {
+ @Override
+ public int compare(NearbyReferrerVo o1, NearbyReferrerVo o2) {
+ return o1.getDistance().compareTo(o2.getDistance());
+ }
+ });
return pageInfo.setRecords(list);
}
return null;
@@ -842,7 +956,6 @@
}
@Override
public IPage<AppUser> getAppuserPage1(Integer pageNum, Integer pageSize, AppUser appUser,Integer objectId,List<Long> userIds) {
-
return appUserMapper.getAppuserPage1(new Page<>(pageNum, pageSize), appUser,objectId,userIds);
}
--
Gitblit v1.7.1