吴学文
2019-11-23 d32600fdec969c9da191b4216416fe711a190de8
AppFrontService/src/main/java/com/java110/app/smo/wxLogin/impl/WxLoginSMOImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.app.properties.WechatAuthProperties;
import com.java110.app.smo.AppAbstractComponentSMO;
import com.java110.app.smo.wxLogin.IWxLoginSMO;
import com.java110.core.component.AbstractComponentSMO;
import com.java110.core.context.IPageData;
@@ -27,7 +28,7 @@
 * wx登录
 */
@Service("wxLoginSMOImpl")
public class WxLoginSMOImpl extends AbstractComponentSMO implements IWxLoginSMO {
public class WxLoginSMOImpl extends AppAbstractComponentSMO implements IWxLoginSMO {
    private final static Logger logger = LoggerFactory.getLogger(WxLoginSMOImpl.class);
@@ -65,12 +66,14 @@
                code,
                wechatAuthProperties.getGrantType());
        logger.debug("wechatAuthProperties:" + JSONObject.toJSONString(wechatAuthProperties));
        logger.debug("微信返回报文:" + response);
        Assert.jsonObjectHaveKey(response, "errcode", "返回报文中未包含 错误编码,接口出错");
        //Assert.jsonObjectHaveKey(response, "errcode", "返回报文中未包含 错误编码,接口出错");
        JSONObject responseObj = JSONObject.parseObject(response);
        if (!"0".equals(responseObj.getString("errcode"))) {
        if (responseObj.containsKey("errcode") && !"0".equals(responseObj.getString("errcode"))) {
            throw new IllegalArgumentException("微信验证失败,可能是code失效");
        }
@@ -129,13 +132,13 @@
            registerInfo.put("password", userDefaultPassword);
            JSONArray userAttr = new JSONArray();
            JSONObject userAttrObj = new JSONObject();
            userAttrObj.put("attrId","-1");
            userAttrObj.put("specCd","100201911001");
            userAttrObj.put("value",openId);
            userAttrObj.put("attrId", "-1");
            userAttrObj.put("specCd", "100201911001");
            userAttrObj.put("value", openId);
            userAttr.add(userAttrObj);
            registerInfo.put("businessUserAttr", userAttr);
            responseEntity = this.callCenterService(restTemplate, pd, registerInfo.toJSONString(), ServiceConstant.SERVICE_API_URL + "/api/user.service.register", HttpMethod.POST);
            if(responseEntity.getStatusCode() != HttpStatus.OK){
            if (responseEntity.getStatusCode() != HttpStatus.OK) {
                throw new IllegalArgumentException("保存用户信息失败");
            }
            responseEntity = super.getUserInfoByOpenId(pd, restTemplate, openId);
@@ -144,21 +147,24 @@
            if (responseEntity.getStatusCode() != HttpStatus.OK) {
                throw new IllegalArgumentException("根绝openId 查询用户信息异常" + openId);
            }
             userResult = JSONObject.parseObject(responseEntity.getBody());
            userResult = JSONObject.parseObject(responseEntity.getBody());
        }
        JSONObject userInfo = userResult.getJSONArray("users").getJSONObject(0);
        userInfo.put("password", "");
        try {
            Map userMap = new HashMap();
            userMap.put(CommonConstant.LOGIN_USER_ID,userResult.getString("userId"));
            userMap.put(CommonConstant.LOGIN_USER_ID, userInfo.getString("userId"));
            String token = AuthenticationFactory.createAndSaveToken(userMap);
            JSONObject paramOut = new JSONObject();
            paramOut.putAll(userResult);
            paramOut.put("token",token);
            paramOut.put("sessionKey",sessionKey);
            paramOut.putAll(userInfo);
            paramOut.put("token", token);
            paramOut.put("sessionKey", sessionKey);
            pd.setToken(token);
            responseEntity = new ResponseEntity<String>(paramOut.toJSONString(), HttpStatus.OK);
        }catch (Exception e){
            logger.error("登录异常:",e);
        } catch (Exception e) {
            logger.error("登录异常:", e);
            throw new IllegalArgumentException("鉴权失败");
        }
        //根据openId 查询用户信息,是否存在用户