提交修改

This commit is contained in:
quyixiao 2025-12-26 13:39:14 +08:00
parent 6c13b4ccac
commit 53e63c876d
4 changed files with 57 additions and 83 deletions

View File

@ -53,8 +53,7 @@ public class RedisUtils {
/**
* 默认过期时长单位
*/
public final static long DEFAULT_EXPIRE = 60 * 60 * 24;
public final static long DEFAULT_EXPIRE = 7 * 60 * 60 * 24;
/**
* 默认过期时长单位
*/
@ -64,9 +63,7 @@ public class RedisUtils {
/**
* 默认过期时长单位
*/
public final static long one_hours = 1* 60 * 60;
public final static long one_hours = 1 * 60 * 60;
/**
* 不设置过期时长

View File

@ -15,7 +15,6 @@ public class VvActivityDTO{
private Long buyerId;
/***
* 活动id
*/

View File

@ -11,6 +11,7 @@ import com.heyu.api.data.dao.vv.VvActivityDao;
import com.heyu.api.data.dao.vv.VvPromoterCodeDao;
import com.heyu.api.data.entity.vv.VvActivityEntity;
import com.heyu.api.data.entity.vv.VvPromoterCodeEntity;
import com.heyu.api.data.utils.DateUtils;
import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
@ -19,6 +20,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@Slf4j
@RestController
@RequestMapping("/app")
@ -52,6 +55,10 @@ public class AppPromoterCodeParseController {
log.info("vvActivityEntity is null");
return R.ok();
}
Date time = DateUtils.addMinutes(new Date(),30);
vvActivityDTO.setActivityExpiredTime(time.getTime());
redisUtils.set(ApiConstants.token_activity + request.getToken(), JSON.toJSONString(vvActivityDTO), RedisUtils.thirty_minute);
return R.ok();

View File

@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.heyu.api.alibaba.request.mm.VvAnonymousUserLoginRequest;
import com.heyu.api.alibaba.request.mm.VvAppBuyerInfoRequest;
import com.heyu.api.alibaba.request.mm.VvAppLoginRequest;
import com.heyu.api.alibaba.request.mm.order.VvActivityDTO;
import com.heyu.api.alibaba.request.vv.AppUserLoginRequest;
import com.heyu.api.common.annotation.Describe;
@ -19,8 +18,6 @@ import com.heyu.api.data.dto.WeiChatLoginDTO;
import com.heyu.api.data.entity.vv.VvBuyerEntity;
import com.heyu.api.data.entity.vv.VvPromoterBuyerEntity;
import com.heyu.api.data.entity.vv.VvPromoterEntity;
import com.heyu.api.data.enums.UserLoginFlagEnums;
import com.heyu.api.data.service.impl.AppBaseRequest;
import com.heyu.api.data.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,9 +25,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
@Slf4j
@RestController
@ -78,10 +75,12 @@ public class AppUserLoginController {
target.setSessionKey(weiChatLoginDTO.getSessionKey());
vvBuyerDao.insertOrUpdateVvBuyer(target);
// 默认24 小时
BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null);
BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null,1);
insertPromoter(request.getToken(),buyerDTO);
return R.ok().put("buyer", buyerDTO);
}
// http://localhost:8888/app/user/anonymous/login
@RequestMapping("/anonymous/login")
@Describe("匿名用户登录")
@ -92,42 +91,66 @@ public class AppUserLoginController {
log.info("AnonymousUserLoginAesPassword anonymous value:{}", JSON.toJSONString(request));
return R.error("设备号不对");
}
Random random = new Random(100000000L);
VvBuyerEntity target = new VvBuyerEntity();
target.setIsTest(UserLoginFlagEnums.anonymous_user.getFlag());
target.setId(random.nextLong());
BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.thirty_minute, request.getDeviceId());
replaceActivityInfo(request, "/app/user/anonymous/login");
BuyerDTO buyerDTO = null;
String activityInfoStr = redisUtils.get(request.getToken());
if (StringUtils.isNotEmpty(activityInfoStr)) {
buyerDTO = JSONObject.parseObject(activityInfoStr, BuyerDTO.class);
// 真实用户登录
if(buyerDTO.getBuyerId() > 0 ){
VvBuyerEntity target = vvBuyerDao.selectVvBuyerById(buyerDTO.getBuyerId());
buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null,1);
}
}
// 假登陆
if(buyerDTO == null){
VvBuyerEntity target = new VvBuyerEntity();
target.setId(0L);
target.setIsTest(0);
buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.thirty_minute, request.getDeviceId(), 0);
}
insertPromoter(request.getToken(),buyerDTO);
return R.ok().put("buyer", buyerDTO);
}
public void insert(String token,Long wasBuyerId) {
String activityInfo = redisUtils.get(ApiConstants.token_activity + token);
VvActivityDTO vvActivityDTO = null;
public void insertPromoter(String requestToken ,BuyerDTO buyerDTO) {
String activityInfo = redisUtils.get(ApiConstants.token_activity + requestToken);
if (StringUtils.isNotEmpty(activityInfo)) {
vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
VvBuyerEntity wasBuyerEntity = vvBuyerDao.selectVvBuyerById(wasBuyerId);
VvActivityDTO vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
VvBuyerEntity wasBuyerEntity = vvBuyerDao.selectVvBuyerById(buyerDTO.getBuyerId());
if(wasBuyerEntity ==null ){
wasBuyerEntity = new VvBuyerEntity();
wasBuyerEntity.setId(0L);
wasBuyerEntity.setBuyerName("");
wasBuyerEntity.setBuyerPhone("");
wasBuyerEntity.setBuyerWeixin("");
}
// 换token
Date endTime = new Date(vvActivityDTO.getActivityExpiredTime());
int second = DateUtils.betweenSecond(new Date(),endTime);
redisUtils.set(ApiConstants.token_activity + buyerDTO.getToken(), JSON.toJSONString(vvActivityDTO),second);
List<Long> promoterBuyerIdList = new LinkedList<>();
promoterBuyerIdList.add(vvActivityDTO.getBuyerId());
List<VvBuyerEntity> promoterBuyerList = vvBuyerDao.selectVvBuyerByIdList(promoterBuyerIdList);
VvPromoterEntity vvPromoter = new VvPromoterEntity();
vvPromoter.setActivityId(vvActivityDTO.getActivityId());
vvPromoter.setPromoterCode(vvActivityDTO.getPromoterCode());
vvPromoter.setBuyerInfo(JSONObject.toJSONString(vvActivityDTO));
vvPromoterDao.insertVvPromoter(vvPromoter);
for (VvBuyerEntity promoterBuyerEntity : promoterBuyerList) {
VvPromoterBuyerEntity vvPromoterBuyerEntity = new VvPromoterBuyerEntity();
vvPromoterBuyerEntity.setPromoterId(null);
vvPromoterBuyerEntity.setPromoterId(vvPromoter.getId());
vvPromoterBuyerEntity.setPromoterBuyerId(promoterBuyerEntity.getId());
vvPromoterBuyerEntity.setPromoterBuyerName(promoterBuyerEntity.getBuyerName());
vvPromoterBuyerEntity.setPromoterBuyerPhone(promoterBuyerEntity.getBuyerPhone());
vvPromoterBuyerEntity.setPromoterBuyerWeixin(promoterBuyerEntity.getBuyerWeixin());
vvPromoterBuyerEntity.setWasBuyerId(wasBuyerEntity.getId());
vvPromoterBuyerEntity.setWasBuyerName(wasBuyerEntity.getBuyerName());
vvPromoterBuyerEntity.setWasBuyerPhone(wasBuyerEntity.getBuyerPhone());
@ -135,32 +158,8 @@ public class AppUserLoginController {
vvPromoterBuyerDao.insertOrUpdateVvPromoterBuyer(vvPromoterBuyerEntity);
}
}
}
// http://localhost:8888/app/user/target/login
@RequestMapping("/target/login")
@Describe("目标用户登录")
public R targetLogin(@RequestBody VvAppLoginRequest request) {
VvBuyerEntity vvBuyerEntity = vvBuyerDao.selectVvBuyerIsTestById(request.getBuyerId(), 1);
if (vvBuyerEntity == null) {
return R.error("你不是内部用户");
}
VvBuyerEntity target = vvBuyerDao.selectVvBuyerInfo(
request.getTargetBuyer(),
request.getTargetBuyer(),
request.getTargetBuyer());
// 默认24 小时
BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null);
replaceActivityInfo(request, "/app/user/target/login");
return R.ok().put("buyer", buyerDTO);
}
// http://localhost:8888/app/buyer/info/update
@RequestMapping("/buyer/info/update")
@Describe("目标用户登录")
@ -176,28 +175,15 @@ public class AppUserLoginController {
return R.ok().put("buyer", vvBuyerEntity);
}
public void replaceActivityInfo(AppBaseRequest request, String uri) {
String activityTokenInfo = redisUtils.get(ApiConstants.token_activity + request.getToken());
if (StringUtils.isNotEmpty(activityTokenInfo)) {
log.info("AppUserLoginController replaceActivityInfo uri :{}, activityTokenInfo:{}", uri, activityTokenInfo);
VvActivityDTO vvActivityDTO = JSONObject.parseObject(activityTokenInfo, VvActivityDTO.class);
Long activityExpiredTime = (vvActivityDTO.getActivityExpiredTime() - System.currentTimeMillis()) / 1000;
if (activityExpiredTime > 0) {
redisUtils.set(ApiConstants.token_activity + request.getToken(), JSON.toJSONString(vvActivityDTO), activityExpiredTime);
}
}
}
public BuyerDTO buildBuyerLoginInfoCacheRedisDB(VvBuyerEntity target, Long expireTime, String deviceId) {
public BuyerDTO buildBuyerLoginInfoCacheRedisDB(VvBuyerEntity target, Long expireTime, String deviceId,Integer loginType) {
BuyerDTO buyerDTO = new BuyerDTO();
buyerDTO.setBuyerId(target.getId());
buyerDTO.setBuyerName(target.getBuyerName());
buyerDTO.setIsTest(target.getIsTest());
buyerDTO.setAvatar(target.getAvatar());
buyerDTO.setLoginType(loginType);
buyerDTO.setBuyerPhone(target.getBuyerPhone());
buyerDTO.setBuyerWeixin(target.getBuyerWeixin());
String token = TokenUtils.generateToken(target.getId() + deviceId);
redisUtils.set(token, JSON.toJSONString(buyerDTO), expireTime);
buyerDTO.setToken(token);
@ -205,21 +191,6 @@ public class AppUserLoginController {
}
@RequestMapping("/getPhoneNumber")
public Object getPhoneNumber(@RequestBody VvAppLoginRequest request) {
// String sessionKey = userRepository.findByOpenId(request.getOpenId()).getSessionKey(); // 从数据库中获取 sessionKey
// JSONObject phoneInfo = JSONObject.parseObject(WxMaCryptUtils.decrypt(sessionKey, request.getEncryptedData(), request.getIv())); // 解密获取手机号信息
// String phoneNumber = phoneInfo.getString("phoneNumber");
// 更新用户信息并存储到数据库
// 返回给前端的手机号信息
JSONObject result = new JSONObject();
result.put("phoneNumber", null);
return result;
}
}