From f537abe9f3646c739beaf15076246a2f71a347e9 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 20 二月 2025 16:57:55 +0800
Subject: [PATCH] IOS广告增加区域屏蔽

---
 src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java |  364 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 338 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java b/src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java
index c5191ea..ab54600 100644
--- a/src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java
+++ b/src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java
@@ -1,28 +1,45 @@
 package com.yeshi.buwan.controller.parser;
 
+import com.google.gson.GsonBuilder;
 import com.yeshi.buwan.domain.*;
+import com.yeshi.buwan.domain.system.DetailSystem;
+import com.yeshi.buwan.domain.user.LoginUser;
+import com.yeshi.buwan.dto.user.LoginInfoDto;
+import com.yeshi.buwan.dto.user.QQUserInfo;
+import com.yeshi.buwan.exception.user.LoginUserException;
+import com.yeshi.buwan.exception.SMSException;
+import com.yeshi.buwan.exception.user.RegisterUserException;
 import com.yeshi.buwan.service.imp.CommentService;
 import com.yeshi.buwan.service.imp.MaskKeyService;
 import com.yeshi.buwan.service.imp.SystemService;
 import com.yeshi.buwan.service.imp.UserService;
 import com.yeshi.buwan.service.imp.push.PushService;
-import com.yeshi.buwan.util.JsonUtil;
-import com.yeshi.buwan.util.StringUtil;
+import com.yeshi.buwan.service.inter.LoginUserService;
+import com.yeshi.buwan.service.inter.SMSService;
+import com.yeshi.buwan.util.*;
 import com.yeshi.buwan.util.annotation.RequireUid;
+import com.yeshi.buwan.util.wx.MyWXLoginUtil;
 import com.yeshi.buwan.vo.AcceptData;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
+import org.yeshi.utils.entity.wx.WeiXinUser;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 
 @Controller
 public class CommentParser {
+
+    Logger logger = LoggerFactory.getLogger(CommentParser.class);
+
     @Resource
     private SystemService systemService;
     @Resource
@@ -34,29 +51,14 @@
     @Resource
     private MaskKeyService maskKeyService;
 
-    public SystemService getSystemService() {
-        return systemService;
-    }
+    @Resource
+    private LoginUserService loginUserService;
 
-    public void setSystemService(SystemService systemService) {
-        this.systemService = systemService;
-    }
+    @Resource
+    private SMSService smsService;
 
-    public CommentService getCommentService() {
-        return commentService;
-    }
-
-    public void setCommentService(CommentService commentService) {
-        this.commentService = commentService;
-    }
-
-    public UserService getUserService() {
-        return userService;
-    }
-
-    public void setUserService(UserService userService) {
-        this.userService = userService;
-    }
+    @Resource
+    private RedisManager redisManager;
 
     @RequireUid
     public void getReadState(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
@@ -92,19 +94,329 @@
             return;
         }
 
-        DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName());
-        LoginUser lu = userService.getLoginUser(openid, detailSystem.getId(), Integer.parseInt(loginType), portrait,
-                name, UserParser.getIp(request) + ":" + request.getRemotePort());
+        LoginInfoDto loginInfoDto = new LoginInfoDto();
+        loginInfoDto.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort());
+        loginInfoDto.setSystemId(acceptData.getDetailSystem().getSystem().getId());
+
+        int loginTypeInt = Integer.parseInt(loginType);
+        loginInfoDto.setLoginType(loginTypeInt);
+
+        switch (loginTypeInt) {
+            case LoginUser.LOGIN_TYPE_EMAIL:
+                loginInfoDto.setEmail(openid);
+                break;
+            case LoginUser.LOGIN_TYPE_QQ:
+                QQUserInfo qqUserInfo = new QQUserInfo();
+                qqUserInfo.setName(name);
+                qqUserInfo.setOpenId(openid);
+                qqUserInfo.setPortrait(portrait);
+                qqUserInfo.setSex(sex);
+                loginInfoDto.setQqUserInfo(qqUserInfo);
+                break;
+        }
+
+
+        LoginUser lu = null;
+        try {
+            lu = userService.login(loginInfoDto);
+            if (lu == null) {
+                out.print(JsonUtil.loadFalseJson("鐧诲綍澶辫触"));
+                return;
+            }
+        } catch (LoginUserException e) {
+            //鐢ㄦ埛涓嶅瓨鍦�
+            if (e.getCode() == LoginUserException.CODE_NO_USER && loginTypeInt != LoginUser.LOGIN_TYPE_EMAIL) {
+                //娉ㄥ唽
+                try {
+                    lu = userService.register(loginInfoDto);
+                } catch (RegisterUserException e1) {
+                    out.print(JsonUtil.loadFalseJson("鐧诲綍澶辫触"));
+                    return;
+                }
+
+            } else {
+                out.print(JsonUtil.loadFalseJson(e.getMessage()));
+                return;
+            }
+        }
         if (lu != null) {
             JSONObject object = new JSONObject();
             object.put("LoginUid", lu.getId());
+            object.put("Portrait", lu.getPortrait());
+            object.put("NickName", lu.getName());
             out.print(JsonUtil.loadTrueJson(object.toString()));
         } else {
             out.print(JsonUtil.loadFalseJson("鐧诲綍澶辫触"));
         }
