From 521e71bc33f02ab9a1b79fb1df68c69bad4a75d2 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期四, 08 九月 2022 14:32:50 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 104 insertions(+), 14 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 f6cd22d..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,19 +1,31 @@
 package com.sandu.ximon.admin.controller;
 
+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.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.dao.domain.C3mCharging;
+import com.sandu.ximon.dao.domain.C3mOrder;
+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 java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.SortedMap;
 
 /**
  * @Author liuhaonan
- * @Date 2022/3/22 14:10
  * @Version 1.0
  */
 @RestController
@@ -22,20 +34,98 @@
 public class C3mOrderController {
 
     private final C3mOrderService c3mOrderService;
+    private final C3ChargingService c3mService;
+    private final UsrAlipayConfigService alipayConfigService;
+    private final WxFastPayService wxPayService;
+    private final C3mChargingChargeService c3mChargingChargeService;
+    private final PermissionConfig permissionConfig;
 
 
     /**
      * 閫�娆�
      *
-     * @param params
      * @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()));
     }
+
+    /**
+     * 棰勪粯娆撅紝鐢熸垚璁㈠崟(鎴栫洿鎺ヤ粠redis涓幏鍙栧綋鍓嶆湭杩囨湡鐨勮鍗�)
+     *
+     * @return
+     */
+    @AnonymousAccess
+    @PostMapping("/advancePay")
+    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("鏈壘鍒板綋鍓嶅厖鐢垫々");
+        }
+        //鑾峰彇棰勪粯閲戦
+        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());
+
+        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);
+    }
+
+
+    /**
+     * 璁㈠崟鍒楄〃
+     *
+     * @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());
+
+        return ResponseUtil.success(MapUtil.builder().put("openId", openId).build());
+    }
+
 }

--
Gitblit v1.9.3