Java tutorial
/** * Project: guahao-portal-web-home * * File Created at 2012-11-30 * * Copyright 2012 Greenline.com Corporation Limited. * All rights reserved. * * This software is the confidential and proprietary information of * Greenline Company. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Greenline.com. */ package com.greenline.guahao.web.module.home.controllers.mobile; import java.text.SimpleDateFormat; import java.util.Date; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Component; import org.springframework.ui.ModelMap; import com.greenline.common.util.Base64Util; import com.greenline.common.util.DESUtil; import com.greenline.common.util.RegexUtil; import com.greenline.guahao.biz.enums.VerifyTypeEnum; import com.greenline.guahao.biz.manager.cache.valid.CodeCacheManager; import com.greenline.guahao.biz.manager.partners.unicom.UnicomManager; import com.greenline.guahao.biz.manager.user.UserManager; import com.greenline.guahao.biz.manager.user.dataobject.UserDO; import com.greenline.guahao.web.module.common.constants.GlobalConstants; import com.greenline.guahao.web.module.common.constants.MobileConstants; import com.greenline.guahao.web.module.common.cookie.UserCookieUtil; import com.greenline.guahao.web.module.common.utils.CommonUtils; import com.greenline.guahao.web.module.common.utils.CryptoTools; import com.greenline.guahao.web.module.common.utils.IpUtil; import com.greenline.guahao.web.module.common.utils.UserUtil; import com.greenline.guahao.web.module.home.controllers.user.UserLoginPO; /** * @Type UnicomUtils * @Desc * @author ?? * @date 2012-11-30 * @Version V1.0 */ @Component public class UnicomUtils { private static final Log log = LogFactory.getLog(UnicomUtils.class); // ?? private static final Integer timeout = 5 * 60 * 1000; // ??cookie public static final Integer telphoneCookieTimeOut = 24 * 60 * 60; @Resource private HttpServletRequest request; @Resource private CodeCacheManager codeCacheManager; @Resource private UnicomManager unicomManager; @Resource private UserManager userManager; public String writeUserCookie(String mobile) { if (RegexUtil.isMobile(mobile)) { // cookie UserCookieUtil.writeKey(request, UserCookieUtil.MOBILE, mobile, UnicomUtils.telphoneCookieTimeOut); UserDO userDo = userManager.findUserByLoginId(mobile); if (null == userDo) { UserCookieUtil.writeKey(request, UserCookieUtil.LOGIN_ID, mobile, -1); } else { // ?? UserUtil.writeUserCookie(request, userDo, -1); return GlobalConstants.REDIRECT_PER + MobileConstants.M_FASTORDER_HOME_PATH; } } return null; } /** * net?? * * @param url * @return */ public String unicomGetMobile(final String url) { // ?net?? String netCGUrl = unicomManager.getNetCGurl(IpUtil.getIpAddr(request)); if (StringUtils.isNotBlank(netCGUrl)) { String code = String.valueOf(new Date().getTime() / 1000); // ?? String newSign = DESUtil.DESEncode(code, MobileConstants.DESC_UNICOM_KEY); codeCacheManager.setCode(VerifyTypeEnum.UNICOM_NET_MOB_CODE, code, code, timeout); String baseurl = CommonUtils.getServerNameAndPort(request) + url + "?sign=" + newSign; log.info("______________base_backurl" + baseurl); String backurl = Base64Util.encodeBase64(baseurl, null); return GlobalConstants.REDIRECT_PER + netCGUrl + "?backurl=" + backurl; } return null; } /** * ???url * * @param model * @return */ public String getUnicomURL(ModelMap model, String returnpageurl) { return getUnicomURL(model, returnpageurl, false); } public String getUnicomURL(ModelMap model, String returnpageurl, boolean istologinpage) { SimpleDateFormat destsmf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); log.info("______________getUnicomURL" + destsmf.format(new Date())); log.info("______________??url,returnpageurl:" + returnpageurl); if (StringUtils.isBlank(returnpageurl)) { log.error("______________??url,returnpageurl"); return null; } String returl = this.unicomGetMobile(returnpageurl); log.info("______________getUnicomURL" + returl); log.info("______________?getUnicomURL" + destsmf.format(new Date())); if (StringUtils.isNotBlank(returl)) { return returl; } if (istologinpage) { log.error("______________???url?"); UserLoginPO user = new UserLoginPO(); String loginId = UserCookieUtil.getLoginId(request); user.setLoginId(loginId); model.put("target", "/mobile/unicom_landing"); model.put("user", user); request.setAttribute("noBack", Boolean.TRUE); return MobileConstants.M_LOGIN; } else { log.error("______________???urlreturnpageurl"); return GlobalConstants.REDIRECT_PER + returnpageurl; } } /** * ???url???? * * @param model * @return */ public String getPhoneFromUnicomURL() { log.info("______________??????"); String sign = request.getParameter("sign"); log.info("______________sign=" + sign); // ?? String mobile = request.getParameter("mob"); log.info("______________??????:" + mobile); if (StringUtils.isBlank(sign)) { return null; } String clientSign = DESUtil.DESDecode(sign, MobileConstants.DESC_UNICOM_KEY); String cookiecode = codeCacheManager.getCode(VerifyTypeEnum.UNICOM_NET_MOB_CODE, clientSign); codeCacheManager.delCode(VerifyTypeEnum.UNICOM_NET_MOB_CODE, clientSign); if (StringUtils.isNotBlank(mobile)) { mobile = CryptoTools.decode(mobile, unicomManager.getSpPassWord()); log.info("______________???????:" + mobile); log.info("______________cookiecode:" + cookiecode + "___________clientSign:" + clientSign); if (clientSign.equalsIgnoreCase(cookiecode)) { if (RegexUtil.isMobile(StringUtils.trim(mobile))) { // cookie UserCookieUtil.writeKey(request, UserCookieUtil.MOBILE, mobile, telphoneCookieTimeOut); UserCookieUtil.writeKey(request, UserCookieUtil.LOGIN_ID, mobile, -1); } return mobile; } else { log.error("______________???????:" + CommonUtils.getRequestUrl(request)); } } return null; } /** * ??net?? * * @return */ public String unicomLogin() { SimpleDateFormat destsmf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // cookie?????????? String mobile = UserCookieUtil.getMobile(request); log.info("______________cookie???" + mobile); if (StringUtils.isBlank(mobile)) { // ?net?? if ("1".equals(request.getParameter("home"))) { log.info("______________unicomGetMobile" + destsmf.format(new Date())); String returl = this.unicomGetMobile(MobileConstants.M_LOGIN_PATH); log.info("______________unicomGetMobile.returl" + returl); log.info("______________?unicomGetMobile" + destsmf.format(new Date())); return returl; } } log.info("______________?______________"); // ????? if (StringUtils.isNotBlank(mobile) || StringUtils.isNotBlank(request.getParameter("sign"))) { log.info("______________automaticLogin" + destsmf.format(new Date())); String returl = this.automaticLogin(mobile); log.info("______________automaticLogin.returl" + returl); log.info("______________?automaticLogin" + destsmf.format(new Date())); return returl; } return null; } /** * * * @param model * @return */ private String automaticLogin(String telphone) { // 1cookie??? if (RegexUtil.isMobile(StringUtils.trim(telphone))) { log.info("______________cookie???" + telphone + ""); String returl = this.writeUserCookie(telphone); log.info("______________cookie????,returl=" + returl); return returl; } // 2??????? log.info("______________???????"); String sign = request.getParameter("sign"); log.info("______________sign=" + sign); String clientSign = DESUtil.DESDecode(sign, MobileConstants.DESC_UNICOM_KEY); String cookiecode = codeCacheManager.getCode(VerifyTypeEnum.UNICOM_NET_MOB_CODE, clientSign); codeCacheManager.delCode(VerifyTypeEnum.UNICOM_NET_MOB_CODE, clientSign); // ?? String mobile = request.getParameter("mob"); log.info("______________??????:" + mobile); if (StringUtils.isNotBlank(mobile)) { mobile = CryptoTools.decode(mobile, unicomManager.getSpPassWord()); log.info("______________???????:" + mobile); if (clientSign.equalsIgnoreCase(cookiecode)) { return this.writeUserCookie(mobile); } else { log.error("______________???????:" + CommonUtils.getRequestUrl(request)); } } return null; } }