📄 wapservice.java
字号:
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 + -