From 62a447d89331aee1feae7724c7616aa1bb2cfe79 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 16 十月 2024 14:28:37 +0800 Subject: [PATCH] 将CMQ替换为rabbitmq --- fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java | 126 +++++++++++++++++++++++++++++++---------- 1 files changed, 95 insertions(+), 31 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 2212815..42b5dfd 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 @@ -2,6 +2,7 @@ import com.alipay.api.AlipayApiException; import com.google.gson.Gson; +import com.ks.push.service.BDeviceTokenService; import com.yeshi.fanli.dto.wx.WXAccountInfoDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.*; @@ -29,11 +30,16 @@ import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.account.UserUtil; import com.yeshi.fanli.util.wx.MyWXLoginUtil; +import com.yeshi.fanli.vo.user.QQUserInfoVO; import net.sf.json.JSONObject; +import org.apache.dubbo.config.annotation.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.TimeUtil; import org.yeshi.utils.encrypt.DESUtil; import org.yeshi.utils.entity.ProxyIP; import org.yeshi.utils.entity.wx.WeiXinUser; @@ -52,6 +58,8 @@ @Controller @RequestMapping("api/v1/user") public class UserAccountController { + + private Logger logger = LoggerFactory.getLogger(UserAccountController.class); @Resource private UserInfoService userInfoService; @@ -118,6 +126,10 @@ @Resource private DeviceActiveService deviceActiveService; + + + @Reference(version = "1.0", check = false) + private BDeviceTokenService bDeviceTokenService; private BusinessSystem getSystem(AcceptData acceptData) { BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), @@ -1054,16 +1066,27 @@ return; 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()); + + //鏂扮増鎺ㄩ�佽В缁� + if (acceptData.getSystem().isNewPush()) { + try { + bDeviceTokenService.unBindUid(acceptData.getSystem().name(), StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid()); + } catch (Exception e) { + logger.error("鏂扮増鎺ㄩ�佽В缁戝嚭閿欙細{}", uid, e); + } + } else { + // 闇�瑕佽В缁慔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("")); } @@ -1080,13 +1103,21 @@ * @param out */ @RequestMapping(value = "loginNew", method = RequestMethod.POST) - public void loginNew(AcceptData acceptData, String vcode, String phone, String code, int loginType, + public void loginNew(AcceptData acceptData, String vcode, String phone, String code, String aliAccessToken, int loginType, HttpServletRequest request, PrintWriter out) { // 2.0浠ヤ笅鐗堟湰涓嶅厑璁哥櫥褰� if (!VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) { out.print("璇峰崌绾у埌鏈�鏂扮増鏈�"); return; + } + + if (!StringUtil.isNullOrEmpty(aliAccessToken)) { + long now = System.currentTimeMillis(); + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.oneKeyLoginCount, StringUtil.Md5(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid())); + redisManager.increase(key); + int expire = (int) ((TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now + 1000 * 60 * 60 * 24L, "yyyyMMdd"), "yyyyMMdd") - now) / 1000); + redisManager.expire(key, expire); } try { @@ -1099,7 +1130,7 @@ UserInfo userInfo = null; // 鎵嬫満鐧诲綍 if (loginType == 1) { - userInfo = userAccountService.loginPhone(new ProxyIP(request.getRemoteHost(), request.getRemotePort()), loginType, vcode, phone, system); + userInfo = userAccountService.loginPhone(new ProxyIP(request.getRemoteHost(), request.getRemotePort()), loginType, vcode, phone, aliAccessToken, system); } // 寰俊鐧诲綍 @@ -1162,7 +1193,7 @@ * @param out */ @RequestMapping(value = "bindPhoneNew") - public void bindPhoneNew(AcceptData acceptData, Long uid, String vcode, String phone, PrintWriter out) { + public void bindPhoneNew(AcceptData acceptData, Long uid, String vcode, String phone, String aliAccessToken, PrintWriter out) { BusinessSystem system = getSystem(acceptData); if (system == null) { @@ -1170,35 +1201,30 @@ return; } - if (StringUtil.isNullOrEmpty(vcode)) { - out.print(JsonUtil.loadFalseResult("楠岃瘉鐮佷笉鑳戒负绌�")); - return; + if (!StringUtil.isNullOrEmpty(aliAccessToken)) { + long now = System.currentTimeMillis(); + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.oneKeyLoginCount, StringUtil.Md5(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid())); + redisManager.increase(key); + int expire = (int) ((TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now + 1000 * 60 * 60 * 24L, "yyyyMMdd"), "yyyyMMdd") - now) / 1000); + redisManager.expire(key, expire); } - if (StringUtil.isNullOrEmpty(phone)) { - out.print(JsonUtil.loadFalseResult("鐢佃瘽鍙风爜涓嶈兘涓虹┖")); + String mobile = null; + try { + mobile = userAccountService.getMobile(vcode, phone, aliAccessToken, acceptData.getSystem(), SMSHistory.TYPE_BIND); + } catch (UserAccountException e) { + out.print(JsonUtil.loadFalseResult(e.getMsg())); return; - } - - phone = phone.replaceAll(" ", ""); - - String oldVCode = redisManager.getSMSVCode(phone, SMSHistory.TYPE_BIND); - if (Constant.IS_OUTNET) { - if (!vcode.equalsIgnoreCase(oldVCode)) { - out.print(JsonUtil.loadFalseResult(9001, "楠岃瘉鐮侀敊璇紝閲嶆柊杈撳叆")); - return; - } - redisManager.clearSMSFrequencyLimit(phone, SMSHistory.TYPE_BIND); } try { // 缁戝畾鐢ㄦ埛 - userAccountService.bindPhoneNew(uid, phone); + userAccountService.bindPhoneNew(uid, mobile); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); // 鍒ゆ柇鐢佃瘽鍙风爜鏄惁宸茬粡灏佺 ForbiddenUserIdentifyCode ic = forbiddenUserIdentifyCodeService - .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone); + .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, mobile); if (ic != null && ic.getEffective() != null && ic.getEffective()) { out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); // 灏佺鐢ㄦ埛 @@ -1243,7 +1269,7 @@ } try { - userAccountService.bindWeiXin(acceptData, uid, code); + userAccountService.bindWeiXin(system, uid, code); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); // 鍒ゆ柇taoBaoUid鏄惁宸茬粡灏佺 @@ -1267,4 +1293,42 @@ } } + + /** + * 鏇存敼寰俊 + * + * @param acceptData + * @param uid + * @param qqUser + * @param out + */ + @RequestMapping(value = "bindQQ") + public void bindQQ(AcceptData acceptData, Long uid, String qqUser, PrintWriter out) { + BusinessSystem system = getSystem(acceptData); + + if (system == null) { + out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�")); + return; + } + + if (StringUtil.isNullOrEmpty(qqUser)) { + out.print(JsonUtil.loadFalseResult("璇蜂笂浼爍qUser")); + return; + } + + String qqUserStr = StringUtil.getFromBase64(qqUser); + QQUserInfoVO qqUserInfo = new Gson().fromJson(qqUserStr, QQUserInfoVO.class); + try { + userAccountService.bindQQ(uid, qqUserInfo); + + UserInfo user = userInfoService.getUserByIdWithMybatis(uid); + + JSONObject data = new JSONObject(); + data.put("userInfo", UserUtil.filterForClientUser(user)); + out.print(JsonUtil.loadTrueResult(data)); + } catch (UserAccountException e) { + out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); + } + } + } -- Gitblit v1.8.0