⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wapservice.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package cn.jsprun.foreg.service;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.jsprun.dao.DataBaseDao;
import cn.jsprun.domain.Members;
import cn.jsprun.foreg.vo.wap.FooterVO;
import cn.jsprun.foreg.vo.wap.ForumInfo;
import cn.jsprun.foreg.vo.wap.Forums_threadsVO;
import cn.jsprun.foreg.vo.wap.GoToVo;
import cn.jsprun.foreg.vo.wap.HeaderVO;
import cn.jsprun.foreg.vo.wap.HomeVO;
import cn.jsprun.foreg.vo.wap.LoginVO;
import cn.jsprun.foreg.vo.wap.MessageVO;
import cn.jsprun.foreg.vo.wap.MyCollectionVO;
import cn.jsprun.foreg.vo.wap.MyPhoneVO;
import cn.jsprun.foreg.vo.wap.MyVO;
import cn.jsprun.foreg.vo.wap.NewReplyVO;
import cn.jsprun.foreg.vo.wap.NewThreadVO;
import cn.jsprun.foreg.vo.wap.PmListVO;
import cn.jsprun.foreg.vo.wap.PmSendVO;
import cn.jsprun.foreg.vo.wap.PmVO;
import cn.jsprun.foreg.vo.wap.PmViewVO;
import cn.jsprun.foreg.vo.wap.RegisterVO;
import cn.jsprun.foreg.vo.wap.SearchResultVO;
import cn.jsprun.foreg.vo.wap.SearchVO;
import cn.jsprun.foreg.vo.wap.StatsVO;
import cn.jsprun.foreg.vo.wap.ThreadInfo;
import cn.jsprun.foreg.vo.wap.ThreadVO;
import cn.jsprun.foreg.vo.wap.HomeVO.Forum;
import cn.jsprun.foreg.vo.wap.PmListVO.PmInfo;
import cn.jsprun.foreg.vo.wap.ThreadVO.PostsInfo;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;

public class WapService {
	private final String tablePre = "jrun_";
	public boolean validateWap(HttpServletRequest request,HttpServletResponse response,Map<String,String> settingMap,Members memberInSession,String formhashInSession,String sid){
		String user_agent = request.getHeader("user-agent");
		if(user_agent == null){
			return false;
		}else{
			user_agent = user_agent.toLowerCase();
		}
		if(user_agent.matches(".*(mozilla|m3gate|winwap|openwave).*")) {
			String boardUrl = (String)request.getSession().getAttribute("boardurl");
			try {
				response.sendRedirect(boardUrl+"index.jsp");
			} catch (IOException e) {
				e.printStackTrace();
			}
			return false;
		}
		String action = request.getParameter("action");
		action = action == null ? "home" : action;
		if(action.equals("goto")){
			String url = request.getParameter("url");
			if(url!=null&&!url.equals("")){
				try {
					response.sendRedirect(url);
				} catch (IOException e) {
					e.printStackTrace();
				}
				return false;
			}
		}
		if(settingMap.get("wapstatus").equals("0")){
			forwardToMessage(request, response, settingMap, "WAP 功能未启用", null, settingMap.get("bbname"), memberInSession,action,  formhashInSession,sid);
			return false;
		}
		if(!settingMap.get("bbclosed").equals("0")){
			forwardToMessage(request, response, settingMap, "论坛目前临时关闭", null, settingMap.get("bbname"), memberInSession,action,  formhashInSession,sid);
			return false;
		}
		if(!action.equals("home")&&!action.equals("login")&&!action.equals("register")&&!action.equals("search")
				&&!action.equals("stats")&&!action.equals("my")&&!action.equals("myphone")&&!action.equals("goto")
				&&!action.equals("forum")&&!action.equals("thread")&&!action.equals("post")&&!action.equals("pm")){
			forwardToMessage(request, response, settingMap, "未定义操作", null, settingMap.get("bbname"), memberInSession,action,  formhashInSession,sid);
			return false;
		}
		return true;
	}
	
