From 7cddb7125f2095facea68c11068e269809ef4108 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 24 十二月 2024 15:41:10 +0800 Subject: [PATCH] 合并代码 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 164 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 124 insertions(+), 40 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 2c88ab4..153635b 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,6 +3,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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; @@ -13,6 +15,8 @@ import com.ruoyi.account.service.AppUserShopService; import com.ruoyi.account.service.UserChangeLogService; import com.ruoyi.account.service.UserPointService; +import com.ruoyi.account.util.SMSUtil; +import com.ruoyi.account.util.tencentMap.TencentMapUtil; import com.ruoyi.account.util.weChat.EnvVersion; import com.ruoyi.account.util.weChat.WXCore; import com.ruoyi.account.util.weChat.WeChatUtil; @@ -22,17 +26,21 @@ 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.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; 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.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -40,8 +48,10 @@ 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> @@ -86,19 +96,17 @@ @Value("${file.upload.accessPath}") private String accessPath; - - @Resource - private PointSettingClient pointSettingClient; - + @Resource private UserPointService userPointService; + @Resource + private AppUserMapper appUserMapper; - - - - - + @Resource + private RegionClient regionClient; + + /** * 小程序一键登录 * @param appletLogin @@ -157,11 +165,10 @@ */ @Override public R<LoginVo> mobileLogin(MobileLogin mobileLogin) { - //校验验证码 TODO 待完善 -// String code = redisService.getCacheObject(mobileLogin.getPhone()); -// if(null == code || !code.equals(mobileLogin.getCode())){ -// return R.fail("验证码错误"); -// } + String code = redisService.getCacheObject(mobileLogin.getPhone()); + if(null == code || !code.equals(mobileLogin.getCode())){ + return R.fail("验证码错误"); + } //查询用户是否注册,没有注册则跳转到注册页面 AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone()).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0)); @@ -200,10 +207,10 @@ */ @Override public R getSMSCode(SMSCode smsCode) { - //校验验证码获取评率(1分钟5次) + //校验验证码获取频率(1分钟5次) String key = smsCode.getType() + "&" + smsCode.getPhone(); Map<String, Object> cacheMap = redisService.getCacheMap(key); - if(null != cacheMap){ + if(null != cacheMap && cacheMap.size() > 0){ Integer number = Integer.valueOf(cacheMap.get("number").toString()) + 1; Long startTime = Long.valueOf(cacheMap.get("startTime").toString()); if(number > 5 && (System.currentTimeMillis() - startTime) < 60000){ @@ -228,7 +235,8 @@ for (int i = 0; i < 6; i++) { code += Double.valueOf(Math.random() * 10).intValue(); } - //发送短信 todo 待对接短信 + SMSUtil.sendSms("[\"" + code + "\"]", smsCode.getPhone(), "8824121211029", "39533d100b2b4aee8ed198aa49fe99dd"); + redisService.setCacheObject(smsCode.getPhone(), code, 300L, TimeUnit.SECONDS); return R.ok(); } @@ -240,12 +248,11 @@ */ @Override public R<LoginVo> registerAccount(RegisterAccount registerAccount) { - // TODO 待完善 //校验验证码 -// String code = redisService.getCacheObject(registerAccount.getPhone()); -// if(null == code || !code.equals(registerAccount.getCode())){ -// return R.fail("验证码错误"); -// } + String code = redisService.getCacheObject(registerAccount.getPhone()); + 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()); @@ -308,20 +315,44 @@ if (pointSetting == null){ throw new RuntimeException("积分设置不存在"); } - appUser.setLavePoint(pointSetting.getGetRegisPoint()); - appUser.setTotalPoint(0); + Integer getRegisPoint = pointSetting.getGetRegisPoint(); + Integer getRegisPoint1 = getRegisPoint; + //计算可用积分比例 + if(1 == pointSetting.getGetRegisPointOpen()){ + getRegisPoint1 = getRegisPoint1 * (100 - pointSetting.getGetRegisPoint()); + } + appUser.setLavePoint(getRegisPoint1); + appUser.setTotalPoint(getRegisPoint); //根据平台的配置未达标,则标注为可修改推广人 appUser.setChangePromoter(0); appUser.setLongitude(registerAccount.getLongitude()); appUser.setLatitude(registerAccount.getLatitude()); - //调用地图获取省市区数据 TODO 待完善 -// appUser.setProvince(); -// appUser.setProvinceCode(); -// appUser.setCity(); -// appUser.setCityCode(); -// appUser.setDistrict(); -// appUser.setDistrictCode(); + //调用地图获取省市区数据 + String citycode = TencentMapUtil.inverseGeographicalAnalysis(registerAccount.getLongitude(), registerAccount.getLatitude(), false); + if(null != citycode){ + Region region = regionClient.getRegionBiCode(citycode).getData(); + appUser.setDistrict(region.getName()); + appUser.setDistrictCode(citycode); + region = regionClient.getRegionBiCode(citycode.substring(0, 4) + "00").getData(); + appUser.setCity(region.getName()); + appUser.setCityCode(region.getCode()); + region = regionClient.getRegionBiCode(citycode.substring(0, 2) + "0000").getData(); + appUser.setProvince(region.getName()); + appUser.setProvinceCode(region.getCode()); + } this.save(appUser); + //增加积分变动记录 + if(getRegisPoint1 > 0){ + //构建积分流水记录 + UserPoint userPoint = new UserPoint(); + userPoint.setType(10); + userPoint.setHistoricalPoint(0); + userPoint.setVariablePoint(getRegisPoint1); + userPoint.setBalance(appUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUser.getId()); + userPointService.save(userPoint); + } //获取微信推广二维码 String fileName = UUID.randomUUID() + ".jpg"; weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + appUser.getId(), EnvVersion.DEVELOP, filePath + fileName); @@ -378,6 +409,28 @@ */ public void vipUpgrade(Long id){ AppUser appUser = this.getById(id); + Integer lavePoint = appUser.getLavePoint(); + //计算积分 + PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData(); + Integer newPoint = pointSetting.getNewPoint(); + Integer newPoint1 = newPoint; + if(null != pointSetting && 1 == pointSetting.getGetNewPointOpen()){ + newPoint1 = newPoint1 * (100 - pointSetting.getGetNewPoint()); + } + appUser.setLavePoint(appUser.getLavePoint() + newPoint1); + appUser.setTotalPoint(appUser.getTotalPoint() + newPoint); + //记录积分变动 + if(newPoint1 > 0){ + //构建积分流水记录 + UserPoint userPoint = new UserPoint(); + userPoint.setType(3); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(newPoint1); + userPoint.setBalance(appUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUser.getId()); + userPointService.save(userPoint); + } Integer vipId = appUser.getVipId(); //钻石会员 VipSetting vipSetting3 = vipSettingClient.getVipSetting(3).getData(); @@ -445,8 +498,14 @@ } public AppUser getTopAppUser(List<AppUser> list, Long id){ - AppUser appUser = list.stream().filter(s -> s.getId().equals(id)).findFirst().get(); - if(null == appUser.getInviteUserId()){ + Optional<AppUser> first = list.stream().filter(s -> s.getId().equals(id)).findFirst(); + AppUser appUser = null; + if(first.isPresent()){ + appUser = first.get(); + }else{ + return this.getById(1); + } + if( null == appUser.getInviteUserId()){ return appUser; } return getTopAppUser(list, appUser.getInviteUserId()); @@ -468,7 +527,7 @@ public List<AppUser> getSubordinate(List<AppUser> list, List<Long> ids, List<AppUser> result){ List<Long> idss = new ArrayList<>(); for (Long id : ids) { - List<AppUser> collect = list.stream().filter(s -> s.getInviteUserId().equals(id)).collect(Collectors.toList()); + List<AppUser> collect = list.stream().filter(s -> null != s.getInviteUserId() && s.getInviteUserId().equals(id)).collect(Collectors.toList()); if(collect.size() == 0){ return result; }else{ @@ -491,11 +550,13 @@ @Override public List<NearbyReferrerVo> getNearbyReferrer(NearbyReferrer nearbyReferrer) { //使用地图获取省市区数据 - String longitude = nearbyReferrer.getLongitude(); - String latitude = nearbyReferrer.getLatitude(); - String cityCode = "510100"; // TODO 待完善 - List<NearbyReferrerVo> list = this.baseMapper.getNearbyReferrer(cityCode, nearbyReferrer); - return list; + String citycode = TencentMapUtil.inverseGeographicalAnalysis(nearbyReferrer.getLongitude(), nearbyReferrer.getLatitude(), false); + if(null != citycode){ + String cityCode = citycode.substring(0, 4) + "00"; + List<NearbyReferrerVo> list = this.baseMapper.getNearbyReferrer(cityCode, nearbyReferrer); + return list; + } + return null; } @Override @@ -594,9 +655,13 @@ PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData(); if(null != pointSetting){ int hourPoint = pointSetting.getHourPoint().intValue(); + int hourPoint1 = hourPoint; + if(1 == pointSetting.getWorkPointOpen()){ + hourPoint1 = hourPoint1 * (100 - pointSetting.getWorkPoint()); + } Integer lavePoint = appUser.getLavePoint(); appUser.setTotalPoint(appUser.getTotalPoint() + hourPoint); - appUser.setLavePoint(appUser.getLavePoint() + hourPoint); + appUser.setLavePoint(appUser.getLavePoint() + hourPoint1); this.updateById(appUser); //添加积分变动记录 UserPoint userPoint = new UserPoint(); @@ -613,4 +678,23 @@ } } } + + @Override + public IPage<AppUser> getAppuserPage(Integer pageNum, Integer pageSize, AppUser appUser) { + if (StringUtils.isNotEmpty(appUser.getShopName())){ + R<Set<Integer>> shopR = shopClient.getShopIdByName(appUser.getShopName()); + if (R.isSuccess(shopR)){ + Set<Integer> shopIds = shopR.getData(); + if (!CollectionUtils.isEmpty(shopIds)){ + appUser.setShopIds(shopIds); + } + } + } + return appUserMapper.getAppuserPage(new Page<>(pageNum, pageSize), appUser); + } + @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); + } } -- Gitblit v1.7.1