From d1cab4b2f2690d1331f12f0d9de78bbbf926f390 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 16 一月 2025 14:27:51 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/qijisheng --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 393 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 345 insertions(+), 48 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 c0480f9..899ca9e 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 @@ -3,19 +3,17 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.account.api.model.AppUserShop; -import com.ruoyi.account.api.model.UserChangeLog; -import com.ruoyi.account.api.model.UserPoint; +import com.ruoyi.account.api.model.*; import com.ruoyi.account.mapper.AppUserMapper; -import com.ruoyi.account.api.model.AppUser; -import com.ruoyi.account.service.AppUserService; -import com.ruoyi.account.service.AppUserShopService; -import com.ruoyi.account.service.UserChangeLogService; -import com.ruoyi.account.service.UserPointService; +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; import com.ruoyi.account.util.tencentMap.TencentMapUtil; import com.ruoyi.account.util.weChat.EnvVersion; import com.ruoyi.account.util.weChat.WXCore; @@ -23,35 +21,31 @@ 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.PointSetting; -import com.ruoyi.other.api.domain.Region; -import com.ruoyi.other.api.domain.Shop; -import com.ruoyi.other.api.domain.VipSetting; -import com.ruoyi.other.api.feignClient.PointSettingClient; -import com.ruoyi.other.api.feignClient.RegionClient; -import com.ruoyi.other.api.feignClient.ShopClient; -import com.ruoyi.other.api.feignClient.VipSettingClient; +import com.ruoyi.other.api.domain.*; +import com.ruoyi.other.api.feignClient.*; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; +import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.core.util.UuidUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.time.ZoneOffset; 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> @@ -61,6 +55,7 @@ * @author luodangjia * @since 2024-11-21 */ +@Slf4j @Service public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> implements AppUserService { @@ -105,6 +100,17 @@ @Resource private RegionClient regionClient; + + @Resource + private CouponInfoClient couponInfoClient; + + @Resource + private UserCouponService userCouponService; + + @Resource + private RedisTemplate redisTemplate; + @Resource + private BalancePaymentService balancePaymentService; /** @@ -173,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); @@ -194,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); @@ -241,8 +247,8 @@ redisService.setCacheObject(smsCode.getPhone(), code, 300L, TimeUnit.SECONDS); return R.ok(); } - - + + /** * 注册账号 * @param registerAccount @@ -283,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); @@ -330,6 +337,7 @@ } appUser.setLavePoint(regisPoint); appUser.setAvailablePoint(regisPoint1); + appUser.setTotalAvailablePoint(regisPoint1); if(null != pointSetting && 1 == pointSetting.getGetRegisPointGift()){ appUser.setTransferablePoint(regisPoint1); } @@ -354,6 +362,15 @@ appUser.setProvinceCode(region.getCode()); } this.save(appUser); + //添加定时任务队列 + VipSetting vipSetting = vipSettingClient.getVipSetting(1).getData(); + Integer vipCancelDay = vipSetting.getVipCancelDay(); + Integer vipChangeDay = vipSetting.getVipChangeDay(); + //解绑推广人 + redisTemplate.opsForZSet().add("unbind_promoter", appUser.getId().toString(), LocalDateTime.now().plusDays(vipCancelDay).toEpochSecond(ZoneOffset.UTC)); + //可更换推广人 + redisTemplate.opsForZSet().add("replaceable", appUser.getId().toString(), LocalDateTime.now().plusDays(vipChangeDay).toEpochSecond(ZoneOffset.UTC)); + //增加积分变动记录 if(0 == old && regisPoint > 0){ //构建积分流水记录 @@ -365,6 +382,26 @@ userPoint.setCreateTime(LocalDateTime.now()); userPoint.setAppUserId(appUser.getId()); userPointService.save(userPoint); + } + //获取优惠券 + if(0 == old){ + List<CouponInfo> list = couponInfoClient.getCouponInfoByPersonType(4).getData(); + for (CouponInfo couponInfo : list) { + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setDelFlag(0); + userCoupon.setCreateTime(LocalDateTime.now()); + userCoupon.setAppUserId(appUser.getId()); + userCoupon.setCouponId(couponInfo.getId()); + LocalDateTime start = couponInfo.getPeriodStartTime().atTime(0, 0, 0); + LocalDateTime end = couponInfo.getPeriodEndTime().atTime(23, 59, 59); + if(couponInfo.getPeriodType() == 2){ + start = LocalDateTime.now(); + end = start.plusDays(couponInfo.getPeriodDays()); + } + userCoupon.setStartTime(start); + userCoupon.setEndTime(end); + userCouponService.save(userCoupon); + } } //变更等级 vipUpgrade(appUser.getId()); @@ -379,6 +416,7 @@ } appUser2.setLavePoint(appUser2.getLavePoint() + newPoint); appUser2.setAvailablePoint(appUser2.getAvailablePoint() + newPoint1); + appUser2.setTotalAvailablePoint(appUser2.getTotalAvailablePoint() + newPoint1); if(null != pointSetting && 1 == pointSetting.getGetNewPointGift()){ appUser2.setTransferablePoint(appUser2.getTransferablePoint() + newPoint1); } @@ -402,6 +440,7 @@ AppUser appUser3 = this.getById(appUser2.getInviteUserId()); appUser3.setLavePoint(appUser3.getLavePoint() + newPoint); appUser3.setAvailablePoint(appUser3.getAvailablePoint() + newPoint1); + appUser3.setTotalAvailablePoint(appUser3.getTotalAvailablePoint() + newPoint1); if(null != pointSetting && 1 == pointSetting.getGetRegisPointGift()){ appUser3.setTransferablePoint(appUser3.getTransferablePoint() + newPoint1); } @@ -428,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); @@ -568,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); + } + } /** * 递归查询顶级推广人 @@ -641,13 +759,53 @@ * @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)){ + citycode = "510100"; + } 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; } @@ -707,23 +865,27 @@ @Override public void unbindThePromoter() { //注册X天后没有升级成黄金会员则自动解绑推广人 - VipSetting vipSetting = vipSettingClient.getVipSetting(1).getData(); - Integer vipCancelDay = vipSetting.getVipCancelDay(); - Integer vipChangeDay = vipSetting.getVipChangeDay(); - List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).isNotNull(AppUser::getInviteUserId) - .eq(AppUser::getStatus, 1).last(" and ADDDATE(create_time,INTERVAL " + vipCancelDay + " DAY) <= now()")); - for (AppUser appUser : list) { - appUser.setInviteUserId(null); - appUser.setShopId(null); - this.updateById(appUser); + + //解绑推广人 + 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)); + for (AppUser appUser : list) { + UpdateWrapper<AppUser> updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("invite_user_id", null).set("shop_id", null).eq("id", appUser.getId()); + this.update(updateWrapper); + } } - //可更换推广人 - list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getChangePromoter, 0) - .isNull(AppUser::getLastShopTime).eq(AppUser::getStatus, 1).last(" and ADDDATE(create_time,INTERVAL " + vipChangeDay + " DAY) <= now()")); - for (AppUser appUser : list) { - appUser.setChangePromoter(1); - this.updateById(appUser); + 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)); + for (AppUser appUser : list) { + appUser.setChangePromoter(1); + this.updateById(appUser); + } } } @@ -738,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){ @@ -755,6 +917,7 @@ appUser.setTotalPoint(appUser.getTotalPoint() + hourPoint); appUser.setLavePoint(appUser.getLavePoint() + hourPoint); appUser.setAvailablePoint(appUser.getAvailablePoint() + hourPoint1); + appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + hourPoint1); if(null != pointSetting && 1 == pointSetting.getWorkPointGift()){ appUser.setTransferablePoint(appUser.getTransferablePoint() + hourPoint1); } @@ -779,7 +942,7 @@ } @Override - public IPage<AppUser> getAppuserPage(Integer pageNum, Integer pageSize, AppUser appUser) { + public IPage<AppUser> getAppuserPage(Integer pageNum, Integer pageSize, AppUser appUser, Integer shopId, Set<Long> userId) { if (StringUtils.isNotEmpty(appUser.getShopName())){ R<Set<Integer>> shopR = shopClient.getShopIdByName(appUser.getShopName()); if (R.isSuccess(shopR)){ @@ -789,11 +952,145 @@ } } } - return appUserMapper.getAppuserPage(new Page<>(pageNum, pageSize), appUser); + return appUserMapper.getAppuserPage(new Page<>(pageNum, pageSize), appUser, shopId, userId); } @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); } + + + /** + * 降级检测 + */ + @Override + public void demotionDetection() { + //代理 + List<AppUser> appUserList = new ArrayList<>(); + VipSetting vipSetting = vipSettingClient.getVipSetting(5).getData(); + List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 5).eq(AppUser::getStatus, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getIsDanger, 0)); + for (AppUser appUser : list) { + //消费积分 + List<UserPoint> list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 1).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepBuyDay() + " DAY) >= create_time")); + int sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepBuyPoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + continue; + } + //返佣积分 + list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 2).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShareDay() + " DAY) >= create_time")); + sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepSharePoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + continue; + } + //门店业绩 + list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 8).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShopDay() + " DAY) >= create_time")); + sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepShopPoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + } + } + if(appUserList.size() > 0){ + this.updateBatchById(appUserList); + } + + //总代 + appUserList = new ArrayList<>(); + vipSetting = vipSettingClient.getVipSetting(6).getData(); + list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 6).eq(AppUser::getStatus, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getIsDanger, 0)); + for (AppUser appUser : list) { + //消费积分 + List<UserPoint> list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 1).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepBuyDay() + " DAY) >= create_time")); + int sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepBuyPoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + continue; + } + //返佣积分 + list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 2).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShareDay() + " DAY) >= create_time")); + sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepSharePoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + continue; + } + //门店业绩 + list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 8).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShopDay() + " DAY) >= create_time")); + sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepShopPoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + } + } + if(appUserList.size() > 0){ + this.updateBatchById(appUserList); + } + + //合伙人 + appUserList = new ArrayList<>(); + vipSetting = vipSettingClient.getVipSetting(7).getData(); + list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 7).eq(AppUser::getStatus, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getIsDanger, 0)); + for (AppUser appUser : list) { + //消费积分 + List<UserPoint> list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 1).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepBuyDay() + " DAY) >= create_time")); + int sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepBuyPoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + continue; + } + //返佣积分 + list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 2).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShareDay() + " DAY) >= create_time")); + sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepSharePoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + continue; + } + //门店业绩 + list1 = userPointService.list(new LambdaQueryWrapper<UserPoint>().eq(UserPoint::getAppUserId, appUser.getId()).eq(UserPoint::getType, 8).last(" and SUBDATE(now(), INTERVAL " + vipSetting.getKeepShopDay() + " DAY) >= create_time")); + sum = list1.stream().mapToInt(UserPoint::getVariablePoint).sum(); + if(sum < vipSetting.getKeepShopPoint()){ + appUser.setIsDanger(1); + appUserList.add(appUser); + } + } + if(appUserList.size() > 0){ + this.updateBatchById(appUserList); + } + } + + + + /** + * 定时任务关闭订单 + */ + @Override + public void closeOrder() { + //订单支付数据 + long second = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC); + 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) { + if(null == order || order.getStatus() != 1){ + redisTemplate.opsForZSet().remove("BalanceRecharge", order.getId()); + continue; + } + //开始执行关闭订单操作 + CloseOrderResult closeOrderResult = PaymentUtil.closeOrder(order.getId().toString()); + if((null == closeOrderResult || !closeOrderResult.getRa_Status().equals("100")) && + Arrays.asList("0", "4", "101", "10080000", "10080002", "10083004", "10083005").contains(closeOrderResult.getRb_Code())){ + redisTemplate.opsForZSet().add("BalanceRecharge", order.getId(), 0); + log.error("关闭订单失败:{}---->{}", order.getId(), com.alibaba.fastjson2.JSON.toJSONString(closeOrderResult)); + } + redisTemplate.opsForZSet().remove("BalanceRecharge", order.getId()); + } + } + } } -- Gitblit v1.7.1