package com.yeshi.buwan.controller.parser; import com.yeshi.buwan.domain.*; import com.yeshi.buwan.domain.Collection; 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.exception.user.LoginUserException; import com.yeshi.buwan.exception.user.RegisterUserException; import com.yeshi.buwan.service.imp.*; import com.yeshi.buwan.service.manager.SolrAlbumVideoDataManager; import com.yeshi.buwan.util.*; import com.yeshi.buwan.util.JuHe.VideoResourceUtil; import com.yeshi.buwan.util.annotation.RequireUid; import com.yeshi.buwan.util.email.MailSenderUtil; import com.yeshi.buwan.util.video.VideoCategoryConstant; import com.yeshi.buwan.util.video.VideoConstant; import com.yeshi.buwan.vo.AcceptData; import com.yeshi.buwan.vo.video.VideoListResultVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.File; import java.io.PrintWriter; import java.util.*; @Controller public class UserParser { @Resource private SystemService systemService; @Resource private DetailSystemConfigService configService; @Resource private UserService userService; @Resource private ShareService shareService; @Resource private SearchService searchService; @Resource private RecommendService recommendService; @Resource private CollectionService collectionService; @Resource private UserBannerService userBannerService; @Resource private VideoResourceUtil videoResouceUtil; @Resource private BanQuanService banQuanService; @Resource private VideoInfoService videoInfoService; @Resource private SolrAlbumVideoDataManager solrDataManager; @Resource private ConfigParser configParser; public void getUid(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); String uid = userService.getUid(acceptData.getDevice(), acceptData.getSystem(), acceptData.getImei(), acceptData.getMac(), acceptData.getLat(), acceptData.getLng()); UserInfo userInfo = userService.getUserInfo(uid); if (uid.equalsIgnoreCase("0")) { out.print(JsonUtil.loadFalseJson("获取uid失败")); return; } else { Map map = configService.getConfigAsMap(detailSystem, acceptData.getVersion()); ShareContent share = shareService.getShareContent(detailSystem.getId()); JSONObject object = new JSONObject(); object.put("Uid", uid); object.put("Portrait", userInfo.getPortrait()); object.put("Nickname", userInfo.getNickname()); object.put("ZiXun", map.get("zixun_url")); if (acceptData.getPlatform().equalsIgnoreCase("ios") && !"中国".equalsIgnoreCase(userInfo.getCountry()))// 正在审核的版本 object.put("CommentUrl", ""); else object.put("CommentUrl", share.getShareUrl()); object.put("IOSSlotID", ""); if (acceptData.getPlatform().equalsIgnoreCase("ios") && !"中国".equalsIgnoreCase(userInfo.getCountry())) { object.put("IOSDownLoad", "0");// 是否显示下载 0-不下载 1-下载 } else object.put("IOSDownLoad", "1");// 是否显示下载 0-不下载 1-下载 object.put("ShareContent", "业界良心!这是我用过最好的视频APP!最新的都有!"); if (share != null) { object.put("ShareContent", share.getShareContent()); object.put("ShareUrl", share.getShareUrl()); } object.put("WXShareIcon", map.get("wx_share_icon")); object.put("WXShareUrl", map.get("wx_share_url")); object.put("WXShareContent", map.get("wx_share_content")); if ("qq".equalsIgnoreCase(acceptData.getChannel())) { object.put("TopIcon", ""); object.put("TuiGuang", ""); } else { object.put("TuiGuang", map.get("taobao_tuiguang")); object.put("TopIcon", map.get("top_icon")); } object.put("SOHU_partner", detailSystem.getSohuPartner()); object.put("SOHU_key", detailSystem.getSohuKey()); if (acceptData.getPackageName().contains("com.ys")) object.put("NoticeContent", map.get("play_notice_content_ys")); else if (acceptData.getPackageName().contains("com.doudou")) { object.put("NoticeContent", map.get("play_notice_content_doudou")); } else object.put("NoticeContent", map.get("play_notice_content")); object.put("ShowMoreApp", map.get("show_more_app")); object.put("ShowAd", map.get("show_ad")); object.put("PPTVSO", map.get("pptvsourl")); object.put("COMMENT_ALERT", map.get("comment_alert")); object.put("evalueate", map.get("evalueate")); object.put("shopurl", map.get("shopurl")); object.put("copyplate", map.get("copy_plate")); //开关设置 String channel = acceptData.getChannel().toLowerCase(); String adOpenSettings = map.get("ad_other_open_settings"); JSONObject adOpenSettingsJson = JSONObject.fromObject(adOpenSettings); if (!adOpenSettingsJson.keySet().contains(channel.toLowerCase())) { channel = "qq"; } int closeVersion = adOpenSettingsJson.optInt(channel); if (acceptData.getVersion() >= closeVersion) { object.put("adClickDownload", true); } else { object.put("adClickDownload", false); } // 广告类型 object.put("adType", map.get("ad_type")); int fullVideoVersion = Integer.parseInt(map.get("video_detail_full_video_version")); String fullVideoVersionChannels = map.get("video_detail_full_video_version_channel"); JSONObject json = JSONObject.fromObject(fullVideoVersionChannels); if (json.optInt(acceptData.getChannel().toLowerCase(), 0) > 0) { fullVideoVersion = json.optInt(acceptData.getChannel().toLowerCase(), 0); } ConfigParser.ADConfig adConfig = configParser.getAdShowType("ad_video_detail_full_video", acceptData.getChannel(), acceptData.getVersion(), map); String type = adConfig == null ? "" : adConfig.getType(); if (!StringUtil.isNullOrEmpty(type)) {// 是否屏蔽详情页全屏广告 JSONObject adType = JSONObject.fromObject(map.get("ad_type")); adType.put("videoDetailSplashAd", true); object.put("adType", adType.toString()); } else { JSONObject adType = JSONObject.fromObject(map.get("ad_type")); adType.put("videoDetailSplashAd", false); object.put("adType", adType.toString()); } out.print(JsonUtil.loadTrueJson(object.toString())); } } // 搜索 public void suggestSearch(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String key = request.getParameter("Key"); if (StringUtil.isNullOrEmpty(key)) { out.print(JsonUtil.loadFalseJson("请上传Key")); return; } List list = solrDataManager.getSuggestKeyList(key); //searchService.suggestSearch(key, acceptData.getSystem()); if (acceptData.getPlatform().equalsIgnoreCase("ios")) { if (Constant.IOSTest) { if (acceptData.getVersion() == 1) { list = new ArrayList<>(); } } } JSONObject object = new JSONObject(); object.put("count", list.size() + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } private List createSearchVideoDetailsVO(VideoInfo video) { List detailList = new ArrayList<>(); if (video.getVideoType() != null && (Integer.parseInt(video.getVideoType().getId() + "") == VideoCategoryConstant.CATEGORY_DIANSHIJU || Integer.parseInt(video.getVideoType().getId() + "") == VideoCategoryConstant.CATEGORY_DONGMAN)) { if (video.getVideocount()!=null&& video.getVideocount() <= 5) { for (int i = 0; i < video.getVideocount(); i++) { VideoDetailInfo detail = new VideoDetailInfo(); detail.setTag((i + 1) + ""); detailList.add(detail); } } else { for (int i = 0; i < 3; i++) { VideoDetailInfo detail = new VideoDetailInfo(); detail.setTag((i + 1) + ""); detailList.add(detail); } for (int i = video.getVideocount() - 3; i < video.getVideocount(); i++) { VideoDetailInfo detail = new VideoDetailInfo(); detail.setTag((i + 1) + ""); detailList.add(detail); } } } return detailList; } // 搜索 public void search(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String key = request.getParameter("Key"); String type = request.getParameter("Type"); String page = request.getParameter("Page"); String videoType = request.getParameter("VideoType"); String contentType = request.getParameter("ContentType"); if (StringUtil.isNullOrEmpty(key)) { out.print(JsonUtil.loadFalseJson("请上传Key")); return; } if (StringUtil.isNullOrEmpty(type)) { out.print(JsonUtil.loadFalseJson("请上传Type")); return; } int pageIndex = StringUtil.getPage(page); if (pageIndex <= 0) { pageIndex = 1; } DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); UserInfo user1 = userService.getUserInfo(acceptData.getUid()); if (Utils.isTest(request, user1, detailSystem.getId())) { detailSystem = systemService.getDetailSystemById(40 + ""); JSONObject object = new JSONObject(); object.put("count", 0); JSONArray array = new JSONArray(); object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } else { List resourceList = videoResouceUtil.getAvailableResourceIds(detailSystem, acceptData.getVersion()); String cacheMD5 = "0"; if (resourceList != null && resourceList.size() > 0) for (Long l : resourceList) cacheMD5 += "#" + l; cacheMD5 = StringUtil.Md5(cacheMD5); List list = searchService.search(detailSystem.getId(), request.getRemoteAddr(), acceptData.getUid(), key, pageIndex, (StringUtil.isNullOrEmpty(contentType) ? 0 : Integer.parseInt(contentType)), acceptData.getSystem(), resourceList, cacheMD5); //组织数据 for (VideoInfo video : list) { //如果是正片,且为5大分类 就采用竖条展示 if (video.getShowType() == 1) { video.setVideoDetailList(createSearchVideoDetailsVO(video)); } } cacheMD5 = "0"; if (list != null) { for (VideoInfo info : list) { cacheMD5 += info.getId() + "#"; } } list = banQuanService.getBanQuanVideo(list, detailSystem.getId(), cacheMD5); JSONObject object = new JSONObject(); object.put("count", Constant.isUpdate ? 19 + "" : list.size()); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { if (JuheVideoUtil.isNeedDelete((VideoInfo) list.get(i), detailSystem.getId())) { list.remove(i); i--; } } List keyList = banQuanService.getBanQuanKeyListAll(Integer.parseInt(detailSystem.getId())); for (int i = 0; i < list.size(); i++) { boolean delete = false; for (int j = 0; j < keyList.size(); j++) { if (list.get(i).getName().contains(keyList.get(j))) { delete = true; break; } } if (delete) { list.remove(i); i--; } } for (int i = 0; i < list.size(); i++) { ((VideoInfo) list.get(i)) .setPicture(VideoPictureUtil.getShowPicture((VideoInfo) list.get(i), acceptData.getPlatform(), acceptData.getVersion() + "")); array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); if (pageIndex == 1) {//返回导航栏 } out.print(JsonUtil.loadTrueJson(object.toString())); } } // 搜索 public void searchNew(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { //type: 0-全部 1- String key = request.getParameter("Key"); String type = request.getParameter("Type"); String page = request.getParameter("Page"); if (StringUtil.isNullOrEmpty(key)) { out.print(JsonUtil.loadFalseJson("请上传Key")); return; } if (StringUtil.isNullOrEmpty(type)) { out.print(JsonUtil.loadFalseJson("请上传Type")); return; } int pageIndex = StringUtil.getPage(page); if (pageIndex <= 0) { pageIndex = 1; } List resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion()); String cacheMD5 = "0"; if (resourceList != null && resourceList.size() > 0) for (Long l : resourceList) cacheMD5 += "#" + l; cacheMD5 = StringUtil.Md5(cacheMD5); VideoListResultVO videoListResultVO = searchService.searchNew(acceptData.getDetailSystem().getId(), request.getRemoteAddr(), acceptData.getUid(), key, pageIndex, Integer.parseInt(type), acceptData.getSystem(), resourceList, cacheMD5); //组织数据 for (VideoInfo video : videoListResultVO.getVideoList()) { //如果是正片,且为5大分类 就采用竖条展示 if (video.getShowType() == 1) { video.setVideoDetailList(createSearchVideoDetailsVO(video)); } } cacheMD5 = "0"; if (videoListResultVO.getVideoList() != null) { for (VideoInfo info : videoListResultVO.getVideoList()) { cacheMD5 += info.getId() + "#"; } } List list = banQuanService.getBanQuanVideo(videoListResultVO.getVideoList(), acceptData.getDetailSystem().getId(), cacheMD5); JSONObject object = new JSONObject(); object.put("count", Constant.isUpdate ? 19 + "" : videoListResultVO.getCount()); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { if (JuheVideoUtil.isNeedDelete((VideoInfo) list.get(i), acceptData.getDetailSystem().getId())) { list.remove(i); i--; } } for (int i = 0; i < list.size(); i++) { ((VideoInfo) list.get(i)) .setPicture(VideoPictureUtil.getShowPicture((VideoInfo) list.get(i), acceptData.getPlatform(), acceptData.getVersion() + "")); array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); if (pageIndex == 1) {//返回导航栏 List typeList = new ArrayList<>(); VideoType vt = new VideoType(); vt.setId(0); vt.setName("全部"); typeList.add(vt); Set set = new HashSet<>(); for (VideoInfo videoInfo : list) { if (videoInfo.getShowType() == 1 && videoInfo.getVideoType() != null) set.add(videoInfo.getVideoType().getId()); } for (Iterator its = set.iterator(); its.hasNext(); ) { Long typeId = its.next(); String typeName = VideoConstant.getMainCategoryName(typeId); if (!StringUtil.isNullOrEmpty(typeName)) { vt = new VideoType(); vt.setId(typeId); vt.setName(typeName); typeList.add(vt); } } JSONArray array1 = new JSONArray(); for (VideoType vt1 : typeList) array1.add(StringUtil.outPutResultJson(vt1)); object.put("typeList", array1); } out.print(JsonUtil.loadTrueJson(object.toString())); } // 猜你喜欢 public void guessLike(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String videoId = request.getParameter("VideoId"); DetailSystem ds = systemService.getDetailSystemByPackage(acceptData.getPackageName()); List resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion()); List list1 = StringUtil.isNullOrEmpty(videoId) ? recommendService.guessLikeList(ds.getId(), 4, resourceList, CacheUtil.getMD5Long(resourceList)) : recommendService.guessLikeList(ds.getId(), 4, videoId, resourceList, CacheUtil.getMD5Long(resourceList)); if ("ios".equalsIgnoreCase(acceptData.getPlatform())) { // 过审核时使用 list1 = videoInfoService.simpleRandomVideoList(4); } List list = new ArrayList<>(); list.addAll(list1); if ("android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() < 35) { if (list.size() > 3) list = list.subList(0, 3); } else if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() < 15) { if (list.size() > 3) list = list.subList(0, 3); } JSONObject object = new JSONObject(); object.put("count", list.size() + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { if (list.get(i).getPicture().contains("qiyi")) list.get(i).setPicture(list.get(i).getPicture().replace(".jpg", "_260_360.jpg")); array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } // 获取热门搜索 public void getHotSearch(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); List list = searchService.getHotSearchList(detailSystem.getId()); JSONObject object = new JSONObject(); object.put("count", list.size() + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } // 获取用户信息 public void getUserInfo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { UserData data = userService.getUserData(acceptData.getUid()); out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(data))); } @RequireUid // 获取收藏的视频 public void getCollectedVideo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String page = request.getParameter("Page"); String loginUid = request.getParameter("LoginUid"); int pageIndex = StringUtil.getPage(page); if (pageIndex <= 0) { out.print(JsonUtil.loadFalseJson("请上传Page")); return; } List list = collectionService.getCollectVideo(acceptData.getUid(), loginUid, pageIndex); JSONObject object = new JSONObject(); object.put("count", collectionService.getCollectVideoCount(acceptData.getUid()) + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } // 搜藏送积分 @RequireUid public void getScoreCollect(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String videoId = request.getParameter("VideoId"); String type = request.getParameter("Type"); String thirdType = request.getParameter("ThirdType"); String loginUid = request.getParameter("LoginUid"); if (StringUtil.isNullOrEmpty(videoId)) { out.print(JsonUtil.loadFalseJson("请上传VideoId")); return; } if (StringUtil.isNullOrEmpty(type)) { out.print(JsonUtil.loadFalseJson("请上传Type")); return; } if (type.equalsIgnoreCase("1")) {// 收藏 ScoreHelper helper = new ScoreHelper(); if (collectionService.isCollect(acceptData.getUid(), videoId)) { helper.setScore("0"); } else { VideoInfo vf = new VideoInfo(); vf.setId(videoId); Collection c = new Collection(); c.setUser(new UserInfo(acceptData.getUid())); if (!StringUtil.isNullOrEmpty(loginUid)) { c.setLoginUser(new LoginUser(loginUid)); } c.setVideo(vf); c.setThirdType(thirdType); c.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); collectionService.saveCollection(c); } JSONObject object = new JSONObject(); object.put("GetScore", helper.getScore()); object.put("TotalScore", helper.getTotalScore()); out.print(JsonUtil.loadTrueJson(object.toString())); } else// 取消收藏 { String[] videoIds = videoId.split(","); String[] thirdTypes = thirdType.split(","); collectionService.cancelCollect(acceptData.getUid(), loginUid, videoIds, thirdTypes); out.print(JsonUtil.loadTrueJson("")); } } public void getUserBanner(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); List list = userBannerService.getUserBannerList(detailSystem.getId()); long count = list.size(); JSONObject object = new JSONObject(); object.put("count", count + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } @RequireUid public void updateUserInfo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String portrait = request.getParameter("Portrait"); String nickname = request.getParameter("Nickname");// 昵称 UserInfo user = userService.getUserInfo(acceptData.getUid()); if (!StringUtil.isNullOrEmpty(portrait)) user.setPortrait(portrait); if (!StringUtil.isNullOrEmpty(nickname)) user.setNickname(nickname); userService.updateUserInfo(user); out.print(JsonUtil.loadTrueJson("")); } /** * 相关视频 * * @param request * @ */ public void getRelativeVideos(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String videoId = request.getParameter("VideoId"); if (StringUtil.isNullOrEmpty(videoId)) { out.print(JsonUtil.loadFalseJson("请上传VideoId")); return; } List resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion()); DetailSystem ds = systemService.getDetailSystemByPackage(acceptData.getPackageName()); List list = recommendService.getRelativeVideoList(ds.getId(), 4, videoId, resourceList, CacheUtil.getMD5Long(resourceList)); if ("android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() < 35) { if (list.size() > 3) list = list.subList(0, 3); } else if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() < 15) { if (list.size() > 3) list = list.subList(0, 3); } JSONObject object = new JSONObject(); object.put("count", list.size() + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } /** * 大家都在看 * * @param request * @ */ public void getPeopleSeeVideos(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String videoId = request.getParameter("VideoId"); if (StringUtil.isNullOrEmpty(videoId)) { out.print(JsonUtil.loadFalseJson("请上传VideoId")); return; } List resourceList = videoResouceUtil.getAvailableResourceIds(acceptData.getDetailSystem(), acceptData.getVersion()); DetailSystem ds = systemService.getDetailSystemByPackage(acceptData.getPackageName()); List list1 = recommendService.peopleSee(ds.getId(), 4, videoId, resourceList, CacheUtil.getMD5Long(resourceList)); if ("ios".equalsIgnoreCase(acceptData.getPlatform())) { // 过审核时使用 list1 = videoInfoService.simpleRandomVideoList(4); } List list = new ArrayList<>(); list.addAll(list1); if ("android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() < 35) { if (list.size() > 3) list = list.subList(0, 3); } else if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() < 15) { if (list.size() > 3) list = list.subList(0, 3); } JSONObject object = new JSONObject(); object.put("count", list.size() + ""); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) { array.add(StringUtil.outPutResultJson(list.get(i))); } object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } /** * 注册 * * @param request * @param out */ public void register(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String account = request.getParameter("Email");// 邮箱 String pwd = request.getParameter("Pwd");// 密码 String nickName = request.getParameter("NickName");// 昵称 String code = request.getParameter("VerifyCode");// 验证码 String portrait = request.getParameter("Portrait");// 验证码 if (StringUtil.isNullOrEmpty(account)) { out.print(JsonUtil.loadFalseJson("请上传Email")); return; } if (StringUtil.isNullOrEmpty(pwd)) { out.print(JsonUtil.loadFalseJson("请上传Pwd")); return; } if (StringUtil.isNullOrEmpty(code)) { out.print(JsonUtil.loadFalseJson("请上传VerifyCode")); return; } if (!code.equalsIgnoreCase(request.getSession().getAttribute(account) + "")) { out.print(JsonUtil.loadFalseJson("验证码错误")); return; } if (!StringUtil.isNullOrEmpty(account) && !account.trim().endsWith("@qq.com")) { out.print(JsonUtil.loadFalseJson("只支持QQ邮箱注册")); return; } int port = request.getRemotePort(); String ip = getIp(request); if (StringUtil.isNullOrEmpty(nickName)) nickName = "无名氏"; LoginInfoDto loginInfoDto = new LoginInfoDto(); loginInfoDto.setEmail(account); loginInfoDto.setSystemId(acceptData.getDetailSystem().getSystem().getId()); loginInfoDto.setLoginType(LoginUser.LOGIN_TYPE_EMAIL); loginInfoDto.setPwd(StringUtil.Md5(pwd)); loginInfoDto.setIpInfo(ip + ":" + port); loginInfoDto.setNickName(nickName); try { userService.register(loginInfoDto); out.print(JsonUtil.loadTrueJson("注册成功")); } catch (RegisterUserException e) { out.print(JsonUtil.loadFalseJson(e.getMessage())); } } /** * 发送验证码 * * @param request * @param out */ public void sendVerifyCode(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { final String account = request.getParameter("Email");// 邮箱 if (StringUtil.isNullOrEmpty(account)) { out.print(JsonUtil.loadFalseJson("请上传Email")); return; } if (!StringUtil.isNullOrEmpty(account) && !account.trim().endsWith("@qq.com")) { out.print(JsonUtil.loadFalseJson("只支持QQ邮箱注册")); return; } final String code = StringUtil.getVerifyCode(); request.getSession().setAttribute(account, code); // new Thread(new Runnable() { // public void run() { // for (int i = 0; i < 3; i++) { boolean isS = MailSenderUtil.sendEmail(account, "ysyz17784739772@126.com", "weikou2014", "布丸社区注册验证码:" + code, "布丸社区注册验证码:" + code); // } // }).start(); out.print(JsonUtil.loadTrueJson("验证码发送成功")); } /** * 登录 * * @param request * @param out */ public void login(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String account = request.getParameter("Email");// 邮箱 String pwd = request.getParameter("Pwd");// 密码 if (StringUtil.isNullOrEmpty(account)) { out.print(JsonUtil.loadFalseJson("请上传Email")); return; } if (StringUtil.isNullOrEmpty(pwd)) { out.print(JsonUtil.loadFalseJson("请上传Pwd")); return; } // DetailSystem ds = // systemService.getDetailSystemByPackage(packageName); // 注册 --用户名,昵称,密码 LoginInfoDto loginInfoDto = new LoginInfoDto(); loginInfoDto.setLoginType(LoginUser.LOGIN_TYPE_EMAIL); loginInfoDto.setSystemId(acceptData.getDetailSystem().getSystem().getId()); loginInfoDto.setEmail(account); loginInfoDto.setPwd(StringUtil.Md5(pwd)); try { LoginUser user = userService.login(loginInfoDto); out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(user))); } catch (LoginUserException e) { out.print(JsonUtil.loadFalseJson(e.getMessage())); } } /** * 更改用户信息 * * @param request * @param out */ public void updateLoginUserInfo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String nickName = request.getParameter("NickName");// 昵称 String sex = request.getParameter("Sex");// 性别 0-女 1-男 String birthDay = request.getParameter("BirthDay");// 生日 String personalSign = request.getParameter("PersonalSign");// 个性签名 String loginUid = request.getParameter("LoginUid");// 个性签名 String portrait = request.getParameter("Portrait"); if (StringUtil.isNullOrEmpty(loginUid)) { out.print(JsonUtil.loadFalseJson("请上传LoginUid")); return; } // 注册 --用户名,昵称,密码 LoginUser user = userService.getLoginUser(loginUid); if (user != null) { if (!StringUtil.isNullOrEmpty(nickName)) user.setName(nickName); String potrait = savePortrait(portrait, request.getSession()); if (!StringUtil.isNullOrEmpty(potrait)) user.setPortrait(potrait); if (!StringUtil.isNullOrEmpty(sex)) user.setSex(sex); if (!StringUtil.isNullOrEmpty(acceptData.getSign())) user.setSign(personalSign); if (!StringUtil.isNullOrEmpty(birthDay)) user.setBirthday(birthDay); userService.updateLoginUserInfo(user); } out.print(JsonUtil.loadTrueJson("修改成功")); } /** * 获取用户信息 * * @param request * @param out */ public void getLoginUserInfo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String loginUid = request.getParameter("LoginUid");// 个性签名 if (StringUtil.isNullOrEmpty(loginUid)) { out.print(JsonUtil.loadFalseJson("请上传LoginUid")); return; } // 注册 --用户名,昵称,密码 LoginUser user = userService.getLoginUser(loginUid); if (user.getPortrait() != null && !user.getPortrait().startsWith("http")) user.setPortrait("http://" + Constant.WEBSITE + "/BuWan" + user.getPortrait()); out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(user))); } /** * 设置密码 * * @param request * @param out */ public void setPwd(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String email = request.getParameter("Email");// 个性签名 String pwd = request.getParameter("Pwd");// 密码 String verifyCode = request.getParameter("VerifyCode");// 验证码 if (StringUtil.isNullOrEmpty(email)) { out.print(JsonUtil.loadFalseJson("请上传Email")); return; } if (StringUtil.isNullOrEmpty(pwd)) { out.print(JsonUtil.loadFalseJson("请上传Pwd")); return; } if (StringUtil.isNullOrEmpty(verifyCode)) { out.print(JsonUtil.loadFalseJson("请上传VerifyCode")); return; } if (!verifyCode.equalsIgnoreCase(request.getSession().getAttribute(email) + "")) { out.print(JsonUtil.loadFalseJson("验证码错误")); return; } // 注册 --用户名,昵称,密码 LoginUser user = userService.getLoginUserByOpenId(email); if (user == null) { out.print(JsonUtil.loadFalseJson("该用户不存在")); } else { user.setPwd(StringUtil.Md5(pwd)); userService.updateLoginUserInfo(user); out.print(JsonUtil.loadTrueJson("密码设置成功")); } } /** * 设置密码 * * @param request * @param out */ public void unRegister(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { // 包名 String callback = request.getParameter("callback"); String loginUid = request.getParameter("LoginUid"); if (StringUtil.isNullOrEmpty(loginUid)) { out.print(callback + "(" + JsonUtil.loadFalseJson("用户尚未登录", false) + ")"); return; } // 注册 --用户名,昵称,密码 try { userService.unRegister(Long.parseLong(loginUid)); out.print(callback + "(" + JsonUtil.loadTrueJson("注销成功", false) + ")"); } catch (Exception e) { out.print(callback + "(" + JsonUtil.loadFalseJson(e.getMessage(), false) + ")"); } } public static String savePortrait(String base64, HttpSession session) { if (StringUtil.isNullOrEmpty(base64)) return ""; String fileName = "portrait_" + System.currentTimeMillis() + ".jpg"; // 定义上传路径 String path = session.getServletContext().getRealPath("upload") + "/" + fileName; if (!new File(session.getServletContext().getRealPath("upload") + "/").exists()) new File(session.getServletContext().getRealPath("upload") + "/").mkdirs(); boolean isS = StringUtil.generateImageFromBase64(base64, path); if (!isS) return ""; try { String result = COSManager.getInstance().uploadFile(new File(path), fileName); if (!StringUtil.isNullOrEmpty(result)) return result; } catch (IllegalStateException e) { e.printStackTrace(); } return ""; } public void getIPInfo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("X-Real-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } out.print(ip + "-----" + IPUtil.getIPContry(request.getRemoteAddr())); } public static String getIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } }