com.neusoft.mid.clwapi.service.oauth.OauthServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.neusoft.mid.clwapi.service.oauth.OauthServiceImpl.java

Source

/**
 * @(#)OauthServiceImpl.java 2013-3-24
 *
 * Copyright 2013 Neusoft Group Ltd. All rights reserved.
 * Neusoft PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.neusoft.mid.clwapi.service.oauth;

import java.util.List;

import javax.annotation.Resource;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;

import org.apache.commons.lang.StringUtils;
import org.apache.cxf.jaxrs.ext.MessageContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.neusoft.mid.clwapi.common.ErrorConstant;
import com.neusoft.mid.clwapi.common.HttpConstant;
import com.neusoft.mid.clwapi.common.ModCommonConstant;
import com.neusoft.mid.clwapi.common.UserInfoKey;
import com.neusoft.mid.clwapi.entity.oauth.CheckLoginReq;
import com.neusoft.mid.clwapi.entity.oauth.LoginResp;
import com.neusoft.mid.clwapi.entity.oauth.MobileBindingInfo;
import com.neusoft.mid.clwapi.entity.oauth.UsrInfo;
import com.neusoft.mid.clwapi.exception.common.ApplicationException;
import com.neusoft.mid.clwapi.mapper.OauthMapper;
import com.neusoft.mid.clwapi.process.delivermsg.DeliverMsgResult;
import com.neusoft.mid.clwapi.process.delivermsg.SendDeliverMsgService;
import com.neusoft.mid.clwapi.service.common.UsrOauthService;
import com.neusoft.mid.clwapi.service.software.SoftwareServiceImpl;
import com.neusoft.mid.clwapi.tools.CheckRequestParam;
import com.neusoft.mid.clwapi.tools.JacksonUtils;

/**
 * @author <a href="mailto:majch@neusoft.com">majch </a>
 * @version $Revision 1.0 $ 2013-3-24 ?10:38:49
 */
public class OauthServiceImpl implements OauthService {

    /**
     * .
     */
    private static Logger logger = LoggerFactory.getLogger(ModCommonConstant.LOGGER_NAME);
    @Context
    private MessageContext context;
    @Autowired
    private OauthMapper oauthMapper;
    @Autowired
    private UsrOauthService usrOauthService;
    @Autowired
    private SendDeliverMsgService sendDeliverMsgService;
    @Resource
    private SoftwareServiceImpl softwareService;

    /**
     * AccessToken?.
     * 
     * @param token
     *            ?.
     * @param refeshToken
     *            ?.
     * @return ?.
     */
    @Override
    public Response tokenRefesh(String token, String refeshToken) {

        logger.info("?:" + token);
        logger.info("?:" + refeshToken);

        return Response.ok(Response.Status.ACCEPTED).build();
    }

    /**
     * ?.
     * 
     * @param token
     *            ?.
     * @param version
     *            .
     * @return ?.
     */
    @Override
    public Response checklogin(String token, String version) {
        logger.info("?-start");

        String enterpriseId = context.getHttpHeaders().getHeaderString(UserInfoKey.ENTERPRISE_ID);
        String isEnterpriseAllow = oauthMapper.getEnAllowByEnId(enterpriseId);
        if (StringUtils.isEmpty(isEnterpriseAllow)) {
            logger.info("?ID[" + enterpriseId + "]");
            return Response.status(Response.Status.UNAUTHORIZED).entity(ErrorConstant.ERROR_LOGIN_10102.toJson())
                    .build();
        }
        if ("0".equals(isEnterpriseAllow)) {
            logger.info("?ID[" + enterpriseId + "]?");
            return Response.status(297).entity(ErrorConstant.ERROR10107.toJson()).build();
        }

        String usrId = context.getHttpHeaders().getHeaderString(UserInfoKey.USR_ID);
        if (CheckRequestParam.isEmpty(usrId)) {
            logger.error("?ID?");
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ErrorConstant.ERROR90000.toJson())
                    .header(HttpHeaders.CACHE_CONTROL, "no-store").header("Pragma", "no-cache").build();
        }
        UsrInfo xcpUsrInfo = oauthMapper.getXcpUsrInfoByUsrId(usrId);
        if (null == xcpUsrInfo) {
            logger.info("[" + usrId + "]??");
            return Response.status(Response.Status.UNAUTHORIZED).entity(ErrorConstant.ERROR_LOGIN_10102.toJson())
                    .build();
        }
        List<String> userLimitList = null;
        Long expireIn = new LoginServiceImpl().getTokenExpireIntervall();

        // ?
        oauthMapper.refreshTokenExpireTime(token, expireIn, usrId, xcpUsrInfo.getOrgId());

        // userLimitList = oauthMapper.getUserLimit(usrInfo.getUsrId());
        LoginResp loginResp = new LoginResp();
        loginResp.setExpiresIn(expireIn);
        loginResp.setUsrInfo(xcpUsrInfo);
        loginResp.setScope(userLimitList);

        logger.info("?-end");
        return Response.ok().entity(JacksonUtils.toJsonRuntimeException(loginResp)).build();
    }

    /**
     * ???.
     * 
     * @param token
     *            ?.
     * @param clientid
     *            .
     * @return ????.
     */
    @Override
    public Response pushMsgBinding(String token, String reqCont) {
        logger.info("?????");

        MobileBindingInfo bindInfo = JacksonUtils.fromJsonRuntimeException(reqCont, MobileBindingInfo.class);

        if (null == bindInfo || StringUtils.isEmpty(StringUtils.strip(bindInfo.getClientid()))) {
            logger.info("?clientid");
            return Response.status(Response.Status.BAD_REQUEST).entity(ErrorConstant.ERROR10002.toJson())
                    .header("Content-Type", "application/json;charset=UTF-8").build();
        } else {
            logger.info("?clientid:" + bindInfo.getClientid());
            String userId = context.getHttpHeaders().getHeaderString(UserInfoKey.USR_ID);
            if (CheckRequestParam.isEmpty(userId)) {
                logger.error("?ID?");
                return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                        .entity(ErrorConstant.ERROR90000.toJson())
                        .header("Content-Type", "application/json;charset=UTF-8").build();
            }
            DeliverMsgResult result = sendDeliverMsgService.sendMobileInfoToCoreService(userId,
                    bindInfo.getClientid());

            if (null != result && "0".equals(result.getCode())) {
                logger.info("?????");
                return Response.ok().header(HttpHeaders.CACHE_CONTROL, "no-store").header("Pragma", "no-cache")
                        .build();
            } else {
                logger.info("??");
                return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                        .entity(ErrorConstant.ERROR90000.toJson())
                        .header("Content-Type", "application/json;charset=UTF-8").build();
            }
        }

    }

    /**
     * ?
     * 
     * @param token
     *            ?
     */
    @Override
    public String logout(String token) {
        String usrId = context.getHttpHeaders().getHeaderString("usr_id");
        oauthMapper.clearIosToken(usrId);
        logger.info("[ " + usrId + " ](USER_ID)");
        // ?
        oauthMapper.logoutUsrOauth(token, usrId);
        logger.info("[ " + usrId + " ](USER_ID)?");
        // ?
        return HttpConstant.RESP_200;
    }

}