luodangjia
2025-01-17 d0b043b8fa5f19d1295cac50fece0c65fceb3920
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -464,8 +464,8 @@
         
         //获取微信推广二维码
         String fileName = UUID.randomUUID() + ".jpg";
         weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.TRIAL, filePath + fileName);
         appUser.setQrCode(accessPath + fileName);
         String getwxacodeunlimit = weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.RELEASE, filePath + fileName);
         appUser.setQrCode(getwxacodeunlimit);
         this.updateById(appUser);
        }
@@ -898,13 +898,20 @@
      Long userid = tokenService.getLoginUserApplet().getUserid();
      Object cacheObject = redisService.getCacheObject("ONLINE_" + userid);
      if(null == cacheObject){
         redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES);
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("time", System.currentTimeMillis());
         jsonObject.put("online", 0);
         redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS);
      }else{
         Integer duration = (Integer) cacheObject;
         duration += 10;
         JSONObject jsonObject = (JSONObject) cacheObject;
         long time = System.currentTimeMillis() - jsonObject.getInteger("time");
         Integer online = jsonObject.getInteger("online");
         online += 10;
         //满足一个小时,开始发放积分,计时归0
         if(60 >= duration){
            redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES);
         if(time >= 3600000L && 60 <= online){
            jsonObject.put("time", System.currentTimeMillis());
            jsonObject.put("online", 0);
            redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS);
            AppUser appUser = this.getById(userid);
            PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
            if(null != pointSetting){
@@ -924,19 +931,22 @@
               appUser.setTotalHourPoint(appUser.getTotalHourPoint() + hourPoint);
               this.updateById(appUser);
               //添加积分变动记录
               UserPoint userPoint = new UserPoint();
               userPoint.setType(6);
               userPoint.setHistoricalPoint(lavePoint);
               userPoint.setVariablePoint(hourPoint);
               userPoint.setBalance(appUser.getLavePoint());
               userPoint.setCreateTime(LocalDateTime.now());
               userPoint.setAppUserId(appUser.getId());
               userPointService.save(userPoint);
               if(hourPoint > 0){
                  UserPoint userPoint = new UserPoint();
                  userPoint.setType(6);
                  userPoint.setHistoricalPoint(lavePoint);
                  userPoint.setVariablePoint(hourPoint);
                  userPoint.setBalance(appUser.getLavePoint());
                  userPoint.setCreateTime(LocalDateTime.now());
                  userPoint.setAppUserId(appUser.getId());
                  userPointService.save(userPoint);
               }
               //变更等级
               vipUpgrade(appUser.getId());
            }
         }else{
            redisService.setCacheObject("ONLINE_" + userid, duration, 15L, TimeUnit.MINUTES);
            jsonObject.put("online", online);
            redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS);
         }
      }
   }
@@ -967,97 +977,33 @@
   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);
      for (int i = 5; i < 8; i++) {
         VipSetting vipSetting = vipSettingClient.getVipSetting(i).getData();
         List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, i).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){