From 04ce420613f90f8414e87e8fe68484fc32485349 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期二, 24 六月 2025 18:49:06 +0800 Subject: [PATCH] 部署 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 364 +++++++++++---------------------------------------- 1 files changed, 82 insertions(+), 282 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 eefa38c..d71fa38 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 @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.model.*; +import com.ruoyi.account.dto.ApplyForAdmissionDTO; import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.service.*; import com.ruoyi.account.util.GeodesyUtil; @@ -30,7 +31,9 @@ import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -94,7 +97,7 @@ @Resource private OrderClient orderClient; - private static final String DEFAULT_AVATAR_URL = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/aedfbbb41280471f8d9fa7905298b65f.png"; + private static final String DEFAULT_AVATAR_URL = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/58084a0ce8c34dc79f9d8b4c0bc3774a.png"; /** @@ -112,17 +115,18 @@ } String openid = map.get("openid").toString(); String sessionKey = map.get("sessionKey").toString(); + //获取手机号 + 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("phoneNumber"); //查询用户是否注册,没有注册则注册 - AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); + AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, purePhoneNumber).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); if(null == appUser){ + appUser = new 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"); //新用户默认信息 appUser.setName(purePhoneNumber.substring(0, 3) + "****" + purePhoneNumber.substring(7)); appUser.setPhone(purePhoneNumber); @@ -130,7 +134,12 @@ appUser.setWxOpenid(openid); appUser.setStatus(1); appUser.setDelFlag(false); + appUser.setCreateTime(LocalDateTime.now()); this.save(appUser); + }else { + //从订单导入的,将openid导入 + appUser.setWxOpenid(openid); + this.updateById(appUser); } //账户被冻结,给出提示 if(2 == appUser.getStatus()){ @@ -167,11 +176,17 @@ return R.fail("验证码错误"); } } - - //查询用户是否注册,没有注册则系统注册 + //查询用户是否注册,没有注册则跳转到注册页面 AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone()) .ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); - if(null == appUser){ + if(null == appUser||null ==appUser.getWxOpenid()){ + LoginVo loginVo = new LoginVo(); + loginVo.setSkipPage(2); + loginVo.setPhone(mobileLogin.getPhone()); + return R.ok(loginVo); + } + //查询用户是否注册,没有注册则系统注册 + /*if(null == appUser){ appUser=new AppUser(); //注册 //使用jscode获取微信openid @@ -203,7 +218,7 @@ } this.save(appUser); - } + }*/ //账户被冻结,给出提示 if(2 == appUser.getStatus()){ return R.fail("账户已被冻结,请联系管理员!"); @@ -267,19 +282,16 @@ /** * 注册账号 - * @param registerAccount - * @return */ - /* @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()); @@ -297,12 +309,12 @@ return R.fail("手机号已注册,请直接登录!"); } if(null != appUser1 && appUser1.getStatus() == 2){ - return R.fail("手机号已注册,请直接登录!"); + return R.fail("该手机号已被冻结!"); } String avatar = registerAccount.getAvatar(); if (StringUtils.isEmpty(avatar)){ - avatar = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/aedfbbb41280471f8d9fa7905298b65f.png"; + avatar = DEFAULT_AVATAR_URL; } //如果手机号已注册,但是没有微信号,则将微信号添加到已有账户上 @@ -317,55 +329,11 @@ appUser.setPhone(registerAccount.getPhone()); appUser.setWxOpenid(openid); //注册默认为普通会员 - appUser.setVipId(1); appUser.setStatus(1); appUser.setCreateTime(LocalDateTime.now()); appUser.setDelFlag(false); appUser.setFirstAdd(1); appUser.setLastLoginTime(LocalDateTime.now()); - //绑定门店为推荐人绑定的门店 - AppUser appUser2 = this.getById(registerAccount.getPromoter()); - appUser.setInviteUserId(registerAccount.getPromoter()); - appUser.setShopId(appUser2.getShopId()); - appUser.setPartPoint(0); - appUser.setPartGrowPoint(0); - appUser.setShopPoint(0); - appUser.setSharePoint(0); - appUser.setShopAmount(BigDecimal.ZERO); - appUser.setWithdrawableAmount(BigDecimal.ZERO); - appUser.setWithdrawnAmount(BigDecimal.ZERO); - appUser.setTotalRechargeAmount(BigDecimal.ZERO); - appUser.setTotalRedPacketAmount(BigDecimal.ZERO); - appUser.setTotalDistributionAmount(BigDecimal.ZERO); - appUser.setBalance(BigDecimal.ZERO); - //新用户才能奖励积分,老用户注销重新注册没有 - long old = this.count(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, registerAccount.getPhone()).eq(AppUser::getDelFlag, 0)); - R<PointSetting> pointSettingR = pointSettingClient.getPointSetting(1); - if (R.isError(pointSettingR)){ - throw new RuntimeException("获取积分设置失败"); - } - PointSetting pointSetting = pointSettingR.getData(); - if (pointSetting == null){ - throw new RuntimeException("积分设置不存在"); - } - Integer regisPoint = pointSetting.getRegisPoint(); - if(0 == old){ - Integer regisPoint1 = 0; - //计算可用积分比例 - if(1 == pointSetting.getGetRegisPointOpen()){ - regisPoint1 = new BigDecimal(regisPoint).multiply(pointSetting.getGetRegisPoint().divide(new BigDecimal(100))).intValue(); - } - appUser.setLavePoint(regisPoint); - appUser.setAvailablePoint(regisPoint1); - appUser.setTotalAvailablePoint(regisPoint1); - if(null != pointSetting && 1 == pointSetting.getGetRegisPointGift()){ - appUser.setTransferablePoint(regisPoint1); - } - appUser.setTotalRegisterPoint(regisPoint); - appUser.setTotalPoint(regisPoint); - } - //根据平台的配置未达标,则标注为可修改推广人 - appUser.setChangePromoter(0); appUser.setLongitude(registerAccount.getLongitude()); appUser.setLatitude(registerAccount.getLatitude()); //调用地图获取省市区数据 @@ -382,78 +350,6 @@ appUser.setProvinceCode(region.getCode()); } this.save(appUser); - - //增加积分变动记录 - if(0 == old && regisPoint > 0){ - //构建积分流水记录 - 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()); - userPointService.save(userPoint); - } - - //拉新分佣 - if(0 == old && null != appUser2){ - pointSetting = pointSettingClient.getPointSetting(appUser2.getVipId()).getData(); - Integer newPoint = pointSetting.getNewPoint(); - Integer newPoint1 = 0; - if(1 == pointSetting.getGetNewPointOpen()){ - newPoint1 = new BigDecimal(newPoint).multiply(pointSetting.getGetNewPoint().divide(new BigDecimal(100))).intValue(); - } - 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); - } - appUser2.setTotalInvitePoint(appUser2.getTotalInvitePoint() + newPoint); - appUser2.setTotalPoint(appUser2.getTotalPoint() + newPoint); - this.updateById(appUser2); - 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()); - userPointService.save(userPoint); - } - - if(null != appUser2.getInviteUserId()){ - 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); - } - appUser3.setTotalInvitePoint(appUser3.getTotalInvitePoint() + newPoint); - appUser3.setTotalPoint(appUser3.getTotalPoint() + newPoint); - this.updateById(appUser3); - 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()); - userPointService.save(userPoint); - } - } - } - - //获取微信推广二维码 - String fileName = UUID.randomUUID() + ".jpg"; - String getwxacodeunlimit = weChatUtil.getwxacodeunlimit("pages/start/start", "id=" + appUser.getId(), EnvVersion.RELEASE, filePath + fileName); - appUser.setQrCode(getwxacodeunlimit); - this.updateById(appUser); - } LoginVo loginVo = new LoginVo(); loginVo.setSkipPage(1); @@ -469,153 +365,12 @@ return R.ok(loginVo); } -*/ - - @Override - public List<AppUser> getUserAncestorList(Long id, List<AppUser> list) { - if (list == null) { - list = new ArrayList<>(); - } - Set<Long> visitedIds = new HashSet<>(); - Long currentId = id; - - while (currentId != null && !visitedIds.contains(currentId)) { - AppUser appUser = getById(currentId); - if (appUser == null) { - break; // 如果用户不存在,终止循环 - } - - Long inviteUserId = appUser.getInviteUserId(); - if (inviteUserId != null) { - AppUser invitedUser = getById(inviteUserId); - if (invitedUser != null) { - list.add(invitedUser); - visitedIds.add(currentId); - currentId = inviteUserId; - } else { - break; // 如果邀请用户不存在,终止循环 - } - } else { - break; // 如果没有邀请用户,终止循环 - } - } - - return list; - } - - @Override - public AppUser getSuperiorLeader(Long id) { - AppUser appUser = getById(id); - Long inviteUserId = appUser.getInviteUserId(); - AppUser inviteUser = getById(inviteUserId); - if (inviteUser == null){ - return null; - } - if (inviteUser.getVipId() > 3) { - return inviteUser; - }else { - return getSuperiorLeader(inviteUserId); - } - } - /** - * 定时解绑推广人 - */ - @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){ - 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); - } - 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, replaceable)); - for (AppUser appUser : list) { - Long data = orderClient.getOrderCountByAppUserId(appUser.getId()).getData(); - if(data == 0L){ - appUser.setChangePromoter(1); - this.updateById(appUser); - } - } - redisTemplate.opsForZSet().remove("replaceable", replaceable.toArray()); - } - } - - - /** - * 在线记录操作,用于赠送积分 - */ - @Override - public void onlineRecord() { - Long userid = tokenService.getLoginUserApplet().getUserid(); - Object cacheObject = redisService.getCacheObject("ONLINE_" + userid); - if(null == cacheObject){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("time", System.currentTimeMillis()); - jsonObject.put("online", 0); - redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS); - }else{ - 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){ - int hourPoint = pointSetting.getHourPoint().intValue(); - int hourPoint1 = 0; - if(1 == pointSetting.getWorkPointOpen()){ - hourPoint1 = new BigDecimal(hourPoint).multiply(pointSetting.getWorkPoint().divide(new BigDecimal(100))).intValue(); - } - //添加积分变动记录 - 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()); - userPointService.save(userPoint); - } - } - }else{ - jsonObject.put("online", online); - redisService.setCacheObject("ONLINE_" + userid, jsonObject, 1L, TimeUnit.HOURS); - } - } - } + @Override public IPage<AppUser> getAppuserPage(Integer pageNum, Integer pageSize, AppUser appUser, Integer shopId, Set<Long> userId) { @@ -643,4 +398,49 @@ public List<AppUser> getAppUserByPhoneNoFilter(String phone) { return this.baseMapper.getAppUserByPhoneNoFilter(phone); } + + + + /** + * 小程序-个人中心 + * @return + */ + @Override + public AppUser index() { + Long userId = tokenService.getLoginUserApplet().getUserid(); + //当前用户信息 + AppUser user = this.getById(userId); + //查询门店,如果门店被冻结 + List<Shop> shopList = shopClient.getShopByUserId(userId).getData(); + user.setShopStatus(0);//未拥有门店 + + if (shopList != null && !shopList.isEmpty()) { + //走进来代表有门店 ,先设置为冻结中 + user.setShopStatus(2);//门店都被冻结 + for (Shop shop : shopList) { + if (shop.getStatus()==1) { + user.setShopStatus(1);//门店状态 + } + if(null==user.getShopIds()){ + Set<Integer> integers = new HashSet<>(); + user.setShopIds(integers); + } + user.getShopIds().add(shop.getId()); + user.setShopIds(user.getShopIds()); + + } + } + return user; + } + + @Override + public PageInfo<UserPointStatisticsVO> getUserPointPageList(String name, Integer pageCurr, Integer pageSize) { + PageInfo<UserPointStatisticsVO> pageInfo=new PageInfo<>(pageCurr,pageSize); + List<UserPointStatisticsVO> list=baseMapper.getUserPointPageList(pageInfo, name); + list.forEach(x->{ + x.setIdStr(String.valueOf(x.getId())); + }); + pageInfo.setRecords(list); + return pageInfo; + } } -- Gitblit v1.7.1