	public HomeVO getHomeVO(HttpServletRequest request,Map<String,String> settingMap,Members currentMember,String allowsearch,String formhash,String sid){
		HomeVO homeVO = new HomeVO();
		setHeaderVO(homeVO.getHeaderVO(), settingMap.get("bbname"));
		setFooterVO(request, settingMap, homeVO.getFooterVO(), currentMember, "home", formhash,sid);
		homeVO.setIsLogin(currentMember!=null);
		homeVO.setSid(sid);
		homeVO.setBbname(settingMap.get("bbname"));
		
		DataBaseDao dataBaseDao = (DataBaseDao)BeanFactory.getBean("dataBaseDao");
		String sql = null;
		if(currentMember!=null){
			if(allowsearch!=null&&!allowsearch.equals("")&&!allowsearch.equals("0")){
				homeVO.setAllowsearch(true);
				int timestamp = (Integer)request.getAttribute("timestamp");
				int lastvisit =  currentMember.getLastvisit();
				
				int newthreads = Math.round((timestamp - lastvisit + 600) / 1000F) * 1000;
				homeVO.setNewthreads(newthreads);
			}
			
			byte accessmasks = currentMember.getAccessmasks();
			if(accessmasks>0){
				sql = "SELECT f.fid, f.name, ff.viewperm, a.allowview FROM "+tablePre+"forums f " +
						"LEFT JOIN "+tablePre+"forumfields ff ON ff.fid=f.fid " +
						"LEFT JOIN "+tablePre+"access a ON a.uid='$discuz_uid' AND a.fid=f.fid " +
						"WHERE f.status>0 AND f.type='forum' ORDER BY f.displayorder";
			}
		}
		if(sql==null){
			sql = "SELECT f.fid, f.name, ff.viewperm FROM "+tablePre+"forums f " +
					"LEFT JOIN "+tablePre+"forumfields ff USING(fid) " +
					"WHERE f.status>0 AND f.type='forum' ORDER BY f.displayorder";
		}
		List<Map<String,String>> forumInfoMapList = dataBaseDao.executeQuery(sql);
		if(forumInfoMapList!=null){
			List<Forum> forumList = homeVO.getForumList();
			short groupid = currentMember!=null?currentMember.getGroupid():7;
			int sign = 1;
			for(Map<String,String> forumInfoMap : forumInfoMapList){
				if(forumInfoMap!=null){
					String viewperm = forumInfoMap.get("viewperm");
					if(viewperm.equals("") || ("\t"+viewperm+"\t").indexOf("\t"+groupid+"\t") >=0 ){
						Forum forum = homeVO.getForum();
						forum.setFid(forumInfoMap.get("fid"));
						forum.setName(Common.strip_tags(forumInfoMap.get("name")));
						forumList.add(forum);
					}
				}
				if(sign++ == 10){
					break;
				}
			}
			homeVO.setExistMoreForum(sign>10);
		}
		List<Map<String,String>> sessionMapList = dataBaseDao.executeQuery("SELECT uid, COUNT(*) AS count FROM "+tablePre+"sessions GROUP BY uid='0'");
		if(sessionMapList!=null){
			for(Map<String,String> sessionMap : sessionMapList){
				if(sessionMap.get("uid").equals("0")){
					homeVO.setGuestCount(Integer.parseInt(sessionMap.get("count")));
				}else{
					homeVO.setMemberCount(Integer.parseInt(sessionMap.get("count")));
				}
			}
		}
		return homeVO;
	}
	public LoginVO getLoginVO(HttpServletRequest request,Map<String,String> settingMap,Members currentMember,String formhash,String sid,boolean failedAnswer,String username,String loginauth){
		LoginVO loginVO = new LoginVO();
		loginVO.setSid(sid);
		loginVO.setFailedAnswer(failedAnswer);
		loginVO.setUsername(username);
		loginVO.setLoginauth(loginauth);
		setHeaderVO(loginVO.getHeaderVO(), settingMap.get("bbname"));
		setFooterVO(request, settingMap, loginVO.getFooterVO(), currentMember, "login", formhash,sid);
		return loginVO;
	}
	
