From 6b79e22056bcc2c14d3e20802174b89bc2a0a204 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期五, 09 八月 2024 10:12:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserDetailDto.java                                          |   19 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java                                       |   14 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/query/ExchangeRecordGoodsQuery.java                             |   17 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java                                      |    4 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserTagMapper.xml                                             |    2 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/TCouponMapper.xml                                                           |   19 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java                                  |   29 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java                                           |    4 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml                                     |    2 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java                                   |   14 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java                                    |   57 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java                                   |   19 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java                                          |   18 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java                                        |   36 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java                                |   55 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppUserVipDetailMapper.java                                 |   16 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java                                |    5 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/status/SiteStatusEnum.java                             |   46 +
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java                                        |   25 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java                                             |   10 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml                                              |   61 ++
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java                           |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java                                        |    7 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInviteUserMapper.xml                                             |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCompanyController.java                                      |    6 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java                   |   33 +
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserCarMapper.xml                                             |    2 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserMapper.xml                                                |    2 
 ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |    3 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java                           |    1 
 ruoyi-service/ruoyi-account/pom.xml                                                                                             |   12 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TCouponService.java                                             |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java                                        |   26 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java                               |   10 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml                                          |   80 +++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                            |   15 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java             |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java                                |   58 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                                  |  133 ++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java                                    |    9 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java       |   43 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/CouponQuery.java                                                  |   22 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                |   17 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java                                |   32 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java                               |   16 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java                           |   39 +
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserSignMapper.xml                                            |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyDetailVO.java                   |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserTagController.java                                      |   28 +
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java                                                 |    6 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java                   |   27 +
 /dev/null                                                                                                                       |  166 ------
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java                             |   78 +++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TCouponServiceImpl.java                                    |   29 +
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml                                         |    2 
 ruoyi-service/ruoyi-other/pom.xml                                                                                               |    6 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java                         |   11 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java                                       |   61 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TCouponMapper.java                                               |    8 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java                              |    6 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java                      |   21 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml                                  |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java                                     |    1 
 63 files changed, 1,304 insertions(+), 206 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserDetailDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserDetailDto.java
