Commit fb9417cd authored by 王亮's avatar 王亮

fix some issues.

parent 9d829502
...@@ -71,13 +71,11 @@ public class AppletController { ...@@ -71,13 +71,11 @@ public class AppletController {
*/ */
@Validated @Validated
@PostMapping("/login") @PostMapping("/login")
public JsonResult login(@RequestParam String appName, @RequestParam String openId, @RequestParam(required = false) Integer tenantId, String utmSource, @RequestParam(required = false) Integer appNo, @RequestParam(required = false) String unionId, @RequestHeader(value = Constants.X_AUTH_APP_ID,defaultValue = UserConstant.defaultAppId) String appId) { public JsonResult login(@RequestParam String appName, @RequestParam String openId, @RequestParam(required = false) Integer tenantId, String utmSource, @RequestParam(required = false) Integer appNo, @RequestParam(required = false) String unionId, @RequestHeader(value = Constants.X_AUTH_APP_ID,required = false) String appId) {
if (!containsAppName(appName)) { if (!containsAppName(appName)) {
throw new DataException("appName不合法"); throw new DataException("appName不合法");
} }
if (org.apache.commons.lang3.StringUtils.isEmpty(appId)) {
appId = wechatConfiguration.getDefault().getAppId();
}
LoginVo login = iAppletService.login(appName, openId, tenantId, utmSource, unionId,appId); LoginVo login = iAppletService.login(appName, openId, tenantId, utmSource, unionId,appId);
return JsonResult.buildSuccessResultGeneric(login); return JsonResult.buildSuccessResultGeneric(login);
} }
......
...@@ -18,6 +18,16 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY; ...@@ -18,6 +18,16 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY;
public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Long> { public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Long> {
WechatUserInfo findByOpenIdAndAppNameAndAppIdAndTenantId(String openId, String appName, String appId, Integer tenantId); WechatUserInfo findByOpenIdAndAppNameAndAppIdAndTenantId(String openId, String appName, String appId, Integer tenantId);
/**
* 兼容历史逻辑,老的代码可能只通过appName进行支付宝、百度等登录
* @param openId 用户的openId
* @param appName 用户名
* @param tenantId 租户id
* @return
*/
WechatUserInfo findByOpenIdAndAppNameAndTenantId(String openId, String appName, Integer tenantId);
List<WechatUserInfo> findByOpenIdInAndAppIdAndTenantId(List<String> openId, String appId, Integer tenantId); List<WechatUserInfo> findByOpenIdInAndAppIdAndTenantId(List<String> openId, String appId, Integer tenantId);
List<WechatUserInfo> findByUnionIdInAndAppIdAndTenantId(List<String> unionIds, String appId, Integer tenantId); List<WechatUserInfo> findByUnionIdInAndAppIdAndTenantId(List<String> unionIds, String appId, Integer tenantId);
......
...@@ -10,6 +10,7 @@ import cn.quantgroup.xyqb.repository.IWeChatUserRepository; ...@@ -10,6 +10,7 @@ import cn.quantgroup.xyqb.repository.IWeChatUserRepository;
import cn.quantgroup.xyqb.service.middleoffice.applet.IAppletService; import cn.quantgroup.xyqb.service.middleoffice.applet.IAppletService;
import cn.quantgroup.xyqb.service.register.IUserRegisterService; import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -51,7 +52,7 @@ public class AppletServiceImpl implements IAppletService { ...@@ -51,7 +52,7 @@ public class AppletServiceImpl implements IAppletService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long relevance(AppletParamEntry appletParamEntry) { public Long relevance(AppletParamEntry appletParamEntry) {
WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(appletParamEntry.getOpenId(), appletParamEntry.getAppName(),appletParamEntry.getAppId(),appletParamEntry.getTenantId()); WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(appletParamEntry.getOpenId(), appletParamEntry.getAppName(), appletParamEntry.getAppId(), appletParamEntry.getTenantId());
//这个接口先不考虑更换手机号的情况 //这个接口先不考虑更换手机号的情况
wechatUserInfo = (wechatUserInfo == null ? new WechatUserInfo() : wechatUserInfo); wechatUserInfo = (wechatUserInfo == null ? new WechatUserInfo() : wechatUserInfo);
...@@ -88,9 +89,13 @@ public class AppletServiceImpl implements IAppletService { ...@@ -88,9 +89,13 @@ public class AppletServiceImpl implements IAppletService {
@Override @Override
public LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId,String appId) { public LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId, String appId) {
WechatUserInfo wechatUserInfo;
WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(openId, appName,appId,tenantId); if (StringUtils.isEmpty(appId)) {
wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndTenantId(openId, appName, tenantId);
} else {
wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppIdAndTenantId(openId, appId, tenantId);
}
if (null == wechatUserInfo) { if (null == wechatUserInfo) {
log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId); log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户", "0401"); throw new AppletException("未找到此用户", "0401");
...@@ -111,7 +116,7 @@ public class AppletServiceImpl implements IAppletService { ...@@ -111,7 +116,7 @@ public class AppletServiceImpl implements IAppletService {
} }
if (unionId != null && !unionId.equals(wechatUserInfo.getUnionId())) { if (unionId != null && !unionId.equals(wechatUserInfo.getUnionId())) {
iWeChatUserRepository.updateUserUnionId(wechatUserInfo.getUserId(), appName, unionId,appId,tenantId); iWeChatUserRepository.updateUserUnionId(wechatUserInfo.getUserId(), appName, unionId, appId, tenantId);
} }
return loginModule.loginByUserId(user.getRegisteredFrom(), return loginModule.loginByUserId(user.getRegisteredFrom(),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment