From e55c8b0a92eb9715edd90c31dfd4de51a47b588b Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期五, 04 十一月 2022 17:40:08 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java |  230 +++++++++++++++++----------------------------------------
 1 files changed, 70 insertions(+), 160 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java
index f6f6a66..21d1e0d 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java
@@ -1,35 +1,27 @@
 package com.sandu.ximon.admin.controller;
 
-import com.alipay.api.AlipayClient;
-import com.alipay.api.DefaultAlipayClient;
-import com.alipay.api.domain.AlipayTradeWapPayModel;
-import com.alipay.api.request.AlipayTradeWapPayRequest;
+import cn.hutool.core.map.MapUtil;
 import com.sandu.common.domain.ResponseVO;
 import com.sandu.common.execption.BusinessException;
+import com.sandu.common.object.BaseConditionVO;
+import com.sandu.common.security.annotation.AnonymousAccess;
 import com.sandu.common.util.ResponseUtil;
-import com.sandu.ximon.admin.config.AlipayConfig;
 import com.sandu.ximon.admin.param.PayParam;
 import com.sandu.ximon.admin.pay.alipay.UsrAlipayConfigService;
 import com.sandu.ximon.admin.pay.wx.WxFastPayService;
+import com.sandu.ximon.admin.security.PermissionConfig;
 import com.sandu.ximon.admin.service.C3ChargingService;
+import com.sandu.ximon.admin.service.C3mChargingChargeService;
 import com.sandu.ximon.admin.service.C3mOrderService;
-import com.sandu.ximon.admin.utils.AliPayUtils;
-import com.sandu.ximon.admin.utils.ConfigCheckUtils;
-import com.sandu.ximon.dao.domain.AliConfigEntity;
 import com.sandu.ximon.dao.domain.C3mCharging;
 import com.sandu.ximon.dao.domain.C3mOrder;
-import com.sandu.ximon.dao.enums.OrderType;
+import com.sandu.ximon.dao.enums.MenuEnum;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.SortedMap;
 
 /**
@@ -45,6 +37,8 @@
     private final C3ChargingService c3mService;
     private final UsrAlipayConfigService alipayConfigService;
     private final WxFastPayService wxPayService;
+    private final C3mChargingChargeService c3mChargingChargeService;
+    private final PermissionConfig permissionConfig;
 
 
     /**
@@ -52,13 +46,15 @@
      *
      * @return
      */
