From 04f09e52ffd4681bdfd85e51acd3da0d1280c3d3 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 16 四月 2022 16:07:10 +0800 Subject: [PATCH] bug修复 --- src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java | 176 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 148 insertions(+), 28 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 3eb791f..ab54600 100644 --- a/src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java +++ b/src/main/java/com/yeshi/buwan/controller/parser/CommentParser.java @@ -2,9 +2,13 @@ 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.exception.LoginUserException; +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; @@ -12,14 +16,14 @@ import com.yeshi.buwan.service.imp.push.PushService; import com.yeshi.buwan.service.inter.LoginUserService; import com.yeshi.buwan.service.inter.SMSService; -import com.yeshi.buwan.util.AliyunOneKeyLoginUtil; -import com.yeshi.buwan.util.JsonUtil; -import com.yeshi.buwan.util.StringUtil; +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; @@ -28,10 +32,14 @@ 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 @@ -48,6 +56,9 @@ @Resource private SMSService smsService; + + @Resource + private RedisManager redisManager; @RequireUid public void getReadState(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { @@ -83,17 +94,60 @@ 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("鐧诲綍澶辫触")); } - } @@ -105,26 +159,83 @@ } //閫氳繃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("鑾峰彇鎺堟潈淇℃伅澶辫触")); + out.print(JsonUtil.loadFalseJson("鑾峰彇鎺堟潈淇℃伅澶辫触,璇风◢鍚庡啀璇�")); return; } - DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); + 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()); - LoginUser lu = userService.getLoginUser(weiXinUser.getOpenid(), detailSystem.getId(), 2, weiXinUser.getHeadimgurl(), - weiXinUser.getNickname(), UserParser.getIp(request) + ":" + request.getRemotePort()); - 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("鐧诲綍澶辫触")); + 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("")); + } + + + /** @@ -140,10 +251,13 @@ 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("鐧诲綍澶辫触")); + out.print(JsonUtil.loadFalseJson("灏氭湭鐧诲綍")); return; } @@ -151,6 +265,14 @@ 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 { //閫氳繃楠岃瘉鐮佺櫥褰� //鍒ゆ柇楠岃瘉鐮佹槸鍚︽纭� @@ -165,16 +287,11 @@ return; } - if (smsService.verifyBindVCode(phone, code)) { + if (!smsService.verifyBindVCode(phone, code)) { out.print(JsonUtil.loadFalseJson("楠岃瘉鐮侀敊璇�")); return; } mobile = phone; - } - - if (StringUtil.isNullOrEmpty(code)) { - out.print(JsonUtil.loadFalseJson("code涓虹┖")); - return; } try { @@ -185,7 +302,6 @@ } } - /** * 缁戝畾QQ @@ -285,18 +401,22 @@ } try { - smsService.sendBindVCode(Long.parseLong(loginUid), phone, 6); + 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