diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/RedisUtils.java b/api-mapper/src/main/java/com/heyu/api/data/utils/RedisUtils.java index 9ca1df3..2de5802 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/utils/RedisUtils.java +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/RedisUtils.java @@ -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; /** * 不设置过期时长 diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java index a0dc2bd..4520105 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java @@ -15,7 +15,6 @@ public class VvActivityDTO{ private Long buyerId; - /*** * 活动id */ diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java index b1f9956..fd409cc 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java @@ -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(); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java index 367bd1c..ccaf075 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java @@ -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 promoterBuyerIdList = new LinkedList<>(); promoterBuyerIdList.add(vvActivityDTO.getBuyerId()); List 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; - } }