From 691c663dc5624e0dc2115a69f380087fb9ac16a1 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 26 十二月 2024 20:37:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 160 +++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 123 insertions(+), 37 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 02715d9..95e4182 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>
@@ -90,12 +100,13 @@
@Resource
private UserPointService userPointService;
+ @Resource
+ private AppUserMapper appUserMapper;
-
-
-
-
-
+ @Resource
+ private RegionClient regionClient;
+
+
/**
* 小程序一键登录
* @param appletLogin
@@ -154,11 +165,12 @@
*/
@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(!"999999".equals(mobileLogin.getCode())){
+ 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));
@@ -197,10 +209,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){
@@ -225,7 +237,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();
}
@@ -237,12 +250,13 @@
*/
@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(!"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());
@@ -305,20 +319,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);
@@ -375,6 +413,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();
@@ -442,8 +502,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());
@@ -465,7 +531,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{
@@ -488,11 +554,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
@@ -539,9 +607,8 @@
if (inviteUser.getVipId() > 3) {
return inviteUser;
}else {
- getSuperiorLeader(inviteUserId);
+ return getSuperiorLeader(inviteUserId);
}
- return null;
}
@@ -614,4 +681,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