Commit fb9417cd authored by 王亮's avatar 王亮

fix some issues.

parent 9d829502
......@@ -71,13 +71,11 @@ public class AppletController {
*/
@Validated
@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)) {
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);
return JsonResult.buildSuccessResultGeneric(login);
}
......
......@@ -18,6 +18,16 @@ import static org.springframework.transaction.annotation.Propagation.MANDATORY;
public interface IWeChatUserRepository extends JpaRepository<WechatUserInfo, Long> {
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> findByUnionIdInAndAppIdAndTenantId(List<String> unionIds, String appId, Integer tenantId);
......
......@@ -10,6 +10,7 @@ import cn.quantgroup.xyqb.repository.IWeChatUserRepository;
import cn.quantgroup.xyqb.service.middleoffice.applet.IAppletService;
import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -51,7 +52,7 @@ public class AppletServiceImpl implements IAppletService {
@Override
@Transactional(rollbackFor = Exception.class)
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);
......@@ -88,9 +89,13 @@ public class AppletServiceImpl implements IAppletService {
@Override
public LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId,String appId) {
WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndAppIdAndTenantId(openId, appName,appId,tenantId);
public LoginVo login(String appName, String openId, Integer tenantId, String utmSource, String unionId, String appId) {
WechatUserInfo wechatUserInfo;
if (StringUtils.isEmpty(appId)) {
wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppNameAndTenantId(openId, appName, tenantId);
} else {
wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppIdAndTenantId(openId, appId, tenantId);
}
if (null == wechatUserInfo) {
log.warn("未找到此用户,appName:{} ,openId:{}", appName, openId);
throw new AppletException("未找到此用户", "0401");
......@@ -111,7 +116,7 @@ public class AppletServiceImpl implements IAppletService {
}
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(),
......
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