+    }
+
+
+    public void wxLogin(AcceptData acceptData, String code, HttpServletRequest request, PrintWriter out) {
+
+        if (StringUtil.isNullOrEmpty(code)) {
+            out.print(JsonUtil.loadFalseJson("code涓虹┖"));
+            return;
+        }
+        //閫氳繃code鎹㈠彇涓汉淇℃伅
+        WeiXinUser weiXinUser = MyWXLoginUtil.getUserInfo(code, MyWXLoginUtil.WEIXIN_APPID, MyWXLoginUtil.WEIXIN_SECRET);
+        try {
+            logger.error("寰俊鐧诲綍锛�" + new GsonBuilder().create().toJson(weiXinUser));
+        } catch (Exception e) {
+
+        }
+        if (weiXinUser == null) {
+            out.print(JsonUtil.loadFalseJson("鑾峰彇鎺堟潈淇℃伅澶辫触,璇风◢鍚庡啀璇�"));
+            return;
+        }
+
+        LoginInfoDto loginInfoDto = new LoginInfoDto();
+        loginInfoDto.setSystemId(acceptData.getDetailSystem().getSystem().getId());
+        loginInfoDto.setLoginType(LoginUser.LOGIN_TYPE_WX);
+        loginInfoDto.setWeiXinUser(weiXinUser);
+        loginInfoDto.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort());
+
+
+        try {
+            LoginUser lu = userService.login(loginInfoDto);
+            if (lu != null) {
+                JSONObject object = new JSONObject();
+                object.put("user", new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create().toJson(lu));
+                out.print(JsonUtil.loadTrueJson(object.toString()));
+            } else {
+                out.print(JsonUtil.loadFalseJson("鐧诲綍澶辫触"));
+            }
+        } catch (LoginUserException e) {
+            //鐢ㄦ埛涓嶅瓨鍦�
+            if (e.getCode() == LoginUserException.CODE_NO_USER) {
+                //娉ㄥ唽
+                try {
+                    LoginUser lu = userService.register(loginInfoDto);
+                    if (lu != null) {
+                        JSONObject object = new JSONObject();
+                        object.put("user", new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create().toJson(lu));
+                        out.print(JsonUtil.loadTrueJson(object.toString()));
+                    } else {
+                        out.print(JsonUtil.loadFalseJson("鐧诲綍澶辫触"));
+                    }
+                } catch (RegisterUserException e1) {
+                    out.print(JsonUtil.loadFalseJson("鐧诲綍澶辫触"));
+                }
+            } else {
+                out.print(JsonUtil.loadFalseJson(e.getMessage()));
+            }
+        }
+    }
+
+    /**
+     * 鍏佽涓�閿櫥褰�
+     *
+     * @param acceptData
+     * @param request
+     * @param out
+     */
+    public void allowOneKeyLogin(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+        Long loginUid = StringUtil.isNullOrEmpty(request.getParameter("loginUid")) ? null : Long.parseLong(request.getParameter("loginUid"));
+        if (loginUid == null || loginUid == 0L) {
+            out.print(JsonUtil.loadFalseJson("灏氭湭鐧诲綍"));
+            return;
+        }
+        String device = request.getParameter("Device");
+        long time = System.currentTimeMillis();
+
+        String key = "onkeylogin-" + StringUtil.Md5(device + "#" + TimeUtil.getGernalTime(time, "yyyyMMdd"));
+
+        //涓�涓澶囦竴澶╀箣鍐呭彧鑳藉厑璁�5娆�
+        String value = redisManager.getCommonString(key);
+        if (!StringUtil.isNullOrEmpty(value) && Integer.parseInt(value) > 10) {
+            out.print(JsonUtil.loadFalseJson("涓�閿櫥褰曟鏁拌秴闄愶紝璇锋槑澶╁啀璇�"));
+            return;
+        }
+        out.print(JsonUtil.loadTrueJson(""));
+    }
+
+
+
+
+
+    /**
+     * 鐢佃瘽鍙风爜缁戝畾
+     *
+     * @param acceptData
+     * @param request
+     * @param out
+     */
+    public void bindPhone(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+        Long loginUid = StringUtil.isNullOrEmpty(request.getParameter("loginUid")) ? null : Long.parseLong(request.getParameter("loginUid"));
+        String phone = request.getParameter("phone");
+        String code = request.getParameter("code");
+        String accessToken = request.getParameter("accessToken");
+        String systemId = request.getParameter("system");
+        String device = request.getParameter("Device");
+
+        long time = System.currentTimeMillis();
+
+
+        if (loginUid == null || loginUid == 0L) {
+            out.print(JsonUtil.loadFalseJson("灏氭湭鐧诲綍"));
+            return;
+        }
+
+        String mobile = null;
+        if (!StringUtil.isNullOrEmpty(accessToken)) {
+            //涓�閿櫥褰�
+            mobile = AliyunOneKeyLoginUtil.getMobile(accessToken, "");
+
+            //澧炲姞涓�閿櫥褰曠殑娆℃暟
+            String key = "onkeylogin-" + StringUtil.Md5(device + "#" + TimeUtil.getGernalTime(time, "yyyyMMdd"));
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTimeInMillis(time);
+            calendar.add(Calendar.DAY_OF_WEEK, 1);
+            int s = (int) ((TimeUtil.convertGernalTime(TimeUtil.getGernalTime(calendar.getTimeInMillis(), "yyyyMMdd"), "yyyyMMdd") - time) / 1000);
+            redisManager.increase(key, s);
+        } else {
+            //閫氳繃楠岃瘉鐮佺櫥褰�
+            //鍒ゆ柇楠岃瘉鐮佹槸鍚︽纭�
+
+            if (StringUtil.isNullOrEmpty(phone)) {
+                out.print(JsonUtil.loadFalseJson("鐢佃瘽鍙风爜涓嶈兘涓虹┖"));
+                return;
+            }
+
+            if (StringUtil.isNullOrEmpty(code)) {
+                out.print(JsonUtil.loadFalseJson("楠岃瘉鐮佷笉鑳戒负绌�"));
+                return;
+            }
+
+            if (!smsService.verifyBindVCode(phone, code)) {
+                out.print(JsonUtil.loadFalseJson("楠岃瘉鐮侀敊璇�"));
+                return;
+            }
+            mobile = phone;
+        }
+
+        try {
+            loginUserService.bindPhone(loginUid + "", mobile);
+            out.print(JsonUtil.loadTrueJson(""));
+        } catch (LoginUserException e) {
+            out.print(JsonUtil.loadFalseJson(e.getMessage()));
+        }
 
     }
 
