📄 notifyaction.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 + -