From be67478cae6bf9308f15949a21e7d0a57a3f0ecb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 16 七月 2020 15:37:31 +0800 Subject: [PATCH] dubbo集成修改 --- fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java | 355 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 301 insertions(+), 54 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java b/fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java index 82f7e9b..a37c156 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/AuthCallBackController.java @@ -1,28 +1,33 @@ package com.yeshi.fanli.controller; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.util.Date; +import com.yeshi.fanli.entity.bus.user.UserActiveLog; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum; +import com.yeshi.fanli.entity.taobao.TaoBaoUnionAuthRecord; +import com.yeshi.fanli.exception.taobao.TaoBaoAuthException; +import com.yeshi.fanli.exception.user.UserExtraTaoBaoInfoException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.log.LogManager; +import com.yeshi.fanli.log.LogType; +import com.yeshi.fanli.service.inter.user.UserActiveLogService; +import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; +import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService; +import com.yeshi.fanli.service.inter.user.tb.TaoBaoUnionAuthRecordService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.util.*; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import net.sf.json.JSONObject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; - -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.taobao.TaoBaoUnionAuthRecord; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionAuthRecordService; -import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService; -import com.yeshi.fanli.util.AESUtil; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; - -import net.sf.json.JSONObject; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.Date; /** * 鎺堟潈鍥炶皟 @@ -40,28 +45,73 @@ @Resource private TaoBaoUnionAuthRecordService taoBaoUnionAuthRecordService; + @Resource + private UserAccountMsgNotificationService userAccountMsgNotificationService; + + @Resource + private UserInfoModifyRecordService userInfoModifyRecordService; + + @Resource + private RedisManager redisManager; + + @Resource + private UserActiveLogService userActiveLogService; + @RequestMapping(value = "tb") public void tb(String code, String state, HttpServletRequest request, HttpServletResponse response) { - LogHelper.test("娣樺疂鎺堟潈鍥炶皟:" + code + "锛�" + state); + LogManager.getLogger(LogType.taobaoAuth).info("娣樺疂鎺堟潈鍥炶皟:" + code + "锛�" + state); if (StringUtil.isNullOrEmpty(code) || StringUtil.isNullOrEmpty(state)) { LogHelper.error("娣樺疂鎺堟潈鍥炶皟鍑洪敊"); try { - response.sendRedirect("http://apph5.yeshitv.com/apppage/flq_bonusState.html?code=1"); + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/fail.html?code=1"); } catch (IOException e1) { e1.printStackTrace(); } return; } - String stateStr = AESUtil.decrypt(state, Constant.UIDAESKEY); + + try { + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoCode, code); + if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) + return; + redisManager.cacheCommonString(key, 1 + "", 5); + } catch (Exception e) { + + } + + String stateStr = null; + Long time = null; + Long uid = null; + String source = null; + try { + stateStr = AESUtil.decrypt(state, Constant.UIDAESKEY); + JSONObject json = JSONObject.fromObject(stateStr); + time = json.optLong("t"); + uid = json.optLong("u"); + source = json.optString("s"); + } catch (Exception e) { + try { + state = URLDecoder.decode(state, "UTF-8"); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + stateStr = AESUtil.decrypt(state, Constant.UIDAESKEY); + JSONObject json = JSONObject.fromObject(stateStr); + time = json.optLong("t"); + uid = json.optLong("u"); + source = json.optString("s"); + } + + LogManager.getLogger(LogType.taobaoAuth).info("娣樺疂鎺堟潈鍥炶皟state:" + state); + + LogManager.getLogger(LogType.taobaoAuth).info("娣樺疂鎺堟潈鍥炶皟瑙e瘑:" + stateStr); + int errCode = 0; if (StringUtil.isNullOrEmpty(stateStr)) { // 瑙e瘑閿欒 errCode = 1; } - JSONObject json = JSONObject.fromObject(stateStr); - Long time = json.optLong("t"); - Long uid = json.optLong("u"); - String source = json.optString("s"); + if (System.currentTimeMillis() - time > 1000 * 60 * 10L) { // 杩囨椂 errCode = 2; @@ -72,30 +122,173 @@ // 璁″叆璁板綍 try { - String result = TaoKeApiUtil.getAccessToken(code, Constant.TAOBAO_AUTH_APPKEY, - Constant.TAOBAO_AUTH_APPSECRET); + // + String result = TaoKeApiUtil.getAccessToken(code, TaoBaoConstant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET); JSONObject data = JSONObject.fromObject(result); data = data.optJSONObject("top_auth_token_create_response").optJSONObject("token_result"); String accessToken = data.optString("access_token"); String openUid = data.optString("taobao_open_uid"); String taoBaoUid = data.optString("taobao_user_id"); String nickName = data.optString("taobao_user_nick"); + try { + nickName = URLDecoder.decode(nickName, "UTF-8"); + } catch (Exception e) { + } + final String name = nickName; + LogManager.getLogger(LogType.taobaoAuth).info("uid:" + uid + "\n accessToken:" + accessToken); - // LogHelper.test("uid:" + uid + "\n accessToken:" + accessToken); - + //鎵ц缁戝畾 + source="bind"; // 鑾峰彇娓犻亾ID涓庝細鍛業D if ("share".equalsIgnoreCase(source)) { - String relationId = TaoKeApiUtil.getRelationId(accessToken, Constant.TAOBAO_AUTH_APPKEY, - Constant.TAOBAO_AUTH_APPSECRET);// 娓犻亾ID - if (StringUtil.isNullOrEmpty(relationId)) - LogHelper.test(uid + "娓犻亾澶囨澶辫触"); - userExtraTaoBaoInfoService.addRelationId(uid, relationId, taoBaoUid, true); - } else { - String specialId = TaoKeApiUtil.getSpecialId(accessToken, Constant.TAOBAO_AUTH_APPKEY, - Constant.TAOBAO_AUTH_APPSECRET); - if (StringUtil.isNullOrEmpty(specialId)) - LogHelper.test(uid + "浼氬憳澶囨澶辫触"); - userExtraTaoBaoInfoService.addSpecialId(uid, specialId, taoBaoUid, true); + String relationId = null; + + try { + relationId = TaoKeApiUtil.getRelationId(accessToken, TaoBaoConstant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET);// 娓犻亾ID + } catch (TaoBaoAuthException e) { + LogManager.getLogger(LogType.taobaoAuth).error(uid + "娓犻亾澶囨澶辫触:" + e.getMessage()); + if (e.getCode() == TaoBaoAuthException.CODE_NOT_REAL_NAME) + userAccountMsgNotificationService.taoBaoAuthFail(uid, name, "娣樺疂璐﹀彿鏈疄鍚�"); + } + + try { + userExtraTaoBaoInfoService.addRelationId(uid, relationId, taoBaoUid, nickName, true); + } catch (UserExtraTaoBaoInfoException e) { + LogHelper.test(e.getMsg()); + errCode = 5; + } + + final String relationId2 = relationId; + // 寮傛鐢宠浼氬憳ID + final Long fuid = uid; +// ThreadUtil.run(new Runnable() { +// +// @Override +// public void run() { +// String specialId = null; +// try { +// specialId = TaoKeApiUtil.getSpecialId(accessToken, TaoBaoConstant.TAOBAO_AUTH_APPKEY, +// TaoBaoConstant.TAOBAO_AUTH_APPSECRET); +// } catch (TaoBaoAuthException e1) { +// LogManager.getLogger(LogType.taobaoAuth).error(fuid + "浼氬憳澶囨澶辫触:" + e1.getMessage()); +// } +// +// try { +// userExtraTaoBaoInfoService.addSpecialId(fuid, specialId, taoBaoUid, name, true); +// +// if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId2)) +// userInfoModifyRecordService.addModifyRecord(fuid, ModifyTypeEnum.bindTaoBao, taoBaoUid); +// } catch (UserExtraTaoBaoInfoException e) { +// LogHelper.test(e.getMsg()); +// } +// } +// }); + + // 绋嶄綔寤惰繜 + Thread.sleep(50); + } else if ("zigou".equalsIgnoreCase(source)) { + String specialId = null; + + try { + specialId = TaoKeApiUtil.getSpecialId(accessToken, TaoBaoConstant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET); + } catch (TaoBaoAuthException e) { + if (e.getCode() == TaoBaoAuthException.CODE_NOT_REAL_NAME) + userAccountMsgNotificationService.taoBaoAuthFail(uid, name, "娣樺疂璐﹀彿鏈疄鍚�"); + LogManager.getLogger(LogType.taobaoAuth).error(uid + "浼氬憳澶囨澶辫触:" + e.getMessage()); + + LogHelper.test("娣樺疂鎺堟潈:"+uid + "浼氬憳澶囨澶辫触:" + e.getMessage()); + } + + LogHelper.test("娣樺疂鎺堟潈:"+specialId); + + try { + userExtraTaoBaoInfoService.addSpecialId(uid, specialId, taoBaoUid, nickName, true); + } catch (UserExtraTaoBaoInfoException e) { + LogHelper.test(e.getMsg()); + errCode = 5; + } + final Long fuid = uid; + + final String specialId2 = specialId; + // 寮傛鐢宠娓犻亾ID +// ThreadUtil.run(new Runnable() { +// +// @Override +// public void run() { +// String relationId = null; +// try { +// relationId = TaoKeApiUtil.getRelationId(accessToken, TaoBaoConstant.TAOBAO_AUTH_APPKEY, +// TaoBaoConstant.TAOBAO_AUTH_APPSECRET); +// } catch (TaoBaoAuthException e1) { +// LogManager.getLogger(LogType.taobaoAuth).error(fuid + "娓犻亾澶囨澶辫触:" + e1.getMessage()); +// } +// try { +// userExtraTaoBaoInfoService.addRelationId(fuid, relationId, taoBaoUid, name, true); +// +// if (!StringUtil.isNullOrEmpty(specialId2) && !StringUtil.isNullOrEmpty(relationId)) +// userInfoModifyRecordService.addModifyRecord(fuid, ModifyTypeEnum.bindTaoBao, taoBaoUid); +// } catch (UserExtraTaoBaoInfoException e) { +// LogHelper.test(e.getMsg()); +// } +// } +// }); + // 绋嶄綔寤惰繜 + Thread.sleep(50); + + } else if ("bind".equalsIgnoreCase(source)) { + + boolean bindInfo = true; + // 缁戝畾娣樺疂锛歏1.5.3 + String relationId = null; + + int tbErrorCode = 0; + try { + relationId = TaoKeApiUtil.getRelationId(accessToken, Constant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET);// 娓犻亾ID + } catch (TaoBaoAuthException e) { + LogManager.getLogger(LogType.taobaoAuth).error(uid + "娓犻亾澶囨澶辫触"); + tbErrorCode = e.getCode(); + } + + if (StringUtil.isNullOrEmpty(relationId)) { + bindInfo = false; + } + + String specialId = null; + if (bindInfo) { + try { + specialId = TaoKeApiUtil.getSpecialId(accessToken, Constant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET); + } catch (TaoBaoAuthException e) { + tbErrorCode = e.getCode(); + LogManager.getLogger(LogType.taobaoAuth).error(uid + "浼氬憳澶囨澶辫触"); + } + if (StringUtil.isNullOrEmpty(specialId)) { + bindInfo = false; + } + } + + if (!bindInfo) { + if (tbErrorCode == TaoBaoAuthException.CODE_NOT_REAL_NAME) { + userAccountMsgNotificationService.taoBaoAuthFail(uid, name, "娣樺疂璐﹀彿鏈疄鍚�"); + } + errCode = 5;// 淇℃伅鑾峰彇涓嶅叏 + } else { + try { + userExtraTaoBaoInfoService.saveUserTaoBaoInfo(uid, relationId, specialId, taoBaoUid, nickName, + true); + + if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) + userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindTaoBao, taoBaoUid); + } catch (UserExtraTaoBaoInfoException e) { + LogHelper.test(e.getMsg()); + errCode = 6; + } + } + } if (!StringUtil.isNullOrEmpty(nickName)) @@ -111,31 +304,85 @@ record.setTaoBaoUserNick(nickName); record.setCreateTime(new Date()); taoBaoUnionAuthRecordService.addAuthRecord(record); + } catch (Exception e) { errCode = 4; - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); + LogHelper.errorDetailInfo(e); + } + + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(uid); + + boolean isNewJump = false; + if (activeLog != null) { + String platform = null; + String version = activeLog.getVersionCode(); + if (activeLog.getChannel().equalsIgnoreCase("appstore")) { + platform = "ios"; + } else { + platform = "android"; + } + if (VersionUtil.greaterThan_2_0(platform, version)) { + isNewJump = true; } } try { if (errCode == 0)// 鎴愬姛 { - if ("share".equalsIgnoreCase(source)) - response.sendRedirect("http://apph5.yeshitv.com/apppage/flq_bonusState.html?code=0"); - else - response.sendRedirect("http://apph5.yeshitv.com/apppage/flq_rebateState.html?code=0"); + if ("share".equalsIgnoreCase(source)) { + if (isNewJump) + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/success.html"); + else + closeWebPage(response.getWriter()); + } else if ("zigou".equalsIgnoreCase(source)) { + if (isNewJump) + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/success.html"); + else + closeWebPage(response.getWriter()); + } else if ("bind".equalsIgnoreCase(source)) { + if (isNewJump) + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/success.html"); + else { + String script = String.format( + "<script>if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {window.location.href = 'yestv://toast#%s';setTimeout(function(){window.location.href = 'yestv://finishPage';},100);} else {yestv.toast(\"鎭枩浣狅紝娣樺疂缁戝畾鎴愬姛\");yestv.finishPage();}</script>", + StringUtil.getBase64String("鎭枩浣狅紝娣樺疂缁戝畾鎴愬姛")); + response.getWriter().print(script); + } + } } else {// 澶辫触 - if ("share".equalsIgnoreCase(source)) - response.sendRedirect("http://apph5.yeshitv.com/apppage/flq_bonusState.html?code=1"); - else - response.sendRedirect("http://apph5.yeshitv.com/apppage/flq_rebateState.html?code=1"); + if ("share".equalsIgnoreCase(source)) { + if (isNewJump) + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/fail.html"); + else + closeWebPage(response.getWriter()); + } else if ("zigou".equalsIgnoreCase(source)) { + if (isNewJump) + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/fail.html"); + else + closeWebPage(response.getWriter()); + } else if ("bind".equalsIgnoreCase(source)) { + if (isNewJump) + response.sendRedirect("http://apph5.banliapp.com/flqWeb/h5/tbauth/fail.html"); + else { + String script = String.format( + "<script>if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {window.location.href = 'yestv://toast#%s';setTimeout(function(){window.location.href = 'yestv://finishPage';},100);} else {yestv.toast(\"鎶辨瓑锛屾窐瀹濈粦瀹氬け璐");yestv.finishPage();}</script>", + StringUtil.getBase64String("鎶辨瓑锛屾窐瀹濈粦瀹氬け璐�")); + response.getWriter().print(script); + } + } } } catch (Exception e) { - + LogHelper.errorDetailInfo(e); } + } + + private void closeWebPage(PrintWriter out) { + String script = "<script>if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {setTimeout(function(){window.location.href = 'yestv://finishPage';},100);} else {yestv.finishPage();}</script>"; + out.print(script); + } + + @RequestMapping(value = "pinduoduo") + public void pinDuoDuo(HttpServletResponse response) { } -- Gitblit v1.8.0