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

📄 notifyaction.java

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

import java.io.IOException;
import java.io.PrintWriter;
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.api.Tenpayapi;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;

import com.tenpay.c2c.bean.PayResponse;
import com.tenpay.c2c.helper.PayReponseHelper;

public class NotifyAction extends DispatchAction {
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
	@SuppressWarnings("unchecked")
	public ActionForward tradenotify(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Map<String,String> settings=(Map<String,String>)request.getAttribute("settings");
		PayReponseHelper payResponseHelper = new PayReponseHelper();
		payResponseHelper.setPayResponse(request);
		PayResponse payResponse = payResponseHelper.getPayResponse();
		String key = settings!=null?settings.get("ec_key"):"";
		payResponseHelper.setKey(key);
		if( payResponseHelper.isTenpaySign() ) {
			if(payResponse.getCmdno()==12){
				if( "0".equals(payResponse.getRetcode()) ) {
					String orderid=payResponse.getMch_vno();
					if(orderid!=null&&orderid.length()>0){
						List<Map<String,String>> tradelogs=dataBaseService.executeQuery("SELECT status, tid, pid, price, subject, buyercredits, buyerid, buyer, sellerid, seller, number FROM jrun_tradelog WHERE orderid = '"+orderid+"'");
						if(tradelogs!=null&&tradelogs.size()>0){
							Map<String,String> tradelog=tradelogs.get(0);
							int oldstatus=Integer.valueOf(tradelog.get("status"));
							if(oldstatus!=Tenpayapi.STATUS_TRADE_SUCCESS&&oldstatus!=Tenpayapi.STATUS_REFUND_CLOSE){
								int status=payResponse.getStatus();
								int timestamp = (Integer)(request.getAttribute("timestamp"));
								switch(status) {
									case 1: 
										status=2;
										break;
									case 2:
										status=3;
										break;
									case 3:
										status=4;
										break;
									case 4:
										status=5;
										break;
									case 5:
										status=6;
										break;
									case 6:
										status=8;
										break;
									case 7:
										break;
									case 8:
										status=10;
										break;
									case 9:
										status=17;
										break;
									case 10:
										status=18;
										break;
									default:
										status=0;
								}
								dataBaseService.runQuery("UPDATE jrun_tradelog SET status = '"+status+"', lastupdate='"+timestamp+"', tradeno='"+payResponse.getCft_tid()+"' WHERE orderid = '"+orderid+"'");
								if(status!=oldstatus){
									HttpSession session=request.getSession();
									String boardurl=(String)session.getAttribute("boardurl");
									if(status==Tenpayapi.STATUS_SELLER_SEND){
										String message="这是由论坛系统自动发送的通知短消息。\n\n买家 "+tradelog.get("buyer")+" 购买您的商品 "+tradelog.get("subject")+"\n\n买家已付款,等待您发货,请[url="+boardurl+"trade.jsp?orderid="+orderid+"]点击这里[/url]查看详情。";
										Common.sendpm(tradelog.get("sellerid"), "[系统消息] 有买家购买您的商品", message, "0", "System Message", timestamp);
									}else if(status==Tenpayapi.STATUS_WAIT_BUYER){
										String message="这是由论坛系统自动发送的通知短消息。\n\n您购买的商品 "+tradelog.get("subject")+"\n\n卖家 "+tradelog.get("seller")+" 已发货,等待您的确认,请[url="+boardurl+"trade.jsp?orderid="+orderid+"]点击这里[/url]查看详情。";
										Common.sendpm(tradelog.get("buyerid"), "[系统消息] 您购买的商品已经发货", message, "0", "System Message", timestamp);
									}else if(status==Tenpayapi.STATUS_TRADE_SUCCESS){
										dataBaseService.runQuery("UPDATE jrun_trades SET lastbuyer='"+tradelog.get("buyer")+"', lastupdate='"+timestamp+"', totalitems=totalitems+'"+tradelog.get("number")+"', tradesum=tradesum+'"+tradelog.get("price")+"' WHERE tid='"+tradelog.get("tid")+"' AND pid='"+tradelog.get("pid")+"'");
										Map creditspolicys=dataParse.characterParse(settings.get("creditspolicy"),false);
										Map<Integer, Integer> tradefinished = (Map<Integer,Integer>)creditspolicys.get("tradefinished");
										int sellerid=Integer.valueOf(tradelog.get("sellerid"));
										int buyerid=Integer.valueOf(tradelog.get("buyerid"));
										if(sellerid>0){
											Common.updatepostcredits("+", sellerid, tradefinished, timestamp);
											Common.updatepostcredits(sellerid,settings.get("creditsformula"));
										}
										if(buyerid>0){
											Common.updatepostcredits("+", buyerid, tradefinished, timestamp);
											Common.updatepostcredits(buyerid,settings.get("creditsformula"));
										}
										String message="这是由论坛系统自动发送的通知短消息。\n\n商品 "+tradelog.get("subject")+" 已交易成功,请[url="+boardurl+"trade.jsp?orderid="+orderid+"]点击这里[/url]给对方评分。";
										Common.sendpm(tradelog.get("sellerid"), "[系统消息] 商品交易已成功完成", message, "0", "System Message", timestamp);
										Common.sendpm(tradelog.get("buyerid"), "[系统消息] 商品交易已成功完成", message, "0", "System Message", timestamp);
									}else if(status==Tenpayapi.STATUS_REFUND_CLOSE){
										dataBaseService.runQuery("UPDATE jrun_trades SET amount=amount+'"+tradelog.get("number")+"' WHERE tid='"+tradelog.get("tid")+"' AND pid='"+tradelog.get("pid")+"'");
										String message="这是由论坛系统自动发送的通知短消息。\n\n商品 "+tradelog.get("subject")+" 已退款成功,请[url="+boardurl+"trade.jsp?orderid="+orderid+"]点击这里[/url]给对方评分。";
										Common.sendpm(tradelog.get("sellerid"), "[系统消息] 您购买的商品已成功退款", message, "0", "System Message", timestamp);
										Common.sendpm(tradelog.get("buyerid"), "[系统消息] 您购买的商品已成功退款", message, "0", "System Message", timestamp);
										int creditstrans=Common.toDigit(settings.get("creditstrans"));
										int buyerid=Integer.valueOf(tradelog.get("tradelog"));
										if(creditstrans>0&&buyerid>0){
											String creditsformula=settings.get("creditsformula");
											dataBaseService.runQuery("UPDATE jrun_members SET extcredits"+creditstrans+"=extcredits"+creditstrans+"+"+tradelog.get("buyercredits")+",credits="+creditsformula+" WHERE uid='"+buyerid+"'");
										}
									}
								}
								PrintWriter out;
								try {
									out = response.getWriter();
									out.write("success");
									out.flush();
									out.close();
								} catch (IOException e) {
									e.printStackTrace();
								}
							}
						}
					}
				}
			}
			PrintWriter out;
			try {
				out = response.getWriter();
				out.write("fail");
				out.flush();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}else{
			PrintWriter out;
			try {
				out = response.getWriter();
				out.write("Access Denied");
				out.flush();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public ActionForward ordernotify(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Map<String,String> settings=(Map<String,String>)request.getAttribute("settings");
		PayReponseHelper payResponseHelper = new PayReponseHelper();
		payResponseHelper.setPayResponse(request);
		PayResponse payResponse = payResponseHelper.getPayResponse();
		String key = settings!=null?settings.get("ec_key"):"";
		payResponseHelper.setKey(key);
		if( payResponseHelper.isTenpaySign() ) {
			if(payResponse.getCmdno()==12){
				if( "0".equals(payResponse.getRetcode()) ) {
					String order_no=payResponse.getMch_vno();
					if(order_no!=null&&order_no.length()>0){
						List<Map<String,String>> orders=dataBaseService.executeQuery("SELECT o.*, m.username FROM jrun_orders o LEFT JOIN jrun_members m USING (uid) WHERE o.orderid='"+order_no+"'");
						if(orders!=null&&orders.size()>0){
							Map<String,String> order=orders.get(0);
							int oldstatus=Integer.valueOf(order.get("status"));
							if(oldstatus==1){
								String creditsformula=settings.get("creditsformula");
								HttpSession session = request.getSession();
								String dateformat = (String)session.getAttribute("dateformat");
								String timeformat = (String)session.getAttribute("timeformat");
								int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
								int timestamp = (Integer)(request.getAttribute("timestamp"));
								int creditstrans = Integer.valueOf(settings.get("creditstrans"));
								dataBaseService.runQuery("UPDATE jrun_orders SET status='2', buyer='"+payResponse.getBuyer_id()+"', confirmdate='"+timestamp+"' WHERE orderid='"+order_no+"'", true);
								dataBaseService.runQuery("UPDATE jrun_members SET extcredits"+creditstrans+"=extcredits"+creditstrans+"+"+order.get("amount")+",credits="+creditsformula+" WHERE uid="+order.get("uid"), true);
								dataBaseService.runQuery("DELETE FROM jrun_orders WHERE submitdate<"+timestamp+"-60*86400", true);
								dataBaseService.runQuery("INSERT INTO jrun_creditslog (uid, fromto, sendcredits, receivecredits, send, receive, dateline, operation) VALUES ('"+order.get("uid")+"', '"+order.get("username")+"', '"+creditstrans+"', '"+creditstrans+"', '0', '"+order.get("amount")+"', '"+timestamp+"', 'AFD')", true);
								String submitdate=Common.gmdate(dateformat+" "+timeformat, Integer.valueOf(order.get("submitdate")) + timeoffset);
								String confirmdate=Common.gmdate(dateformat+" "+timeformat, timestamp + timeoffset);
								String boardurl=(String)session.getAttribute("boardurl");
								Map<String,Map> extcredits = ((DataParse) BeanFactory.getBean("dataParse")).characterParse(settings.get("extcredits"), true);
								Map creditstran=extcredits.get(creditstrans);
								String message="这是由论坛系统自动发送的通知短消息。\n\n[b]您提交的积分充值请求已成功完成,相应数额的积分已经存入您的积分账户。[/b]\n\n[b]订单号:[/b] "+order.get("orderid")+"\n[b]提交时间:[/b] "+submitdate+"\n[b]确认时间:[/b] "+confirmdate+"\n\n[b]支出:[/b] 人民币 "+order.get("price")+" 元\n[b]收入:[/b] "+creditstran.get("title")+" "+order.get("amount")+" "+creditstran.get("unit")+"\n\n详情请[url="+boardurl+"memcp.jsp?action=creditslog&operation=creditslog]点击这里[/url]访问您的积分转账与兑换记录。";
								Common.sendpm(order.get("uid"), "[系统消息] 积分充值成功完成", message, "0", "System Message", timestamp);
								PrintWriter out;
								try {
									out = response.getWriter();
									out.write("success");
									out.flush();
									out.close();
								} catch (IOException e) {
									e.printStackTrace();
								}
							}
						}
					}
				}
			}
			PrintWriter out;
			try {
				out = response.getWriter();
				out.write("fail");
				out.flush();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}else{
			PrintWriter out;
			try {
				out = response.getWriter();
				out.write("Access Denied");
				out.flush();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
	}
}

⌨️ 快捷键说明

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