-    @PostMapping("/refond")
-    public ResponseVO<Object> refond(@RequestBody Map params) {
-//        c3mOrderService.orderRefund( (String)params.get("outTradeNo"),
-//                (Double)params.get("refundAmount"));
-        return ResponseUtil.success(c3mOrderService.orderRefund((String) params.get("outTradeNo"),
-                (Double) params.get("refundAmount")));
-
+    @PostMapping("/refund")
+    public ResponseVO<Object> refund(@RequestBody PayParam params) {
+        if (!permissionConfig.check(MenuEnum.C3_REFUND.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+        if (params.getOutTradeNo().isEmpty() || params.getOutTradeNo() == null) {
+            throw new BusinessException("閫�娆惧弬鏁颁笉鑳戒负绌�");
+        }
+        return ResponseUtil.success(c3mOrderService.orderRefund(params.getOutTradeNo()));
     }
 
     /**
@@ -66,156 +62,70 @@
      *
      * @return
      */
+    @AnonymousAccess
     @PostMapping("/advancePay")
-    public ResponseVO<Object> advancePayOrder(@RequestBody PayParam param) {
-        if (param.getTotalAmount() == 0d) {
-            throw new BusinessException("閲戦涓嶈兘涓�0");
+    public ResponseVO<Object> advancePayOrder(HttpServletRequest request, @RequestBody PayParam param) throws WxErrorException, InterruptedException {
+        if (param.getOpenId().isEmpty()) {
+            throw new BusinessException("寰俊code涓嶈兘涓虹┖");
+        }
+        if (param.getPoleId() == null || param.getSubscribeChargingCapacity() == null) {
+            throw new BusinessException("鍏呯數妗﹊d鎴栧厖鐢靛閲忎笉鑳戒负绌�");
+        }
+        if (param.getSubscribeChargingCapacity() < 1) {
+            throw new BusinessException("鍏呯數瀹归噺涓嶈兘灏忎簬1Kw/h");
         }
         //  C3鍏呯數妗╁疄浣�
         C3mCharging c3m = c3mService.getC3mByPoleId(param.getPoleId());
         if (null == c3m) {
             throw new BusinessException("鏈壘鍒板綋鍓嶅厖鐢垫々");
         }
-        C3mOrder c3mOrderEntity = c3mOrderService.advancePayOrder(param.getPoleId(), c3m, param.getOrderType()
-                , param.getTotalAmount(), param.getSubscribeChargingCapacity());
-        if (null == c3mOrderEntity) {
-            throw new BusinessException("璇ュ厖鐢垫々姝h浣跨敤!");
-        }
-//        return R.ok().put("outTradeNo",c3mOrderEntity.getOutTradeNo())
-//                .put("totalAmount",totalAmount);
+        //鑾峰彇棰勪粯閲戦
+        BigDecimal TotalAmount = c3mChargingChargeService.getCostByC3id(c3m.getC3Id(), param.getSubscribeChargingCapacity());
+        //杞崲涓篸ouble绫诲瀷
+        double totalAmount = TotalAmount.doubleValue();
+        //鐢熸垚璁㈠崟
+        C3mOrder c3mOrderEntity = c3mOrderService.advancePayOrder(param.getPoleId(), c3m, "wxpay"
+                , totalAmount, param.getSubscribeChargingCapacity(), param.getOpenId());
 
-        Map map = new HashMap();
-        map.put("outTradeNo", c3mOrderEntity.getOutTradeNo());
-        map.put("totalAmount", param.getTotalAmount());
-        return ResponseUtil.success(map);
-    }
-
-
-    @PostMapping("/aliPay")
-    public ResponseVO<Object> c3AliPay(@RequestBody PayParam param, HttpServletResponse response) {
-        // 鍟嗘埛璁㈠崟鍙凤紝鍟嗘埛缃戠珯璁㈠崟绯荤粺涓敮涓�璁㈠崟鍙凤紝蹇呭~
-        String out_trade_no = param.getOutTradeNo();
-        System.out.println("璁㈠崟鍙�:" + out_trade_no);
-        // 璁㈠崟鍚嶇О锛屽繀濉�
-        String subject = "鎵爜鍏呯數鏀粯(C3鍏呯數妗�)";
-        // 浠樻閲戦锛屽繀濉紝鍗曚綅涓哄厓锛岀簿纭埌灏忔暟鐐瑰悗涓や綅锛屽彇鍊艰寖鍥碵0.01,100000000]
-        String total_amount = param.getTotalAmount().toString();
-        // 鍟嗗搧鎻忚堪锛屽彲绌�
-        String body = "璇峰嬁浠樻锛屾祴璇曠敤";
-        // 瓒呮椂鏃堕棿 鍙┖
-        String timeout_express = "5m";
-        // 閿�鍞骇鍝佺爜 蹇呭~
-        String product_code = "QUICK_WAP_WAY";
-        /**********************/
-        AliConfigEntity alipayConfigEntity = alipayConfigService.getConfigByPoleId(param.getPoleId());
-        String checkStr = ConfigCheckUtils.checkAlipayConfig(alipayConfigEntity);
-        if (checkStr != null) {
-            try {
-                response.getWriter().write(checkStr);
-                return ResponseUtil.fail("鏀粯瀹屾垚澶辫触");
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-        //璋冪敤RSA绛惧悕鏂瑰紡
-        AlipayClient client = new DefaultAlipayClient(AlipayConfig.gatewayUrl, alipayConfigEntity.getAppId(), alipayConfigEntity.getPrivateKey(), AlipayConfig.format, AlipayConfig.charset, alipayConfigEntity.getPublicKey(), AlipayConfig.sign_type);
-        AlipayTradeWapPayRequest alipay_request = new AlipayTradeWapPayRequest();
-
-        // 灏佽璇锋眰鏀粯淇℃伅
-        AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
-        model.setOutTradeNo(out_trade_no);
-        model.setSubject(subject);
-        model.setTotalAmount(total_amount);
-        model.setBody(body);
-        model.setTimeoutExpress(timeout_express);
-        model.setProductCode(product_code);
-        model.setQuitUrl(C3mOrder.REQUEST_URL + param.getPoleId() + "/" + new Date().getTime());
-        alipay_request.setBizModel(model);
-        // 璁剧疆寮傛閫氱煡鍦板潃
-        alipay_request.setNotifyUrl(C3mOrder.REQUEST_URL + param.getPoleId() + "/" + new Date().getTime());
-        // 璁剧疆鍚屾鍦板潃
-        alipay_request.setReturnUrl(C3mOrder.REQUEST_URL + param.getPoleId() + "/" + new Date().getTime());
-
-        // form琛ㄥ崟鐢熶骇
-        String form = "";
-        try {
-            // 璋冪敤SDK鐢熸垚琛ㄥ崟
-            form = client.pageExecute(alipay_request).getBody();
-            response.setContentType("text/html;charset=" + AlipayConfig.charset);
-            response.getWriter().write(form);//鐩存帴灏嗗畬鏁寸殑琛ㄥ崟html杈撳嚭鍒伴〉闈�
-            response.getWriter().flush();
-            response.getWriter().close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return ResponseUtil.success("鏀粯瀹屾垚");
-    }
-
-    @RequestMapping("/wxpay")
-    public ResponseVO<Object> c3Wxpay(@RequestBody PayParam param) {
-
-        //String result = wxPayService.miniAppPay(outTradeNo, totalAmount, streetlightId);
-        SortedMap<Object, Object> result = wxPayService.appPay("鎵爜鍏呯數鏀粯(C3鍏呯數妗�)", param.getOutTradeNo(), param.getWxPayTotalAmount(), param.getPoleId());
-
+        String s = WxFastPayService.parseWxAmount(c3mOrderEntity.getTotalAmount().toString());
+        //鐢熸垚寰俊棰勪粯璁㈠崟
+        SortedMap<Object, Object> result = wxPayService.miniAppPay(request, "鎵爜鍏呯數鏀粯(C3鍏呯數妗�)", c3mOrderEntity.getOutTradeNo(), Integer.valueOf(s), param.getPoleId(), param.getOpenId());
         return ResponseUtil.success(result);
     }
 
-    public ResponseVO<Object> queryPayStates(@RequestBody PayParam param) {
 
-//        //String result = wxPayService.miniAppPay(outTradeNo, totalAmount, streetlightId);
-////鏀粯瀹濅氦鏄撳彿
-//        String trade_no = WIDtrade_no.Text.Trim();
-////鏀粯瀹濅氦鏄撳彿涓庡晢鎴风綉绔欒鍗曞彿涓嶈兘鍚屾椂涓虹┖
-////鍟嗘埛璁㈠崟鍙�
-//        String out_trade_no = WIDout_trade_no.Text.Trim();
-////鎶婅姹傚弬鏁版墦鍖呮垚鏁扮粍
-//
-//        SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();
-//        sParaTemp.Add("partner", Config.Partner);
-//        sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
-//        sParaTemp.Add("service", "single_trade_query");
-//        sParaTemp.Add("trade_no", trade_no);
-//        sParaTemp.Add("out_trade_no", out_trade_no);
-////寤虹珛璇锋眰
-//        string sHtmlText = Submit.BuildRequest(sParaTemp);
-//
-////璇峰湪杩欓噷鍔犱笂鍟嗘埛鐨勪笟鍔¢�昏緫绋嬪簭浠g爜
-//
-////鈥斺�旇鏍规嵁鎮ㄧ殑涓氬姟閫昏緫鏉ョ紪鍐欑▼搴忥紙浠ヤ笅浠g爜浠呬綔鍙傝�冿級鈥斺��
-//
-//        XmlDocument xmlDoc = new XmlDocument();
-//        try
-//        {
-//            xmlDoc.LoadXml(sHtmlText);
-//            string strXmlResponse = xmlDoc.SelectSingleNode("/alipay").InnerText;
-//            Response.Write(strXmlResponse);
-//        }
-//        catch (Exception exp)
-//        {
-//            Response.Write(sHtmlText);
-//        }
-
-        return ResponseUtil.success(null);
+    /**
+     * 璁㈠崟鍒楄〃
+     *
+     * @param baseConditionVO
+     * @param keyword         鐏潌鍚嶇О
+     * @param orderStatus     璁㈠崟鐘舵�侊細// 鏈敮浠�(0) 宸叉敮浠�(1),閫�娆句腑(2),宸查��娆�(3),璁㈠崟瀹屾垚(4),閫�娆惧け璐�5)
+     * @param timeType        鏃堕棿 1锛氫竴涓湀 2锛氫笁涓湀 3锛氬叚涓湀
+     * @return
+     */
+    @GetMapping("/list")
+    public ResponseVO<Object> list(BaseConditionVO baseConditionVO,
+                                   @RequestParam(value = "keyword", required = false) String keyword,
+                                   @RequestParam(value = "orderStatus", required = false) Integer orderStatus,
+                                   @RequestParam(value = "timeType", required = false) Integer timeType) {
+        if (!permissionConfig.check(MenuEnum.ORDER_LIST.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+        return ResponseUtil.successPage(c3mOrderService.orderList(baseConditionVO, keyword, orderStatus, timeType));
     }
 
+    /**
+     * 鑾峰彇wx鐨刼penid
+     */
+    @AnonymousAccess
+    @PostMapping("/getWxOpenId")
+    public ResponseVO<Object> getWxOpenId(@RequestBody PayParam param) throws WxErrorException {
+        if (param.getWxCode() == null || param.getPoleId() == null || param.getWxCode().isEmpty()) {
+            throw new BusinessException("鍙傛暟涓嶈兘涓虹┖");
+        }
+        String openId = wxPayService.getOpenId(param.getPoleId(), param.getWxCode());
 
-    @RequestMapping("/queryOrder")
-    public ResponseVO<Object> queryOrder(@RequestBody PayParam param) {
-        if (param.getOrderId() == null) {
-            throw new BusinessException("璇疯緭鍏ユ纭殑璁㈠崟id");
-        }
-        C3mOrder order = c3mOrderService.getById(param.getOrderId());
-        if (order == null) {
-            throw new BusinessException("璁㈠崟涓嶅瓨鍦�");
-        }
-        if ((OrderType.ALIPAY.getCode()).equals(order.getOrderType())) {
-            return ResponseUtil.success(AliPayUtils.alipayQuery(order.getOutTradeNo(), param.getPoleId()));
-        } else if ((OrderType.WXPAY.getCode()).equals(order.getOrderType())) {
-            return ResponseUtil.success(wxPayService.WxOrderQuery(param.getPoleId(), order.getOutTradeNo()));
-        } else {
-            return ResponseUtil.success("鏀粯鏂瑰紡寮傚父");
-        }
-
+        return ResponseUtil.success(MapUtil.builder().put("openId", openId).build());
     }
 
 }

--
Gitblit v1.9.3