提交修改

This commit is contained in:
quyixiao 2025-11-18 09:38:45 +08:00
parent 57ef857d7e
commit a626661ee5
9 changed files with 100 additions and 69 deletions

View File

@ -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<VvLoginLogEntity> {
int deleteVvLoginLogById(@Param("id")Long id);
@Realy
int deleteVvLoginLogRealByUserName(String username);
}

View File

@ -35,4 +35,9 @@ public class BuyerDTO {
//买家微信
private String buyerWeixin;
//买家手机号
private String buyerPhone;
}

View File

@ -16,5 +16,8 @@ public class VVAdminDTO {
* 过期时间
*/
private Long expireTime;
/***
* 登录用户id
*/
private Long adminId;
}

View File

@ -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

View File

@ -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
*/

View File

@ -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<Method> 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<Method> 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();
}
}
}

View File

@ -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("密码错误");

View File

@ -166,7 +166,6 @@ public class AdminReverseController {
vvReverseOrderEntity.setCloseUser(vvApproveRequest.getUserName());
vvReverseOrderEntity.setCloseReason(vvApproveRequest.getReason());
}
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvApproveRequest.getReverseOrderId());
List<Long> tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);

View File

@ -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 {
}
}