diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvLoginLogDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvLoginLogDao.java index cc0233f..eb9274e 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvLoginLogDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvLoginLogDao.java @@ -7,9 +7,9 @@ package com.heyu.api.data.dao.vv; * @author quyixiao * @since 2025-08-23 */ -import com.heyu.api.data.entity.vv.VvLoginLogEntity; + import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.lz.mybatis.plugin.annotations.Realy; +import com.heyu.api.data.entity.vv.VvLoginLogEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper @@ -34,6 +34,6 @@ public interface VvLoginLogDao extends BaseMapper { int deleteVvLoginLogById(@Param("id")Long id); - @Realy + int deleteVvLoginLogRealByUserName(String username); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dto/BuyerDTO.java b/api-mapper/src/main/java/com/heyu/api/data/dto/BuyerDTO.java index 034a630..8c21883 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dto/BuyerDTO.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dto/BuyerDTO.java @@ -35,4 +35,9 @@ public class BuyerDTO { + //买家微信 + private String buyerWeixin; + //买家手机号 + private String buyerPhone; + } diff --git a/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VVAdminDTO.java b/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VVAdminDTO.java index c506106..7141ab0 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VVAdminDTO.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VVAdminDTO.java @@ -16,5 +16,8 @@ public class VVAdminDTO { * 过期时间 */ private Long expireTime; - + /*** + * 登录用户id + */ + private Long adminId; } diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvBuyerEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvBuyerEntity.java index 14304b3..55c48ae 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvBuyerEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvBuyerEntity.java @@ -1,12 +1,12 @@ package com.heyu.api.data.entity.vv; + import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import com.lz.mybatis.plugin.annotations.AS; import java.math.BigDecimal; -import java.util.Date;import java.util.Date; +import java.util.Date; /** *买家信息 * @author quyixiao @@ -103,6 +103,7 @@ private static final long serialVersionUID = 1L; private String sessionKey; //微信open_id private String openid; + /** * * @return diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VVOrderRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VVOrderRequest.java index cde152e..b8d50c5 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VVOrderRequest.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VVOrderRequest.java @@ -1,13 +1,14 @@ package com.heyu.api.alibaba.request.mm.order; +import com.heyu.api.alibaba.request.mm.AdminBaseDTO; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data -public class VVOrderRequest { +public class VVOrderRequest extends AdminBaseDTO { /** * 订单id */ diff --git a/api-web/api-interface/src/main/java/com/heyu/api/aop/ZhenZhenLogAop.java b/api-web/api-interface/src/main/java/com/heyu/api/aop/ZhenZhenLogAop.java index 3b98fe5..907fe41 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/aop/ZhenZhenLogAop.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/aop/ZhenZhenLogAop.java @@ -6,6 +6,7 @@ import com.heyu.api.common.LogAspect; import com.heyu.api.data.constants.ApiConstants; import com.heyu.api.data.dto.BuyerDTO; import com.heyu.api.data.dto.VVRequestLogDTO; +import com.heyu.api.data.dto.vv.VVAdminDTO; import com.heyu.api.data.utils.*; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; @@ -97,66 +98,79 @@ public class ZhenZhenLogAop { describe = AnnotationUtils.getAnnotationValueByMethod(method, "Describe", "value"); - Class clazz = point.getTarget().getClass(); className = clazz.getName(); - token = attributes.getRequest().getHeader("token"); + Object[] argArrs = point.getArgs(); if (uri.startsWith("/app/")) { - Object[] argArrs = point.getArgs(); - if (argArrs != null && argArrs.length > 0) { - /*** - * - */ - if (StringUtils.isNotBlank(token)) { - Object tokenValue = redisUtils.get(token); - if (tokenValue != null) { - String tokenStr = tokenValue.toString(); - BuyerDTO buyerDTO = JSONObject.parseObject(tokenStr, BuyerDTO.class); - buyerId = buyerDTO.getBuyerId(); - } - } + token = attributes.getRequest().getHeader("token"); + + // 参数封装 + if (argArrs != null && argArrs.length > 0) { for (Object argArr : argArrs) { argArr.getClass().getDeclaredMethods(); - List methods = new ArrayList<>(); - getClassDeclaredMethods(argArr.getClass(), methods); for (Method m : methods) { - if (m.getName().startsWith("get")) { - String mName = m.getName().substring(3); - if ("buyerId".equalsIgnoreCase(mName)) { - m.setAccessible(true); - - Object getBuyerId = m.invoke(argArr); - if (buyerId == null && getBuyerId != null) { - buyerId = NumberUtil.objToLongDefault(getBuyerId, -1L); - } + if ("getBuyerId".equalsIgnoreCase(m.getName())) { + m.setAccessible(true); + Object getBuyerId = m.invoke(argArr); + if (buyerId == null && getBuyerId != null) { + buyerId = NumberUtil.objToLongDefault(getBuyerId, -1L); } } } - - - for (Method m : methods) { - if (m.getName().startsWith("set")) { - String mName = m.getName().substring(3); - //if("buyerId".equalsIgnoreCase(mName)) { - // m.setAccessible(true); - - // m.invoke(argArr, new Object[]{buyerId}); - //} + if (StringUtils.isNotBlank(token)) { + Object tokenValue = redisUtils.get(token); + if (tokenValue != null) { + String tokenStr = tokenValue.toString(); + BuyerDTO buyerDTO = JSONObject.parseObject(tokenStr, BuyerDTO.class); + buyerId = buyerDTO.getBuyerId(); } } + for (Method m : methods) { + //if("buyerId".equalsIgnoreCase(mName)) { + // m.setAccessible(true); + // m.invoke(argArr, new Object[]{buyerId}); + //} + + } } } } else if (uri.startsWith("/mm/")) { + token = attributes.getRequest().getHeader("mmToken"); + Object tokenValue = redisUtils.get(token); // 登录不拦截 if (!"/mm/admin/login".equals(uri)) { - Object tokenValue = redisUtils.get(token); if (tokenValue == null) { - // return R.error("请登录"); + return R.error("请登录"); + } + } + + if (tokenValue != null) { + try { + VVAdminDTO vvAdminDTO = JSONObject.parseObject(tokenValue + "", VVAdminDTO.class); + if (vvAdminDTO != null && argArrs != null && argArrs.length > 0) { + for (Object argArr : argArrs) { + argArr.getClass().getDeclaredMethods(); + List methods = new ArrayList<>(); + getClassDeclaredMethods(argArr.getClass(), methods); + for (Method m : methods) { + if ("setUserName".equalsIgnoreCase(m.getName())) { + m.setAccessible(true); + m.invoke(argArr, new Object[]{vvAdminDTO.getUsername()}); + } + if ("setAdminId".equals(m.getName())) { + m.setAccessible(true); + m.invoke(argArr, new Object[]{vvAdminDTO.getAdminId()}); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); } } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminLoginController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminLoginController.java index ea42770..d8408dc 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminLoginController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminLoginController.java @@ -1,6 +1,7 @@ package com.heyu.api.controller.mm; +import com.alibaba.fastjson.JSON; import com.heyu.api.alibaba.request.mm.VVAdminRequest; import com.heyu.api.data.constants.RedisConstans; import com.heyu.api.data.dao.vv.VvAdminDao; @@ -53,19 +54,21 @@ public class AdminLoginController { // admin123 != '1' or 1 = 1 if (vvAdminEntity.getPassword().equals(vvAdminRequest.getPassword())) { String token = MD5Utils.getMD5(System.currentTimeMillis() + vvAdminRequest.getUsername()); + vvAdminDTO.setToken(token); vvAdminDTO.setUsername(vvAdminRequest.getUsername()); vvAdminDTO.setExpireTime(DateUtils.addDays(new Date(), 7).getTime()); + vvAdminDTO.setAdminId(vvAdminEntity.getId()); VvLoginLogEntity vvLoginLogEntity = new VvLoginLogEntity(); vvLoginLogDao.deleteVvLoginLogRealByUserName(vvAdminRequest.getUsername()); vvLoginLogEntity.setUsername(vvAdminRequest.getUsername()); - redisUtils.set(token, vvAdminRequest.getUsername(), RedisConstans.SECOND_OF_ONE_7_DAY); - vvLoginLogEntity.setToken(token); vvLoginLogDao.insertOrUpdateVvLoginLog(vvLoginLogEntity); + redisUtils.set(token, JSON.toJSONString(vvAdminDTO), RedisConstans.SECOND_OF_ONE_7_DAY); + return R.ok().setData(vvAdminDTO); } return R.ok("密码错误"); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java index 2f5b82e..5c34fc3 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java @@ -166,7 +166,6 @@ public class AdminReverseController { vvReverseOrderEntity.setCloseUser(vvApproveRequest.getUserName()); vvReverseOrderEntity.setCloseReason(vvApproveRequest.getReason()); } - List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvApproveRequest.getReverseOrderId()); List tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId); List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds); 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 50bdf2f..b57010a 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 @@ -38,7 +38,6 @@ public class AppUserLoginController { private WeChatUtils weChatUtils; - // http://localhost:8888/app/user/login @RequestMapping("/login") @Describe("微信用户登录") @@ -58,14 +57,10 @@ public class AppUserLoginController { target.setSessionKey(weiChatLoginDTO.getSessionKey()); vvBuyerDao.insertOrUpdateVvBuyer(target); - BuyerDTO buyerDTO = new BuyerDTO(); - buyerDTO.setBuyerId(target.getId()); - buyerDTO.setBuyerName(target.getBuyerName()); - buyerDTO.setFlag(target.getIsTest()); - String token = TokenUtils.generateToken(target.getId()); - buyerDTO.setToken(token); + // 默认24 小时 - redisUtils.set(token, JSON.toJSONString(buyerDTO), RedisUtils.DEFAULT_EXPIRE); + BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE); + return R.ok().put("buyer", buyerDTO); } @@ -80,12 +75,15 @@ public class AppUserLoginController { log.info("anonymous value:{}", JSON.toJSONString(request)); return R.error("设备号不对"); } - BuyerDTO buyerDTO = new BuyerDTO(); - buyerDTO.setFlag(UserLoginFlagEnums.anonymous_user.getFlag()); - Random random = new Random(1000000L); + + Random random = new Random(100000000L); String token = TokenUtils.generateToken(random.nextLong()); - buyerDTO.setToken(token); - redisUtils.set(token, JSON.toJSONString(buyerDTO), RedisUtils.thirty_minute); + + VvBuyerEntity target = new VvBuyerEntity(); + target.setIsTest(UserLoginFlagEnums.anonymous_user.getFlag()); + target.setId(random.nextLong()); + + BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.thirty_minute); return R.ok().put("buyer", buyerDTO); } @@ -102,27 +100,35 @@ public class AppUserLoginController { request.getTargetBuyer(), request.getTargetBuyer()); + + // 默认24 小时 + BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE); + return R.ok().put("buyer", buyerDTO); + } + + public BuyerDTO buildBuyerLoginInfoCacheRedisDB(VvBuyerEntity target, Long expireTime) { BuyerDTO buyerDTO = new BuyerDTO(); buyerDTO.setBuyerId(target.getId()); buyerDTO.setBuyerName(target.getBuyerName()); buyerDTO.setFlag(target.getIsTest()); + buyerDTO.setAvatar(target.getAvatar()); + buyerDTO.setBuyerPhone(target.getBuyerPhone()); + buyerDTO.setBuyerWeixin(target.getBuyerWeixin()); String token = TokenUtils.generateToken(target.getId()); + redisUtils.set(token, JSON.toJSONString(buyerDTO), expireTime); buyerDTO.setToken(token); - // 默认24 小时 - redisUtils.set(token, JSON.toJSONString(buyerDTO), RedisUtils.DEFAULT_EXPIRE); - return R.ok().put("buyer", buyerDTO); + return buyerDTO; } - @RequestMapping("/getPhoneNumber") public Object getPhoneNumber(@RequestBody VvAppLoginRequest request) { - // String sessionKey = userRepository.findByOpenId(request.getOpenId()).getSessionKey(); // 从数据库中获取 sessionKey + // 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 phoneInfo = JSONObject.parseObject(WxMaCryptUtils.decrypt(sessionKey, request.getEncryptedData(), request.getIv())); // 解密获取手机号信息 + // String phoneNumber = phoneInfo.getString("phoneNumber"); // 更新用户信息并存储到数据库 // 返回给前端的手机号信息 @@ -132,5 +138,4 @@ public class AppUserLoginController { } - }