Merge branch 'cc_20250918_cp_token' into 'master'

fix:菜品市场免登短期token接口;短期token换用户信息接口

See merge request hangzhou/java/custom_zxjp!168
This commit is contained in:
苏竹红
2025-10-10 08:21:49 +00:00
7 changed files with 92 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
package com.cool.store.service;
import com.cool.store.dto.wx.MiniAppUrlLinkReqDTO;
import com.cool.store.dto.wx.MiniProgramFreeLoginDTO;
import com.cool.store.dto.wx.MiniProgramLoginDTO;
import com.cool.store.request.MobileUpdateRequest;
import com.cool.store.vo.PartnerUserInfoVO;
@@ -28,4 +29,18 @@ public interface WechatMiniAppService {
String getMiniAppUrl();
String getMiniAppUrlLink(MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO);
/**
* 通过手机号获取短期token
* @param param 小程序免登DTO
* @return Token
*/
String getShortTermTokenByMobile(MiniProgramFreeLoginDTO param);
/**
* 通过短期token获取用户信息
* @param token 短期token
* @return 用户信息VO
*/
PartnerUserInfoVO getUserInfoByShortTermToken(String token);
}

View File

@@ -17,6 +17,7 @@ import com.cool.store.utils.UUIDUtils;
import com.cool.store.vo.PartnerUserInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -252,4 +253,30 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService {
return null;
}
@Override
public String getShortTermTokenByMobile(MiniProgramFreeLoginDTO param) {
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(param.getMobile());
if (Objects.isNull(hyPartnerUserInfoDO)) {
return "";
}
PartnerUserInfoVO userInfoVO = BeanUtil.toBean(hyPartnerUserInfoDO, PartnerUserInfoVO.class);
fillLineInfo(userInfoVO, hyPartnerUserInfoDO.getPartnerId());
String token = new SecureRandomNumberGenerator().nextBytes().toHex();
String key = MessageFormat.format(CommonConstants.ZXJP_MIN_PROGRAM_SHORT_TERM_LOGIN_FLAG, token);
redisUtilPool.setString(key, JSONObject.toJSONString(userInfoVO), CommonConstants.SHORT_TERM_TOKEN_EXPIRE);
return token;
}
@Override
public PartnerUserInfoVO getUserInfoByShortTermToken(String token) {
String key = MessageFormat.format(CommonConstants.ZXJP_MIN_PROGRAM_SHORT_TERM_LOGIN_FLAG, token);
String userStr = redisUtilPool.getString(key);
if (StringUtils.isNotBlank(userStr)) {
PartnerUserInfoVO userInfoVO = JSONObject.parseObject(userStr, PartnerUserInfoVO.class);
redisUtilPool.delKey(key);
return userInfoVO;
}
return null;
}
}