Browse Source

支付成功之后更新项目参与人数和已筹集金额

huangct 8 years ago
parent
commit
d29293363a

+ 18 - 7
donate-service/src/main/java/com/uas/service/donate/controller/AlipayController.java

@@ -24,6 +24,7 @@ import com.uas.service.donate.model.*;
 import com.uas.service.donate.service.AlipayOrderService;
 import com.uas.service.donate.service.AlipayUserService;
 import com.uas.service.donate.service.ProjectRecodeService;
+import com.uas.service.donate.service.ProjectService;
 import com.uas.service.donate.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,12 +51,6 @@ import java.util.Map;
 @Controller
 @RequestMapping("/alipay")
 public class AlipayController {
-    @Autowired
-    protected HttpServletRequest request;
-
-    @Autowired
-    protected HttpServletResponse response;
-
     @Autowired
     private AlipayUserService alipayUserService;
 
@@ -65,6 +60,9 @@ public class AlipayController {
     @Autowired
     private AlipayOrderService alipayOrderService;
 
+    @Autowired
+    private ProjectService projectService;
+
     private Logger logger = LoggerFactory.getLogger(DruidDBConfiguration.class);
 
     //private AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.SB_GATEWAY,AlipayConfig.SB_APPID,AlipayConfig.SB_RSA_PRIVATE_KEY,AlipayConfig.FORMAT,AlipayConfig.CHARSET,AlipayConfig.SB_ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
@@ -224,7 +222,7 @@ public class AlipayController {
      */
     @ResponseBody
     @RequestMapping("/notifyUrl")
-    public void notifyUrl(HttpServletRequest request) throws IOException {
+    public void notifyUrl(HttpServletRequest request, HttpServletResponse response) throws IOException {
         Map<String, String> params = AlipayApi.toMap(request);
         String data = AlipayApi.getRequestData(request); // data json格式
         System.out.print(data);
@@ -304,6 +302,19 @@ public class AlipayController {
                                     //TODO 交易结束通知处理
                                 } else {
                                     if ("TRADE_SUCCESS".equals(notifyTradeStatus)) {
+                                        if (projectRecode.getStatus() == 1) {
+                                            //如果当前数据库中商户订单还是待支付状态 更新项目参数人数和金额
+                                            Project project = projectRecode.getProject();
+                                            logger.info("查看项目", "查看项目id为" + project.getId() + ",项目名称为"
+                                                    + project.getName() + ",当前参与人数为" + project.getJoinAmount() + ",当前已筹集的金额" + project.getTotalAmount());
+                                            project.setJoinAmount(project.getJoinAmount() + 1);
+                                            project.setTotalAmount(project.getTotalAmount() + projectRecode.getAmount());
+                                            logger.info("此次用户捐款金额为" + projectRecode.getAmount() + "元");
+                                            projectService.save(project);
+                                            logger.info("更新项目", "更新了项目id为" + project.getId() + ",项目名称为"
+                                                    + project.getName()+ "的参数人数和金额" + ",当前参与人数为" + project.getJoinAmount() + ",当前已筹集的金额" + project.getTotalAmount());
+                                        }
+
                                         //交易支付成功 注:付款完成后,支付宝系统发送该交易状态通知
                                         projectRecode.setStatus(projectRecodePayStatus);
                                         projectRecodeService.update(projectRecode);

+ 17 - 14
donate-service/src/main/java/com/uas/service/donate/controller/WxpayController.java

@@ -13,11 +13,9 @@ import com.uas.dfs.service.FileClient;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.service.donate.api.WxPayApi;
 import com.uas.service.donate.config.WxConfig;
-import com.uas.service.donate.model.ProjectRecode;
-import com.uas.service.donate.model.SystemSession;
-import com.uas.service.donate.model.User;
-import com.uas.service.donate.model.WechatOrder;
+import com.uas.service.donate.model.*;
 import com.uas.service.donate.service.ProjectRecodeService;
+import com.uas.service.donate.service.ProjectService;
 import com.uas.service.donate.service.WechatOrderService;
 import com.uas.service.donate.util.IpUtils;
 import com.uas.service.donate.util.StringUtils;
@@ -68,6 +66,9 @@ public class WxpayController {
     @Autowired
     private ProjectRecodeService projectRecodeService;
 
+    @Autowired
+    private ProjectService projectService;
+
     private Logger logger = LoggerFactory.getLogger(WxpayController.class);
     private static String redirectUrl = "http://lj.ubtob.com/wxpay/redirectUrl";
     //private String orderNumber = NumberGenerator.generateId();
@@ -289,8 +290,6 @@ public class WxpayController {
     @RequestMapping("/notifyUrl")
     public synchronized void payNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
         ModelMap map = new ModelMap();
-        boolean isPaySuccess = false;
-        String outTradeNo = null;
         String returnResult = null;
         try {
             String xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding());
@@ -335,9 +334,19 @@ public class WxpayController {
 
                             if ("SUCCESS".equals(wxPayOrderQueryResult.getTradeState())) {
                                 projectRecodePayStatus = 2;
+                                if (projectRecode.getStatus() == 1) {
+                                    //如果当前数据库中商户订单还是待支付状态 更新项目参数人数和金额
+                                    Project project = projectRecode.getProject();
+                                    logger.info("查看项目", "查看项目id为" + project.getId() + ",项目名称为"
+                                            + project.getName() + ",当前参与人数为" + project.getJoinAmount() + ",当前已筹集的金额" + project.getTotalAmount());
+                                    project.setJoinAmount(project.getJoinAmount() + 1);
+                                    project.setTotalAmount(project.getTotalAmount() + projectRecode.getAmount());
+                                    logger.info("此次用户捐款金额为" + projectRecode.getAmount() + "元");
+                                    projectService.save(project);
+                                    logger.info("更新项目", "更新了项目id为" + project.getId() + ",项目名称为"
+                                            + project.getName()+ "的参数人数和金额" + ",当前参与人数为" + project.getJoinAmount() + ",当前已筹集的金额" + project.getTotalAmount());
+                                }
                                 projectRecode.setStatus(projectRecodePayStatus);
-                                isPaySuccess = true;
-                                outTradeNo = result.getOutTradeNo();
                             }
 
                             wechatOrderService.save(WechatOrder.WxPayOrderNotifyResultToConvert(result, (short) 1, wxPayOrderQueryResult));
@@ -364,12 +373,6 @@ public class WxpayController {
         } finally {
             //TODO map
             response.getWriter().write(returnResult);
-
-//            if (isPaySuccess) {
-//                String requestUrlMessage = request.getScheme() +"://" + request.getServerName() + ":" + request.getServerPort();
-//                String url = requestUrlMessage + "/project#/donationsOver/" +  outTradeNo;
-//                response.sendRedirect(url);
-//            }
         }
     }