From fd7b8fb7c89832c28a838b0449bbb8a392433ee2 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 22 四月 2025 14:33:02 +0800 Subject: [PATCH] 将华为云短信替换成阿里云短信 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 515 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 325 insertions(+), 190 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 bb4bdf1..1f418bd 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.ALiSendSms; import com.ruoyi.account.util.GeodesyUtil; import com.ruoyi.account.util.SMSUtil; import com.ruoyi.account.util.payment.PaymentUtil; @@ -22,17 +23,15 @@ 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.order.feignClient.OrderClient; 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.redisson.RedissonLock; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -67,6 +66,9 @@ @Resource private RedisService redisService; + + @Resource + private ALiSendSms aLiSendSms; @Resource private ShopClient shopClient; @@ -111,6 +113,12 @@ private RedisTemplate redisTemplate; @Resource private BalancePaymentService balancePaymentService; + + @Resource + private OrderClient orderClient; + + @Resource + private IAppUserGiveawayTemporaryService appUserGiveawayTemporaryService; /** @@ -128,39 +136,52 @@ } String openid = map.get("openid").toString(); String sessionKey = map.get("sessionKey").toString(); - //查询用户是否注册,没有注册则跳转到注册页面 - AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); - if(null == appUser){ - String decrypt = WXCore.decrypt(appletLogin.getEncryptedData_phone(), sessionKey, appletLogin.getIv_phone()); - if (StringUtils.isEmpty(decrypt)) { - return R.fail("获取手机信息失败"); - } - JSONObject phone = JSON.parseObject(decrypt); - String purePhoneNumber = phone.getString("purePhoneNumber"); - LoginVo loginVo = new LoginVo(); - loginVo.setSkipPage(2); - loginVo.setPhone(purePhoneNumber); - return R.ok(loginVo); - } - //账户被冻结,给出提示 - if(2 == appUser.getStatus()){ - return R.fail("账户已被冻结,请联系管理员!"); - } LoginVo loginVo = new LoginVo(); - loginVo.setSkipPage(1); - loginVo.setFirstTime(false); - loginVo.setPhone(appUser.getPhone()); - //构建token - LoginUser loginUser = new LoginUser(); - loginUser.setUserid(appUser.getId()); - 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())); - appUser.setLastLoginTime(LocalDateTime.now()); - this.updateById(appUser); - return R.ok(loginVo); + String key = "login:" + openid; + Boolean hasKey = redisService.lock(key); + if(hasKey){ + try { + //查询用户是否注册,没有注册则跳转到注册页面 + AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); + if(null == appUser){ + String decrypt = WXCore.decrypt(appletLogin.getEncryptedData_phone(), sessionKey, appletLogin.getIv_phone()); + if (StringUtils.isEmpty(decrypt)) { + return R.fail("获取手机信息失败"); + } + JSONObject phone = JSON.parseObject(decrypt); + String purePhoneNumber = phone.getString("purePhoneNumber"); + loginVo.setSkipPage(2); + loginVo.setPhone(purePhoneNumber); + return R.ok(loginVo); + } + //账户被冻结,给出提示 + if(2 == appUser.getStatus()){ + return R.fail("账户已被冻结,请联系管理员!"); + } + loginVo.setSkipPage(1); + loginVo.setFirstTime(false); + loginVo.setPhone(appUser.getPhone()); + //构建token + LoginUser loginUser = new LoginUser(); + loginUser.setUserid(appUser.getId()); + 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())); + + appUser.setLastLoginTime(LocalDateTime.now()); + this.updateById(appUser); + return R.ok(loginVo); + }catch (Exception e){ + e.printStackTrace(); + }finally { + redisService.unlock(key); + } + }else{ + return R.fail("请稍后重试"); + } + return R.fail("登录失败"); } @@ -243,7 +264,8 @@ for (int i = 0; i < 6; i++) { code += Double.valueOf(Math.random() * 10).intValue(); } - SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); +// SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); + aLiSendSms.sendSms(smsCode.getPhone(), "SMS_484035336", "{\"code\":\"" + code + "\"}"); redisService.setCacheObject(smsCode.getPhone(), code, 300L, TimeUnit.SECONDS); return R.ok(); } @@ -257,12 +279,12 @@ @Override public R<LoginVo> registerAccount(RegisterAccount registerAccount) { //校验验证码 - String code = redisService.getCacheObject(registerAccount.getPhone()); - if(!"999999".equals(registerAccount.getCode())){ - if(null == code || !code.equals(registerAccount.getCode())){ - return R.fail("验证码错误"); - } - } +// String code = redisService.getCacheObject(registerAccount.getPhone()); +// if(!"999999".equals(registerAccount.getCode())){ +// if(null == code || !code.equals(registerAccount.getCode())){ +// return R.fail("验证码错误"); +// } +// } //使用jscode获取微信openid Map<String, Object> map = weChatUtil.code2Session(registerAccount.getJscode()); Integer errcode = Integer.valueOf(map.get("errcode").toString()); @@ -282,6 +304,12 @@ if(null != appUser1 && appUser1.getStatus() == 2){ return R.fail("手机号已注册,请直接登录!"); } + + String avatar = registerAccount.getAvatar(); + if (StringUtils.isEmpty(avatar)){ + avatar = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/aedfbbb41280471f8d9fa7905298b65f.png"; + } + //如果手机号已注册,但是没有微信号,则将微信号添加到已有账户上 if(null != appUser1 && StringUtils.isEmpty(appUser1.getWxOpenid())){ appUser1.setWxOpenid(openid); @@ -289,7 +317,7 @@ appUser = appUser1; }else if(null == appUser){ appUser = new AppUser(); - appUser.setAvatar(registerAccount.getAvatar()); + appUser.setAvatar(avatar); appUser.setName(registerAccount.getName()); appUser.setPhone(registerAccount.getPhone()); appUser.setWxOpenid(openid); @@ -376,11 +404,10 @@ //构建积分流水记录 UserPoint userPoint = new UserPoint(); userPoint.setType(7); - userPoint.setHistoricalPoint(0); userPoint.setVariablePoint(regisPoint); - userPoint.setBalance(appUser.getLavePoint()); userPoint.setCreateTime(LocalDateTime.now()); userPoint.setAppUserId(appUser.getId()); + userPoint.setChangeDirection(1); userPointService.save(userPoint); } //获取优惠券 @@ -400,6 +427,7 @@ } userCoupon.setStartTime(start); userCoupon.setEndTime(end); + userCoupon.setCouponInfo(JSON.toJSONString(couponInfo)); userCouponService.save(userCoupon); } } @@ -426,11 +454,10 @@ if(newPoint > 0){ UserPoint userPoint = new UserPoint(); userPoint.setType(3); - userPoint.setHistoricalPoint(appUser2.getLavePoint() - newPoint); userPoint.setVariablePoint(newPoint); - userPoint.setBalance(appUser2.getLavePoint()); userPoint.setCreateTime(LocalDateTime.now()); userPoint.setAppUserId(appUser2.getId()); + userPoint.setChangeDirection(1); userPointService.save(userPoint); } //变更等级 @@ -450,11 +477,10 @@ if(newPoint > 0){ UserPoint userPoint = new UserPoint(); userPoint.setType(3); - userPoint.setHistoricalPoint(appUser3.getLavePoint() - newPoint); userPoint.setVariablePoint(newPoint); - userPoint.setBalance(appUser3.getLavePoint()); userPoint.setCreateTime(LocalDateTime.now()); userPoint.setAppUserId(appUser3.getId()); + userPoint.setChangeDirection(1); userPointService.save(userPoint); } //变更等级 @@ -464,8 +490,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/start/start", "id=" + appUser.getId(), EnvVersion.RELEASE, filePath + fileName); + appUser.setQrCode(getwxacodeunlimit); this.updateById(appUser); } @@ -482,14 +508,141 @@ loginVo.setFailureTime(Long.valueOf(tokenApplet.get("expires_in").toString())); return R.ok(loginVo); } - - + + /** * 会员等级变化 */ @Override public void vipUpgrade(Long id){ AppUser appUser = this.getById(id); + Integer vipId = appUser.getVipId(); + //钻石会员 + VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData(); + //消费积分满足升级 + if(1 == vipSetting3.getVipLevelUpShopRole() && appUser.getShopPoint().compareTo(vipSetting3.getVipLevelUpShop()) >= 0 && appUser.getVipId() < 3){ + appUser.setVipId(3); + 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(1); + userChangeLogService.save(userChangeLog); + return; + } + //返佣积分满足升级 + List<AppUserGiveawayTemporary> list = appUserGiveawayTemporaryService.list(new LambdaQueryWrapper<AppUserGiveawayTemporary>().eq(AppUserGiveawayTemporary::getAppUserId, appUser.getId())); + int sum = list.stream().mapToInt(AppUserGiveawayTemporary::getSharePoint).sum(); + int sharePoin = appUser.getSharePoint() + sum; + if(1 == vipSetting3.getVipLevelUpShareRole() && sharePoin >= vipSetting3.getVipLevelUpShare() && appUser.getVipId() < 3){ + appUser.setVipId(3); + 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(1); + userChangeLogService.save(userChangeLog); + return; + } + //下级人数满足升级 + Integer vipLevelUpNumRole = vipSetting3.getVipLevelUpNumRole(); + Integer vipDirectNum = vipSetting3.getVipDirectNum(); + Integer vipTeamNum = vipSetting3.getVipTeamNum(); + if(1 == vipLevelUpNumRole && appUser.getVipId() < 3){ + //查询直推用户达到X人或者团队人数达到X人后,可升级 + //直推用户数 + long count = this.count(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1).eq(AppUser::getInviteUserId, id)); + //团队用户数 + List<AppUser> subordinate = getSubordinate(id); + if(vipDirectNum <= count || vipTeamNum <= subordinate.size()){ + appUser.setVipId(3); + 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(1); + userChangeLogService.save(userChangeLog); + return; + } + } + + //黄金会员 + VipSetting vipSetting2 = vipSettingClient.getVipSetting(2).getData(); + //消费积分满足升级 + if(1 == vipSetting2.getVipLevelUpShopRole() && appUser.getShopPoint().compareTo(vipSetting2.getVipLevelUpShop()) >= 0 && 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(1); + userChangeLogService.save(userChangeLog); + return; + } + //返佣积分满足升级 + if(1 == vipSetting2.getVipLevelUpShareRole() && appUser.getSharePoint().compareTo(vipSetting2.getVipLevelUpShare()) >= 0 && 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(1); + userChangeLogService.save(userChangeLog); + return; + } + //下级人数满足升级 + vipLevelUpNumRole = vipSetting2.getVipLevelUpNumRole(); + vipDirectNum = vipSetting2.getVipDirectNum(); + 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, id)); + //团队用户数 + List<AppUser> subordinate = getSubordinate(id); + 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(1); + userChangeLogService.save(userChangeLog); + } + } + } + + public void vipConsumption(Long id){ + + System.out.println("1111111111111111111111"); + + AppUser appUser = this.getById(id); + System.out.println("消费积分:"+ appUser.getShopPoint()); + System.out.println("返佣积分:"+ appUser.getSharePoint() ); Integer vipId = appUser.getVipId(); //钻石会员 VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData(); @@ -603,7 +756,6 @@ userChangeLog.setAfterVipId(appUser.getVipId()); userChangeLog.setChangeType(1); userChangeLogService.save(userChangeLog); - return; } } } @@ -616,10 +768,38 @@ public void vipDemotion(Long appUserId) { AppUser appUser = this.getById(appUserId); Integer vipId = appUser.getVipId(); + //钻石会员 + VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData(); + if(1 == vipSetting3.getVipLevelUpShopRole() && appUser.getShopPoint().compareTo(vipSetting3.getVipLevelUpShop()) >= 0 && appUser.getVipId() == 3){ + return; + } + //返佣积分满足升级 + List<AppUserGiveawayTemporary> list = appUserGiveawayTemporaryService.list(new LambdaQueryWrapper<AppUserGiveawayTemporary>().eq(AppUserGiveawayTemporary::getAppUserId, appUser.getId())); + int sum = list.stream().mapToInt(AppUserGiveawayTemporary::getSharePoint).sum(); + int sharePoin = appUser.getSharePoint() + sum; + if(1 == vipSetting3.getVipLevelUpShareRole() && sharePoin >= vipSetting3.getVipLevelUpShare() && appUser.getVipId() == 3){ + return; + } + //下级人数满足升级 + Integer vipLevelUpNumRole = vipSetting3.getVipLevelUpNumRole(); + Integer vipDirectNum = vipSetting3.getVipDirectNum(); + Integer vipTeamNum = vipSetting3.getVipTeamNum(); + if(1 == vipLevelUpNumRole && appUser.getVipId() == 3){ + //查询直推用户达到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()){ + return; + } + } + + //黄金会员 VipSetting vipSetting2 = vipSettingClient.getVipSetting(2).getData(); //消费积分满足升级 - if(1 == vipSetting2.getVipLevelUpShopRole() && appUser.getShopPoint() >= vipSetting2.getVipLevelUpShop() && appUser.getVipId() > 2){ + if(1 == vipSetting2.getVipLevelUpShopRole() && appUser.getShopPoint().compareTo(vipSetting2.getVipLevelUpShop()) >= 0 && appUser.getVipId() >= 2){ appUser.setVipId(2); this.updateById(appUser); //添加等级变化记录 @@ -634,7 +814,7 @@ return; } //返佣积分满足升级 - if(1 == vipSetting2.getVipLevelUpShareRole() && appUser.getSharePoint() >= vipSetting2.getVipLevelUpShare() && appUser.getVipId() > 2){ + if(1 == vipSetting2.getVipLevelUpShareRole() && sharePoin >= vipSetting2.getVipLevelUpShare() && appUser.getVipId() >= 2){ appUser.setVipId(2); this.updateById(appUser); //添加等级变化记录 @@ -649,10 +829,10 @@ return; } //下级人数满足升级 - Integer vipLevelUpNumRole = vipSetting2.getVipLevelUpNumRole(); - Integer vipDirectNum = vipSetting2.getVipDirectNum(); - Integer vipTeamNum = vipSetting2.getVipTeamNum(); - if(1 == vipLevelUpNumRole && appUser.getVipId() > 2){ + vipLevelUpNumRole = vipSetting2.getVipLevelUpNumRole(); + vipDirectNum = vipSetting2.getVipDirectNum(); + 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)); @@ -673,19 +853,17 @@ 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); - } + 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); } /** @@ -865,7 +1043,6 @@ @Override public void unbindThePromoter() { //注册X天后没有升级成黄金会员则自动解绑推广人 - //解绑推广人 Set<Long> unbind_promoter = redisTemplate.opsForZSet().rangeByScore("unbind_promoter", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)); if(unbind_promoter.size() > 0){ @@ -876,16 +1053,21 @@ updateWrapper.set("invite_user_id", null).set("shop_id", null).eq("id", appUser.getId()); this.update(updateWrapper); } + redisTemplate.opsForZSet().remove("unbind_promoter", unbind_promoter.toArray()); } //可更换推广人 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)); + .eq(AppUser::getStatus, 1).in(AppUser::getId, replaceable)); for (AppUser appUser : list) { - appUser.setChangePromoter(1); - this.updateById(appUser); + Long data = orderClient.getOrderCountByAppUserId(appUser.getId()).getData(); + if(data == 0L){ + appUser.setChangePromoter(1); + this.updateById(appUser); + } } + redisTemplate.opsForZSet().remove("replaceable", replaceable.toArray()); } } @@ -898,13 +1080,20 @@ Long userid = tokenService.getLoginUserApplet().getUserid(); Object cacheObject = redisService.getCacheObject("ONLINE_" + userid); if(null == cacheObject){ - redisService.setCacheObject("ONLINE_" + userid, System.currentTimeMillis(), 1L, TimeUnit.HOURS); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("time", System.currentTimeMillis()); + jsonObject.put("online", 0); + redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS); }else{ - Long duration = (Long) cacheObject; - long time = (System.currentTimeMillis() - duration) / 3600000; - //满足一个小时,开始发放积分,计时归0 - if(1 >= time){ - redisService.setCacheObject("ONLINE_" + userid, System.currentTimeMillis(), 1L, TimeUnit.HOURS); + JSONObject jsonObject = (JSONObject) cacheObject; + long time = System.currentTimeMillis() - jsonObject.getInteger("time"); + Integer online = jsonObject.getInteger("online"); + online++; + //时间满足1小时,并且次数记录满足6次(10分钟记录一次) + if(time >= 3600000 && 6 <= 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){ @@ -913,30 +1102,33 @@ if(1 == pointSetting.getWorkPointOpen()){ hourPoint1 = new BigDecimal(hourPoint).multiply(pointSetting.getWorkPoint().divide(new BigDecimal(100))).intValue(); } - Integer lavePoint = appUser.getLavePoint(); - 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); - } - appUser.setTotalHourPoint(appUser.getTotalHourPoint() + hourPoint); - this.updateById(appUser); //添加积分变动记录 if(hourPoint > 0){ + Integer lavePoint = appUser.getLavePoint(); + 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); + } + 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()); + userPoint.setChangeDirection(1); userPointService.save(userPoint); + //变更等级 + vipUpgrade(appUser.getId()); } - //变更等级 - vipUpgrade(appUser.getId()); } + }else{ + jsonObject.put("online", online); + redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS); } } } @@ -949,14 +1141,16 @@ Set<Integer> shopIds = shopR.getData(); if (!CollectionUtils.isEmpty(shopIds)){ appUser.setShopIds(shopIds); + }else { + return new Page<>(); } } } 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); + public IPage<AppUser> getAppuserPage1(Integer pageNum, Integer pageSize, AppUser appUser,List<Long> userIds) { + return appUserMapper.getAppuserPage1(new Page<>(pageNum, pageSize), appUser,userIds); } @@ -967,97 +1161,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){ @@ -1093,4 +1223,9 @@ } } } + + @Override + public List<AppUser> getAppUserByPhoneNoFilter(String phone) { + return this.baseMapper.getAppUserByPhoneNoFilter(phone); + } } -- Gitblit v1.7.1