You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.9 KiB

5 years ago
package com.epmet.service.impl;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.dto.form.PaWxCodeFormDTO;
import com.epmet.service.PublicUserLoginService;
5 years ago
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
5 years ago
/**
* 描述一下
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/8 18:31
*/
@Service
public class PublicUserLoginServiceImpl implements PublicUserLoginService {
private static final Logger logger = LoggerFactory.getLogger(PublicUserLoginServiceImpl.class);
5 years ago
@Autowired
private WxMpService wxMpService;
@Override
public Map loginByWxCode(PaWxCodeFormDTO formDTO) {
5 years ago
WxMpUser wxMpUser=this.getWxMpUser(formDTO.getWxCode());
Map map =new HashMap();
map.put("微信用户信息",wxMpUser);
return map;
5 years ago
}
private WxMpUser getWxMpUser(String wxCode) {
WxMpUser wxMpUser = null;
try {
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(wxCode);
wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
} catch (WxErrorException e) {
logger.error("->[getWxMpUser]::error[{}]", "解析微信用户信息失败",e.getMessage());
e.printStackTrace();
throw new RenException("解析微信用户信息失败"+e.getMessage());
5 years ago
}
if (null == wxMpUser || StringUtils.isBlank(wxMpUser.getUnionId())) {
throw new RenException("解析微信用户信息失败");
}
return wxMpUser;
}
}