From a237ba59ee5c30343dc79871a6c976333830b24f Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 16 一月 2025 16:26:46 +0800
Subject: [PATCH] 修改
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 148 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 132 insertions(+), 16 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 ed32161..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;
@@ -20,6 +21,8 @@
import com.ruoyi.account.vo.*;
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.*;
@@ -42,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>
@@ -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);
@@ -289,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);
@@ -466,7 +467,8 @@
weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.TRIAL, filePath + fileName);
appUser.setQrCode(accessPath + fileName);
this.updateById(appUser);
- }
+
+ }
LoginVo loginVo = new LoginVo();
loginVo.setSkipPage(1);
loginVo.setFirstTime(null == appUser1);
@@ -606,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);
+ }
+ }
/**
* 递归查询顶级推广人
@@ -679,7 +759,7 @@
* @return
*/
@Override
- public List<NearbyReferrerVo> getNearbyReferrer(NearbyReferrer nearbyReferrer) {
+ public PageInfo<NearbyReferrerVo> getNearbyReferrer(NearbyReferrer nearbyReferrer) {
//使用地图获取省市区数据
String citycode = TencentMapUtil.inverseGeographicalAnalysis(nearbyReferrer.getLongitude(), nearbyReferrer.getLatitude(), false);
if(StringUtils.isEmpty(citycode)){
@@ -687,8 +767,45 @@
}
if(null != citycode){
String cityCode = citycode.substring(0, 4) + "00";
- List<NearbyReferrerVo> list = this.baseMapper.getNearbyReferrer(cityCode, nearbyReferrer);
- return list;
+ 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;
}
@@ -750,7 +867,7 @@
//注册X天后没有升级成黄金会员则自动解绑推广人
//解绑推广人
- Set<Long> unbind_promoter = redisTemplate.opsForZSet().range("unbind_promoter", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC));
+ Set<Long> unbind_promoter = redisTemplate.opsForZSet().rangeByScore("unbind_promoter", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC));
if(unbind_promoter.size() > 0){
List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).isNotNull(AppUser::getInviteUserId)
.eq(AppUser::getStatus, 1).in(AppUser::getId, unbind_promoter));
@@ -761,7 +878,7 @@
}
}
//可更换推广人
- Set<Long> replaceable = redisTemplate.opsForZSet().range("replaceable", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC));
+ Set<Long> replaceable = redisTemplate.opsForZSet().rangeByScore("replaceable", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC));
if(replaceable.size() > 0){
List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getChangePromoter, 0)
.eq(AppUser::getStatus, 1).in(AppUser::getId, unbind_promoter));
@@ -783,7 +900,7 @@
if(null == cacheObject){
redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES);
}else{
- Long duration = (Long) cacheObject;
+ Integer duration = (Integer) cacheObject;
duration += 10;
//满足一个小时,开始发放积分,计时归0
if(60 >= duration){
@@ -839,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);
}
@@ -958,7 +1074,7 @@
public void closeOrder() {
//订单支付数据
long second = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
- Set<String> orderPayment = redisTemplate.opsForZSet().range("BalanceRecharge", 0, second);
+ Set<String> orderPayment = redisTemplate.opsForZSet().rangeByScore("BalanceRecharge", 0, second);
if(orderPayment.size() > 0){
List<BalancePayment> list = balancePaymentService.list(new LambdaQueryWrapper<BalancePayment>().in(BalancePayment::getId, orderPayment));
for (BalancePayment order : list) {
--
Gitblit v1.7.1