From 3e1fc145ecefd1d823423b2e31366a0c1c9a723c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 16 八月 2024 15:14:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java                              |    4 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TVipMapper.xml                                            |    3 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java       |    8 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java                               |   80 ++++++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java                              |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CarListVO.java                                   |   21 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java                                     |    8 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java                              |   10 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java  |    6 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java                     |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java                 |   78 +++++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java                            |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TVip.java                                        |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java |   81 +++++++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java                    |   12 +
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java                               |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java                           |    2 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java                         |   78 +++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                    |   20 ++
 19 files changed, 402 insertions(+), 27 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java
index fe130a9..f97603a 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java
@@ -16,5 +16,7 @@
     private Long userId;
     @ApiModelProperty("预付价格")
     private BigDecimal payMoney;
+    @ApiModelProperty("桩编号")
+    private Integer number;
 
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CarListVO.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CarListVO.java
new file mode 100644
index 0000000..97640c6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CarListVO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.account.api.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "CarListVO对象",description = "小程序-扫一扫选择车辆")
+public class CarListVO {
+
+    @ApiModelProperty(value = "图片")
+    private String reviewRate;
+
+    @ApiModelProperty(value = "车型-车牌号")
+    private String evaluateCount;
+    @ApiModelProperty(value = "车辆id")
+    private Long driverId;
+
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java
index 28287eb..333b107 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java
@@ -34,9 +34,7 @@
     private Integer isUse;
     @ApiModelProperty(value = "优惠券id")
     private Long couponId;
-    @ApiModelProperty(value = "优惠券id")
-    private BigDecimal payMoney;
-    @ApiModelProperty(value = "最高折扣金额 用于判断哪一张优惠券优惠力度最大 前端忽略")
+    @ApiModelProperty(value = "使用了优惠券后的服务费 用于判断哪一张优惠券优惠力度最大 前端忽略")
     private BigDecimal money;
     @ApiModelProperty(value = "当前用户是否为会员0否1是 前端忽略")
     private Integer isVip;
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java
index b0cf1c1..5753b57 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java
@@ -28,6 +28,10 @@
     private LocalDateTime endTime;
     @ApiModelProperty(value = "关联订单")
     private String orderId;
+    @ApiModelProperty(value = "封面图")
+    private String coverPicture;
+    @ApiModelProperty(value = "详情图")
+    private String detailsPicture;
     @ApiModelProperty(value = " 前端忽略 获取方式 1=积分兑换 2现金购买")
     private Integer waysToObtain;
     @ApiModelProperty(value = "优惠券id")
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
index a868183..8b4f691 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -8,6 +8,7 @@
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -29,6 +30,11 @@
             public R<List<TChargingPile>> getChargingPileBySiteId(Integer siteId) {
                 return R.fail("通过站点id获取充电桩列表失败:"+throwable.getMessage());
             }
+
+            @Override
+            public R<BigDecimal> getServiceMoney(String param) {
+                return R.fail("根据会员折扣、预付金额 计算服务费失败:"+throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
index 7487856..a330a00 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
@@ -9,6 +9,7 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -25,5 +26,10 @@
     @PostMapping(value = "/t-charging-pile/getChargingPileBySiteId")
     public R<List<TChargingPile>> getChargingPileBySiteId(@RequestParam("siteId") Integer siteId);
 
-
+    /**
+     * 小程序远程调用 根据会员折扣、预付金额 计算服务费
+     * @return
+     */
+    @PostMapping(value = "/getServiceMoney")
+    public R<BigDecimal> getServiceMoney(@RequestParam("param") String param);
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
index 7cfd713..9f1178f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -50,7 +50,7 @@
 
     @ApiModelProperty(value = "充电车辆 id")
     @TableField("app_user_car_id")
-    private Integer appUserCarId;
+    private Long appUserCarId;
 
     @ApiModelProperty(value = "站点 id")
     @TableField("site_id")
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java
index cd229d3..8073eef 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java
@@ -99,10 +99,16 @@
     @TableField("explain")
     private String explain;
 
+    @ApiModelProperty(value = "封面图")
+    @TableField("cover_picture")
+    private String coverPicture;
+    @ApiModelProperty(value = "详情图片")
+    @TableField("details_picture")
+    private String detailsPicture;
+
     @ApiModelProperty(value = "说明")
     @TableField("remark")
     private String remark;
-
     @ApiModelProperty(value = "状态(1=上架,2=下架)")
     @TableField("status")
     private Integer status;
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TVip.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TVip.java
index a7a6a22..6375a23 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TVip.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TVip.java
@@ -137,7 +137,7 @@
     @ApiModelProperty(value = "内部会员折扣")
     @TableField("discount")
     private BigDecimal discount;
-    @ApiModelProperty(value = "会员类型 1常规 2内部")
+    @ApiModelProperty(value = "添加的会员类型 1常规 2内部")
     @TableField("type")
     private Integer type;
 
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java
new file mode 100644
index 0000000..f5239c8
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java
@@ -0,0 +1,78 @@
+package com.ruoyi.common.core.utils;
+
+import com.obs.services.ObsClient;
+import com.obs.services.model.ObjectMetadata;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.UUID;
+
+public class ObsUploadUtil {
+
+	public static String endPoint = "obs.cn-southwest-2.myhuaweicloud.com";
+	public static String accessKeyId = "LP9N1TLAYN8ERS1PVIYK";
+	public static String accessKeySecret = "bV55lFHi1cG0SYBvnab8yIgDX6etKRSLh5j1gkPR";
+	public static String bucketName = "haitunyingyu";
+	public static String oss_domain = "https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/";
+	// 创建ObsClient实例
+	public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint);
+
+	public static String obsUpload(MultipartFile file) throws IOException{
+		//CommonsMultipartFile file = (CommonsMultipartFile)multipartFile;
+		String fileName = "";
+		if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){
+			InputStream content = file.getInputStream();//获得指定文件的输入流
+			ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
+			meta.setContentLength(file.getSize());  // 必须设置ContentLength
+			String originalFilename = file.getOriginalFilename();
+			if (originalFilename.contains("apk")){
+				fileName = "bf2fe5c5499341e5bc0d56c0c7d5fb2e.apk";
+				System.err.println("apk");
+			}else{
+				fileName =  UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length());
+			}
+			obsClient.putObject(bucketName,"admin/"+fileName,content,meta);// 上传Object.
+			if(fileName != null && !"".equals(fileName)){
+				System.out.println(fileName);
+				fileName = oss_domain+"admin/"+fileName;
+			}
+		}
+		return fileName;
+	}
+
+	/**
+	 * 删除某个Object
+	 *
+	 * @param bucketUrl
+	 * @return
+	 */
+	public static boolean deleteObject(String bucketUrl) {
+		try {
+			bucketUrl=bucketUrl.replace(oss_domain+"web","");
+			// 删除Object.
+			obsClient.deleteObject(bucketName, bucketUrl);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		} finally {
+			//ossClient.shutdown();
+		}
+		return true;
+	}
+	
+//	 public static void createBucket(String bucketName)
+//     {
+//         //初始化 OSSClient
+////          ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
+//
+//         // 新建一个Bucket
+//         Bucket bucket = ossClient.createBucket(bucketName);
+//         System.out.println(bucket.getName());
+//         System.out.println(bucket.getCreationDate());
+//     }
+//	 
+//	 public static void main(String[] args) {
+//		 OssUploadUtil.createBucket("ssfdfsd");
+//	}
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
index 5f5f700..26d4687 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -48,14 +48,22 @@
      * @param dto
      * @return
      */
-
     @ApiOperation(value = "选择优惠券分页查询", tags = {"小程序-扫一扫"})
     @PostMapping(value = "/scan/couponList")
     public AjaxResult<PageInfo<CouponListVOVO>> couponList(@RequestBody CouponListDto dto) {
-
         PageInfo<CouponListVOVO> res = tAppCouponService.couponList(dto);
         return AjaxResult.ok(res);
     }
+    /**
+     *
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "选择车辆列表", tags = {"小程序-扫一扫"})
+    @PostMapping(value = "/scan/carList")
+    public AjaxResult<CouponListVOVO> carList(@RequestBody CouponListDto dto) {
+        return AjaxResult.success();
+    }
 
     /**
      * 管理后台远程调用 根据优惠券ids 查询对应的发放数量
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java
index d7c6dcc..a499a52 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.account.service.TAppCouponService;
 import com.ruoyi.account.service.TAppUserVipDetailService;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
@@ -31,8 +32,11 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 
@@ -139,9 +143,14 @@
         PageInfo<CouponListVOVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
         List<CouponListVOVO> list = this.baseMapper.couponList(pageInfo,dto.getUserId());
         TAppUser tAppUser = tAppUserMapper.selectById(dto.getUserId());
-        Integer isVip = 0;// 是否能享受会员折扣
+        Integer isVip = 0;// 是否能享受会员折扣 0否 1是普通会员 2内部会员
+        // 会员折扣
+        Double discount = 0.0;
+        // 普通会员最高折扣金额
+        Double discountMoney = 0.0;
         if (tAppUser.getVipEndTime() == null){
             // 不是会员
+            isVip = 0;
         }else {
             // 判断会员有没有过期
             if (tAppUser.getVipEndTime().isAfter(java.time.LocalDateTime.now())){
@@ -161,20 +170,79 @@
                 TVip data1 = vipClient.getInfo1(vipId).getData();
                 Integer discountTimes = data1.getDiscountTimes();
                 if (data>=discountTimes){
-                    // 不能再享受会员折扣
+                    //  折扣次数用光了 不能再享受会员折扣
+                    isVip = 0;
                 }else{
-                    isVip = 1;
+                    if (data1.getType() == 2){
+                        // 如果内部会员 使用该折扣
+                        discount = data1.getDiscount().doubleValue();
+                        isVip = 2;
+                    }else{
+                        // 普通会员 最高折扣金额
+                        discountMoney = data1.getMaximumDeduction().doubleValue();
+                        isVip = 1;
+                    }
+
                 }
+            }else{
+                // 会员过期 不能享受
+                isVip = 0;
             }
         }
         for (CouponListVOVO couponListVOVO : list) {
             couponListVOVO.setValidityTime("有效期:"+format.format(couponListVOVO.getCreateTime())+" - "+format.format(couponListVOVO.getEndTime()));
         }
         List<CouponListVOVO> data = otherClient.getCouponInfoByCouponIds(list).getData();
+        // 桩编号 + 是否是会员 + 内部会员折扣 + 普通会员最高折扣金额 + 预付金额
+        String temp = dto.getNumber()+"-"+isVip+"-"+discount+"-"+discountMoney+"-"+dto.getPayMoney();
+        // 根据当前时间段和预付金额计算服务费
+        BigDecimal serviceMoney = chargingPileClient.getServiceMoney(temp).getData();
         for (CouponListVOVO datum : data) {
-            // 根据当前时间段和预付金额计算服务费
-
+            // 判断优惠券类型
+            switch (datum.getPreferentialMode()){
+                case 1:
+                    datum.setIsUse(1);
+                    // 满减券 判断服务费是否满足满减条件
+                    if (datum.getMeetTheConditions().compareTo(new BigDecimal(BigInteger.ZERO)) == 0){
+                        // 无门槛优惠券
+                        datum.setMoney(serviceMoney.subtract(datum.getDiscountAmount()));
+                    }else if (serviceMoney.compareTo(datum.getMeetTheConditions())>=0){
+                        // 满足条件
+                        datum.setMoney(serviceMoney.subtract(datum.getDiscountAmount()));
+                    }else{
+                        // 不满足条件
+                        datum.setMoney(serviceMoney);
+                        datum.setIsUse(0);
+                    }
+                    break;
+                case 2:
+                    datum.setIsUse(1);
+                    // 折扣券 判断
+                    if (datum.getMeetTheConditions().compareTo(new BigDecimal(BigInteger.ZERO)) == 0){
+                        // 无门槛优惠券
+                        datum.setMoney(serviceMoney.subtract(datum.getDiscountAmount()));
+                    }else if (serviceMoney.compareTo(datum.getMeetTheConditions())>=0){
+                        // 折扣后的服务费
+                        BigDecimal divide = serviceMoney.multiply(datum.getDiscount()).divide(new BigDecimal(10), 2, BigDecimal.ROUND_HALF_UP);
+                        // 计算折扣了多少钱 判断是否超过最高折扣金额
+                        BigDecimal subtract = serviceMoney.subtract(divide);
+                        if (subtract.compareTo(datum.getMaximumDiscountAmount())>0){
+                            // 超过最高折扣金额 减去最高折扣金额
+                            datum.setMoney(serviceMoney.subtract(datum.getMaximumDiscountAmount()));
+                        }else{
+                            // 没超过最高折扣金额
+                            datum.setMoney(divide);
+                        }
+                    }else{
+                        // 不满足条件
+                        datum.setMoney(serviceMoney);
+                        datum.setIsUse(0);
+                    }
+                    break;
+            }
         }
+        // 通过集合的money字段 将money从大到小排序
+        data.sort(Comparator.comparing(CouponListVOVO::getMoney).reversed());
         pageInfo.setRecords(data);
         return pageInfo;
     }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 456c64f..d7f4f4c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -1,18 +1,19 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.chargingPile.api.dto.TAccountingStrategyDTO;
-import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
-import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
-import com.ruoyi.chargingPile.api.model.TCarport;
-import com.ruoyi.chargingPile.api.model.TVehicleRamp;
+import com.ruoyi.chargingPile.api.model.*;
 import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
+import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyService;
+import com.ruoyi.chargingPile.service.TChargingPileService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
@@ -25,6 +26,10 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.time.LocalTime;
 import java.util.List;
 
 /**
@@ -42,6 +47,10 @@
 
     private final TAccountingStrategyService accountingStrategyService;
     private final TAccountingStrategyDetailService accountingStrategyDetailService;
+    @Autowired
+    private TChargingPileService chargingPileService;
+    @Autowired
+    private ISiteService siteService;
 
     @Resource
     private TokenService tokenService;
@@ -175,5 +184,69 @@
         return AjaxResult.ok(accountingStrategyService.pageList(query));
     }
 
+    /**
+     * 小程序远程调用 根据会员折扣、预付金额 计算服务费
+     * @return
+     */
+    @PostMapping(value = "/getServiceMoney")
+    public R<BigDecimal> getServiceMoney(@RequestParam("param") String param){
+        // 桩编号 + 是否是会员 + 内部会员折扣金额 + 普通会员最高折扣金额 + 预付金额
+        String[] split = param.split("-");
+        // 根据桩编号 查询电站
+        TChargingPile one = chargingPileService.lambdaQuery().eq(TChargingPile::getNumber, split[0]).one();
+        Site byId = siteService.getById(one.getSiteId());
+        // 计费策略
+        TAccountingStrategy one1 = accountingStrategyService.lambdaQuery().eq(TAccountingStrategy::getSiteId, byId.getId())
+                .eq(TAccountingStrategy::getAuditStatus, 3).one();
+        // 会员折扣
+        BigDecimal discount = one1.getDiscount();
+        List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, one1.getId())
+                .list();
+        // 当前时间属于哪个计费策略
+        LocalTime now = LocalTime.now();
+        // 电价
+        BigDecimal electronic = new BigDecimal(BigInteger.ZERO);
+        // 最终服务费
+        BigDecimal serviceMoney = new BigDecimal(BigInteger.ZERO);
+        // 预付金额
+        BigDecimal beforeMoney = new BigDecimal(split[4]);
+        // 普通会员最高折扣金额
+        BigDecimal discountMoney = new BigDecimal(split[3]);
+        // 内部会员折扣
+        BigDecimal discountInner = new BigDecimal(split[2]);
+        // 最终服务费
+        BigDecimal res = new BigDecimal(BigInteger.ZERO);
+        for (TAccountingStrategyDetail tAccountingStrategyDetail : list) {
+            if (now.isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && now.isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){
+                electronic = tAccountingStrategyDetail.getElectrovalence();
+                // 非会员下的服务费
+                BigDecimal multiply = beforeMoney.multiply(tAccountingStrategyDetail.getServiceCharge()).divide(electronic, 2, RoundingMode.HALF_UP);
+                if (byId.getBusinessCategory() == 1){
+                    // 直营才享受会员折扣
+                    // 根据电价和预付金额 是否有会员折扣 计算最终服务费
+                    if (split[1].equals("1")){
+                        // 抵扣金额
+                        BigDecimal multiply1 = multiply.multiply(discount);
+                        if (multiply1.compareTo(discountMoney)>0){
+                            multiply1 = discountMoney;
+                        }
+                        // 普通最终服务费
+                        res = multiply.subtract(multiply1);
+                    }
+                    if (split[1].equals("2")){
+                        // 内部会员折扣 最终服务费
+                        res = discountInner.multiply(multiply);
+                    }
+                }else{
+                    // 非直营
+                    res = multiply;
+                }
+                break;
+            }
+        }
+
+
+        return R.ok(res);
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index d05882b..075ac4a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -10,6 +10,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -26,6 +27,25 @@
 
     @Resource
     private TChargingOrderService chargingOrderService;
+    /**
+     * 查询用户最近一次充电记录使用的车辆
+     * @param
+     * @return
+     */
+    @PostMapping(value = "/getCar")
+    public R<Long> getCar() {
+        // todo 获取用户id
+        List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>()
+                .eq(TChargingOrder::getAppUserId, 11)
+                .isNotNull(TChargingOrder::getAppUserCarId));
+        if (!list.isEmpty()){
+            // 最近使用的车辆id
+            Long size = list.get(0).getAppUserCarId();
+            return R.ok(size);
+        }else{
+            return R.ok(-1L);
+        }
+    }
 
     /**
      * 查询会员在本月有多少次享受了充电折扣
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java
new file mode 100644
index 0000000..d980520
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java
@@ -0,0 +1,80 @@
+package com.ruoyi.other.controller;
+
+
+import com.ruoyi.common.core.utils.ObsUploadUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/base/oss")
+@Api(value = "文件上传", tags = "文件上传", description = "文件上传")
+public class OssController {
+    private static final String endpoint = "obs.cn-north-4.myhuaweicloud.com";
+    private static final String accessKeyId = "DRJFJRVQ9KVLQUSJUROI";
+    private static final String accessKeySecret = "3zpPkULh0a8CTTYjKL4f7szQZECkvVol4SwNab0f";
+    private static final String bucketName = "jkjianshen";
+    @PostMapping("/upload")
+    @ApiOperation(value = "文件上传")
+    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
+        String s = ObsUploadUtil.obsUpload(file);
+        return s;
+    }
+//    @PostMapping("/uploadVideo")
+//    @ApiOperation(value = "视频上传",tags = "文件上传")
+//    public String uploadVideo(@RequestParam("file") MultipartFile file) throws Exception {
+//        // 获取文件名
+//        String fileName = file.getOriginalFilename();
+//        // 构建目标文件路径
+//        String filePath = "/usr/local/temp" + fileName;
+////        String filePath = "C:/temp/" + fileName;
+//        // 创建目标文件对象
+//        File targetFile = new File(filePath);
+//        // 将 MultipartFile 内容写入目标文件
+//        try (FileOutputStream fos = new FileOutputStream(targetFile)) {
+//            fos.write(file.getBytes());
+//        }
+//        String s = UploadVideoUtil.endUpload(targetFile.toString(), UUIDUtil.getRandomCode(5)+fileName);
+//        // 创建要删除的文件对象
+//        File fileToDelete = new File(targetFile.toString());
+//        // 检查文件是否存在,并删除文件
+//        if (fileToDelete.exists()) {
+//            fileToDelete.delete();
+//        }
+//        return s;
+//    }
+
+//    @PostMapping("/upload")
+//    @ApiOperation(value = "文件上传",tags = "文件上传")
+//    public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) throws IOException {
+//        // 创建 OSSClient 实例
+//        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
+//
+//
+//        // 创建 PutObjectRequest 对象
+//        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, file.getOriginalFilename(), file.getInputStream());
+//
+//        ObjectMetadata metadata = new ObjectMetadata();
+//        // 取消文件缓存,文件每次都会从OSS服务器获取
+//        metadata.setHeader("Cache-Control", "no-cache");
+//        metadata.setHeader("Expires", "0");
+//
+//
+//        // 上传文件
+//        PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
+//
+//        // 关闭 OSSClient 实例
+//        ossClient.shutdown();
+//
+//        String fileUrl = "https://" + bucketName + "." + endpoint + "/" + file.getOriginalFilename();
+//        return ResponseEntity.ok(fileUrl);
+//    }
+
+
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
index f2d803e..bc579b9 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -87,6 +87,8 @@
                 }else{
                     record.setMeetTheConditions("满"+byId.getMeetTheConditions()+"元可用");
                 }
+                record.setCoverPicture(byId.getCoverPicture());
+                record.setDetailsPicture(byId.getDetailsPicture());
             }
         }
         return AjaxResult.ok(data);
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
index 712ef14..772d11a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
@@ -33,19 +33,19 @@
     @Autowired
     private TIntegralRuleService integralRuleService;
     @GetMapping("/getSet")
-    @ApiOperation(value = "获取积分设置")
+    @ApiOperation(tags = {"管理后台-积分管理"},value = "获取积分设置")
     public R<TIntegralRule> getSet() {
         TIntegralRule res = integralRuleService.getOne(new QueryWrapper<>());
         return R.ok(res);
     }
     @PostMapping("/saveSet")
-    @ApiOperation(value = "保存积分设置")
+    @ApiOperation(tags = {"管理后台-积分管理"},value = "保存积分设置")
     public R saveSet(@RequestBody TIntegralRule dto) {
         integralRuleService.updateById(dto);
         return R.ok();
     }
     @GetMapping("/getInfo")
-    @ApiOperation(value = "type 1=积分规则说明," +
+    @ApiOperation(tags = {"管理后台-积分管理"},value = "type 1=积分规则说明," +
             "2=会员折扣说明," +
             "3=优惠券说明," +
             "4=双倍积分说明," +
@@ -61,7 +61,7 @@
         return R.ok(g.getContent());
     }
     @GetMapping("/saveInfo")
-    @ApiOperation(value = "保存积分说明")
+    @ApiOperation(tags = {"管理后台-积分管理"},value = "保存积分说明")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "info", value = "内容", required = true),
             @ApiImplicitParam(name = "type", value = "type 1=积分规则说明,\" +\n" +
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
index f2509c6..97f0451 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -34,25 +34,25 @@
     @Autowired
     private TVipService vipService;
     @PostMapping("/saveVip")
-    @ApiOperation(value = "会员添加")
+    @ApiOperation(tags = {"管理后台-会员管理"},value = "会员添加")
     public AjaxResult saveVip(@RequestBody TVip dto) {
         vipService.save(dto);
         return AjaxResult.success();
     }
     @GetMapping("/delete")
-    @ApiOperation(value = "会员删除")
+    @ApiOperation(tags = {"管理后台-会员管理"},value = "会员删除")
     public AjaxResult delete(Integer id) {
         vipService.removeById(id);
         return AjaxResult.success();
     }
     @PostMapping("/updateVip")
-    @ApiOperation(value = "会员修改")
+    @ApiOperation(tags = {"管理后台-会员管理"},value = "会员修改")
     public AjaxResult updateVip(@RequestBody TVip dto) {
             vipService.updateById(dto);
         return AjaxResult.success();
     }
     @GetMapping("/getInfo")
-    @ApiOperation(value = "会员查看详情")
+    @ApiOperation(tags = {"管理后台-会员管理"},value = "会员查看详情")
     public AjaxResult<TVip> getInfo(Integer id) {
         return AjaxResult.ok(vipService.getById(id));
     }
@@ -66,7 +66,7 @@
     public R<TVip> getInfo1(@RequestParam("id")Integer id) {
         return R.ok(vipService.getById(id));
     }
-    @ApiOperation(value = "会员列表分页查询")
+    @ApiOperation(tags = {"管理后台-会员管理"},value = "会员列表分页查询")
     @PostMapping(value = "/pageList")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "pageCurr", value = "分页参数,当前页码", required = true),
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TVipMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TVipMapper.xml
index 941a10c..5114d48 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TVipMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TVipMapper.xml
@@ -32,12 +32,15 @@
         <result column="double_integration" property="doubleIntegration" />
         <result column="mall_exclusive_price" property="mallExclusivePrice" />
         <result column="create_time" property="createTime" />
+        <result column="discount" property="discount" />
+        <result column="type" property="type" />
         <result column="del_flag" property="delFlag" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
         id, name, reveal, monthly_card, monthly_card_reveal, monthly_card_discount, monthly_card_discount_start, monthly_card_discount_end, monthly_card_discount_reveal, season_card, season_card_reveal, season_card_discount, season_card_discount_start, season_card_discount_end, season_card_discount_reveal, annual_card, annual_card_reveal, annual_card_discount, annual_card_discount_start, annual_card_discount_end, annual_card_discount_reveal, discount_times, maximum_deduction, deduction_type, coupon, double_integration, mall_exclusive_price, create_time, del_flag
+          ,discount, type
     </sql>
     <select id="pageList" resultType="com.ruoyi.other.api.domain.TVip">
         select * from t_vip

--
Gitblit v1.7.1