puzhibing
2025-01-07 eb5d7885fa9e4bd20c0827eec9b4cdd48c47b509
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -3,18 +3,13 @@
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.SMSUtil;
import com.ruoyi.account.util.tencentMap.TencentMapUtil;
import com.ruoyi.account.util.weChat.EnvVersion;
@@ -25,14 +20,8 @@
import com.ruoyi.common.core.utils.StringUtils;
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;
@@ -105,6 +94,12 @@
   
   @Resource
   private RegionClient regionClient;
   @Resource
   private CouponInfoClient couponInfoClient;
   @Resource
   private UserCouponService userCouponService;
   /**
@@ -330,6 +325,7 @@
            }
            appUser.setLavePoint(regisPoint);
            appUser.setAvailablePoint(regisPoint1);
            appUser.setTotalAvailablePoint(regisPoint1);
            if(null != pointSetting && 1 == pointSetting.getGetRegisPointGift()){
               appUser.setTransferablePoint(regisPoint1);
            }
@@ -366,6 +362,26 @@
            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 +395,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 +419,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);
               }
@@ -713,14 +731,14 @@
      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);
         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()"));
      list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getChangePromoter, 0)
            .eq(AppUser::getStatus, 1).last(" and ADDDATE(ifnull(last_shop_time, create_time),INTERVAL " + vipChangeDay + " DAY) <= now()"));
      for (AppUser appUser : list) {
         appUser.setChangePromoter(1);
         this.updateById(appUser);
@@ -755,6 +773,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);
               }
@@ -796,4 +815,110 @@
      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);
      }
   }
}