Bladeren bron

En+ SASS平台认证,结算订单

skyline 1 jaar geleden
bovenliggende
commit
f0ef2ed8ff

+ 7 - 0
admin/src/main/java/com/kym/admin/controller/CustomController.java

@@ -44,6 +44,13 @@ public class CustomController {
         return R.success(customChargeOrders.customChargeOrders(params));
     }
 
+    @SysLog("订单结算")
+    @GetMapping("/closeChargeOrder/{startChargeSeq}")
+    public R<?> closeChargeOrder(@PathVariable("startChargeSeq") String startChargeSeq) {
+        customChargeOrders.closeChargeOrder(startChargeSeq);
+        return R.success();
+    }
+
     @SysLog(value = "用户充电订单列表导出", ignoreParams = true)
     @GetMapping("/exportChargeOrders")
     public void exportChargeOrders(@ModelAttribute CustomChargeOrdersQueryParam params, HttpServletResponse response) {

+ 41 - 0
admin/src/main/java/com/kym/admin/jobs/EnPlusSaasTokenJob.java

@@ -0,0 +1,41 @@
+package com.kym.admin.jobs;
+
+import com.kym.common.utils.HttpUtil;
+import com.kym.entity.common.RedisKeys;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpStatus;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author skyline
+ * @description EN+ SASS平台token刷新任务
+ * @date 2023-09-30 16:15
+ */
+@Component
+@Slf4j
+public class EnPlusSaasTokenJob {
+
+    private final StringRedisTemplate redisTemplate;
+    @Value("${en-plus.sass}")
+    public String sass;
+
+
+    public EnPlusSaasTokenJob(StringRedisTemplate redisTemplate) {
+        this.redisTemplate = redisTemplate;
+    }
+
+    // 每30分钟执行一次
+    @Scheduled(cron = "0 0/30 * * * ?")
+    public void execute() {
+        var res = HttpUtil.post(sass);
+        var json = HttpUtil.parseJson(res);
+        if (json.getIntValue("code") == HttpStatus.SC_OK) {
+            var token = HttpUtil.parseJson(json.getString("data")).getString("token");
+            log.info("EN+ SASS平台token刷新任务执行结果 Token:{}", token);
+            redisTemplate.opsForValue().set(RedisKeys.EN_PLUS_SASS_TOKEN, token);
+        }
+    }
+}

+ 4 - 0
admin/src/main/resources/application-dev.yml

@@ -14,6 +14,10 @@ en-plus:
   chargeMinAmount: 200
   # 接口地址
   apiDomain: https://dev.en-plus.cn/Charge/evcs/v1//MA5HJNDG1/
+  # sass配置
+  sass: https://dev.en-plus.cn/Charge/op/login?username=快与慢&password=Admin123
+  # sass结算订单
+  sassClose: https://dev.en-plus.cn/Charge/op/analyze/order/close?orderCode=
 
 # 微信支付
 wechat:

+ 4 - 0
admin/src/main/resources/application-prod.yml

@@ -14,6 +14,10 @@ en-plus:
   chargeMinAmount: 200
   # 接口地址
   apiDomain: https://api.en-plus.cn:8080/Charge/evcs/v1//MA5HJNDG1/
+  # sass配置
+  sass: https://api.en-plus.cn:8080/Charge/op/login?username=快与慢工程&password=Kuaiyuman2o22
+  # sass结算订单
+  sassClose: https://api.en-plus.cn:8080/Charge/op/analyze/order/close?orderCode=
 
 # 微信支付
 wechat:

+ 2 - 0
common/src/main/java/com/kym/common/config/EnPlusConfig.java

@@ -16,4 +16,6 @@ public class EnPlusConfig {
     private String sigSecret;
     private int chargeMinAmount;
     private String apiDomain;
+    private String sass;
+    private String sassClose;
 }

+ 9 - 0
common/src/main/java/com/kym/common/utils/HttpUtil.java

@@ -49,6 +49,15 @@ public class HttpUtil {
         return parse(get(url), clz);
     }
 
+    public static String post(String url) {
+        RequestBody requestBody = RequestBody.create("", JSON);
+        Request request = new Request.Builder()
+                .post(requestBody)
+                .url(url)
+                .build();
+
+        return synchronizedCall(request);
+    }
     public static String post(String url, String json) {
         RequestBody requestBody = RequestBody.create(json, JSON);
         Request request = new Request.Builder()

+ 1 - 0
entity/src/main/java/com/kym/entity/common/RedisKeys.java

@@ -7,6 +7,7 @@ package com.kym.entity.common;
  */
 public interface RedisKeys {
     String EN_PLUS_TOKEN = "EN_PLUS_TOKEN";
+    String EN_PLUS_SASS_TOKEN = "EN_PLUS_SASS_TOKEN";
     String OFFLINE = "OFFLINE:";
     String OFFLINE_EXPIRED = "OFFLINE_EXPIRED:";
     String CONNECTOR_ID_TO_SHORT_ID = "CONNECTOR_ID_TO_SHORT_ID:";

+ 2 - 0
service/src/main/java/com/kym/service/miniapp/ChargeOrderService.java

@@ -45,4 +45,6 @@ public interface ChargeOrderService extends MyBaseService<ChargeOrder> {
     Map<String, ?> stationStatDetail(StatQueryParam params);
 
     Object orderDiscountDetail(String startChargeSeq, String discountType);
+
+    void closeChargeOrder(String startChargeSeq);
 }

+ 24 - 3
service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java

@@ -5,9 +5,9 @@ import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.pagehelper.PageHelper;
-import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
+import com.kym.common.utils.HttpUtil;
 import com.kym.entity.admin.Activity;
 import com.kym.entity.admin.StationStatDay;
 import com.kym.entity.admin.StationStatMonth;
@@ -16,6 +16,7 @@ import com.kym.entity.admin.queryParams.StatQueryParam;
 import com.kym.entity.admin.vo.CustomOrderVo;
 import com.kym.entity.admin.vo.StationStatVo;
 import com.kym.entity.common.PageBean;
+import com.kym.entity.common.RedisKeys;
 import com.kym.entity.miniapp.ChargeOrder;
 import com.kym.entity.miniapp.queryParams.OrderQueryParams;
 import com.kym.entity.miniapp.vo.ChargeOrderVo;
@@ -30,8 +31,12 @@ import com.kym.service.miniapp.UserRechargeRightsService;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.Headers;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -54,6 +59,7 @@ import java.util.stream.Collectors;
  */
 @Service
 @DS("db-miniapp")
+@Slf4j
 public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper, ChargeOrder> implements ChargeOrderService {
 
 
@@ -63,16 +69,21 @@ public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper,
     private final StationStatDayService stationStatDayService;
     private final StationStatMonthService stationStatMonthService;
 
+    private final StringRedisTemplate redisTemplate;
+    @Value("${en-plus.sassClose}")
+    public String saasClose;
+
+
     public ChargeOrderServiceImpl(ExportService exportService, @Lazy UserCouponService userCouponService, UserRechargeRightsService userRechargeRightsService,
-                                  StationStatDayService stationStatDayService, StationStatMonthService stationStatMonthService) {
+                                  StationStatDayService stationStatDayService, StationStatMonthService stationStatMonthService, StringRedisTemplate redisTemplate) {
         this.exportService = exportService;
         this.userCouponService = userCouponService;
         this.userRechargeRightsService = userRechargeRightsService;
         this.stationStatDayService = stationStatDayService;
         this.stationStatMonthService = stationStatMonthService;
+        this.redisTemplate = redisTemplate;
     }
 
-
     @Override
     public ChargeOrder getChargingOrderByUserId(Long userId) {
         return lambdaQuery()
@@ -210,6 +221,16 @@ public class ChargeOrderServiceImpl extends MyBaseServiceImpl<ChargeOrderMapper,
         };
     }
 
+    @Override
+    public void closeChargeOrder(String startChargeSeq) {
+        Headers headers = Headers.of("satoken", redisTemplate.opsForValue().get(RedisKeys.EN_PLUS_SASS_TOKEN));
+        var res = HttpUtil.parseJson(HttpUtil.post(saasClose + startChargeSeq, headers));
+        if (!(res.containsKey("success") && res.getBoolean("success"))) {
+            log.error("关闭订单失败:{}", res);
+            throw new BusinessException("关闭订单失败");
+        }
+    }
+
 
     /**
      * 站点统计