From 651a15c78f668bef3859d9ed1bb7ad0b669d3600 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 03 七月 2020 17:52:07 +0800 Subject: [PATCH] 多APP优化 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java | 202 +++++++++++++++++++++++++------------------------- 1 files changed, 100 insertions(+), 102 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java index fcbbdc1..9660ab3 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import com.yeshi.fanli.util.*; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -14,6 +15,8 @@ import org.yeshi.utils.encrypt.DESUtil; import com.alipay.api.AlipayApiException; +import com.google.gson.Gson; +import com.yeshi.fanli.dto.wx.WXAccountInfoDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.BindingAccount; import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode; @@ -23,6 +26,7 @@ import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum; import com.yeshi.fanli.entity.bus.user.WeiXinUser; +import com.yeshi.fanli.entity.push.DeviceActive; import com.yeshi.fanli.entity.system.BusinessSystem; import com.yeshi.fanli.entity.taobao.ClientTBPid; import com.yeshi.fanli.entity.taobao.PidUser; @@ -31,20 +35,25 @@ import com.yeshi.fanli.exception.user.AlipayAccountException; import com.yeshi.fanli.exception.user.AlipayTransferException; import com.yeshi.fanli.exception.user.UserAccountException; +import com.yeshi.fanli.exception.user.UserInfoException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.BusinessSystemService; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.homemodule.HomeNavbarUserService; -import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; -import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.money.UserMoneyService; +import com.yeshi.fanli.service.inter.money.extract.BindingAccountService; +import com.yeshi.fanli.service.inter.money.extract.ExtractService; +import com.yeshi.fanli.service.inter.order.HongBaoV2Service; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.push.DeviceActiveService; import com.yeshi.fanli.service.inter.push.DeviceTokenHWService; +import com.yeshi.fanli.service.inter.push.DeviceTokenOPPOService; +import com.yeshi.fanli.service.inter.push.DeviceTokenVIVOService; +import com.yeshi.fanli.service.inter.push.DeviceTokenXMService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; -import com.yeshi.fanli.service.inter.user.BindingAccountService; -import com.yeshi.fanli.service.inter.user.ExtractService; import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService; import com.yeshi.fanli.service.inter.user.ShamUserService; import com.yeshi.fanli.service.inter.user.SpreadUserImgService; @@ -54,19 +63,14 @@ import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService; import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.UserMoneyService; import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; import com.yeshi.fanli.service.inter.user.UserSystemCouponService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.GsonUtil; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.ThreadUtil; -import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.util.account.UserUtil; import com.yeshi.fanli.util.wx.WXLoginUtil; import net.sf.json.JSONObject; +import org.yeshi.utils.entity.ProxyIP; /** * 璐︽埛绯荤粺 @@ -124,6 +128,15 @@ private DeviceTokenHWService deviceTokenHWService; @Resource + private DeviceTokenOPPOService deviceTokenOPPOService; + + @Resource + private DeviceTokenXMService deviceTokenXMService; + + @Resource + private DeviceTokenVIVOService deviceTokenVIVOService; + + @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; @Resource @@ -152,13 +165,12 @@ @Resource private UserTaoLiJinOriginService userTaoLiJinOriginService; - + @Resource private UserInfoModifyRecordService userInfoModifyRecordService; - private static final String PASSWORD_MAX_ERROR = "password_max_error"; - private static final String EXTRACT_MIN_MONEY = "extract_min_money"; - private static final String EXTRACT_MAX_MONEY = "extract_max_money"; + @Resource + private DeviceActiveService deviceActiveService; /** * @@ -177,6 +189,13 @@ public void login(AcceptData acceptData, String code, String vcode, String phone, boolean wxinstall, String tbOpenid, String tbNickName, String tbPortrait, String tbSession, int loginType, Boolean first, HttpSession session, HttpServletRequest request, PrintWriter out) { + + // 2.0浠ヤ笅鐗堟湰涓嶅厑璁哥櫥褰� + if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) { + out.print("璇峰崌绾у埌鏈�鏂扮増鏈�"); + return; + } + BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { @@ -221,8 +240,8 @@ tbUserInfo.setTbPic(tbPortrait); try { - LoginResult result = userAccountService.login(request, first, system.getAppid(), code, phone, tbUserInfo, - wxinstall, loginType); + LoginResult result = userAccountService.login(request, acceptData, first, system.getAppid(), code, phone, + tbUserInfo, wxinstall, loginType); if (result == null) LogHelper.error("login-result涓虹┖鍊�"); @@ -244,14 +263,13 @@ ThreadUtil.run(new Runnable() { public void run() { try { - int platformType = 0; - String platform = acceptData.getPlatform(); - if ("android".equals(platform)) { - platformType = 1; - } else if ("ios".equals(platform)) { - platformType = 2; + // 缁戝畾oppo,vivo鎺ㄩ�� + DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice()); + if (active != null) { + deviceTokenOPPOService.bindUid(uuser.getId(), active.getId()); + deviceTokenVIVOService.bindUid(uuser.getId(), active.getId()); + deviceTokenXMService.bindUid(active.getId(), uuser.getId()); } - userSystemCouponService.copyLotteryPrize(uuser.getId(), platformType, acceptData.getDevice()); } catch (Exception e) { e.printStackTrace(); } @@ -260,7 +278,7 @@ } catch (UserAccountException e) { try { - LogHelper.cookieLog("鐧诲綍鍑洪敊:" + e.getCode() + "-" + e.getMessage()); + LogHelper.error("鐧诲綍鍑洪敊:" + e.getCode() + "-" + e.getMessage()); } catch (Exception e1) { e1.printStackTrace(); } @@ -284,6 +302,12 @@ @RequestMapping(value = "register") public void register(AcceptData acceptData, String tbOpenid, String tbNickName, String tbPortrait, String vcode, String phone, HttpServletRequest request, HttpSession session, PrintWriter out) { + // 2.0浠ヤ笅鐗堟湰涓嶅厑璁哥櫥褰� + if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) { + out.print("璇峰崌绾у埌鏈�鏂扮増鏈�"); + return; + } + BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { @@ -335,40 +359,6 @@ } /** - * 璐﹀彿鎵撻�� - * - * @param acceptData - * @param mainUid - * @param lessUid - * @param session - * @param out - */ - @RequestMapping(value = "connect") - public void connect(AcceptData acceptData, long mainUid, long lessUid, HttpSession session, PrintWriter out) { - BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), - acceptData.getPackages()); - if (system == null) { - out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�")); - return; - } - - if (mainUid == 0 || lessUid == 0) { - out.print(JsonUtil.loadFalseResult(1, "璇蜂笂浼犳墦閫氱敤鎴稩D")); - return; - } - - try { - userAccountService.connectUsers(new UserInfo(mainUid), new UserInfo(lessUid)); - UserInfo user = userInfoService.getUserByIdWithMybatis(mainUid); - JSONObject data = new JSONObject(); - data.put("user", GsonUtil.toJsonExpose(UserUtil.filterForClientUser(user))); - out.print(JsonUtil.loadTrueResult(data)); - } catch (UserAccountException e) { - out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); - } - } - - /** * 鑾峰彇鐢ㄦ埛ID * * @param acceptData @@ -387,13 +377,16 @@ } UserInfo user = null; if (!StringUtil.isNullOrEmpty(code)) { - WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code); + WXAccountInfoDTO accountInfo = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); + + WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, accountInfo.getAppId(), + accountInfo.getAppSecret()); if (weiXinUser == null) { out.print(JsonUtil.loadFalseResult(1, "鑾峰彇寰俊鐢ㄦ埛淇℃伅澶辫触")); return; } try { - user = userAccountService.getUserInfoByWXUnionId(system.getAppid(), weiXinUser.getUnionid()); + user = userAccountService.getUserInfoByWXUnionId(SystemInfoUtil.getSystem(acceptData), weiXinUser.getUnionid()); } catch (UserAccountException e) { try { LogHelper.errorDetailInfo(e, null, "鑾峰彇鐢ㄦ埛淇℃伅鍑洪敊"); @@ -403,7 +396,7 @@ } } else if (!StringUtil.isNullOrEmpty(tbOpenid)) { try { - user = userAccountService.getUserInfoByTaoBaoOpenId(system.getAppid(), tbOpenid); + user = userAccountService.getUserInfoByTaoBaoOpenId(SystemInfoUtil.getSystem(acceptData), tbOpenid); } catch (UserAccountException e) { try { LogHelper.errorDetailInfo(e); @@ -413,7 +406,7 @@ } } else if (!StringUtil.isNullOrEmpty(phone)) { try { - user = userAccountService.getUserInfoByPhone(system.getAppid(), phone); + user = userAccountService.getUserInfoByPhone(SystemInfoUtil.getSystem(acceptData), phone); } catch (UserAccountException e) { try { LogHelper.errorDetailInfo(e); @@ -640,7 +633,7 @@ } try { - userAccountService.changeWXBind(uid, code); + userAccountService.changeWXBind(acceptData, uid, code); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); // 鍒ゆ柇taoBaoUid鏄惁宸茬粡灏佺 ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService @@ -769,8 +762,7 @@ return; } - String key = "bindalipay-" + uid; - + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + ""); if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { out.print(JsonUtil.loadFalseResult(2, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庨噸璇�")); return; @@ -825,8 +817,7 @@ return; } - String key = "bindalipay-" + uid; - + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + ""); if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { out.print(JsonUtil.loadFalseResult(1001, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庨噸璇�")); return; @@ -916,8 +907,7 @@ return; } - String key = "bindalipay-" + uid; - + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.bindAlipay, uid + ""); if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { out.print(JsonUtil.loadFalseResult(1001, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庨噸璇�")); return; @@ -941,6 +931,8 @@ String[] ALIPAY_CODES = new String[] { "SYSTEM_ERROR", "PERMIT_CHECK_PERM_LIMITED", "PERM_AML_NOT_REALNAME_REV", "PERM_AML_NOT_REALNAME_REV", "PAYEE_USER_INFO_ERROR", "PAYEE_ACC_OCUPIED", "PERMIT_CHECK_PERM_IDENTITY_THEFT", "PERMIT_NON_BANK_LIMIT_PAYEE", "EXCEED_LIMIT_UNRN_DM_AMOUNT" }; + BindingAccount oldBindingAccount = bindingAccountService.getBindingAccountByUidAndType(uid, + BindingAccount.TYPE_ALIPAY); try { BigDecimal balance = user.getMyHongBao(); BindingAccount bindingAccount = bindingAccountService.changeAlipayBindingWithVerify(uid, name, account); @@ -951,9 +943,10 @@ else out.print(JsonUtil.loadTrue(0, JsonUtil.getGson().toJson(bindingAccount), "绯荤粺宸叉垚鍔熻浆璐�0.1鍏冨埌鎻愮幇璐﹀彿涓紝鎻愮幇璐﹀彿楠岃瘉閫氳繃锛屾伃鍠滀綘锛佸彲浠ユ彁鐜颁簡銆傛敞锛氭0.1鍏冨皢浼氬湪鍚庣画浜х敓鐨勪綑棰濅腑鍚堢悊鎵i櫎锛屾暚璇风煡鏅撱��")); - + userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindAlipay, account); } catch (AlipayTransferException e1) { + LogHelper.error("鏀粯瀹濋獙璇佸嚭閿�:"+new Gson().toJson(e1)); if (e1.getSubCode().equalsIgnoreCase("PAYEE_NOT_EXIST")) { String msg = "绯荤粺鏈兘鎴愬姛杞处0.1鍏冿紝鎻愮幇璐﹀彿淇℃伅鏈夎锛岃鏍稿鍚庨噸鏂板~鍐欍��"; out.print(JsonUtil.loadFalseResult(1, msg)); @@ -974,7 +967,11 @@ } catch (AlipayAccountException e3) { // 璐︽埛鏃犱綑棰� if (e3.getCode() == AlipayAccountException.CODE_NO_MONEY) { - out.print(JsonUtil.loadFalseResult(5, "浣犵殑璐︽埛鐩墠娌℃湁浣欓锛屾棤闇�缁戝畾鎻愮幇璐﹀彿銆�")); + if (oldBindingAccount != null) { + out.print(JsonUtil.loadFalseResult(5, "褰撳墠璐︽埛娌℃湁浣欓锛屾棤闇�淇敼锛岃鏈変綑棰濆悗淇敼")); + } else { + out.print(JsonUtil.loadFalseResult(5, "褰撳墠璐︽埛娌℃湁浣欓锛岃鏈変綑棰濆悗缁戝畾")); + } return; // 鎻愮幇娆℃暟闄愬埗 } else if (e3.getCode() == AlipayAccountException.CODE_TIMES_LIMIT) { @@ -1041,7 +1038,7 @@ data.put("totalUnGetTiChengMoney", hongBaoV2Service.getUnGetTiChengMoney(uid).setScale(2, BigDecimal.ROUND_DOWN).toString()); // 鏈埌璐︽彁鎴� // 灞曠ず鎻愭垚鏁版嵁 - if (configService.iosOnLining(Integer.parseInt(acceptData.getVersion()))) + if (configService.iosOnLining(Integer.parseInt(acceptData.getVersion()),SystemInfoUtil.getSystem(acceptData))) data.put("showTiCheng", false); else data.put("showTiCheng", spreadImgCount + shareCount > 0); @@ -1118,9 +1115,19 @@ public void logOut(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid == 0) return; - // 闇�瑕佽В缁慔W鎺ㄩ�佺殑鐢ㄦ埛缁戝畾 - if ("android".equalsIgnoreCase(acceptData.getPlatform())) + if ("android".equalsIgnoreCase(acceptData.getPlatform())) { + DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(acceptData.getDevice()); + // 闇�瑕佽В缁慔W鎺ㄩ�佺殑鐢ㄦ埛缁戝畾 deviceTokenHWService.unBindDeviceToken(acceptData.getDevice()); + if (deviceActive != null) { + // 瑙g粦OPPO鎺ㄩ�佺殑鐢ㄦ埛缁戝畾 + deviceTokenOPPOService.unBindUid(uid, deviceActive.getId()); + // 瑙g粦VIVO鎺ㄩ�佺殑鐢ㄦ埛缁戝畾 + deviceTokenVIVOService.unBindUid(uid, deviceActive.getId()); + // 瑙g粦XM鎺ㄩ�佺殑鐢ㄦ埛缁戝畾 + deviceTokenXMService.unBindUid(deviceActive.getId()); + } + } out.print(JsonUtil.loadTrueResult("")); } @@ -1140,6 +1147,12 @@ public void loginNew(AcceptData acceptData, String vcode, String phone, String code, int loginType, HttpServletRequest request, PrintWriter out) { + // 2.0浠ヤ笅鐗堟湰涓嶅厑璁哥櫥褰� + if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) { + out.print("璇峰崌绾у埌鏈�鏂扮増鏈�"); + return; + } + try { BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages()); @@ -1151,12 +1164,12 @@ UserInfo userInfo = null; // 鎵嬫満鐧诲綍 if (loginType == 1) { - userInfo = userAccountService.loginPhone(request, loginType, vcode, phone, system.getAppid()); + userInfo = userAccountService.loginPhone(new ProxyIP(request.getRemoteHost(),request.getRemotePort()), acceptData, loginType, vcode, phone, system.getAppid()); } // 寰俊鐧诲綍 if (loginType == 2) { - userInfo = userAccountService.loginWinXin(request, loginType, code, system.getAppid()); + userInfo = userAccountService.loginWinXin(new ProxyIP(request.getRemoteHost(),request.getRemotePort()), acceptData, loginType, code, system.getAppid()); } if (userInfo == null) { @@ -1177,27 +1190,12 @@ LogHelper.errorDetailInfo(e); } - /* 鍚屾鏈櫥褰曚箣鍓嶈澶囨娊濂栨暟鎹� */ - try { - int platformType = 0; - String platform = acceptData.getPlatform(); - if ("android".equals(platform)) { - platformType = 1; - } else if ("ios".equals(platform)) { - platformType = 2; - } - userSystemCouponService.copyLotteryPrize(uuser.getId(), platformType, device); - } catch (Exception e) { - e.printStackTrace(); - } - - if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) { - /* 鏂颁汉绾㈠寘 */ - try { - userTaoLiJinOriginService.synchDeviceHongbao(uuser.getId(), device); - } catch (Exception e) { - e.printStackTrace(); - } + // 缁戝畾oppo鎺ㄩ�� + DeviceActive active = deviceActiveService.getFirstActiveInfo(acceptData.getDevice()); + if (active != null) { + deviceTokenOPPOService.bindUid(uuser.getId(), active.getId()); + deviceTokenVIVOService.bindUid(uuser.getId(), active.getId()); + deviceTokenXMService.bindUid(active.getId(), uuser.getId()); } } }); @@ -1206,7 +1204,7 @@ } catch (UserAccountException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); try { - LogHelper.cookieLog("鐧诲綍鍑洪敊:" + e.getCode() + "-" + e.getMessage()); + LogHelper.error("鐧诲綍鍑洪敊:" + e.getCode() + "-" + e.getMessage()); } catch (Exception e1) { e1.printStackTrace(); } @@ -1312,7 +1310,7 @@ } try { - userAccountService.bindWeiXin(uid, code); + userAccountService.bindWeiXin(acceptData, uid, code); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); // 鍒ゆ柇taoBaoUid鏄惁宸茬粡灏佺 @@ -1335,5 +1333,5 @@ out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } } - + } -- Gitblit v1.8.0