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