Java tutorial
/** * @(#)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; } }