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

📄 membermanageaction.java

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

import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;

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

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.util.MessageResources;

import cn.jsprun.domain.Members;
import cn.jsprun.domain.Validating;
import cn.jsprun.foreg.utils.CookieUtil;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.ForumInit;
import cn.jsprun.utils.Mail;
import cn.jsprun.utils.Md5Token;

public class MemberManageAction extends DispatchAction {
	private MemberService memberService = (MemberService) BeanFactory.getBean("memberService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	@SuppressWarnings("unchecked")
	public ActionForward online(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
		int num = Integer.valueOf(dataBaseService.executeQuery("SELECT COUNT(*) count FROM jrun_sessions").get(0).get("count"));
		int membermaxpages=Integer.valueOf(settings.get("membermaxpages"));
		int memberperpage=Integer.valueOf(settings.get("memberperpage"));
		int page = Common.toDigit(request.getParameter("page"),membermaxpages>0?membermaxpages:2147483647l, 1l).intValue();
		Map<String,Integer> multiInfo=Common.getMultiInfo(num, memberperpage, page);
		page=multiInfo.get("curpage");
		int start_limit=multiInfo.get("start_limit");
		Map<String,Object> multi=Common.multi(num, memberperpage, page, "member.jsp?action=online", membermaxpages, 10, true, false, null, false);
		request.setAttribute("multi", multi);
		List<Map<String,String>> onlinelist=dataBaseService.executeQuery("SELECT CONCAT(s.ip1,'.',s.ip2,'.',s.ip3,'.',s.ip4) AS ip,s.uid,s.username,s.lastactivity,s.action,s.fid,s.tid, f.name, t.subject FROM jrun_sessions s LEFT JOIN jrun_forums f ON s.fid=f.fid LEFT JOIN jrun_threads t ON s.tid=t.tid WHERE s.invisible='0' ORDER BY s.lastactivity DESC LIMIT "+ start_limit+ ", " +memberperpage);
		if(onlinelist!=null&&onlinelist.size()>0){
			HttpSession session=request.getSession();
			int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
			SimpleDateFormat sdf=new SimpleDateFormat((String)session.getAttribute("timeformat"));
			MessageResources mr=getResources(request);
			Locale locale=getLocale(request);
			for (Map<String, String> online : onlinelist) {
				String subject=online.get("subject");
				online.put("lastactivity", Common.gmdate(sdf, Integer.valueOf(online.get("lastactivity"))+timeoffset));
				online.put("subject", (subject!=null&&subject.length()>35)?subject.substring(0, 35):subject);
				online.put("action", mr.getMessage(locale,online.get("action")));
			}
			request.setAttribute("onlinelist",onlinelist);
		}
		return mapping.findForward("whosonline");
	}
	@SuppressWarnings({ "unchecked", "deprecation" })
	public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		HttpSession session=request.getSession();
		byte adminid=(Byte)session.getAttribute("jsprun_adminid");
		Map<String,String> settings =(Map<String,String>)request.getAttribute("settings");
		String type=request.getParameter("type");
		type=type!=null&&type.matches("^(admins|birthdays|grouplist)+$")?type:"";
		String maxbdays=settings.get("maxbdays");
		if((adminid!=1)&&!settings.get("memliststatus").equals("1")&&!type.equals("birthdays")){
			request.setAttribute("resultInfo", "对不起,管理员禁止了会员列表功能。");
			return mapping.findForward("showMessage");
		}
		else if(type.equals("birthdays")&&maxbdays.equals("0")){
			request.setAttribute("resultInfo", "对不起,管理员禁止了显示生日会员功能。");
			return mapping.findForward("showMessage");
		}
		String listgid=request.getParameter("listgid");
		String order=request.getParameter("order");
		String srchmem=request.getParameter("srchmem");
		listgid=listgid==null?"":listgid;
		order=order==null?"":order;
		srchmem=srchmem==null?"":srchmem;
		if(!listgid.equals(""))
		{
			type=adminid==1?"grouplist":type;
		}
		String orderadd=null;
		String sql=null;
		String numSql="SELECT COUNT(*) count FROM jrun_members ";
		if("admins".equals(type)){
			sql="WHERE groupid IN (1, 2, 3)";
		}
		else if("birthdays".equals(type)){
			sql="WHERE RIGHT(bday, 5)='"+new SimpleDateFormat("MM-dd").format(new Date())+"' ORDER BY bday";
		}
		else if("grouplist".equals(type)){
			sql="WHERE groupid='"+listgid+"'";
		}
		else{
			if("credits".equals(order)){
				orderadd="ORDER BY credits DESC";
			}
			else if("gender".equals(order)){
				orderadd="ORDER BY gender DESC";
			}
			else if("username".equals(order)){
				orderadd="ORDER BY username DESC";
			}
			else{
				orderadd="ORDER BY uid"; 
				order = "uid";
			}			
			if(!srchmem.equals(""))
			{
				srchmem=srchmem.replaceAll("_", "\\_");
				srchmem=srchmem.replaceAll("%", "\\%");
				sql=" WHERE username LIKE '"+srchmem.replace("'", "''")+"%'";
			}			
		}
		int num = Integer.valueOf(dataBaseService.executeQuery(numSql+(sql!=null?sql:"")).get(0).get("count"));
		int membermaxpages=Integer.valueOf(settings.get("membermaxpages"));
		int memberperpage=Integer.valueOf(settings.get("memberperpage"));
		int page = Common.toDigit(request.getParameter("page"),membermaxpages>0?membermaxpages:2147483647l, 1l).intValue();
		Map<String,Integer> multiInfo=Common.getMultiInfo(num, memberperpage, page);
		page=multiInfo.get("curpage");
		int start_limit=multiInfo.get("start_limit");
		String url = "member.jsp?action=list&listgid="+listgid+"&srchmem="+URLEncoder.encode(srchmem)+"&order="+order+"&type="+type;
		Map<String,Object> multi=Common.multi(num, memberperpage, page, url, membermaxpages, 10, true, false, null, false);
		request.setAttribute("multi", multi);
		List<Map<String,String>> memberList=dataBaseService.executeQuery("SELECT m.uid, m.username, m.gender,m.regdate, m.lastvisit, m.posts, m.credits,m.bday  FROM jrun_members m "+(sql!=null?sql:"")+(orderadd!=null?orderadd:"")+" LIMIT "+ start_limit+ ", " + memberperpage);
		if(memberList!=null&&memberList.size()>0){
			int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
			String timeformat=(String)session.getAttribute("timeformat");
			String dateformat=(String)session.getAttribute("dateformat");
			SimpleDateFormat sdf_all=new SimpleDateFormat(dateformat+" "+timeformat);
			SimpleDateFormat sdf_dateformat=new SimpleDateFormat(dateformat);
			for (Map<String, String> member : memberList) {
				member.put("regdate", Common.gmdate(sdf_dateformat, Integer.valueOf(member.get("regdate"))+timeoffset));
				member.put("lastvisit", Common.gmdate(sdf_all, Integer.valueOf(member.get("lastvisit"))+timeoffset));
			}
			request.setAttribute("memberList", memberList);
		}
		request.setAttribute("type", type);
		return mapping.findForward("toMemberList");
	}
	public ActionForward viewavatars(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		response.setContentType("text/html");
		response.setHeader("Cache-Control", "no-store"); 
		response.setHeader("Program", "no-cache");
		response.setDateHeader("Expirse", 0);
		String avatarsdir =  servlet.getServletContext().getRealPath("/") + "./images/avatars";
		File file = new File(avatarsdir);
		if (file.isDirectory()) {
			Map<Integer, String> avatars = new TreeMap<Integer, String>();
			HttpSession session=request.getSession();
			String userAvatar="";
			int jsprun_uid = (Integer)session.getAttribute("jsprun_uid");
			if (jsprun_uid>0) {
				List<Map<String,String>> members=dataBaseService.executeQuery("SELECT avatar FROM jrun_memberfields WHERE uid='"+jsprun_uid+"'");
				if (members != null&&members.size()>0) {
					userAvatar=members.get(0).get("avatar");
				}
			}
			File[] files = file.listFiles();
			if (files != null && files.length > 0) {
				String avatarregex=".*\\.(gif|jpg|png)$";
				int i=1;
				for (File avatarFile : files) {
					String avatarName = avatarFile.getName();
					if (avatarName.matches(avatarregex)&&!"noavatar.gif".equals(avatarName)) {
						avatars.put(i,avatarName);
						i++;
					}
				}
			}
			int app = 16;
			int page =Common.toDigit(request.getParameter("page"),2147483647l,1l).intValue();
			int num=avatars.size();
			int start = (page - 1) * app;
			int end = (start + app > num) ? (num) : (start + app - 1);
			StringBuffer avatarlist=new StringBuffer();
			for(int i = start; i <= end; i += 4) {
				avatarlist.append("<tr>");
				for(int j = 0; j < 4; j++) {
					avatarlist.append("<td width=\"25%\" align=\"center\" style=\"border-bottom: none;\">");
					String avatar=avatars.get(i + j);
					if(avatar!=null&&(i + j)>0) {
						avatarlist.append("<img src=\"images/avatars/"+avatar+"\"/></td>");
					} else {
						if(i == 0) {
							avatarlist.append("<img src=\"images/avatars/noavatar.gif\"/>");
						}
						avatarlist.append("</td>");
					}
				}
				avatarlist.append("</tr><tr>");
				for(int j = 0; j < 4; j++) {
					avatarlist.append("<td width=\"25%\" align=\"center\">");
					String avatar=avatars.get(i + j);
					if(avatar!=null&&(i + j)>0) {
						String checked="";
						if(userAvatar.indexOf(avatar)>=0) {
							checked = "checked=\"checked\"";
						}
						avatarlist.append("<input type=\"radio\" value=\"images/avatars/"+avatar+"\" name=\"systemavatar\" "+checked+" onclick=\"if($(\'urlavatar\')) { $(\'urlavatar\').value=this.value;previewavatar(this.value); }\" />"+avatar);
					} else if((i + j) == 0) {
						String checked="";
						if(userAvatar.length()==0) {
							checked = "checked=\"checked\"";
						}
						avatarlist.append("<input type=\"radio\" value=\"\" name=\"systemavatar\" "+checked+" onclick=\"if($(\'urlavatar\')) { $(\'urlavatar\').value=this.value;previewavatar(this.value); }\" /><strong>None</strong>");
					} else {
						avatarlist.append("&nbsp;</td>");
					}
				}
				avatarlist.append("</tr>");
			}
			request.setAttribute("avatarlist", avatarlist);
			String ajaxtarget=request.getParameter("ajaxtarget");
			Map<String,Object> multi=Common.multi(num, app, page, "member.do?action=viewavatars", 0, 10, false, false, ajaxtarget, false);
			request.setAttribute("multi", multi);
		} else {
			request.setAttribute("errorInfo","头像目录 ./images/avatars 不存在,请联系管理员。");
		}
		return mapping.findForward("member_misc");
	}
	@SuppressWarnings("unchecked")
	public ActionForward activate(ActionMapping mapping, ActionForm form,	HttpServletRequest request, HttpServletResponse response) {
		String uid=request.getParameter("uid");
		String id=request.getParameter("id");
		List<Map<String,String>> members=dataBaseService.executeQuery("SELECT m.uid, m.username, m.credits, mf.authstr FROM jrun_members m, jrun_memberfields mf WHERE m.uid='"+uid+"' AND mf.uid=m.uid AND m.groupid='8'");
		if(members!=null&&members.size()>0){
			Map<String,String> member=members.get(0);
			String[] authstr = member.get("authstr").split("\t");
			if(authstr.length==3&&"2".equals(authstr[1])&&id.equals(authstr[2])){
				int credits=Common.toDigit(member.get("credits"));
				List<Map<String,String>> usergroups=dataBaseService.executeQuery("SELECT groupid FROM jrun_usergroups WHERE type='member' AND "+credits+">=creditshigher AND "+credits+"<creditslower LIMIT 1");
				int groupid=0;
				if(usergroups!=null&&usergroups.size()>0){
					groupid=Common.toDigit(usergroups.get(0).get("groupid"));
				}
				dataBaseService.runQuery("UPDATE jrun_members SET groupid='"+groupid+"' WHERE uid='"+member.get("uid")+"'");
				dataBaseService.runQuery("UPDATE jrun_memberfields SET authstr='' WHERE uid='"+member.get("uid")+"'");
				request.setAttribute("successInfo", "您好,"+member.get("uid")+",您的帐号已被成功激活,现在将转入论坛首页。");
				request.setAttribute("requestPath",ForumInit.settings.get("indexname"));
				return mapping.findForward("showMessage");
			}else{
				request.setAttribute("errorInfo", "您所用的 ID 不存在或您不是等待验证会员。");
				return mapping.findForward("showMessage");
			}
		}else{
			request.setAttribute("errorInfo", "您所用的 ID 不存在或您不是等待验证会员。");
			return mapping.findForward("showMessage");
		}
	}

	@SuppressWarnings("unchecked")
	public ActionForward lostpasswd(ActionMapping mapping, ActionForm form,	HttpServletRequest request, HttpServletResponse response) {
		String username = request.getParameter("username");
		String email = request.getParameter("email");
		int questionid = Integer.valueOf(request.getParameter("questionid"));
		String answer = request.getParameter("answer");
		String secques = Common.quescrypt(questionid, answer);
		List<Map<String,String>> members=dataBaseService.executeQuery("SELECT uid, username, adminid, email FROM jrun_members WHERE username='"+username+"' AND secques='"+secques+"' AND email='"+email+"'");
		if (members != null&&members.size()>0) {
			Map<String,String> member=members.get(0);
			int adminid=Integer.valueOf(member.get("adminid"));
			if (adminid == 1 || adminid == 2) {
				request.setAttribute("errorInfo","对不起,管理员和超级版主不能使用取回密码功能,请返回。");
				return mapping.findForward("showMessage");
			} else {
				String idstring = Common.getRandStr(6,false);

⌨️ 快捷键说明

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