	public boolean loginCheck(String onlineIp,int timestamp){
		DataBaseDao dataBaseDao = (DataBaseDao)BeanFactory.getBean("dataBaseDao");
		List<Map<String,String>> flMapList = dataBaseDao.executeQuery("SELECT count, lastupdate FROM "+tablePre+"failedlogins WHERE ip='"+onlineIp+"'");
		int count = 0;
		if(flMapList!=null && flMapList.size()>0){
			Map<String,String> flMap = flMapList.get(0);
			int lastupdate = Integer.parseInt(flMap.get("lastupdate"));
			if(timestamp - lastupdate > 900){
				count = 4;
			}else{
				count = Math.max(0, Integer.parseInt(flMap.get("count")));
			}
		}else{
			count = 4;
		}
		if(count == 4){
			dataBaseDao.execute("REPLACE INTO "+tablePre+"failedlogins (ip, count, lastupdate) VALUES ('"+onlineIp+"', '1', '"+timestamp+"')");
			dataBaseDao.executeDelete("DELETE FROM "+tablePre+"failedlogins WHERE lastupdate<"+(timestamp-901));
		}
		return count!=0;
	}
	public void forwardToMessage(HttpServletRequest request,HttpServletResponse response,Map<String,String> settingMap, String message,Map<String,String> forwardMap,String headerVO_title,Members currentMembers,String action,String formhash,String sid){
		MessageVO messageVO = new MessageVO();
		setMessageVO(request,response,settingMap,messageVO, message, forwardMap, headerVO_title,currentMembers,action, formhash,sid);
		request.setAttribute("valueObject", messageVO);
		RequestDispatcher dispatcher = request.getRequestDispatcher("/wap/include/message.jsp");
		try {
			dispatcher.forward(request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public Members turnToMember(Map<String,String> memberMap){
		Members members = new Members();
		members.setAccessmasks(Byte.valueOf(memberMap.get("accessmasks")));
		members.setAdminid(Byte.valueOf(memberMap.get("adminid")));
		members.setAdminname(memberMap.get("adminname"));
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String bday =  memberMap.get("bday");
		if(bday == null){
			members.setBday(Common.getGMTCalendar().getTime());
		}else{
			try {
				members.setBday(simpleDateFormat.parse(bday));
			} catch (ParseException e) {
				members.setBday(Common.getGMTCalendar().getTime());
			}
		}
		members.setCredits(Integer.valueOf(memberMap.get("credits")));
		members.setCustomshow(Byte.valueOf(memberMap.get("customshow")));
		members.setDateformat(Byte.valueOf(memberMap.get("dateformat")));
		members.setDigestposts(Short.valueOf(memberMap.get("digestposts")));
		members.setEditormode(Byte.valueOf(memberMap.get("editormode")));
		members.setXspacestatus(Byte.valueOf(memberMap.get("xspacestatus")));
		members.setUsername(memberMap.get("username"));
		members.setUid(Integer.valueOf(memberMap.get("uid")));
		members.setType(memberMap.get("type"));
		members.setTpp(Short.valueOf(memberMap.get("tpp")));
		members.setTimeoffset(memberMap.get("timeoffset"));
		members.setStyleid(Short.valueOf(memberMap.get("styleid")));
		members.setEmail(memberMap.get("email"));
		members.setExtcredits1(Integer.valueOf(memberMap.get("extcredits1")));
		members.setExtcredits2(Integer.valueOf(memberMap.get("extcredits2")));
		members.setExtcredits3(Integer.valueOf(memberMap.get("extcredits3")));
		members.setExtcredits4(Integer.valueOf(memberMap.get("extcredits4")));
		members.setExtcredits5(Integer.valueOf(memberMap.get("extcredits5")));
		members.setExtcredits6(Integer.valueOf(memberMap.get("extcredits6")));
		members.setExtcredits7(Integer.valueOf(memberMap.get("extcredits7")));
		members.setExtcredits8(Integer.valueOf(memberMap.get("extcredits8")));
		members.setExtgroupids(memberMap.get("extgroupids"));
		members.setGender(Byte.valueOf(memberMap.get("gender")));
		members.setGroupexpiry(Integer.valueOf(memberMap.get("groupexpiry")));
		members.setGroupid(Short.valueOf(memberMap.get("groupid")));
		members.setGrouptitle(memberMap.get("grouptitle"));
		members.setInvisible(Byte.valueOf(memberMap.get("invisible")));
		members.setLastactivity(Integer.valueOf(memberMap.get("lastactivity")));
		members.setLastip(memberMap.get("lastip"));
		members.setLastpost(Integer.valueOf(memberMap.get("lastpost")));
		members.setLastvisit(Integer.valueOf(memberMap.get("lastvisit")));
		members.setNewpm(Byte.valueOf(memberMap.get("newpm")));
		members.setNewsletter(Byte.valueOf(memberMap.get("newsletter")));
		members.setOltime(Short.valueOf(memberMap.get("oltime")));
		members.setPageviews(Integer.valueOf(memberMap.get("pageviews")));
		members.setPassword(memberMap.get("password"));
		members.setPmsound(Byte.valueOf(memberMap.get("pmsound")));
		members.setPosts(Integer.valueOf(memberMap.get("posts")));
		members.setPpp(Short.valueOf(memberMap.get("ppp")));
		members.setRegdate(Integer.valueOf(memberMap.get("regdate")));
		members.setRegip(memberMap.get("regip"));
		members.setSecques(memberMap.get("secques"));
		members.setShowemail(Byte.valueOf(memberMap.get("showemail")));
		members.setSigstatus(Byte.valueOf(memberMap.get("sigstatus")));
		
		return members;
	}
	
	public RegisterVO getRegisterVO(HttpServletRequest request,Map<String,String> settingMap,Members currentMember,String formhash,String sid){
		RegisterVO registerVO = new RegisterVO();
		setHeaderVO(registerVO.getHeaderVO(), settingMap.get("bbname"));
		setFooterVO(request, settingMap, registerVO.getFooterVO(), currentMember, "register", formhash,sid);
		return registerVO;
	}
	public Forums_threadsVO getPartOfF(HttpServletRequest request,HttpServletResponse response,String pageString,Map<String,String> settingMap,Members currentMember,int jsprun_uid,short groupid,String formhash,String sid){
		
		Forums_threadsVO forums_threadsVO = new Forums_threadsVO();
		setHeaderVO(forums_threadsVO.getHeaderVO(), settingMap.get("bbname"));
		setFooterVO(request, settingMap, forums_threadsVO.getFooterVO(), currentMember, "forum", formhash, sid);
		forums_threadsVO.setShowForum(true);
		DataBaseDao dataBaseDao = (DataBaseDao)BeanFactory.getBean("dataBaseDao");
		
		int page = pageString==null?1:Math.max(1, Integer.parseInt(pageString));
		int waptpp = Integer.parseInt(settingMap.get("waptpp"));
		int start_limit = (page-1)*waptpp;
		
		String query = "SELECT COUNT(*) AS ct FROM "+tablePre+"forums WHERE status>0 AND type='forum'";
		int forumcount = 0;
		List<Map<String,String>> resultTemp = dataBaseDao.executeQuery(query);
		if(resultTemp!=null&&resultTemp.size()>0){
			forumcount = Integer.parseInt(resultTemp.get(0).get("ct"));
		}
		byte accessmasks = currentMember != null ? currentMember.getAccessmasks() : 0;
		String sql =  accessmasks > 0 ? "SELECT f.fid, f.name, f.lastpost, ff.viewperm, ff.moderators, ff.icon, a.allowview FROM "+tablePre+"forums f " +
				"LEFT JOIN "+tablePre+"forumfields ff ON ff.fid=f.fid " +
						"LEFT JOIN "+tablePre+"access a ON a.uid='"+jsprun_uid+"' AND a.fid=f.fid " +
								"WHERE f.status>0 AND f.type='forum' ORDER BY f.displayorder LIMIT "+start_limit+", "+waptpp
			: "SELECT f.fid, f.name, f.lastpost, ff.viewperm, ff.moderators, ff.icon FROM "+tablePre+"forums f " +
					"LEFT JOIN "+tablePre+"forumfields ff USING(fid) " +
					"WHERE f.status>0 AND f.type='forum' ORDER BY f.displayorder LIMIT "+start_limit+", "+waptpp;
		
		List<Map<String,String>> forumMapList = dataBaseDao.executeQuery(sql);
		if(forumMapList!=null){
			List<ForumInfo> forumList = forums_threadsVO.getForumList();
			String hideprivate=settingMap.get("hideprivate");
			Integer lastvisit=currentMember!=null?currentMember.getLastvisit():null;
			String extgroupid=currentMember!=null?currentMember.getExtgroupids():null;
			Map<String, Map<String, String>> lastposts = new TreeMap<String, Map<String, String>>();
			int timeoffset=Integer.parseInt(settingMap.get("timeoffset"))*3600;
			String timeformat=settingMap.get("timeformat");
			String dateformat=settingMap.get("dateformat");
			SimpleDateFormat sdf_all=new SimpleDateFormat(dateformat+" "+timeformat);
			int rewritestatus = Integer.parseInt(settingMap.get("rewritestatus"));
			for(Map<String,String> forumMap : forumMapList){
				String viewperm = forumMap.get("viewperm");
				if(Common.forum(forumMap, hideprivate, groupid, lastvisit, extgroupid, lastposts,sdf_all,timeoffset,rewritestatus)&&
						(viewperm.equals("")||("\t"+viewperm.trim()+"\t").contains("\t"+groupid+"\t"))){
					ForumInfo forumInfo = forums_threadsVO.getForumInfo();
					forumInfo.setFid(forumMap.get("fid"));
					forumInfo.setName(Common.strip_tags(forumMap.get("name")));
					forumList.add(forumInfo);
				}
			}
		}
		forums_threadsVO.setMultipage(wapmulti(forumcount, waptpp, page, response.encodeURL("index.jsp?action=forum")));
		return forums_threadsVO;
	}
	
	
	public Forums_threadsVO getPartOfT(HttpServletRequest request,HttpServletResponse response,String pageString,String dow,short fid,short groupid,Map<String,String> settingMap,Map<String,Map<String,String>> forums,Map<String,String> groupCache,Members currentMember,String formhash,String sid){
		Forums_threadsVO forums_threadsVO = new Forums_threadsVO();
		setHeaderVO(forums_threadsVO.getHeaderVO(), settingMap.get("bbname"));
		setFooterVO(request, settingMap, forums_threadsVO.getFooterVO(), currentMember, "forum", formhash, sid);
		List<ThreadInfo> threadList = forums_threadsVO.getThreadList();
		Map<String,String> forum = forums.get(fid+"");
		forums_threadsVO.setForumName(forum.get("name"));
		DataBaseDao dataBaseDao = (DataBaseDao)BeanFactory.getBean("dataBaseDao");
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -