From f9de931c4457c2a6bfe395879e3b2f2bfd7d9692 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期五, 26 五月 2023 16:55:34 +0800
Subject: [PATCH] 用户端代码

---
 src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java |  145 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 130 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java b/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java
index b026bf1..5f96342 100644
--- a/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java
+++ b/src/main/java/com/stylefeng/guns/modular/system/controller/FinanceController.java
@@ -1,33 +1,37 @@
 package com.stylefeng.guns.modular.system.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.amazonaws.services.dynamodbv2.xspec.B;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.stripe.exception.StripeException;
 import com.stripe.model.PaymentIntent;
-import com.stylefeng.guns.modular.system.model.ReceivableVo;
-import com.stylefeng.guns.modular.system.model.TGoods;
-import com.stylefeng.guns.modular.system.model.TOrder;
-import com.stylefeng.guns.modular.system.model.TPrice;
-import com.stylefeng.guns.modular.system.service.ITGoodsService;
-import com.stylefeng.guns.modular.system.service.ITOrderService;
+import com.stylefeng.guns.modular.system.model.*;
+import com.stylefeng.guns.modular.system.service.*;
+import com.stylefeng.guns.modular.system.service.impl.TQuoteServiceImpl;
 import com.stylefeng.guns.modular.system.utils.PaymentProcessor;
 import com.stylefeng.guns.modular.system.utils.Server;
+import com.stylefeng.guns.modular.system.utils.StripePayUtils;
+import com.stylefeng.guns.modular.system.utils.tips.ErrorTip;
 import com.stylefeng.guns.modular.system.utils.tips.SuccessTip;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Controller
 @Api(tags = "用户端-财务信息")
@@ -40,6 +44,15 @@
 
     @Autowired
     private ITGoodsService goodsService;
+
+    @Autowired
+    private ITUserService itUserService;
+
+    @Autowired
+    private ITQuoteService tQuoteService;
+
+    @Autowired
+    private TUserBankService userBankService;
 
 
     @ApiOperation(value = "用户端-invocie",notes="用户端-invocie")
@@ -105,17 +118,119 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
             @ApiImplicitParam(name = "id", value = "userid", required = true, dataType = "int"),
-            @ApiImplicitParam(name = "orderId", value = "orderId", required = true, dataType = "Long"),
+            @ApiImplicitParam(name = "quoteId", value = "需求id", required = false, dataType = "Long"),
+            @ApiImplicitParam(name = "cardId", value = "cardId", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "type", value = "type 1额度支付  2全款支付", required = true, dataType = "int"),
+            @ApiImplicitParam(name = "category", value = " 1需求支付  2所有支付", required = true, dataType = "int"),
     })
     @GetMapping(value = "/payInfo")
     @ResponseBody
-    public Object payInfo(int id,Long orderId) throws StripeException {
-        PaymentIntent paymentIntent = PaymentProcessor.charge("cus_NvFsNut8zDF9pc", 1L);
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public Object payInfo(int id, Long quoteId, Integer cardId, int type, int category) throws StripeException {
+        TUser tUser = itUserService.selectById(id);
 
-        Server.aaa();
-        return new SuccessTip();
+
+        try {
+            if (category == 1) {
+                TQuote quote = tQuoteService.selectById(quoteId);
+                // 找出状态为0的订单
+                List<TOrder> orders = orderService.selectList(new EntityWrapper<TOrder>().eq("e_zip_z", quote.getOrderId()).eq("status", 0));
+                // 总金额
+                BigDecimal bigDecimal = new BigDecimal(0);
+                for (TOrder order : orders) {
+                    bigDecimal = bigDecimal.add(order.getAllTotal());
+                }
+                if (type == 1) {
+                    // 可用额度
+                    BigDecimal bigDecimal1 = null;
+                    String residueLimit = tUser.getResidueLimit();
+                    if (residueLimit == null) {
+                        bigDecimal1 = new BigDecimal(residueLimit);
+                    } else {
+                        bigDecimal1 = new BigDecimal(residueLimit);
+                    }
+                    // 剩余额度
+                    BigDecimal subtract = bigDecimal1.subtract(bigDecimal);
+                    tUser.setResidueLimit(subtract.toString());
+                    orders.forEach(e -> {
+                        e.setStatus("2");
+                        e.setPayTime(new Date());
+                    });
+                    orderService.updateBatchById(orders);
+                    itUserService.updateById(tUser);
+                    quote.setState(4);
+                    tQuoteService.updateById(quote);
+                } else {
+                    if (tUser.getUserNumber() == null) {
+                        return new ErrorTip(5006, "Please bind a card first");
+                    }
+                    // 找出这张卡
+                    TUserBank tUserBank = userBankService.selectById(cardId);
+                    String cardToken = tUserBank.getCardToken();
+                    // 修改默认支付卡
+                    StripePayUtils.updateStripeDefaultCard(tUser.getUserNumber(), cardToken);
+//                    String method = PaymentProcessor.getMethod(tUser.getUserNumber());
+//                    JSONObject jsonObject = JSON.parseObject(method);
+//                    Object id1 = jsonObject.get("id");
+                    long l = bigDecimal.multiply(new BigDecimal(100)).longValue();
+                    Boolean pay = PaymentProcessor.pay(tUser.getUserNumber(), cardToken, l);
+                    if (pay) {
+                        orders.forEach(e -> {
+                            e.setStatus("2");
+                            e.setPaid(e.getAllTotal());
+                            e.setPayTime(new Date());
+                        });
+                        orderService.updateBatchById(orders);
+                        quote.setState(4);
+                        tQuoteService.updateById(quote);
+                    }
+                }
+            } else {
+                if (tUser.getUserNumber() == null) {
+                    return new ErrorTip(5006, "Please bind a card first");
+                }
+                // 找出所有未支付完成的订单
+                List<TOrder> orders = orderService.getNoPayOrder(id);
+                HashSet<TQuote> tQuotes = new HashSet<>();
+                BigDecimal all = new BigDecimal(0);
+                for (TOrder order : orders) {
+                    String s = order.geteZipZ();
+                    TQuote quote = tQuoteService.selectOne(new EntityWrapper<TQuote>().eq("order_id", s));
+                    quote.setState(4);
+                    tQuotes.add(quote);
+                    BigDecimal allTotal = order.getAllTotal();
+                    BigDecimal paid = order.getPaid();
+                    BigDecimal subtract = allTotal.subtract(paid);
+                    all = all.add(subtract);
+                }
+                // 找出这张卡
+                TUserBank tUserBank = userBankService.selectById(cardId);
+                String cardToken = tUserBank.getCardToken();
+                // 修改默认支付卡
+                StripePayUtils.updateStripeDefaultCard(tUser.getUserNumber(), cardToken);
+                String method = PaymentProcessor.getMethod(tUser.getUserNumber());
+                JSONObject jsonObject = JSON.parseObject(method);
+                Object id1 = jsonObject.get("id");
+                long l = all.multiply(new BigDecimal(100)).longValue();
+                Boolean pay = PaymentProcessor.pay(tUser.getUserNumber(), id1.toString(), l);
+                if (pay) {
+                    orders.forEach(e -> {
+                        e.setStatus("2");
+                        e.setPaid(e.getAllTotal());
+                        e.setPayTime(new Date());
+                    });
+                    orderService.updateBatchById(orders);
+                    List<TQuote> collect = tQuotes.stream().collect(Collectors.toList());
+                    tQuoteService.updateBatchById(collect);
+                }
+
+            }
+            return new SuccessTip();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new ErrorTip(500, "ERROR");
+        }
     }
-
 
 
 }

--
Gitblit v1.7.1