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

📄 inviteaction.java

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

import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;

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 cn.jsprun.domain.Members;
import cn.jsprun.service.system.DataBaseService;
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 InviteAction extends DispatchAction {
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	@SuppressWarnings("unchecked")
	public ActionForward buyinvite(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		HttpSession session = request.getSession();
		int jsprun_uid = (Integer)session.getAttribute("jsprun_uid");
		List<Map<String, String>> invitecount = dataBaseService.executeQuery("SELECT COUNT(*) as count FROM jrun_invites WHERE uid='"+jsprun_uid+"' AND dateline>'"+timestamp+"'-86400 AND dateline<'"+timestamp+"'");
		int myinvitenum = 0;
		Map<String, String> usergroups = (Map<String, String>) request.getAttribute("usergroups");
		int maxinvitenum = Common.toDigit(usergroups.get("maxinvitenum"));
		if(invitecount!=null && invitecount.size()>0){
			 myinvitenum = Integer.valueOf(invitecount.get(0).get("count"));
			if(maxinvitenum!=0 && maxinvitenum==myinvitenum){
				request.setAttribute("errorInfo", "您所拥有的邀请码数量已经到达最大值,请返回。");
				return mapping.findForward("showMessage");
			}
			request.setAttribute("myinvitenum", myinvitenum);
		}
		Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
		Map extcredits = dataParse.characterParse(settings.get("extcredits"), true);
		Integer creditstrans=Integer.valueOf(settings.get("creditstrans"));
		request.setAttribute("extcredits", extcredits);
		request.setAttribute("creditstrans",creditstrans);
		String buysubmit = request.getParameter("buysubmit");
		if(buysubmit==null){
			return mapping.findForward("invite_get");
		}else{
			int amount=Common.toDigit(request.getParameter("amount"));
			int inviteprice=Common.toDigit("inviteprice");
			int buyinvitecredit=amount>0?amount*inviteprice:0;
			if(amount<=0){
				request.setAttribute("errorInfo", "购买数量非法");
				return mapping.findForward("showMessage");
			}
			Members member = (Members)session.getAttribute("user");
			int credits = creditstrans>0?(Integer)getValues(member, "extcredits"+creditstrans):creditstrans;
			if(credits<buyinvitecredit&&buyinvitecredit>0){
				request.setAttribute("errorInfo", "您的 "+((Map)extcredits.get(creditstrans)).get("title")+" 不足,请返回修改购买数量。");
				return mapping.findForward("showMessage");
			}else if(maxinvitenum>0&&(myinvitenum + amount) > maxinvitenum || amount > 50){
				request.setAttribute("errorInfo", "超过您所在用户组邀请码拥有数量的最大值,请返回修改购买数量。");
				return mapping.findForward("showMessage");
			}else if(buyinvitecredit>0&&creditstrans==0){
				request.setAttribute("errorInfo", "对不起,交易积分没有被启用,无法使用此功能,请返回或与管理员联系。");
				return mapping.findForward("showMessage");
			}else{
				Md5Token md5=Md5Token.getInstance();
				int maxinviteday=Common.toDigit(usergroups.get("maxinviteday"));
				StringBuffer sql=new StringBuffer();
				sql.append("INSERT INTO jrun_invites(uid, dateline, expiration, inviteip, invitecode) VALUES ");
				for(int i=1;i<=amount;i++){
					String invitecode =md5.getLongToken(jsprun_uid+timestamp+Common.getRandStr(6, false)).substring(0,10)+Common.getRandStr(6, false);
					int expiration = timestamp+maxinviteday*86400;
					sql.append("('"+jsprun_uid+"', '"+timestamp+"', '"+expiration+"', '"+request.getRemoteAddr()+"', '"+invitecode+"'),");
				}
				sql.deleteCharAt(sql.length()-1);
				dataBaseService.runQuery(sql.toString(),true);
				if(buyinvitecredit>0&&creditstrans>0){
					dataBaseService.runQuery("UPDATE jrun_members SET extcredits"+creditstrans+"=extcredits"+creditstrans+"-'"+buyinvitecredit+"' WHERE uid='"+jsprun_uid+"'",true);
					Common.updateMember(session, jsprun_uid);
				}
				request.setAttribute("successInfo", "购买成功。");
				request.setAttribute("requestPath", "invite.jsp");
				return mapping.findForward("showMessage");
			}
		}
	}
	@SuppressWarnings("unchecked")
	public ActionForward availablelog(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		int jsprun_uid = (Integer) session.getAttribute("jsprun_uid");
		String operation = request.getParameter("operation");
		if (operation == null) {
			operation = "availablelog";
		}
		Members member = (Members)session.getAttribute("user");
		Map<String, String> settings = (Map<String, String>) request.getAttribute("settings");
		int page = Common.toDigit(request.getParameter("page"),2147483647l,1l).intValue();
		int tpp = member != null && member.getTpp() > 0 ? member.getTpp(): Integer.valueOf(settings.get("topicperpage"));;
		int start_limit = (page - 1) * tpp;
		if(start_limit<0){
			page=1;
			start_limit=0;
		}
		String status = null;
		String sql = null;
		if(operation.equals("availablelog")){
			status = "1";
			sql = "SELECT dateline, expiration, invitecode, status	FROM jrun_invites WHERE uid='"+jsprun_uid+"' AND status IN ('1', '3') ORDER BY dateline DESC LIMIT "+start_limit+","+tpp;
		}else if(operation.equals("usedlog")){
			status = "2";
			sql = "SELECT i.dateline, i.expiration, i.invitecode, m.username, m.uid FROM jrun_invites i, jrun_members m WHERE i.uid='"+jsprun_uid+"' AND i.status='2' AND i.reguid=m.uid ORDER BY dateline DESC LIMIT "+start_limit+","+tpp;
		}else{
			status = "4";
			sql = "SELECT dateline, expiration, invitecode FROM jrun_invites WHERE uid='"+jsprun_uid+"' AND status='4' ORDER BY dateline DESC LIMIT "+start_limit+","+tpp;
		}
		List<Map<String, String>> inviteslogs = dataBaseService.executeQuery(sql);
		if(inviteslogs!=null && inviteslogs.size()>0){
			request.setAttribute("inviteslogs", inviteslogs);
		}
		List<Map<String, String>> invitecount = dataBaseService.executeQuery("SELECT COUNT(*) count FROM jrun_invites WHERE uid='"+jsprun_uid+"' AND status='"+status+"'");
		int invitenum = Integer.valueOf(invitecount.get(0).get("count"));
		Map<String,Object> multi=Common.multi(invitenum, tpp, page, "invite.jsp?action=toavailablelog&operation=" + operation, 0, 10, true, false, null, false);
		request.setAttribute("multi", multi);
		Common.setExtcredits(request);
		return mapping.findForward("invite_log");
	}
	private Object getValues(Object bean, String fieldName) {
		Object paraValue = null;
		try {
			String getMethod = "get" + fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1, fieldName.length());
			Method method = bean.getClass().getMethod(getMethod);
			paraValue = method.invoke(bean);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return paraValue;
	}
	@SuppressWarnings("unchecked")
	public ActionForward markinvite(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		int jsprun_uid = (Integer) session.getAttribute("jsprun_uid");
		String undo = request.getParameter("do");
		String invitecode = request.getParameter("invitecode");
		int changestatus = undo==null?3:1;
		if(invitecode!=null){
			dataBaseService.runQuery("update jrun_invites set status='"+changestatus+"' WHERE uid='"+jsprun_uid+"' AND invitecode='"+invitecode+"'");
		}
		List<Map<String, String>> invite = dataBaseService.executeQuery("SELECT invitecode, dateline, expiration FROM jrun_invites WHERE uid='"+jsprun_uid+"' AND invitecode='"+invitecode+"'");
		request.setAttribute("invite", invite.get(0));
		request.setAttribute("changestatus", changestatus);
		return mapping.findForward("invite_log");
	}
	@SuppressWarnings("unchecked")
	public ActionForward sendinvite(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		Map<String,String> usergroups = (Map<String,String>)request.getAttribute("usergroups");
		int jsprun_uid = (Integer) session.getAttribute("jsprun_uid");
		String invitecode = request.getParameter("invitecode");
		if(usergroups==null || usergroups.get("allowmailinvite").equals("0")){
			String grouptitle = usergroups==null?"游客":usergroups.get("grouptitle");
			request.setAttribute("errorInfo", "您所在的用户组("+grouptitle+")无法进行此操作。");
			return mapping.findForward("showMessage");
		}
		String sendsubmit = request.getParameter("sendsubmit");
		if(sendsubmit==null){
			Common.setExtcredits(request);
			request.setAttribute("invitecode", invitecode);
			return mapping.findForward("invite_send");
		}else{
			Map<String,String> settings=ForumInit.settings;
			String jsprun_userss = (String)(session.getAttribute("jsprun_userss"));
			String fromname = request.getParameter("fromname");
			String fromemail = request.getParameter("fromemail");
			String sendtoname = request.getParameter("sendtoname");
			String sendtoemail = request.getParameter("sendtoemail");
			if(empty(fromname) || empty(fromemail) || empty(sendtoname) || empty(sendtoemail)){
				request.setAttribute("errorInfo", "相关项目没有填写完整,请返回修改。");
				return mapping.findForward("showMessage");
			}
			List<Map<String, String>> invite = dataBaseService.executeQuery("SELECT invitecode FROM jrun_invites WHERE uid='"+jsprun_uid+"' and status='1' AND invitecode='"+invitecode+"'");
			if(invite!=null && invite.size()>0){
				dataBaseService.runQuery("UPDATE jrun_invites SET status='3' WHERE uid='"+jsprun_uid+"' AND invitecode='"+invitecode+"'");
				Map<String,String> mails=dataParse.characterParse(settings.get("mail"), false);
				mails.put("jsprun_root",servlet.getServletContext().getRealPath("/"));
				Mail mail=new Mail(mails);
				String message=request.getParameter("message");
				String boardurl = (String) session.getAttribute("boardurl");
				mail.sendMessage(fromname+" <"+fromemail+">",sendtoname+" <"+sendtoemail+">","您的朋友 "+jsprun_userss+" 发送 "+settings.get("bbname")+" 论坛注册邀请码给您","\n"+sendtoname+",\n这封信是由 "+settings.get("bbname")+" 的 "+jsprun_userss+" 发送的。\n\n您收到这封邮件,是因为在 "+jsprun_userss+" 通过我们论坛的“发送邀请码给朋友”\n功能推荐了如下的内容给您,如果您对此不感兴趣,请忽略这封邮件。您不\n需要退订或进行其他进一步的操作。\n\n----------------------------------------------------------------------\n信件原文开始\n----------------------------------------------------------------------\n\n"+message+"\n\n----------------------------------------------------------------------\n信件原文结束\n----------------------------------------------------------------------\n\n请注意这封信仅仅是由用户使用 “发送邀请码给朋友”发送的,不是论坛官方邮件,\n论坛管理团队不会对这类邮件负责。\n\n欢迎您访问 "+settings.get("bbname")+"\n"+boardurl,null);
				request.setAttribute("successInfo", "您的邀请码已经通过 Email 发给朋友。");
				request.setAttribute("requestPath", "invite.jsp");
				return mapping.findForward("showMessage");
			}else{
				request.setAttribute("errorInfo", "您填写的邀请码无效。");
				return mapping.findForward("showMessage");
			}
		}
	}
	private boolean empty(String ss) {
		if (ss != null && !ss.equals("")) {
			return false;
		}
		return true;
	}
}

⌨️ 快捷键说明

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