new file mode 100644
index 0000000..cf8da17
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserDetailDto.java
@@ -0,0 +1,19 @@
+package com.ruoyi.account.api.dto;
+
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserCar;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class UserDetailDto extends TAppUser {
+    @ApiModelProperty("累计充电数")
+    private Long orderCount;
+    @ApiModelProperty("单位名称")
+    private String unitName;
+
+    @ApiModelProperty("车辆列表")
+    List<TAppUserCar> carList;
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java
new file mode 100644
index 0000000..876d173
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UserListQueryDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.account.api.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import lombok.Data;
+
+@Data
+public class UserListQueryDto extends BasePage {
+    String userPhone;
+    String cityCode;
+    Integer status;
+    Integer userTagId;
+    Integer vipTypeId;
+    Integer companyId;
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
new file mode 100644
index 0000000..370b476
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
@@ -0,0 +1,39 @@
+package com.ruoyi.account.api.factory;
+
+import com.ruoyi.account.api.feignClient.AppCouponClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.common.core.domain.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 门店服务降级处理
+ * 
+ * @author ruoyi
+ */
+@Component
+public class AppCouponFallbackFactory implements FallbackFactory<AppCouponClient>
+{
+    private static final Logger log = LoggerFactory.getLogger(AppCouponFallbackFactory.class);
+
+    @Override
+    public AppCouponClient create(Throwable throwable) {
+        log.error("用户优惠券记录调用失败:{}", throwable.getMessage());
+        return new AppCouponClient() {
+
+            @Override
+            public R<List<Integer>> getCountByCouponIds(String couponIds) {
+                return null;
+            }
+
+            @Override
+            public R<Integer> getUseCountByCouponId(Integer couponId) {
+                return null;
+            }
+        };
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
new file mode 100644
index 0000000..595543c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppCouponClient.java
@@ -0,0 +1,32 @@
+package com.ruoyi.account.api.feignClient;
+
+import com.ruoyi.account.api.factory.AppCouponFallbackFactory;
+import com.ruoyi.account.api.factory.AppUserFallbackFactory;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+/**
+ * 用户服务
+ * @author ruoyi
+ */
+@FeignClient(contextId = "AppCouponClient", value = ServiceNameConstants.CONTRACT_ACCOUNT, fallbackFactory = AppCouponFallbackFactory.class)
+public interface AppCouponClient {
+
+    /**
+     * 管理后台远程调用 根据优惠券ids 查询对应的发放数量
+     * @return 优惠券ids 查询每个优惠券的发放数量
+     */
+    @PostMapping("/t-app-coupon/getCountByCouponIds")
+    public R<List<Integer>> getCountByCouponIds(String couponIds);
+    /**
+     * 管理后台远程调用 根据优惠券id 查询对应的使用数量
+     * @param couponId
+     * @return
+     */
+    @PostMapping("/t-app-coupon/getUseCountByCouponId")
+    public R<Integer> getUseCountByCouponId(Integer couponId);
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
index 882c0a5..0f6d8d1 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
@@ -73,7 +73,9 @@
     @ApiModelProperty(value = "状态(1=未使用,2=已使用)")
     @TableField("status")
     private Integer status;
-
+    @ApiModelProperty(value = "订单id 后台发放的优惠券没有订单id")
+    @TableField("orderId")
+    private Long orderId;
 
 
 
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
index 0bfa1c3..0a731d5 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
@@ -104,4 +104,14 @@
     private LocalDateTime lastLoginTime;
 
 
+
+
+    @ApiModelProperty(value = "标签名称")
+    @TableField(exist = false)
+    private String tagName;
+    @ApiModelProperty(value = "vip名称")
+    @TableField(exist = false)
+    private String vipName;
+
+
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
new file mode 100644
index 0000000..9ca255a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
@@ -0,0 +1,57 @@
+package com.ruoyi.account.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_app_user_vip_detail")
+@ApiModel(value="TAppUserVipDetail对象", description="")
+public class TAppUserVipDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("id")
+    private Long id;
+
+    @ApiModelProperty(value = "用户id")
+    @TableField("app_user_id")
+    private Long appUserId;
+
+    @ApiModelProperty(value = "剩余充电次数")
+    @TableField("charge_num")
+    private Integer chargeNum;
+
+    @ApiModelProperty(value = "会员id")
+    @TableField("vip_id")
+    private Integer vipId;
+
+    @ApiModelProperty(value = "会员开始时间")
+    @TableField("start_time")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "会员结束时间")
+    @TableField("end_time")
+    private LocalDateTime endTime;
+
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/query/ExchangeRecordGoodsQuery.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/query/ExchangeRecordGoodsQuery.java
new file mode 100644
index 0000000..894791d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/query/ExchangeRecordGoodsQuery.java
@@ -0,0 +1,17 @@
+package com.ruoyi.account.api.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("管理后台 优惠券兑换记录")
+public class ExchangeRecordGoodsQuery extends BasePage {
+    @ApiModelProperty(value = "用户手机号")
+    private String phone;
+    @ApiModelProperty(value = "状态1未使用 2已使用 3已过期 4已取消")
+    private Integer status;
+    @ApiModelProperty(value = "优惠券id",required = true)
+    private Integer couponId;
+}
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
new file mode 100644
index 0000000..43c0f6d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/ExchangeRecordVO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.account.api.vo;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("管理后台 优惠券兑换记录列表返回VO")
+public class ExchangeRecordVO {
+    @ApiModelProperty(value = "获得时间")
+    private String createTime;
+    @ApiModelProperty(value = "获得用户")
+    private String phone;
+    @ApiModelProperty(value = "优惠金额")
+    private String discountAmount;
+    @ApiModelProperty(value = "使用门槛")
+    private String meetTheConditions;
+    @ApiModelProperty(value = "使用状态 1未使用 2已使用 3已过期 4已取消")
+    private Integer status;
+    @ApiModelProperty(value = "失效时间")
+    private String endTime1;
+    @ApiModelProperty(value = "失效时间 前端忽略")
+    private LocalDateTime endTime;
+    @ApiModelProperty(value = "关联订单")
+    private String orderId;
+    @ApiModelProperty(value = " 前端忽略 获取方式 1=积分兑换 2现金购买")
+    private Integer waysToObtain;
+    @ApiModelProperty(value = " 是否删除0否1是")
+    private Integer delFlag;
+    @ApiModelProperty(value = "三方支付流水号 前端忽略")
+    private String serialNumber;
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 9e16de7..9743c88 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-account/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1,2 @@
-com.ruoyi.account.api.factory.AppUserFallbackFactory
\ No newline at end of file
+com.ruoyi.account.api.factory.AppUserFallbackFactory
+com.ruoyi.account.api.factory.AppCouponFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppCouponMapper.xml b/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppCouponMapper.xml
deleted file mode 100644
index 002b4a4..0000000
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppCouponMapper.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppCouponMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppCoupon">
-        <id column="id" property="id" />
-        <result column="app_user_id" property="appUserId" />
-        <result column="coupon_id" property="couponId" />
-        <result column="end_time" property="endTime" />
-        <result column="ways_to_obtain" property="waysToObtain" />
-        <result column="redeem_points" property="redeemPoints" />
-        <result column="payment_amount" property="paymentAmount" />
-        <result column="payment_type" property="paymentType" />
-        <result column="serial_number" property="serialNumber" />
-        <result column="payment_time" property="paymentTime" />
-        <result column="status" property="status" />
-        <result column="create_time" property="createTime" />
-        <result column="del_flag" property="delFlag" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        id, app_user_id, coupon_id, end_time, ways_to_obtain, redeem_points, payment_amount, payment_type, serial_number, payment_time, status, create_time, del_flag
-    </sql>
-
-</mapper>
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java
index 236e989..3301e51 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java
@@ -6,6 +6,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -46,6 +47,11 @@
     @TableField("status")
     private Integer status;
 
+    @ApiModelProperty(value = "故障内容")
+    @Length(max = 200, message = "故障内容长度不能超过200")
+    @TableField("content")
+    private String content;
+
     @ApiModelProperty(value = "故障时间")
     @TableField("down_time")
     private LocalDateTime downTime;
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java
deleted file mode 100644
index b099b24..0000000
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSite.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package com.ruoyi.chargingPile.api.model;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.ruoyi.common.core.web.domain.BasePojo;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author xiaochen
- * @since 2024-08-08
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("t_site")
-@ApiModel(value="TSite对象", description="")
-public class TSite extends BasePojo {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "合作商id")
-    @TableField("partner_id")
-    private Integer partnerId;
-
-    @ApiModelProperty(value = "站点编号")
-    @TableField("code")
-    private String code;
-
-    @ApiModelProperty(value = "站点名称")
-    @TableField("name")
-    private String name;
-
-    @ApiModelProperty(value = "站点类型(0=其他,1=公共,2=个人,3=公交(专业),4=环卫(专用),5=物流(专用),6=出租车(专用))")
-    @TableField("site_type")
-    private Integer siteType;
-
-    @ApiModelProperty(value = "经营类型(1=直营,2=非直营)")
-    @TableField("business_category")
-    private Integer businessCategory;
-
-    @ApiModelProperty(value = "站点状态(1=正常使用,2=维修中,3=关闭下线)")
-    @TableField("status")
-    private Integer status;
-
-    @ApiModelProperty(value = "建设场所(0=其他,1=居民区,2=公共机构,3=企事业单位,4=写字楼,5=工业园区,6=交通枢纽,7=大型文体设施,8=城市绿地,9=大型建筑配建停车场,10=路边停车位,11=城际高速服务区)")
-    @TableField("construction_site")
-    private Integer constructionSite;
-
-    @ApiModelProperty(value = "站点环境图")
-    @TableField("img_url")
-    private String imgUrl;
-
-    @ApiModelProperty(value = "省名称")
-    @TableField("province")
-    private String province;
-
-    @ApiModelProperty(value = "省区划代码")
-    @TableField("province_code")
-    private String provinceCode;
-
-    @ApiModelProperty(value = "市名称")
-    @TableField("city")
-    private String city;
-
-    @ApiModelProperty(value = "市区划代码")
-    @TableField("city_code")
-    private String cityCode;
-
-    @ApiModelProperty(value = "区县名称")
-    @TableField("districts")
-    private String districts;
-
-    @ApiModelProperty(value = "区县区划代码")
-    @TableField("districts_code")
-    private String districtsCode;
-
-    @ApiModelProperty(value = "经度")
-    @TableField("lon")
-    private String lon;
-
-    @ApiModelProperty(value = "纬度")
-    @TableField("lat")
-    private String lat;
-
-    @ApiModelProperty(value = "详细地址")
-    @TableField("address")
-    private String address;
-
-    @ApiModelProperty(value = "国家代码")
-    @TableField("country_code")
-    private String countryCode;
-
-    @ApiModelProperty(value = "站点电话")
-    @TableField("phone")
-    private String phone;
-
-    @ApiModelProperty(value = "服务电话")
-    @TableField("service_phone")
-    private String servicePhone;
-
-    @ApiModelProperty(value = "站点引导")
-    @TableField("guide")
-    private String guide;
-
-    @ApiModelProperty(value = "开始服务时间")
-    @TableField("start_service_time")
-    private String startServiceTime;
-
-    @ApiModelProperty(value = "结束服务时间")
-    @TableField("end_service_time")
-    private String endServiceTime;
-
-    @ApiModelProperty(value = "站内提供服务")
-    @TableField("service_description")
-    private String serviceDescription;
-
-    @ApiModelProperty(value = "车型描述")
-    @TableField("vehicle_description")
-    private String vehicleDescription;
-
-    @ApiModelProperty(value = "车位数")
-    @TableField("parking_space")
-    private Integer parkingSpace;
-
-    @ApiModelProperty(value = "充电费率描述")
-    @TableField("rate_description")
-    private String rateDescription;
-
-    @ApiModelProperty(value = "超时占位费说明")
-    @TableField("space_charge_explain")
-    private String spaceChargeExplain;
-
-    @ApiModelProperty(value = "计费策略id")
-    @TableField("accounting_strategy_id")
-    private Integer accountingStrategyId;
-
-    @ApiModelProperty(value = "建站时间")
-    @TableField("establishment_time")
-    private LocalDateTime establishmentTime;
-
-    @ApiModelProperty(value = "排序")
-    @TableField("sort")
-    private Integer sort;
-
-    @ApiModelProperty(value = "备注")
-    @TableField("remark")
-    private String remark;
-
-    @ApiModelProperty(value = "评分")
-    @TableField("mark")
-    private Integer mark;
-
-
-}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java
new file mode 100644
index 0000000..7eb33df
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/SiteQuery.java
@@ -0,0 +1,29 @@
+package com.ruoyi.chargingPile.api.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "SiteQuery对象",description = "站点查询条件")
+public class SiteQuery extends BasePage {
+
+    @ApiModelProperty(value = "站点名称")
+    private String name;
+
+    @ApiModelProperty(value = "排序方式 1=离我最近 2=价格较低 3=空闲较多")
+    @NotNull(message = "排序方式不能为空")
+    private Integer sortType;
+
+    @ApiModelProperty(value = "经度")
+    @NotNull(message = "地址经度不能为空")
+    private String lon;
+
+    @ApiModelProperty(value = "纬度")
+    @NotNull(message = "地址纬度不能为空")
+    private String lat;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java
new file mode 100644
index 0000000..ba71ee4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteVO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import com.ruoyi.chargingPile.api.model.Site;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "SiteVO对象", description = "站点信息")
+public class SiteVO extends Site {
+
+    @ApiModelProperty(value = "快充数量")
+    private Integer fastCount;
+    @ApiModelProperty(value = "超充数量")
+    private Integer superCount;
+    @ApiModelProperty(value = "慢充数量")
+    private Integer slowCount;
+    @ApiModelProperty(value = "普通电价")
+    private BigDecimal electrovalence;
+    @ApiModelProperty(value = "会员电价")
+    private BigDecimal vipElectrovalence;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyDetailVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyDetailVO.java
index 63c2588..caa1742 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyDetailVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyDetailVO.java
@@ -11,7 +11,7 @@
 @ApiModel(value = "TAccountingStrategyDetailVO",description = "计费策略明细")
 public class TAccountingStrategyDetailVO extends TAccountingStrategyDetail {
 
-    @ApiModelProperty(value = "原价服务费")
+    @ApiModelProperty(value = "总价")
     private BigDecimal totalPrice;
 
     @ApiModelProperty(value = "会员折扣")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index cb381c7..3f8d2c1 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -1,5 +1,6 @@
 package com.ruoyi.order.api.factory;
 
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -20,7 +21,12 @@
     public ChargingOrderClient create(Throwable throwable) {
         log.error("充电订单调用失败:{}", throwable.getMessage());
         return new ChargingOrderClient() {
-        
+
+            @Override
+            public R<Long> useOrderCount(Long userId) {
+                return R.fail("订单计数:" + throwable.getMessage());
+
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
index 165973b..0ad9005 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -1,10 +1,14 @@
 package com.ruoyi.order.api.factory;
 
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
 
 /**
  * 充电订单服务降级处理
@@ -12,16 +16,20 @@
  * @author ruoyi
  */
 @Component
-public class OrderFallbackFactory implements FallbackFactory<ChargingOrderClient>
+public class OrderFallbackFactory implements FallbackFactory<OrderClient>
 {
     private static final Logger log = LoggerFactory.getLogger(OrderFallbackFactory.class);
 
 
     @Override
-    public ChargingOrderClient create(Throwable cause) {
+    public OrderClient create(Throwable cause) {
         log.error("商品订单调用失败:{}", cause.getMessage());
-        return new ChargingOrderClient() {
+        return new OrderClient() {
 
+            @Override
+            public R<List<Integer>> getSalesCountByGoodsId(String goodsIds) {
+                return null;
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index 7f227d4..aa4639f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -1,8 +1,11 @@
 package com.ruoyi.order.api.feignClient;
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * 充电订单服务
@@ -10,6 +13,8 @@
  */
 @FeignClient(contextId = "ChargingOrderClient", value = ServiceNameConstants.CONTRACT_SERVICE, fallbackFactory = ChargingOrderFallbackFactory.class)
 public interface ChargingOrderClient {
+    @PostMapping(value = "/t-charging-order/useOrderCount")
+    R<Long> useOrderCount(@RequestParam Long userId);
 
 
 }
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 af872cc..cd229d3 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
@@ -106,6 +106,12 @@
     @ApiModelProperty(value = "状态(1=上架,2=下架)")
     @TableField("status")
     private Integer status;
+    @ApiModelProperty(value = "发放数量")
+    @TableField(exist = false)
+    private Integer count;
+    @ApiModelProperty(value = "使用数量")
+    @TableField(exist = false)
+    private Integer useCount;
 
 
 
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
index 2466d95..cfb52c2 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
@@ -6,12 +6,14 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TCompany;
 import com.ruoyi.other.api.domain.TUserTag;
-import com.ruoyi.other.api.feignClient.GoodsClient;
 import com.ruoyi.other.api.feignClient.OtherClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 商品服务降级处理
@@ -57,6 +59,21 @@
             public R deleteTag(Integer id) {
                 return R.fail("查询标签:" + throwable.getMessage());
             }
+
+            @Override
+            public R<Map<Integer, String>> getTagMap(List<Integer> ids) {
+                return R.fail("查询标签map:" + throwable.getMessage());
+            }
+
+            @Override
+            public R<TUserTag> getByIdTag(Integer id) {
+                return R.fail("查询标签:" + throwable.getMessage());
+            }
+
+            @Override
+            public R<Map<Integer, String>> getVipMap(List<Integer> ids) {
+                return R.fail("获取会员map:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
index 4630bf6..833e422 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -7,12 +7,14 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TCompany;
 import com.ruoyi.other.api.domain.TUserTag;
-import com.ruoyi.other.api.factory.GoodsFallbackFactory;
 import com.ruoyi.other.api.factory.OtherFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 商品服务
@@ -30,6 +32,8 @@
     @PostMapping(value = "/t-company/unit/delete")
     R unitDelete(@RequestParam Integer id);
 
+    @PostMapping(value = "/t-company/unit/detail")
+    R<TCompany> unitDetail(@RequestParam Integer id);
 
     //标签分页
     @PostMapping(value = "/t-user-tag/page")
@@ -38,6 +42,26 @@
     //用户新增标签
     @PostMapping(value = "/t-user-tag/addorUpdateTag")
     R addorUpdateTag(@RequestBody TUserTag tUserTag);
+    //删除用户标签
     @PostMapping(value = "/t-user-tag/delete")
     R deleteTag(@RequestParam Integer id);
+
+    //获取标签Map
+    @PostMapping(value = "/t-user-tag/getTagMap")
+    R<Map<Integer, String>> getTagMap(@RequestBody List<Integer> ids);
+    //获取标签
+    @PostMapping(value = "/t-user-tag/getById")
+    R<TUserTag> getByIdTag(@RequestParam Integer id);
+
+    @PostMapping(value = "/vip/getVipMap")
+    R<Map<Integer, String>> getVipMap(@RequestBody List<Integer> ids);
+
+
+
+
+
+
+
+
+
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
index ba46eb4..49df453 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
@@ -86,6 +86,11 @@
             }
 
             @Override
+            public R<SysUser> queryUserByAccount(String account) {
+                return null;
+            }
+
+            @Override
             public R<SysUser> queryUserByUserName(String userName) {
                 return R.fail("通过账号查询用户失败:" + cause.getMessage());
             }
@@ -94,6 +99,11 @@
             public R addSysUser(SysUser user) {
                 return R.fail("添加用户失败:" + cause.getMessage());
             }
+
+            @Override
+            public R resetPassword(SysUser user) {
+                return null;
+            }
         };
     }
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
index 91ba605..b4a5e88 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
@@ -36,4 +36,5 @@
      */
     public static final String CONTRACT_SERVICE = "ruoyi-contract";
     public static final String CONTRACT_ORDER = "ruoyi-order";
+    public static final String CONTRACT_ACCOUNT = "ruoyi-account";
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/status/SiteStatusEnum.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/status/SiteStatusEnum.java
new file mode 100644
index 0000000..5d08b48
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/status/SiteStatusEnum.java
@@ -0,0 +1,46 @@
+package com.ruoyi.common.core.enums.status;
+
+import lombok.Getter;
+
+/**
+ * @Description
+ * @Author xiaochen
+ * @Date 2023/6/8 16:42
+ */
+public enum SiteStatusEnum {
+
+
+    NORMAL_USE(1, "正常使用"),
+    IN_MAINTENANCE(2, "维修中"),
+    CLOSE_OFFLINE(3, "关闭下线");
+
+    @Getter
+    private String desc;
+
+
+    @Getter
+    private int code;
+
+
+    SiteStatusEnum(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    /**
+     * 通过code获取枚举
+     *
+     * @param code
+     * @return
+     */
+    public static SiteStatusEnum fromCode(Integer code) {
+        SiteStatusEnum[] resultTypes = SiteStatusEnum.values();
+        for (SiteStatusEnum resultType : resultTypes) {
+            if (code.equals(resultType.getCode())) {
+                return resultType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/ruoyi-service/ruoyi-account/pom.xml b/ruoyi-service/ruoyi-account/pom.xml
index 5f0a89f..957885b 100644
--- a/ruoyi-service/ruoyi-account/pom.xml
+++ b/ruoyi-service/ruoyi-account/pom.xml
@@ -112,6 +112,18 @@
             <version>3.6.2</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.6</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-order</artifactId>
+            <version>3.6.2</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 
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 8197d08..ffc595e 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
@@ -1,8 +1,25 @@
 package com.ruoyi.account.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.account.api.model.TAppCoupon;
+import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
+import com.ruoyi.account.api.vo.ExchangeRecordVO;
+import com.ruoyi.account.service.TAppCouponService;
+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.other.api.domain.TCoupon;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * <p>
@@ -15,6 +32,47 @@
 @RestController
 @RequestMapping("/t-app-coupon")
 public class TAppCouponController {
+    @Autowired
+    private TAppCouponService tAppCouponService;
 
+    /**
+     * 管理后台远程调用 根据优惠券ids 查询对应的发放数量
+     * @return 优惠券ids 查询每个优惠券的发放数量
+     */
+    @PostMapping("/getCountByCouponIds")
+    public R<List<Integer>> getCountByCouponIds(String couponIds) {
+        // 最终结果 和优惠券id一一对应
+        List<Integer> res = new ArrayList<>();
+        String[] split = couponIds.split(",");
+        // 查询每个优惠券的发放数量
+        List<TAppCoupon> couponId = tAppCouponService.list(new QueryWrapper<TAppCoupon>()
+                .in("coupon_id", Arrays.asList(split)));
+        for (String s : split) {
+            res.add(tAppCouponService.list(new QueryWrapper<TAppCoupon>()
+                    .eq("coupon_id", s)).size());
+        }
+        return R.ok(res);
+    }
+
+    /**
+     * 后台远程调用 根据优惠券id 查询使用数量
+     * @param couponId
+     * @return
+     */
+    @PostMapping("/getUseCountByCouponId")
+    public R<Integer> getUseCountByCouponId(Integer couponId){
+        return R.ok(tAppCouponService.list(new QueryWrapper<TAppCoupon>()
+                .eq("coupon_id", couponId)
+                .eq("status",2)).size());
+    }
+    /**
+     * 后台远程调用 根据优惠券id 查询领取记录
+     * @param couponId
+     * @return
+     */
+    @PostMapping("/getExchangeRecordByCouponId")
+    public R<PageInfo<ExchangeRecordVO>> getUseCountByCouponId(ExchangeRecordGoodsQuery couponId){
+        return R.ok(tAppCouponService.pagelist(couponId));
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index c261e65..8377509 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -4,11 +4,23 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.dto.UnitListQueryDto;
+import com.ruoyi.account.api.dto.UserDetailDto;
+import com.ruoyi.account.api.dto.UserListQueryDto;
 import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserCar;
+import com.ruoyi.account.api.model.TAppUserTag;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.service.TAppUserCarService;
 import com.ruoyi.account.service.TAppUserService;
+import com.ruoyi.account.service.TAppUserTagService;
+import com.ruoyi.account.service.TAppUserVipDetailService;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.core.web.domain.BasePojo;
 import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import com.ruoyi.other.api.domain.TCompany;
+import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.feignClient.OtherClient;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -16,6 +28,13 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -33,6 +52,16 @@
     private OtherClient otherClient;
     @Resource
     private TAppUserService appUserService;
+    @Resource
+    private TAppUserTagService appUserTagService;
+
+    @Resource
+    private TAppUserVipDetailService tAppUserVipDetailService;
+    @Resource
+    private ChargingOrderClient chargingOrderClient;
+
+    @Resource
+    private TAppUserCarService appUserCarService;
 
     @ApiOperation(value = "单位管理列表", tags = {"用户管理-单位管理"})
     @PostMapping(value = "/unit/page")
@@ -63,21 +92,117 @@
     }
 
 
-    @ApiOperation(value = "用户列表", tags = {"用户管理-用户管理"})
+    @ApiOperation(value = "用户列表", tags = {"用户管理-用户列表"})
     @PostMapping(value = "/user/page")
-    public R<Page<TCompany>> userPage(@RequestBody UnitListQueryDto unitListQueryDto) {
+    public R<Page<TAppUser>> userPage(@RequestBody UserListQueryDto userListQueryDto) {
+        List<Long> userIds = new ArrayList<>();
 
-        //拿到标签tag
+        //如果要筛选标签。用标签获取useids
+        if (userListQueryDto.getUserTagId() != null){
+            userIds = appUserTagService.lambdaQuery().eq(TAppUserTag::getUserTagId, userListQueryDto.getUserTagId()).list().stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList());
+        }
 
-        //拿到会员map
+
 
         //列表查询
+        Page<TAppUser> page = appUserService.lambdaQuery()
+                .like(userListQueryDto.getUserPhone() != null && !"".equals(userListQueryDto.getUserPhone()), TAppUser::getPhone, userListQueryDto.getUserPhone())
+                .eq(userListQueryDto.getCompanyId() != null, TAppUser::getCompanyId, userListQueryDto.getCompanyId())
+                .eq(userListQueryDto.getCityCode() != null && !"".equals(userListQueryDto.getCityCode()), TAppUser::getCityCode, userListQueryDto.getCityCode())
+                .eq(userListQueryDto.getStatus() != null, TAppUser::getStatus, userListQueryDto.getStatus())
+                .eq(userListQueryDto.getVipTypeId() != null, TAppUser::getVipId, userListQueryDto.getVipTypeId())
+                .in(!userIds.isEmpty(),TAppUser::getId,userIds)
+                .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize()));
+
+        if (page.getRecords().isEmpty()){
+            return R.ok(page);
+        }
+        List<Integer> vipIds = new ArrayList<>();
+              vipIds     = page.getRecords().stream().map(TAppUser::getVipId).collect(Collectors.toList());
+        //获取会员map
+        R<Map<Integer, String>> vipMap = otherClient.getVipMap(vipIds);
+        //循环处理
+        for (TAppUser appUser : page.getRecords()) {
+            //拿到最新的tagId
+            TAppUserTag one = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, appUser.getId()).orderByDesc(TAppUserTag::getCreateTime).last("limit 1").one();
+            //设置最新的tagName
+            R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId());
+            if (byIdTag.getData()!=null) {
+                appUser.setTagName(byIdTag.getData().getName());
+            }
+            //匹配vipMap的值
+            appUser.setVipName(vipMap.getData().get(appUser.getVipId()));
+        }
+        return R.ok(page);
+    }
 
 
 
+    @ApiOperation(value = "用户添加编辑", tags = {"用户管理-用户列表"})
+    @PostMapping(value = "/user/addOrUpdate")
+    public R addOrUpdate(@RequestBody TAppUser  tAppUser) {
+        if (tAppUser.getId() != null){
+            //为编辑操作,要进行vip的逻辑处理
+            TAppUser nowUser = appUserService.getById(tAppUser.getId());
+            //会员结束时间不为空
+            if (tAppUser.getVipEndTime()!=null&&tAppUser.getVipEndTime()!=nowUser.getVipEndTime()){
+                //计算改变后的结束时间和当前结束时间差距了多少时间
+                Duration duration = Duration.between(tAppUser.getVipEndTime(), nowUser.getVipEndTime());
+                List<TAppUserVipDetail> detailList = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, tAppUser.getId()).gt(TAppUserVipDetail::getEndTime, LocalDateTime.now()).orderByAsc(TAppUserVipDetail::getStartTime).list();
+                //如果是增加,则将明细表里当前会员的结束时间往后移,并将其余未开始会员的开始时间和结束时间往后移
+                if (tAppUser.getVipEndTime().isAfter(nowUser.getVipEndTime())){
+                    for (int i = 0; i < detailList.size(); i++) {
+                        TAppUserVipDetail tAppUserVipDetail = detailList.get(i);
+                        if (i == 0 ){
+                            tAppUserVipDetail.setEndTime(tAppUser.getVipEndTime().plus(duration));
+                        }else {
+                            tAppUserVipDetail.setStartTime(tAppUserVipDetail.getStartTime().plus(duration));
+                            tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plus(duration));
+                        }
+                    }
+                }else {
+                    //如果是减少,将当前会员结束时间减少,并将其余会员开始和结束时间都往前移动
+                    for (int i = 0; i < detailList.size(); i++) {
+                        TAppUserVipDetail tAppUserVipDetail = detailList.get(i);
+                        if (i == 0 ){
+                            tAppUserVipDetail.setEndTime(tAppUser.getVipEndTime().minus(duration));
+                        }else {
+                            tAppUserVipDetail.setStartTime(tAppUserVipDetail.getStartTime().minus(duration));
+                            tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().minus(duration));
+                        }
+                    }
+                }
+            }
 
+        }
+        appUserService.saveOrUpdate(tAppUser);
         return R.ok();
     }
 
+    @ApiOperation(value = "用户详情", tags = {"用户管理-用户列表"})
+    @PostMapping(value = "/user/detail/{id}")
+    public R<UserDetailDto> userDetail(@PathVariable Long id) {
+        TAppUser user = appUserService.getById(id);
+        UserDetailDto userDetailDto =  new UserDetailDto();
+        BeanUtils.copyProperties(user,userDetailDto);
+        if (user.getVipId()!=null) {
+            R<Map<Integer, String>> vipMap = otherClient.getVipMap(Arrays.asList(user.getVipId()));
+            user.setVipName(vipMap.getData().get(user.getVipId()));
+        }
+        //获取累计充电数量
+        R<Long> useOrderCount = chargingOrderClient.useOrderCount(user.getId());
+        userDetailDto.setOrderCount(useOrderCount.getData());
+        R<TCompany> tCompanyR = otherClient.unitDetail(user.getCompanyId());
+        if (tCompanyR.getData()!=null){
+            userDetailDto.setUnitName(tCompanyR.getData().getName());
+        }
+        List<TAppUserCar> carList = appUserCarService.lambdaQuery().eq(TAppUserCar::getAppUserId, id).orderByDesc(BasePojo::getCreateTime).list();
+        userDetailDto.setCarList(carList);
+
+        List<Integer> tagIds = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, id).orderByDesc(TAppUserTag::getCreateTime).list().stream().map(TAppUserTag::getUserTagId).collect(Collectors.toList());
+        R<Map<Integer, String>> tagMap = otherClient.getTagMap(tagIds);
+        userDetailDto.setTagName(tagMap.getData().values().toString());
+        return R.ok(userDetailDto);
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java
index 35d5a5a..9bbf837 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppCouponMapper.java
@@ -2,6 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.account.api.model.TAppCoupon;
+import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
+import com.ruoyi.account.api.vo.ExchangeRecordVO;
+import com.ruoyi.common.core.web.page.PageInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,5 @@
  */
 public interface TAppCouponMapper extends BaseMapper<TAppCoupon> {
 
+    List<ExchangeRecordVO> pageList(@Param("pageInfo")PageInfo<ExchangeRecordVO> pageInfo,@Param("req") ExchangeRecordGoodsQuery dto);
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppUserVipDetailMapper.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppUserVipDetailMapper.java
new file mode 100644
index 0000000..6b72880
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/mapper/TAppUserVipDetailMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-08
+ */
+public interface TAppUserVipDetailMapper extends BaseMapper<TAppUserVipDetail> {
+
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java
index 650c5dc..88e6aa1 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppCouponService.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.account.api.model.TAppCoupon;
+import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
+import com.ruoyi.account.api.vo.ExchangeRecordVO;
+import com.ruoyi.common.core.web.page.PageInfo;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface TAppCouponService extends IService<TAppCoupon> {
 
+    PageInfo<ExchangeRecordVO> pagelist(ExchangeRecordGoodsQuery couponId);
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java
new file mode 100644
index 0000000..8e90bd7
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.account.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-08
+ */
+public interface TAppUserVipDetailService extends IService<TAppUserVipDetail> {
+
+}
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 cb258ba..6bc6d16 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
@@ -2,9 +2,19 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.model.TAppCoupon;
+import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
+import com.ruoyi.account.api.vo.ExchangeRecordVO;
 import com.ruoyi.account.mapper.TAppCouponMapper;
 import com.ruoyi.account.service.TAppCouponService;
+import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.other.api.domain.TCoupon;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +27,72 @@
 @Service
 public class TAppCouponServiceImpl extends ServiceImpl<TAppCouponMapper, TAppCoupon> implements TAppCouponService {
 
+    @Override
+    public PageInfo<ExchangeRecordVO> pagelist(ExchangeRecordGoodsQuery dto) {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        PageInfo<ExchangeRecordVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+        List<ExchangeRecordVO> list = this.baseMapper.pageList(pageInfo,dto);
+        // 现金优惠券
+        StringBuilder stringBuilder = new StringBuilder();
+        // 积分优惠券
+        StringBuilder stringBuilder1 = new StringBuilder();
+
+        for (ExchangeRecordVO exchangeRecordVO : list) {
+            switch (exchangeRecordVO.getWaysToObtain()){
+                case 1:
+                    if (exchangeRecordVO.getSerialNumber()!=null){
+                        stringBuilder.append(exchangeRecordVO.getSerialNumber()).append(",");
+                    }else{
+                        stringBuilder.append("0").append(",");
+                    }
+                    break;
+                case 2:
+                    if (exchangeRecordVO.getSerialNumber()!=null){
+                        stringBuilder1.append(exchangeRecordVO.getSerialNumber()).append(",");
+                    }else{
+                        stringBuilder1.append("0").append(",");
+                    }
+                    break;
+            }
+
+            Date date = DateUtils.toDate(exchangeRecordVO.getEndTime());
+            exchangeRecordVO.setEndTime1(format.format(date));
+            if (exchangeRecordVO.getStatus()==1){
+                if (exchangeRecordVO.getDelFlag() == 1){
+                    // 删除了 就是已取消状态
+                    exchangeRecordVO.setStatus(4);
+                }else{
+                    // 未删除 判断endTime是否过期
+                    // 设置了过期时间
+                    if (exchangeRecordVO.getEndTime().isBefore(java.time.LocalDateTime.now())){
+                        exchangeRecordVO.setStatus(3);
+                    }else{
+                        // 没过期
+                        exchangeRecordVO.setStatus(1);
+                    }
+                }
+            }
+            if (exchangeRecordVO.getStatus()==2){
+                if (exchangeRecordVO.getDelFlag() == 1){
+                    // 删除了 就是已取消状态
+                    exchangeRecordVO.setStatus(4);
+                }else{
+                    exchangeRecordVO.setStatus(2);
+                }
+            }
+            // 根据购买方式 查询对应订单号
+        }
+
+        // 去除最后一个字符
+        if (StringUtils.hasText(stringBuilder.toString())){
+            String string = stringBuilder.deleteCharAt(stringBuilder.length() - 1).toString();
+            // 远程调用 查询关联的现金优惠券订单编号
+        }
+        if (StringUtils.hasText(stringBuilder.toString())){
+            String string = stringBuilder.deleteCharAt(stringBuilder.length() - 1).toString();
+            // 远程调用 查询关联的积分兑换优惠券订单编号
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
new file mode 100644
index 0000000..50674ce
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.account.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.mapper.TAppUserVipDetailMapper;
+
+import com.ruoyi.account.service.TAppUserVipDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-08
+ */
+@Service
+public class TAppUserVipDetailServiceImpl extends ServiceImpl<TAppUserVipDetailMapper, TAppUserVipDetail> implements TAppUserVipDetailService {
+
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml
new file mode 100644
index 0000000..7b8852a
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.account.mapper.TAppCouponMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppCoupon">
+        <id column="id" property="id" />
+        <result column="app_user_id" property="appUserId" />
+        <result column="coupon_id" property="couponId" />
+        <result column="end_time" property="endTime" />
+        <result column="ways_to_obtain" property="waysToObtain" />
+        <result column="redeem_points" property="redeemPoints" />
+        <result column="payment_amount" property="paymentAmount" />
+        <result column="payment_type" property="paymentType" />
+        <result column="serial_number" property="serialNumber" />
+        <result column="payment_time" property="paymentTime" />
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime" />
+        <result column="del_flag" property="delFlag" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, app_user_id, coupon_id, end_time, ways_to_obtain, redeem_points, payment_amount, payment_type, serial_number, payment_time, status, create_time, del_flag
+    </sql>
+    <select id="pageList" resultType="com.ruoyi.account.api.vo.ExchangeRecordVO">
+        select t1.id,t1.app_user_id as appUserId, t1.coupon_id as couponId,
+               t1.end_time as endTime, t1.ways_to_obtain as waysToObtain,
+               t1.redeem_points as redeemPoints,
+               t1.payment_amount as paymentAmount,
+               t1.payment_type as paymentType,
+               t1.serial_number as serialNumber,
+               t1.payment_time as paymentTime,
+               t1.status,
+               t1.create_time AS createTime,
+               t1.del_flag AS delFlag,
+               t2.phone
+        from t_app_coupon t1
+        left join t_app_user t2 on t1.app_user_id = t2.id
+        <where>
+            and t1.coupon_id = #{req.couponId}
+            <if test="req.phone != null and req.phone != ''">
+                AND  t2.phone LIKE concat('%',#{req.phone}, '%')
+            </if>
+            <if test="req.status != null and req.status = 1">
+                AND t1.status =1 and t1.endTime &gt;= now()
+            </if>
+            <if test="req.status != null and req.status = 2">
+                AND t1.status =2
+            </if>
+            <if test="req.status != null and req.status = 3">
+                AND t1.status =1 and t1.endTime &lt;= now() and t1.del_flag = 0
+            </if>
+            <if test="req.status != null and req.status = 4">
+                AND t1.del_flag = 0
+            </if>
+        </where>
+        ORDER BY create_time DESC
+    </select>
+
+</mapper>
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml
similarity index 93%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml
index d827753..c8ffb59 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserAddressMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppUserAddressMapper">
+<mapper namespace="com.ruoyi.account.mapper.TAppUserAddressMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppUserAddress">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserCarMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserCarMapper.xml
similarity index 93%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserCarMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserCarMapper.xml
index bfc95ec..3861951 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserCarMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserCarMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppUserCarMapper">
+<mapper namespace="com.ruoyi.account.mapper.TAppUserCarMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppUserCar">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml
similarity index 92%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml
index b5c42c7..ee2ebd2 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserIntegralChangeMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppUserIntegralChangeMapper">
+<mapper namespace="com.ruoyi.account.mapper.TAppUserIntegralChangeMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppUserIntegralChange">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserMapper.xml
similarity index 96%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserMapper.xml
index 747077e..0dad576 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppUserMapper">
+<mapper namespace="com.ruoyi.account.mapper.TAppUserMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppUser">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserSignMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserSignMapper.xml
similarity index 91%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserSignMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserSignMapper.xml
index d0cb7d0..60f857a 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserSignMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserSignMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppUserSignMapper">
+<mapper namespace="com.ruoyi.account.mapper.TAppUserSignMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppUserSign">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserTagMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserTagMapper.xml
similarity index 90%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserTagMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserTagMapper.xml
index c6c4943..e69d184 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TAppUserTagMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppUserTagMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TAppUserTagMapper">
+<mapper namespace="com.ruoyi.account.mapper.TAppUserTagMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TAppUserTag">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TInviteUserMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInviteUserMapper.xml
similarity index 91%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TInviteUserMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInviteUserMapper.xml
index bed9a01..6c95869 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TInviteUserMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInviteUserMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TInviteUserMapper">
+<mapper namespace="com.ruoyi.account.mapper.TInviteUserMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TInviteUser">
diff --git a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml
similarity index 94%
rename from ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml
rename to ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml
index 4cbf9cf..113c0f6 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TInvoiceInformationMapper.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.account.api.mapper.TInvoiceInformationMapper">
+<mapper namespace="com.ruoyi.account.mapper.TInvoiceInformationMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.account.api.model.TInvoiceInformation">
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 0b04b02..a6334e3 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -4,12 +4,15 @@
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.query.GetSiteList;
+import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -25,8 +28,8 @@
 	
 	@Resource
 	private ISiteService siteService;
-	
-	
+
+
 	@ResponseBody
 	@GetMapping("/getSiteList")
 	@ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"})
@@ -34,7 +37,13 @@
 		PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList);
 		return AjaxResult.success(list);
 	}
-	
+
+	@ApiOperation(value = "获取站点分页列表", tags = {"小程序-站点管理"})
+	@PostMapping("/pageList")
+	public AjaxResult<PageInfo<SiteVO>> pageList(@Validated @RequestBody SiteQuery query){
+		return AjaxResult.success(siteService.pageList(query));
+	}
+
 	
 	@ResponseBody
 	@PostMapping("/getSiteList")
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 6777f9e..5a00f21 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
@@ -60,7 +60,7 @@
     public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailByStrategyId(@RequestParam Integer strategyId) {
         List<TAccountingStrategyDetailVO> list = accountingStrategyDetailService.queryAccountingStrategyDetailByStrategyId(strategyId);
         list.forEach(detail -> {
-            detail.setTotalPrice(detail.getCostServiceCharge().add(detail.getElectrovalence()));
+            detail.setTotalPrice(detail.getElectrovalence().add(detail.getElectrovalence()));
         });
         return AjaxResult.ok(list);
     }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
index f4cd149..c58f62a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -1,9 +1,23 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
+import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
+import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
+import com.ruoyi.chargingPile.service.TAccountingStrategyService;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -18,5 +32,34 @@
 @RequestMapping("/t-accounting-strategy-detail")
 public class TAccountingStrategyDetailController {
 
+    private final TAccountingStrategyService accountingStrategyService;
+    private final TAccountingStrategyDetailService accountingStrategyDetailService;
+
+    @Autowired
+    public TAccountingStrategyDetailController(TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+        this.accountingStrategyService = accountingStrategyService;
+        this.accountingStrategyDetailService = accountingStrategyDetailService;
+    }
+
+    /**
+     * 通过电站id查询计费策略明细列表
+     */
+    @ApiOperation(tags = {"小程序-计费策略"},value = "通过站点id查询计费策略明细列表")
+    @GetMapping(value = "/queryAccountingStrategyDetailBySiteId")
+    public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailBySiteId(@RequestParam Integer siteId) {
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class)
+                .eq(TAccountingStrategy::getSiteId, siteId)
+                .last("limit 1"));
+        if(Objects.isNull(accountingStrategy)){
+            throw new ServiceException("未查询到计费策略");
+        }
+        // TODO 修改
+        List<TAccountingStrategyDetailVO> list = accountingStrategyDetailService.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId());
+        list.forEach(detail -> {
+            detail.setTotalPrice(detail.getElectrovalence().add(detail.getElectrovalence()));
+        });
+        return AjaxResult.ok(list);
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index 89f8f04..cbbed2a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -1,6 +1,14 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
+import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
+import com.ruoyi.chargingPile.service.TChargingGunService;
+import com.ruoyi.chargingPile.service.TChargingPileService;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy;
@@ -15,6 +23,11 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * <p>
@@ -26,8 +39,26 @@
  */
 @Api(tags = "充电桩")
 @RestController
-@RequestMapping("/chargingPile")
+@RequestMapping("/t-charging-pile")
 public class TChargingPileController {
+
+    private final TChargingPileService chargingPileService;
+
+    @Autowired
+    public TChargingPileController(TChargingPileService chargingPileService) {
+        this.chargingPileService = chargingPileService;
+    }
+
+    /**
+     * 查询充电桩列表
+     */
+    @ApiOperation(tags = {"小程序-充电桩"},value = "查询充电桩列表")
+    @PostMapping(value = "/list")
+    public AjaxResult<List<TChargingPile>> list(@RequestParam(name = "siteId",value = "站点id",required = false)Integer siteId) {
+        return AjaxResult.ok(chargingPileService.list(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getSiteId,siteId)));
+    }
+
 	
 	@Resource
 	private TChargingPileService chargingPileService;
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java
index bfacc04..a37a427 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java
@@ -1,6 +1,16 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
+import com.ruoyi.chargingPile.service.TChargingPileService;
+import com.ruoyi.chargingPile.service.TFaultMessageService;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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;
 
@@ -16,5 +26,22 @@
 @RequestMapping("/t-fault-message")
 public class TFaultMessageController {
 
+    private final TFaultMessageService faultMessageService;
+
+    @Autowired
+    public TFaultMessageController(TFaultMessageService faultMessageService) {
+        this.faultMessageService = faultMessageService;
+    }
+
+    /**
+     * 添加故障报修管理
+     */
+    @ApiOperation(tags = {"小程序-故障报修"},value = "添加故障报修管理")
+    @PostMapping(value = "/add")
+    public AjaxResult<Boolean> add(@Validated @RequestBody TFaultMessage dto) {
+        return AjaxResult.ok(faultMessageService.save(dto));
+    }
+
+
 }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
index 42263de..7fae91b 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
@@ -4,6 +4,8 @@
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.query.GetSiteList;
+import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
 import com.ruoyi.common.core.web.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 
@@ -23,4 +25,11 @@
 	 * @return
 	 */
 	List<GetSiteListDTO> getSiteList(PageInfo<GetSiteListDTO> pageInfo, @Param("item") GetSiteList siteList);
+
+	/**
+	 * 获取站点分页列表
+	 * @return
+	 */
+	List<SiteVO> pageList(@Param("query")SiteQuery query,@Param("pageInfo")PageInfo<SiteVO> pageInfo);
+
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
index 5f8d3e5..98220eb 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -6,6 +6,9 @@
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.query.GetSiteList;
+import com.ruoyi.chargingPile.api.query.SiteQuery;
+import com.ruoyi.chargingPile.api.vo.SiteVO;
+import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
 import com.ruoyi.chargingPile.mapper.SiteMapper;
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TChargingGunService;
@@ -151,6 +154,14 @@
 		this.updateById(site);
 		return AjaxResult.success();
 	}
+
+	@Override
+	public PageInfo<SiteVO> pageList(SiteQuery query) {
+		PageInfo<SiteVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
+		List<SiteVO> list = this.baseMapper.pageList(query,pageInfo);
+		pageInfo.setRecords(list);
+		return pageInfo;
+	}
 	
 	
 	/**
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
index bfb411a..ba0802e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -7,7 +7,7 @@
 		<id column="id" property="id" />
 		<result column="partner_id" property="partnerId" />
 		<result column="`code`" property="code" />
-		<result column="name" property="name" />
+		<result column="`name`" property="name" />
 		<result column="site_type" property="siteType" />
 		<result column="business_category" property="businessCategory" />
 		<result column="status" property="status" />
@@ -41,7 +41,11 @@
 		<result column="create_time" property="createTime" />
 		<result column="del_flag" property="delFlag" />
 	</resultMap>
-	
+
+	<!-- 通用查询结果列 -->
+	<sql id="Base_Column_List">
+		id, partner_id, code, `name`, site_type, business_category, status, construction_site, img_url, province, province_code, city, city_code, districts, districts_code, lon, lat, address, country_code, phone, service_phone, guide, start_service_time, end_service_time, service_description, vehicle_description, parking_space, rate_description, space_charge_explain, accounting_strategy_id, establishment_time, sort, remark, create_time, del_flag, mark
+	</sql>
 	
 	<select id="getSiteList" resultType="com.ruoyi.chargingPile.api.dto.GetSiteListDTO">
 		select
@@ -92,4 +96,76 @@
 		</if>
 		order by a.sort desc, a.create_time desc limit #{item.pageCurr}, #{item.pageSize}
 	</select>
+
+	<select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.SiteVO">
+		select
+		ts.id, ts.partner_id, ts.code, ts.`name`, ts.site_type, ts.business_category, ts.status, ts.construction_site, ts.img_url,
+		ts.lon, ts.lat, ts.address, ts.country_code, ts.phone,ts.guide, ts.service_description, ts.vehicle_description,
+		ts.parking_space, ts.rate_description, ts.space_charge_explain, ts.accounting_strategy_id,ts.del_flag,tcg.fastCount,
+		tcg.slowCount,tcg.superCount,tasd.electrovalence,tasd.vipElectrovalence,
+		ROUND(
+		6378.138 * 2 * ASIN(
+		SQRT(
+		POW(
+		SIN(
+		(
+		#{query.lat} * PI() / 180 - ts.lat * PI() / 180
+		) / 2
+		),
+		2
+		) + COS(#{query.lat} * PI() / 180) * COS(ts.lat * PI() / 180) * POW(
+		SIN(
+		(
+		#{query.lon} * PI() / 180 - ts.lon * PI() / 180
+		) / 2
+		),
+		2
+		)
+		)
+		) * 1000
+		) AS distance
+		from t_site ts
+		left join (
+		select site_id,
+			SUM(CASE WHEN charge_mode = 1 THEN 1 ELSE 0 END) AS superCount,
+			SUM(CASE WHEN charge_mode = 2 THEN 1 ELSE 0 END) AS fastCount,
+			SUM(CASE WHEN charge_mode = 3 THEN 1 ELSE 0 END) AS slowCount
+		from
+		    t_charging_gun
+		where
+		    del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+		group by
+		    site_id) tcg on (ts.id = tcg.site_id)
+		left join (
+		select
+		    a.accounting_strategy_id,
+			(a.electrovalence+a.service_charge) AS electrovalence,
+			((a.electrovalence+a.service_charge)*a.discount) AS vipElectrovalence
+		from
+		    t_accounting_strategy_detail a
+		left join
+		        t_accounting_strategy b on (a.accounting_strategy_id = b.id)
+		where b.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+		AND DATE_FORMAT(NOW(), '%H:%i:%s') between b.start_time and b.end_time) tasd on (ts.accounting_strategy_id = tasd.accounting_strategy_id)
+		<where>
+			<if test="null != query.name and '' != query.name">
+				and ts.`name` like CONCAT('%', #{query.name}, '%')
+			</if>
+			AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+			AND ts.status = ${@com.ruoyi.common.core.enums.SiteStatusEnum@NORMAL_USE.getCode()}
+		</where>
+		<if test="query.sortType != null">
+			<choose>
+				<when test="query.sortType == 1">
+					ORDER BY ts.distance ASC
+				</when>
+				<when test="query.sortType == 2">
+					ORDER BY tasd.electrovalence ASC
+				</when>
+				<when test="query.sortType == 3">
+					ORDER BY (tcg.fastCount + tcg.slowCount + tcg.superCount) DESC
+				</when>
+			</choose>
+		</if>
+	</select>
 </mapper>
\ No newline at end of file
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 50e1818..2c37b8b 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
@@ -1,9 +1,16 @@
 package com.ruoyi.order.controller;
 
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.service.TChargingOrderService;
 import io.swagger.annotations.Api;
+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 javax.annotation.Resource;
 
 /**
  * <p>
@@ -18,5 +25,15 @@
 @RequestMapping("/t-charging-order")
 public class TChargingOrderController {
 
+    @Resource
+    private TChargingOrderService chargingOrderService;
+
+    @PostMapping(value = "/useOrderCount")
+    public R<Long> useOrderCount(@RequestParam Long userId) {
+        Long count = chargingOrderService.lambdaQuery().eq(TChargingOrder::getAppUserId, userId).count();
+
+        return R.ok(count);
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
index 446c350..5b79243 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -15,6 +15,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -35,10 +36,10 @@
     private TExchangeOrderService exchangeOrderService;
     /**
      * 管理后台 根据商品ids 查询对应的销量
-     * @param goodsIds
+     * @param goodsIds  订单号-商品类型
      * @return
      */
-    @PostMapping("/t-exchange-order/getSalesCountByGoodsIds")
+    @PostMapping("/getSalesCountByGoodsIds")
     public R<List<Integer>> getSalesCountByGoodsId(String goodsIds){
         String[] split = goodsIds.split("-");
         // 取出最后一位字符 类型1查询现金购买 类型2查询积分兑换
@@ -47,13 +48,11 @@
         switch (Integer.parseInt(s)){
             case 1:
                 for (int i = 0; i < split.length-1; i++) {
-
                     Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>()
                                     .eq("goods_id", split[i])
                                     .eq("payment_status", 2)
                                     .ne("refund_status", 2))
                             .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum);
-
                     res.add(reduce);
                 }
                 break;
@@ -63,14 +62,56 @@
                                     .eq("goods_id", split[i])
                                     )
                             .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum);
-
                     res.add(reduce);
                 }
                 break;
         }
-
-
         return R.ok(res);
     }
+    /**
+     * 管理后台 根据t_app_coupon流水号查询现金优惠券的订单编号
+     * @param goodsIds  订单号-商品类型
+     * @return
+     */
+    @PostMapping("/getCodeBySerialNumber")
+    public R<List<String>> getCodeBySerialNumber(String goodsIds){
+        String[] split = goodsIds.split("-");
+        List<String> strings = new ArrayList<>();
+        for (String s : split) {
+            TShoppingOrder one = tShoppingOrderService.getOne(new QueryWrapper<TShoppingOrder>()
+                    .eq("order_type", 2)
+                    .eq("serial_number", s));
+            if (one != null){
+                strings.add(one.getCode());
+            }else{
+                strings.add("");
+            }
+        }
+
+        return R.ok(strings);
+    }
+    /**
+     * 管理后台 根据t_app_coupon流水号查询积分兑换优惠券的订单编号
+     * @param goodsIds  订单号-商品类型
+     * @return
+     */
+    @PostMapping("/getCodeBySerialNumberIntegral")
+    public R<List<String>> getCodeBySerialNumberIntegral(String goodsIds){
+        String[] split = goodsIds.split("-");
+        List<String> strings = new ArrayList<>();
+        for (String s : split) {
+            TExchangeOrder one = exchangeOrderService.getOne(new QueryWrapper<TExchangeOrder
+                    >()
+                    .eq("order_type", 2)
+                    .eq("serial_number", s));
+            if (one != null){
+                strings.add(one.getCode());
+            }else{
+                strings.add("");
+            }
+        }
+
+        return R.ok(strings);
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-other/pom.xml b/ruoyi-service/ruoyi-other/pom.xml
index 5804ec5..9d8bc09 100644
--- a/ruoyi-service/ruoyi-other/pom.xml
+++ b/ruoyi-service/ruoyi-other/pom.xml
@@ -23,6 +23,12 @@
         </dependency>
         <dependency>
             <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-account</artifactId>
+            <version>3.6.2</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-api-other</artifactId>
             <version>3.6.2</version>
             <scope>compile</scope>
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCompanyController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCompanyController.java
index 83a51af..66c00cb 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCompanyController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCompanyController.java
@@ -53,5 +53,11 @@
         return R.ok();
     }
 
+    @PostMapping(value = "/unit/delete")
+    public R<TCompany> delete(@RequestParam Integer id) {
+
+
+        return R.ok( companyService.getById(id));
+    }
 }
 
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 c3b447b..7462917 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
@@ -1,9 +1,21 @@
 package com.ruoyi.other.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.account.api.feignClient.AppCouponClient;
+import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
+import com.ruoyi.account.api.vo.ExchangeRecordVO;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
+import com.ruoyi.other.api.dto.GoodsDTO;
+import com.ruoyi.other.query.CouponQuery;
+import com.ruoyi.other.service.TActivityService;
+import com.ruoyi.other.service.TCouponService;
+import com.ruoyi.other.service.TGoodsService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -16,6 +28,49 @@
 @RestController
 @RequestMapping("/t-coupon")
 public class TCouponController {
+    @Autowired
+    private TCouponService tCouponService;
 
+    @Autowired
+    private AppCouponClient appCouponClient;
+    @PostMapping("/saveGoods")
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券添加")
+    public AjaxResult saveActivity(@RequestBody TCoupon dto) {
+        tCouponService.save(dto);
+        return AjaxResult.success();
+    }
+    @GetMapping("/delete")
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券删除")
+    public AjaxResult delete(Integer id) {
+        tCouponService.removeById(id);
+        return AjaxResult.success();
+    }
+    @PostMapping("/updateVip")
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券修改")
+    public AjaxResult updateActivity(@RequestBody TCoupon dto) {
+        tCouponService.updateById(dto);
+        return AjaxResult.success();
+    }
+    @GetMapping("/getInfo")
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情")
+    public AjaxResult<TCoupon> getInfo(Integer id) {
+        TCoupon byId = tCouponService.getById(id);
+        // 查询累计发放数量
+        byId.setCount(appCouponClient.getCountByCouponIds(String.valueOf(id)).getData().get(0));
+        // 查询累计使用数量
+        byId.setUseCount(appCouponClient.getUseCountByCouponId(id).getData());
+        return AjaxResult.ok(byId);
+    }
+    @PostMapping("/exchangeRecord")
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情-兑换记录")
+    public AjaxResult<PageInfo<ExchangeRecordVO>> exchangeRecord(@RequestBody ExchangeRecordGoodsQuery dto) {
+
+        return AjaxResult.ok(null);
+    }
+    @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询")
+    @PostMapping(value = "/pageList")
+    public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) {
+        return AjaxResult.ok(tCouponService.pageList(dto));
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserTagController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserTagController.java
index 1ce47ac..a224192 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserTagController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserTagController.java
@@ -13,6 +13,9 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -28,6 +31,7 @@
     @Resource
     private TUserTagService tUserTagService;
 
+    //标签分页
     @PostMapping(value = "/page")
     public R<Page<TUserTag>> page(@RequestBody TagListQueryDto tagListQueryDto) {
         Page<TUserTag> page = tUserTagService.lambdaQuery()
@@ -37,20 +41,40 @@
         return R.ok(page);
 
     }
-
+    //标签新增修改
     @PostMapping(value = "/addorUpdateTag")
     public R addorUpdateTag(@RequestBody TUserTag tUserTag) {
         tUserTag.setCreateTime(LocalDateTime.now());
         tUserTagService.saveOrUpdate(tUserTag);
         return R.ok();
     }
-
+    //标签删除
     @PostMapping(value = "/delete")
     public R delete(@RequestParam Integer id) {
         tUserTagService.removeById(id);
         return R.ok();
     }
 
+    //获取标签map
+    @PostMapping(value = "/getTagMap")
+    public R<Map<Integer, String>> getTagMap(@RequestBody List<Integer> ids) {
+
+        List<TUserTag> list = tUserTagService.lambdaQuery().in(!ids.isEmpty(), TUserTag::getId, ids).list();
+        Map<Integer, String> idNameMap = list.stream()
+                .collect(Collectors.toMap(
+                        TUserTag::getId,
+                        TUserTag::getName
+                ));
+        return R.ok(idNameMap);
+    }
+
+    @PostMapping(value = "/getById")
+    public R<TUserTag> getById(@RequestParam Integer id) {
+
+        return R.ok(tUserTagService.getById(id));
+    }
+
+
 
 }
 
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 0a1e9a1..b2f94b8 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
@@ -5,6 +5,7 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.other.api.domain.TIntegralRule;
+import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.service.TVipService;
 import io.swagger.annotations.ApiImplicitParam;
@@ -13,6 +14,10 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -60,5 +65,18 @@
         return AjaxResult.ok(vipService.pageList(pageCurr,pageSize));
     }
 
+    //获取会员Map
+    @PostMapping(value = "/getVipMap")
+    public R<Map<Integer, String>> getVipMap(@RequestBody List<Integer> ids) {
+
+        List<TVip> list = vipService.lambdaQuery().in(!ids.isEmpty(), TVip::getId, ids).list();
+        Map<Integer, String> idNameMap = list.stream()
+                .collect(Collectors.toMap(
+                        TVip::getId,
+                        TVip::getName
+                ));
+        return R.ok(idNameMap);
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TCouponMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TCouponMapper.java
index d2927d2..314216a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TCouponMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TCouponMapper.java
@@ -1,7 +1,14 @@
 package com.ruoyi.other.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
+import com.ruoyi.other.api.dto.GoodsDTO;
+import com.ruoyi.other.query.CouponQuery;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +20,5 @@
  */
 public interface TCouponMapper extends BaseMapper<TCoupon> {
 
+    List<TCoupon> pageList(@Param("pageInfo")PageInfo<TCoupon> pageInfo, @Param("req") CouponQuery dto);
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/CouponQuery.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/CouponQuery.java
new file mode 100644
index 0000000..e7e39e1
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/CouponQuery.java
@@ -0,0 +1,22 @@
+package com.ruoyi.other.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("优惠券列表查询DTO")
+public class CouponQuery extends BasePage {
+
+    @ApiModelProperty(value = "优惠券名称")
+    private String name;
+    @ApiModelProperty(value = "类型 1充电优惠券 2购物优惠券")
+    private Integer type;
+    @ApiModelProperty(value = "获得方式(1=积分兑换,2=现金购买)")
+    private Integer waysToObtain;
+    @ApiModelProperty(value = "启用状态 1启用 2禁用")
+    private Integer status;
+
+
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TCouponService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TCouponService.java
index cfe2ac7..525df99 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TCouponService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TCouponService.java
@@ -1,7 +1,10 @@
 package com.ruoyi.other.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
+import com.ruoyi.other.query.CouponQuery;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface TCouponService extends IService<TCoupon> {
 
+    PageInfo<TCoupon> pageList(CouponQuery dto);
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TCouponServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TCouponServiceImpl.java
index eb7892a..fe34127 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TCouponServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TCouponServiceImpl.java
@@ -1,10 +1,18 @@
 package com.ruoyi.other.service.impl;
 
+import com.ruoyi.account.api.feignClient.AppCouponClient;
+import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
 import com.ruoyi.other.mapper.TCouponMapper;
+import com.ruoyi.other.query.CouponQuery;
 import com.ruoyi.other.service.TCouponService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +25,25 @@
 @Service
 public class TCouponServiceImpl extends ServiceImpl<TCouponMapper, TCoupon> implements TCouponService {
 
+    @Autowired
+    private AppCouponClient appCouponClient;
+    @Override
+    public PageInfo<TCoupon> pageList(CouponQuery dto) {
+        PageInfo<TCoupon> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+        List<TCoupon> list = this.baseMapper.pageList(pageInfo,dto);
+        StringBuilder couponIds = new StringBuilder();
+        for (TCoupon tCoupon : list) {
+            couponIds.append(tCoupon.getId()).append(",");
+        }
+        if (StringUtils.hasLength(couponIds)){
+            // 去除最后一个字符
+            couponIds.deleteCharAt(couponIds.length()-1);
+        }
+        List<Integer> data = appCouponClient.getCountByCouponIds(couponIds.toString()).getData();
+        for (int i = 0; i < list.size(); i++) {
+            list.get(i).setCount(data.get(i));
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
index f74785a..f0de342 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
@@ -45,6 +45,7 @@
             return pageInfo;
         }
         String string = stringBuilder.toString();
+        // 订单号加上商品类型
         String res = string+"-"+dto.getType();
 
         List<Integer> data = orderClient.getSalesCountByGoodsId(res).getData();
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/TCouponMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/TCouponMapper.xml
index 762311f..517753e 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/TCouponMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/TCouponMapper.xml
@@ -32,5 +32,24 @@
     <sql id="Base_Column_List">
         id, type, name, preferential_mode, discount_amount, meet_the_conditions, discount, maximum_discount_amount, inventory_quantity, validity_period_mode, end_time, days, ways_to_obtain, redeem_points, exchange_limit, payment_amount, vip_payment_amount, explain, remark, status, create_time, del_flag
     </sql>
+    <select id="pageList" resultType="com.ruoyi.other.api.domain.TCoupon">
+        select * from t_coupon
+        <where>
+            <if test="req.name != null and req.name != ''">
+                AND  `name` LIKE concat('%',#{req.name}, '%')
+            </if>
+            <if test="req.type != null">
+                AND  `type` = #{req.type}
+            </if>
+            <if test="req.status != null">
+                AND  status = #{req.status}
+            </if>
+            <if test="req.waysToObtain != null">
+                AND  ways_to_obtain = #{req.waysToObtain}
+            </if>
+            AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        </where>
+        ORDER BY create_time DESC
+    </select>
 
 </mapper>

--
Gitblit v1.7.1