+    /**
+     * 缁戝畾QQ
+     *
+     * @param acceptData
+     * @param request
+     * @param out
+     */
+    public void bindQQ(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+        Long loginUid = StringUtil.isNullOrEmpty(request.getParameter("loginUid")) ? null : Long.parseLong(request.getParameter("loginUid"));
+        String name = request.getParameter("Name");
+        String portrait = request.getParameter("Portrait");
+        String openId = request.getParameter("OpenId");
+        String systemId = request.getParameter("system");
+        if (loginUid == null || loginUid == 0L) {
+            out.print(JsonUtil.loadFalseJson("灏氭湭鐧诲綍"));
+            return;
+        }
+        if (StringUtil.isNullOrEmpty(openId)) {
+            out.print(JsonUtil.loadFalseJson("鎺堟潈淇℃伅涓虹┖"));
+            return;
+        }
+
+        try {
+            loginUserService.bindQQ(loginUid + "", openId, name, portrait);
+            out.print(JsonUtil.loadTrueJson(""));
+        } catch (LoginUserException e) {
+            out.print(JsonUtil.loadFalseJson(e.getMessage()));
+        }
+
+    }
+
+
+    /**
+     * 缁戝畾寰俊
+     *
+     * @param acceptData
+     * @param request
+     * @param out
+     */
+    public void bindWX(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+        Long loginUid = StringUtil.isNullOrEmpty(request.getParameter("loginUid")) ? null : Long.parseLong(request.getParameter("loginUid"));
+        String code = request.getParameter("code");
+        if (loginUid == null || loginUid == 0L) {
+            out.print(JsonUtil.loadFalseJson("灏氭湭鐧诲綍"));
+            return;
+        }
+        if (StringUtil.isNullOrEmpty(code)) {
+            out.print(JsonUtil.loadFalseJson("code涓虹┖"));
+            return;
+        }
+
+        //閫氳繃code鎹㈠彇涓汉淇℃伅
+        WeiXinUser weiXinUser = MyWXLoginUtil.getUserInfo(code, MyWXLoginUtil.WEIXIN_APPID, MyWXLoginUtil.WEIXIN_SECRET);
+
+        if (weiXinUser == null) {
+            out.print(JsonUtil.loadFalseJson("鑾峰彇鎺堟潈淇℃伅澶辫触"));
+            return;
+        }
+
+        try {
+            loginUserService.bindWX(loginUid + "", weiXinUser);
+            out.print(JsonUtil.loadTrueJson(""));
+        } catch (LoginUserException e) {
+            out.print(JsonUtil.loadFalseJson(e.getMessage()));
+        }
+
+    }
+
+
+    /**
+     * 鍙戦�佺數璇濆彿鐮佺粦瀹氶獙璇佺爜
+     *
+     * @param acceptData
+     * @param request
+     * @param out
+     */
+    public void sendBindVerifyCode(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
+        String loginUid = request.getParameter("loginUid");
+        String phone = request.getParameter("phone");
+
+
+        if (StringUtil.isNullOrEmpty(phone)) {
+            out.print(JsonUtil.loadFalseJson("鐢佃瘽鍙风爜涓嶈兘涓虹┖"));
+            return;
+        }
+
+        if (StringUtil.isNullOrEmpty(loginUid)) {
+            out.print(JsonUtil.loadFalseJson("鐢ㄦ埛灏氭湭鐧诲綍"));
+            return;
+        }
+
+        LoginUser loginUser = userService.getLoginUser(loginUid + "");
+        if (loginUser == null) {
+            out.print(JsonUtil.loadFalseJson("鐢ㄦ埛涓嶅瓨鍦�"));
+            return;
+        }
+
+        try {
+            smsService.sendBindVCode(loginUid, phone, 6);
+        } catch (SMSException e) {
+            e.printStackTrace();
+            out.print(JsonUtil.loadFalseJson(e.getMessage()));
+            logger.error("鍙戦�侀獙璇佺爜鍑洪敊锛歱hone-{} msg-{}",phone,e.getMessage(),e);
+            return;
+        } catch (Exception e) {
+            out.print(JsonUtil.loadFalseJson("鐭俊鍙戦�佸嚭閿欙紝璇风◢鍚庡啀璇�"));
+            logger.error("鍙戦�侀獙璇佺爜鍑洪敊锛歱hone-{} msg-{}",phone,e.getMessage(),e);
+            return;
+        }
+        out.print(JsonUtil.loadTrueJson(""));
+    }
+
+
+
     public void getVideoCommentList(AcceptData acceptData, HttpServletRequest request, PrintWriter out) {
 
         String videoId = request.getParameter("VideoId");

--
Gitblit v1.8.0