From 5a22de857470ed18e993260e2cf3a38a1a43de7e Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 19 八月 2024 17:13:38 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java                                      |   25 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/SendCouponDto.java                                       |    9 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java                            |   51 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                          |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java                                        |    7 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java                                |    8 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java                                     |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java                                  |    6 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java                                       |    5 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java                                   |    5 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/config/DataUpdateHandlerConfig.java                                  |    8 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java                                       |    7 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java                 |   11 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java                                    |    5 
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/config/DataUpdateHandlerConfig.java                              |    7 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java                                    |   55 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java                 |    3 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java                                    |    5 
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                                                      |   37 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java                 |    9 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                                          |    9 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java                               |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java                                      |    6 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java                                     |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java                 |    7 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java                                      |   24 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/req/SubmitTempletReq.java                           |   47 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java                          |    6 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java                            |    4 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java                                        |  163 ++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java |   55 +
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                                                |   17 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserAddressClient.java                        |    6 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java          |   29 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java                  |   11 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                               |  205 +++-
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java                                  |    5 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java                                      |  311 +++++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java                            |    9 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java                               |   21 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java                                 |    4 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java                                |   35 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java                                        |  131 +++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseDelete.java                                |   14 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java                               |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java                                              |   35 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java                                     |   15 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java                          |    5 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java                                    |    5 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/config/DataUpdateHandlerConfig.java                      |    7 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java                                       |   35 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java                                     |   17 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java                                 |   20 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java                          |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java                                       |   70 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java                 |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java                          |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java                     |    9 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java                   |    5 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java                                            |   96 ++
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml                        |    3 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java                            |    3 
 ruoyi-auth/pom.xml                                                                                                           |    6 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java                        |   13 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TMonitoringEquipmentController.java         |    7 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java                                  |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCompanyController.java                                   |    5 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java           |    9 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TMonitoringEquipment.java                    |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java                                    |   64 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java           |   18 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml                       |    6 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml                                           |    6 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java                                        |   28 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/DataUpdateHandlerConfig.java                                  |    7 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java                                            |   10 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java                               |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java      |   13 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java                             |    5 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java                                |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java                            |    1 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java                                               |   54 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java                                   |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/NoticeQueryDto.java                                          |   12 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/DataUpdateHandlerConfig.java                              |    7 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java                      |    7 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java                                  |   17 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java                               |   38 
 /dev/null                                                                                                                    |  122 ---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java                                  |   10 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java                                     |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java                      |   31 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java                             |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java                       |   15 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java                                      |   22 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java                               |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java                   |   60 +
 97 files changed, 1,959 insertions(+), 402 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
new file mode 100644
index 0000000..28613f6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
@@ -0,0 +1,25 @@
+package com.ruoyi.account.api.dto;
+
+import com.ruoyi.account.api.model.TAppUserCar;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class AppUserInfoDto {
+    @ApiModelProperty("1是0否")
+    private Integer isVip;
+    @ApiModelProperty("vip结束时间")
+    private LocalDateTime vipExpireTime;
+    @ApiModelProperty("当天是否签到")
+    private Integer isSign;
+    @ApiModelProperty("当前积分")
+    private Integer points;
+    @ApiModelProperty("当前优惠卷数量")
+    private Integer couponNum;
+    @ApiModelProperty("当前绑定的车辆")
+    private List<TAppUserCar> userCars;
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
new file mode 100644
index 0000000..1af4b89
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
@@ -0,0 +1,35 @@
+package com.ruoyi.account.api.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class InfoCouponDto {
+    @ApiModelProperty(value = "优惠券名称")
+    @TableField("name")
+    private String name;
+    @ApiModelProperty(value = "优惠方式(1=满减,2=抵扣)")
+    @TableField("preferential_mode")
+    private Integer preferentialMode;
+
+    @ApiModelProperty(value = "优惠金额")
+    @TableField("discount_amount")
+    private BigDecimal discountAmount;
+    @ApiModelProperty(value = "满减条件为0时无条件")
+    @TableField("meet_the_conditions")
+    private BigDecimal meetTheConditions;
+
+    @ApiModelProperty(value = "折扣")
+    @TableField("discount")
+    private BigDecimal discount;
+    @ApiModelProperty(value = "结束时间")
+    @TableField("end_time")
+    private LocalDateTime endTime;
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private LocalDateTime startTime;
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/SendCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/SendCouponDto.java
new file mode 100644
index 0000000..0489150
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/SendCouponDto.java
@@ -0,0 +1,9 @@
+package com.ruoyi.account.api.dto;
+
+import lombok.Data;
+
+@Data
+public class SendCouponDto {
+    private Integer id;
+    private Integer number;
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java
new file mode 100644
index 0000000..b393bf8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.account.api.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "UpdatePhoneDTO对象",description = "更换手机号DTO")
+public class UpdatePhoneDTO implements Serializable {
+
+    @ApiModelProperty(value = "手机号")
+    @NotBlank(message = "手机号不能为空")
+    private String phone;
+
+    @ApiModelProperty(value = "验证码")
+    @NotBlank(message = "验证码不能为空")
+    private String code;
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
index e89e3b6..b811b76 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -41,6 +41,11 @@
             }
 
             @Override
+            public R<TAppUser> selectByPhone(String phone) {
+                return R.fail("通过手机号查询用户失败:"+throwable.getMessage());
+            }
+
+            @Override
             public R<List<TAppUser>> getUserByIds(List<Long> appUserIds) {
                 return R.fail("根据用户id查询用户信息失败:"+throwable.getMessage());
             }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserAddressClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserAddressClient.java
index b284de8..a500ccb 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserAddressClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserAddressClient.java
@@ -5,7 +5,7 @@
 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.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 
 /**
@@ -21,6 +21,6 @@
 	 * @param id
 	 * @return
 	 */
-	@PostMapping("/t-app-user-address/getAppUserAddressById")
-	R<TAppUserAddress> getAppUserAddressById(Long id);
+	@PostMapping("/t-app-user-address/getAppUserAddressById/{id}")
+	R<TAppUserAddress> getAppUserAddressById(@PathVariable("id") Long id);
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 9812ddd..a408ac7 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -6,10 +6,7 @@
 import com.ruoyi.common.core.domain.R;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -37,11 +34,19 @@
      * @param id
      * @return
      */
-    @PostMapping(value = "/t-app-user/user/getUserById")
-    R<TAppUser> getUserById(Long id);
+    @PostMapping(value = "/t-app-user/user/getUserById/{id}")
+    R<TAppUser> getUserById(@PathVariable("id") Long id);
     
     
     
-    @PostMapping("/t-app-user/")
-    R updateAppUser(TAppUser appUser);
+    @PostMapping("/t-app-user/user/updateAppUser")
+    R updateAppUser(@RequestBody TAppUser appUser);
+
+    /**
+     * 通过手机号查询用户
+     * @param phone
+     * @return
+     */
+    @GetMapping("/t-app-user/user/selectByPhone")
+    R<TAppUser> selectByPhone(@RequestParam("phone") String phone);
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
index 2c86199..eed0fbd 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * @author zhibing.pu
@@ -20,5 +21,5 @@
 	 * @return
 	 */
 	@PostMapping("/t-app-user-integral-change/addAppUserIntegralChange")
-	R addAppUserIntegralChange(TAppUserIntegralChange appUserIntegralChange);
+	R addAppUserIntegralChange(@RequestBody TAppUserIntegralChange appUserIntegralChange);
 }
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 0f6d8d1..b3bea84 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
@@ -45,6 +45,9 @@
     @ApiModelProperty(value = "结束时间")
     @TableField("end_time")
     private LocalDateTime endTime;
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private LocalDateTime startTime;
 
     @ApiModelProperty(value = "获得方式(1=积分兑换,2=现金购买)")
     @TableField("ways_to_obtain")
@@ -77,6 +80,10 @@
     @TableField("orderId")
     private Long orderId;
 
+    @ApiModelProperty(value = "当前领取优惠卷的json记录")
+    @TableField("coupon_json")
+    private String couponJson;
+
 
 
 }
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
index 9ca255a..577fc54 100644
--- 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
@@ -9,6 +9,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -38,6 +39,16 @@
     @TableField("charge_num")
     private Integer chargeNum;
 
+
+
+    @ApiModelProperty(value = "购买时折扣金额")
+    @TableField("discount_money")
+    private BigDecimal discountMoney;
+
+    @ApiModelProperty(value = "该会员记录应赠送的充电次数")
+    @TableField("send_charge_num")
+    private Integer sendChargeNum;
+
     @ApiModelProperty(value = "会员id")
     @TableField("vip_id")
     private Integer vipId;
@@ -53,5 +64,14 @@
     @TableField("create_time")
     private LocalDateTime createTime;
 
+    @ApiModelProperty(value = "已赠送的月份")
+    @TableField("send_month")
+    private Integer sendMonth;
+
+
+    @ApiModelProperty(value = "要赠送的优惠卷")
+    @TableField("coupon_ids")
+    private String couponIds;
+
 
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
index 015c04b..149625a 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 
 /**
@@ -20,8 +21,8 @@
 	 * @param id
 	 * @return
 	 */
-	@PostMapping("/t-charging-gun/getAllName")
-	R<String> getAllName(Integer id);
+	@PostMapping("/t-charging-gun/getAllName/{id}")
+	R<String> getAllName(@PathVariable("id") Integer id);
 	
 	
 	/**
@@ -29,6 +30,6 @@
 	 * @param id
 	 * @return
 	 */
-	@PostMapping("/t-charging-gun/getChargingGunById")
-	R<TChargingGun> getChargingGunById(Integer id);
+	@PostMapping("/t-charging-gun/getChargingGunById/{id}")
+	R<TChargingGun> getChargingGunById(@PathVariable("id") Integer id);
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TMonitoringEquipment.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TMonitoringEquipment.java
index 792a76c..8754310 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TMonitoringEquipment.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TMonitoringEquipment.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.web.domain.BasePojo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -52,5 +53,12 @@
     @ApiModelProperty(value = "监控链接")
     @TableField("url_link")
     private String urlLink;
+    @ApiModelProperty(value = "状态 1=正常 0=离线")
+    @TableField("status")
+    private Integer status;
+    @ApiModelProperty(value = "故障时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField("faultTime")
+    private LocalDateTime faultTime;
 
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java
index e65f182..5e7a7ff 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/TAccountingStrategyVO.java
@@ -16,4 +16,11 @@
     @ApiModelProperty(value = "计费策略明细集合")
     private List<TAccountingStrategyDetail> accountingStrategyDetailList;
 
+    @ApiModelProperty(value = "一級审核人员")
+    private String firstUserName;
+
+    @ApiModelProperty(value = "二級审核人员")
+    private String twoUserName;
+
+
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
index c9ede24..5d51fbc 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -26,8 +27,8 @@
 	 * @param days 天数
 	 * @return
 	 */
-	@PostMapping("/t-charging-order-accounting-strategy/getTotalElectricQuantity")
-	R<List<List<Map<String, Object>>>> getTotalElectricQuantity(Integer days, @RequestParam("siteIds") Set<Integer> siteIds);
+	@PostMapping("/t-charging-order-accounting-strategy/getTotalElectricQuantity/{days}")
+	R<List<List<Map<String, Object>>>> getTotalElectricQuantity(@PathVariable("days") Integer days, @RequestParam("siteIds") Set<Integer> siteIds);
 	
 	
 	/**
@@ -35,6 +36,6 @@
 	 * @param days
 	 * @return
 	 */
-	@PostMapping("/t-charging-order-getDailyChargingDegree-strategy/getUtilizationTrend")
-	R<List<Double>> getDailyChargingDegree(Integer days, @RequestParam("siteIds") Set<Integer> siteIds);
+	@PostMapping("/t-charging-order-getDailyChargingDegree-strategy/getUtilizationTrend/{days}")
+	R<List<Double>> getDailyChargingDegree(@PathVariable("days") Integer days, @RequestParam("siteIds") Set<Integer> siteIds);
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/NoticeQueryDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/NoticeQueryDto.java
new file mode 100644
index 0000000..879c7cd
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/NoticeQueryDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.other.api.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class NoticeQueryDto extends BasePage {
+    private String content;
+    @ApiModelProperty("0未开始1已开始2已结束")
+    private Integer status;
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java
new file mode 100644
index 0000000..f725386
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java
@@ -0,0 +1,10 @@
+package com.ruoyi.other.api.dto;
+
+import com.ruoyi.other.api.domain.TCoupon;
+import lombok.Data;
+
+@Data
+public class VipCouponDto {
+    private TCoupon tCoupon;
+    private Integer num;
+ }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java
new file mode 100644
index 0000000..0783c96
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java
@@ -0,0 +1,35 @@
+package com.ruoyi.other.api.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.License;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+@Data
+public class VipInfoDto {
+
+    @ApiModelProperty("月卡价格")
+    private BigDecimal monthlyCard;
+    @ApiModelProperty("季卡价格")
+    private BigDecimal seasonCard;
+    @ApiModelProperty("年卡价格")
+    private BigDecimal annualCard;
+    @ApiModelProperty("最高抵扣价格")
+    private BigDecimal maximumDeduction;
+    @ApiModelProperty("抵扣次数")
+    private Integer discountTimes;
+
+    @ApiModelProperty(value = "双倍积分开关(0=否,1=是)")
+    private Integer doubleIntegration;
+
+    @ApiModelProperty(value = "商城专享价开关(0=否,1=是)")
+    private Integer mallExclusivePrice;
+    @ApiModelProperty(value = "可赠送的优惠卷列表")
+
+    private List<VipCouponDto> vipCouponDtos;
+
+    @ApiModelProperty(value = "最高总折扣")
+    private BigDecimal totalDiscount;
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java
index f5821e7..452dadb 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java
@@ -25,7 +25,7 @@
 		return new CouponClient() {
 			
 			@Override
-			public R<TCoupon> getCouponById(Integer id) {
+			public R<TCoupon> getCouponById1(Integer id) {
 				return R.fail("根据id获取优惠券信息失败:" + throwable.getMessage());
 			}
 		};
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 4099d98..0070fdc 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,6 +6,7 @@
 import com.ruoyi.account.api.vo.CouponListVOVO;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TCompany;
+import com.ruoyi.other.api.domain.TCoupon;
 import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.feignClient.OtherClient;
 import org.slf4j.Logger;
@@ -28,7 +29,7 @@
 
     @Override
     public OtherClient create(Throwable throwable) {
-        log.error("商品调用失败:{}", throwable.getMessage());
+        log.error("单位用失败:{}", throwable.getMessage());
         return new OtherClient() {
 
             @Override
@@ -85,6 +86,11 @@
             public R<List<CouponListVOVO>> getCouponInfoByCouponIds(List<CouponListVOVO> list) {
                 return R.fail("我的优惠券列表获取信息:"+throwable.getMessage());
             }
+
+            @Override
+            public R<TCoupon> getCouponById(Integer id) {
+                return R.fail("查询优惠卷:"+throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
index a4e1f0a..8a3cf05 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
@@ -1,6 +1,7 @@
 package com.ruoyi.other.api.factory;
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.feignClient.VipClient;
 import org.slf4j.Logger;
@@ -28,6 +29,10 @@
                 return R.fail("获取最高抵扣、最低起步价,最高折扣的会员失败:" + throwable.getMessage());
 
             }
+            @Override
+            public R<TVip> getInfo(Integer type) {
+                return null;
+            }
 
             @Override
             public R<TVip> getInfo1(Integer id) {
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
index f2f6fd6..c4ede7f 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.other.api.factory.CouponFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 
 /**
@@ -21,6 +22,6 @@
 	 * @param id
 	 * @return
 	 */
-	@PostMapping("/t-coupon/getCouponById")
-	R<TCoupon> getCouponById(Integer id);
+	@PostMapping("/t-coupon/getCouponById1/{id}")
+	R<TCoupon> getCouponById1(@PathVariable("id") Integer id);
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
index 05c44ec..1f338d3 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.other.api.factory.GoodsFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 
 /**
@@ -20,6 +21,6 @@
 	 * @param id
 	 * @return
 	 */
-	@PostMapping("/t-goods/getGoodsById")
-	R<TGoods> getGoodsById(Integer id);
+	@PostMapping("/t-goods/getGoodsById/{id}")
+	R<TGoods> getGoodsById(@PathVariable("id") Integer id);
 }
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 2fe5930..1550b79 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,6 +7,7 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TCompany;
+import com.ruoyi.other.api.domain.TCoupon;
 import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.factory.OtherFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -64,6 +65,10 @@
     R<List<CouponListVOVO>> getCouponInfoByCouponIds(@RequestBody List<CouponListVOVO> list);
 
 
+    @PostMapping(value = "/t-coupon/getCouponById")
+    R<TCoupon> getCouponById(@RequestParam("id") Integer id);
+
+
 
 
 
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java
index 04d7594..c230ce7 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java
@@ -33,13 +33,13 @@
 	 * @return
 	 */
 	@PostMapping("/t-role-site/addRoleSite")
-	R addRoleSite(List<TRoleSite> roleSites);
+	R addRoleSite(@RequestBody List<TRoleSite> roleSites);
 	
 	/**
 	 * 删除角色站点数据
 	 * @param roleId
 	 * @return
 	 */
-	@DeleteMapping("/t-role-site/delRoleSite")
-	R delRoleSite(Long roleId);
+	@DeleteMapping("/t-role-site/delRoleSite/{roleId}")
+	R delRoleSite(@PathVariable("roleId") Long roleId);
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
index ea305af..8fe1f2c 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
@@ -8,6 +8,7 @@
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 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;
@@ -34,5 +35,5 @@
 	 * @return
 	 */
 	@PostMapping("/t-evaluation-tag/getListByIds")
-	R<List<TEvaluationTag>> getListByIds(List<Integer> tagIds);
+	R<List<TEvaluationTag>> getListByIds(@RequestBody List<Integer> tagIds);
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java
index 68d0746..cd9ba7b 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java
@@ -6,10 +6,7 @@
 import com.ruoyi.other.api.factory.UserSiteFallbackFactory;
 import org.apache.ibatis.annotations.Delete;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -26,8 +23,8 @@
 	 * @param userId
 	 * @return
 	 */
-	@PostMapping("/t-user-site/getSiteIds")
-	R<List<Integer>> getSiteIds(Long userId);
+	@PostMapping("/t-user-site/getSiteIds/{userId}")
+	R<List<Integer>> getSiteIds(@PathVariable("userId") Long userId);
 	
 	
 	/**
@@ -35,8 +32,8 @@
 	 * @param userSite
 	 * @return
 	 */
-	@PostMapping("/t-user-site/getSiteIds")
-	R addUserSite(List<TUserSite> userSite);
+	@PostMapping("/t-user-site/addUserSite")
+	R addUserSite(@RequestBody List<TUserSite> userSite);
 	
 	
 	/**
@@ -44,6 +41,6 @@
 	 * @param userId
 	 * @return
 	 */
-	@DeleteMapping("/t-user-site/delUserSite")
-	R delUserSite(Long userId);
+	@DeleteMapping("/t-user-site/delUserSite/{userId}")
+	R delUserSite(@PathVariable("userId") Long userId);
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
index 763a217..b2ca8d3 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.factory.VipFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -31,4 +32,8 @@
      */
     @PostMapping("/vip/getInfo1")
     public R<TVip> getInfo1(@RequestParam("id") Integer id);
+    @PostMapping(value = "/vip/getInfo")
+    R<TVip> getInfo(@RequestParam("id") Integer id);
+
+
 }
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 d8d4994..dc862b5 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
@@ -92,12 +92,12 @@
     
             @Override
             public R addSysUser(SysUser user) {
-                return R.fail("添加用户失败:" + cause.getMessage());
+                throw new RuntimeException("添加用户失败:" + cause.getMessage());
             }
 
             @Override
             public R resetPassword(SysUser user) {
-                return R.fail("重置用户密码失败:" + cause.getMessage());
+                throw new RuntimeException("重置用户密码失败:" + cause.getMessage());
             }
         };
     }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
index d0f2eb4..20f98de 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
@@ -100,7 +100,7 @@
      * @param user
      */
     @PostMapping("/user/addSysUser")
-    R addSysUser(SysUser user);
+    R addSysUser(@RequestBody SysUser user);
     
     
     /**
@@ -109,5 +109,5 @@
      * @return
      */
     @PostMapping("/user/resetPassword")
-    R resetPassword(SysUser user);
+    R resetPassword(@RequestBody SysUser user);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
new file mode 100644
index 0000000..0135ce7
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/query/ChangeUserQuery.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.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(value = "用户选择列表Query")
+public class ChangeUserQuery extends BasePage {
+
+    @ApiModelProperty(value = "用户名称")
+    private String nickName;
+
+}
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index df1fa2a..ee4cf04 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -85,6 +85,12 @@
             <version>${hutool.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-account</artifactId>
+            <version>3.6.2</version>
+        </dependency>
+
     </dependencies>
 	
     <build>
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 8a06c5d..7f333d2 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -5,6 +5,14 @@
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.constant.MsgConstants;
+import com.ruoyi.common.core.utils.HttpUtils;
+import com.ruoyi.common.core.utils.MsgUtil;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
@@ -25,6 +33,7 @@
 import com.ruoyi.system.api.model.LoginUser;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
  * token 控制
@@ -42,7 +51,11 @@
     private SysLoginService sysLoginService;
     @Resource
     private SysUserClient userClient;
-    
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private AppUserClient appUserClient;
+
     
     
     
@@ -115,4 +128,26 @@
         sysLoginService.register(registerBody.getUsername(), registerBody.getPassword(), request);
         return R.ok();
     }
+
+    /**
+     * 获取验证码
+     *
+     * @param phone 手机号
+     * @return 结果
+     */
+    @ApiOperation(value = "获取验证码",notes = "获取验证码",tags = {"更换手机号获取验证码"})
+    @GetMapping("getCode")
+    public AjaxResult getCode(@RequestParam("phone") String phone)
+    {
+        TAppUser appUser = appUserClient.selectByPhone(phone).getData();
+        if (Objects.nonNull(appUser)){
+            return AjaxResult.error("该手机号已绑定账号");
+        }
+        String code = MsgUtil.createCode();
+        redisService.setCacheObject(phone+Constants.APPLET,code,5L, TimeUnit.MINUTES);
+        String reqStr = MsgUtil.codeMsg(phone, code);
+        String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr);
+        return AjaxResult.success(result);
+    }
+
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
index 56f106e..3a06693 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -127,7 +127,10 @@
      */
     public static final String DATE_FORMATTER_TIME = "yyyy-MM-dd HH:mm:ss";
     public static final String DATE_FORMATTER_DATE = "yyyy-MM-dd";
-
+    /**
+     * 后缀
+     */
+    public static final String APPLET = "_applet";
     /**
      * 定时任务违规的字符
      */
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
new file mode 100644
index 0000000..4a04905
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
@@ -0,0 +1,35 @@
+package com.ruoyi.common.core.constant;
+
+/**
+ * 短信常量
+ * 
+ * @author ruoyi
+ */
+public class MsgConstants
+{
+    /** 短信发送地址 */
+    public static final String SEND_URL = "http://112.35.1.155:1992/sms/tmpsubmit";
+    /** 更换手机号短信验证码 TEMPLATE_ID */
+    public static final String CODE_TEMPLATE_ID = "5bf3949463e54c03a25c6fce3ad48139";
+
+    /** 停车占位提醒 TEMPLATE_ID */
+    public static final String STOP_TEMPLATE_ID = "4940ce98a3f94f67aa9f5cd2d4e05cbd";
+
+    /** 充电结束 TEMPLATE_ID */
+    public static final String CHARGE_TEMPLATE_ID = "47b2eb376cfa436faae041a6f2f22688";
+
+    /** 桩故障(自动/手动) TEMPLATE_ID */
+    public static final String FAULT_TEMPLATE_ID = "37956469a14a47e484a747a1e7e462de";
+    /** 更换手机号短信验证码 AP_ID */
+    public static final String CODE_AP_ID = "GH123";
+
+    /** 停车占位提醒 AP_ID */
+    public static final String STOP_AP_ID = "TC123";
+
+    /** 充电结束 AP_ID */
+    public static final String CHARGE_AP_ID = "CD123";
+
+    /** 桩故障(自动/手动) AP_ID */
+    public static final String FAULT_AP_ID = "GZ123";
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java
new file mode 100644
index 0000000..c41fbbd
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java
@@ -0,0 +1,311 @@
+package com.ruoyi.common.core.utils;
+
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.*;
+import java.nio.charset.StandardCharsets;
+import java.security.cert.X509Certificate;
+
+/**
+ * 通用http发送方法
+ * 
+ * @author ruoyi
+ */
+public class HttpUtils
+{
+    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url)
+    {
+        return sendGet(url, StringUtils.EMPTY);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param)
+    {
+        return sendGet(url, param, Constants.UTF8);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @param contentType 编码类型
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param, String contentType)
+    {
+        StringBuilder result = new StringBuilder();
+        BufferedReader in = null;
+        try
+        {
+            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
+            log.info("sendGet - {}", urlNameString);
+            URL realUrl = new URL(urlNameString);
+            URLConnection connection = realUrl.openConnection();
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            connection.connect();
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (Exception ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendPost(String url, String param)
+    {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try
+        {
+            log.info("sendPost - {}", url);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (out != null)
+                {
+                    out.close();
+                }
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (IOException ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    public static String sendSSLPost(String url, String param)
+    {
+        StringBuilder result = new StringBuilder();
+        String urlNameString = url + "?" + param;
+        try
+        {
+            log.info("sendSSLPost - {}", urlNameString);
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
+            URL console = new URL(urlNameString);
+            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            conn.setSSLSocketFactory(sc.getSocketFactory());
+            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+            conn.connect();
+            InputStream is = conn.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+            String ret = "";
+            while ((ret = br.readLine()) != null)
+            {
+                if (ret != null && !"".equals(ret.trim()))
+                {
+                    result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
+                }
+            }
+            log.info("recv - {}", result);
+            conn.disconnect();
+            br.close();
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
+        }
+        return result.toString();
+    }
+
+    public static String post(String strURL, String params) {
+        String result = "";
+        BufferedReader reader = null;
+        try {
+            URL url = new URL(strURL);// 创建连接
+            HttpURLConnection connection = (HttpURLConnection) url
+                    .openConnection();
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            connection.setInstanceFollowRedirects(true);
+            connection.setRequestMethod("POST"); // 设置请求方式
+            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
+            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
+            connection.connect();
+            if (params != null && !StringUtils.isEmpty(params)) {
+                byte[] writebytes = params.getBytes();
+                // 设置文件长度
+                //   connection.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
+                OutputStream outwritestream = connection.getOutputStream();
+                outwritestream.write(params.getBytes());
+                outwritestream.flush();
+                outwritestream.close();
+                // Log.d("hlhupload", "doJsonPost: conn"+connection.getResponseCode());
+            }
+            if (connection.getResponseCode() == 200) {
+                log.info("<<<<<<<<<<<<<请求响应:{}", connection.getResponseMessage());
+                reader = new BufferedReader(
+                        new InputStreamReader(connection.getInputStream()));
+                result = reader.readLine();
+                log.info("<<<<<<<<<<<<<请求响应:{}", result);
+            } else {
+                throw new ServiceException(connection.getResponseMessage());
+            }
+        } catch (Exception e) {
+            throw new ServiceException("http的post请求异常!" + e.getMessage());
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return result;
+    }
+
+    private static class TrustAnyTrustManager implements X509TrustManager
+    {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers()
+        {
+            return new X509Certificate[] {};
+        }
+    }
+
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier
+    {
+        @Override
+        public boolean verify(String hostname, SSLSession session)
+        {
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java
new file mode 100644
index 0000000..0f28ea6
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java
@@ -0,0 +1,131 @@
+package com.ruoyi.common.core.utils;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class MD5Util {
+ 
+ /**
+     * 给指定字符串按照md5算法去加密
+     *
+     * @param psd 需要加密的密码   加盐处理
+     *
+     * @return md5后的字符串
+     */
+    public static String encoder(String psd) {
+        try {
+            //加盐处理
+            psd = psd + "mobilesafe";
+            //1,指定加密算法类型
+            MessageDigest digest = MessageDigest.getInstance("MD5");
+            //2,将需要加密的字符串中转换成byte类型的数组,然后进行随机哈希过程
+            byte[] bs = digest.digest(psd.getBytes());
+//          System.out.println(bs.length);
+            //3,循环遍历bs,然后让其生成32位字符串,固定写法
+            //4,拼接字符串过程
+            StringBuffer stringBuffer = new StringBuffer();
+            for (byte b : bs) {
+                int i = b & 0xff;
+                //int类型的i需要转换成16机制字符
+                String hexString = Integer.toHexString(i);
+//              System.out.println(hexString);
+                if (hexString.length() < 2) {
+                    hexString = "0" + hexString;
+                }
+                stringBuffer.append(hexString);
+            }
+            //5,打印测试
+            System.out.println(stringBuffer.toString());
+            return stringBuffer.toString();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+ 
+    /**
+     * MD5加密字符串
+     *
+     * @param str
+     * @return
+     */
+    public static String getMD5(String str) {
+        if (StringUtils.isNotEmpty(str)) {
+            try {
+                MessageDigest md = MessageDigest.getInstance("MD5");
+                md.update(str.getBytes());
+                byte b[] = md.digest();
+                int i;
+                StringBuffer buf = new StringBuffer("");
+                for (int offset = 0; offset < b.length; offset++) {
+                    i = b[offset];
+                    if (i < 0)
+                        i += 256;
+                    if (i < 16)
+                        buf.append("0");
+                    buf.append(Integer.toHexString(i));
+                }
+                //32位加密(小写)
+            return buf.toString();
+            //32位加密(大写)
+            //return buf.toString().toUpperCase();
+            // 16位的加密(小写)
+            //return buf.toString().substring(8, 24);
+            // 16位的加密(大写)
+            //return buf.toString().substring(8, 24).toUpperCase();
+            } catch (NoSuchAlgorithmException e) {
+                e.printStackTrace();
+            }
+        }
+        return "";
+    }
+ 
+    /**
+     * 获取32位大写
+     *
+     * @param str
+     * @return
+     */
+    public static String getMD5_32_upper(String str) {
+        if (StringUtils.isNotEmpty(str))
+            return getMD5(str).toUpperCase();
+        return "";
+    }
+ 
+    /**
+     * 获取32位小写
+     *
+     * @param str
+     * @return
+     */
+    public static String getMD5_32_lower(String str) {
+        if (StringUtils.isNotEmpty(str))
+            return getMD5(str).toLowerCase();
+        return "";
+    }
+ 
+    /**
+     * 获取16位大写
+     *
+     * @param str
+     * @return
+     */
+    public static String getMD5_16_upper(String str) {
+        if (StringUtils.isNotEmpty(str))
+            return getMD5(str).substring(8, 24).toUpperCase();
+        return "";
+    }
+ 
+    /**
+     * 获取16位小写
+     *
+     * @param str
+     * @return
+     */
+    public static String getMD5_16_lower(String str) {
+        if (StringUtils.isNotEmpty(str))
+            return getMD5(str).substring(8, 24).toLowerCase();
+        return "";
+    }
+ 
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
new file mode 100644
index 0000000..188900d
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
@@ -0,0 +1,163 @@
+package com.ruoyi.common.core.utils;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.core.constant.MsgConstants;
+import com.ruoyi.common.core.utils.req.SubmitTempletReq;
+import org.apache.commons.codec.binary.Base64;
+
+import java.util.concurrent.ThreadLocalRandom;
+
+public class MsgUtil {
+
+    public final static String ecName= "四川明星新能源科技有限公司";
+    public final static String secretKey= "MX_xny2023?9";
+    public final static String sign= "1PUAVuY2b";
+
+
+
+    /**
+     * 更换手机号:【签名】验证码:XXX,用于更换手机号。请勿转发。
+     * @param phone 手机号
+     * @param code 验证码
+     * @return
+     */
+    public static String codeMsg(String phone,String code){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        String[] paramss = {code};
+        submitReq.setApId(MsgConstants.CODE_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setParams(JSON.toJSONString(paramss));
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        submitReq.setTemplateId(MsgConstants.CODE_TEMPLATE_ID);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+
+
+    /**
+     * 停车占位提醒:车辆已在3小时前完成充电,请及时取车,避免长时间占用充电资源。
+     * @param phone 手机号
+     * @return
+     */
+    public static String stopMsg(String phone){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        submitReq.setTemplateId(MsgConstants.STOP_TEMPLATE_ID);
+        submitReq.setApId(MsgConstants.STOP_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+
+    /**
+     * 充电结束:车辆充电结束,请及时取车。
+     * @param phone 手机号
+     * @return
+     */
+    public static String chargeStopMsg(String phone){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        submitReq.setTemplateId(MsgConstants.CHARGE_TEMPLATE_ID);
+        submitReq.setApId(MsgConstants.CHARGE_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+
+    /**
+     * 桩故障(自动/手动):检测到【电站1】【编号】号桩设备离线,请及时查看处理!
+     * @param phone 手机号
+     * @param site 站点名称
+     * @param chargeGun 桩编号
+     * @return
+     */
+    public static String faultMsg(String phone,String site,String chargeGun){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        if(site.length()<=10){
+            String[] paramss = {site,chargeGun};
+            submitReq.setParams(JSON.toJSONString(paramss));
+        }else{
+            String work1 = site.substring(0,10);
+            String[] paramss = {work1,chargeGun};
+            submitReq.setParams(JSON.toJSONString(paramss));
+        }
+        submitReq.setTemplateId(MsgConstants.FAULT_TEMPLATE_ID);
+        submitReq.setApId(MsgConstants.FAULT_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+    /**
+     * 生成验证码
+     * @return
+     */
+    public static String createCode(){
+        return String.valueOf(ThreadLocalRandom.current().nextInt(100000, 999999));
+    }
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/req/SubmitTempletReq.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/req/SubmitTempletReq.java
new file mode 100644
index 0000000..bddb33f
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/req/SubmitTempletReq.java
@@ -0,0 +1,47 @@
+package com.ruoyi.common.core.utils.req;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SubmitTempletReq implements Serializable {
+
+    /**
+     * 企业名称
+     */
+    private String ecName;
+    /**
+     * 接口账号用户名
+     */
+    private String apId;
+    /**
+     * 密码
+     */
+    private String secretKey;
+    /**
+     * 模板ID。在云MAS平台创建模板,路径:『短信』→『模板短信』→『模板管理』,创建后提交审核,审核通过将获得模板ID。
+     */
+    private String templateId;
+    /**
+     * 收信手机号码。英文逗号分隔,每批次限5000个号码,例:“13800138000,13800138001,13800138002”。
+     */
+    private String mobiles;
+    /**
+     * 模板变量。格式:[“param1”,“param2”],无变量模板填[""]
+     */
+    private String params;
+    /**
+     * 签名
+     */
+    private String sign;
+    /**
+     * 扩展码。依据开户时申请的服务代码匹配类型而定,如为精确匹配,此项填写空字符串("");如为模糊匹配,此项可填写空字符串或自定义的扩展码,注:服务代码加扩展码总长度不能超过20位。
+     */
+    private String addSerial;
+    /**
+     * 参数校验序列,生成方法:将ecName、apId、secretKey、templateId、mobiles、params、sign、addSerial按序拼接(无间隔符),通过MD5(32位小写)计算出的值。
+     */
+    private String mac;
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseDelete.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseDelete.java
new file mode 100644
index 0000000..ec462d9
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseDelete.java
@@ -0,0 +1,14 @@
+package com.ruoyi.common.core.web.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BaseDelete {
+
+    @ApiModelProperty(value = "id集合")
+    private List<Integer> ids;
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
index 35abfc4..dc848a4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -16,6 +16,7 @@
 import com.ruoyi.other.api.domain.TUserSite;
 import com.ruoyi.other.api.feignClient.RoleSiteClient;
 import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.system.api.query.ChangeUserQuery;
 import com.ruoyi.system.domain.dto.IndexDto;
 import com.ruoyi.system.domain.vo.UserRoleVO;
 import com.ruoyi.system.api.model.*;
@@ -110,6 +111,15 @@
     }
 
     /**
+     * 获取用户选择列表
+     */
+    @PostMapping("/getChangeUserList")
+    @ApiOperation(value = "获取用户选择列表", tags = {"管理后台-获取用户选择列表"})
+    public AjaxResult<PageInfo<SysUser>> getChangeUserList(@RequestBody ChangeUserQuery query) {
+        return AjaxResult.success(userService.getChangeUserList(query));
+    }
+
+    /**
      * 新增用户
      */
     @Log(title = "用户管理", businessType = BusinessType.INSERT)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 74b10ed..3851999 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -5,6 +5,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.system.api.query.ChangeUserQuery;
 import com.ruoyi.system.query.GetSysUserList;
 import org.apache.ibatis.annotations.Param;
 import com.ruoyi.system.api.domain.SysUser;
@@ -139,4 +140,12 @@
     List<Long> getSysUserFromPhone(@Param("phoneNumber") String phoneNumber);
 
     void deleteSysUser(@Param("userIds") ArrayList<Integer> userIds);
+
+    /**
+     * 获取用户选择列表
+     * @param pageInfo
+     * @param query
+     * @return
+     */
+    List<SysUser> getChangeUserList(@Param("pageInfo")PageInfo<SysUser> pageInfo,@Param("query") ChangeUserQuery query);
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index c215705..0b89db9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.query.ChangeUserQuery;
 import com.ruoyi.system.query.GetSysUserList;
 
 /**
@@ -218,4 +219,10 @@
 
     void deleteSysUser(ArrayList<Integer> userIds);
 
+    /**
+     * 获取用户选择列表
+     * @param query
+     * @return
+     */
+    PageInfo<SysUser> getChangeUserList(ChangeUserQuery query);
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 6b7e40e..3f42081 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -15,6 +15,7 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.other.api.feignClient.RoleSiteClient;
 import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.system.api.query.ChangeUserQuery;
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.domain.SysUserRole;
@@ -609,4 +610,11 @@
         this.baseMapper.deleteSysUser(userIds);
     }
 
+    @Override
+    public PageInfo<SysUser> getChangeUserList(ChangeUserQuery query) {
+        PageInfo<SysUser> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
+        List<SysUser> list = this.baseMapper.getChangeUserList(pageInfo, query);
+        return pageInfo.setRecords(list);
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 4446573..6ea45fd 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -155,8 +155,23 @@
 	<select id="getSysUserFromPhone" resultType="java.lang.Long">
 		select user_id from sys_user  where phonenumber =#{phoneNumber}
 	</select>
+    <select id="getChangeUserList" resultType="com.ruoyi.system.api.domain.SysUser">
+		select
+		    user_id AS userId,
+		    nick_name AS nickName,
+		    create_time AS createTime,
+			remark AS remark
+		from sys_user
+		<where>
+			<if test="query.nickName != null and query.nickName != ''">
+				AND nick_name LIKE concat('%',#{query.nickName},'%')
+			</if>
+			AND del_flag = '0'
+		</where>
+		ORDER BY create_time DESC
+	</select>
 
-	<insert id="insertUser" parameterType="com.ruoyi.system.api.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
+    <insert id="insertUser" parameterType="com.ruoyi.system.api.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
  		insert into sys_user(
  			<if test="userId != null and userId != 0">user_id,</if>
  			<if test="deptId != null and deptId != 0">dept_id,</if>
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java
index 8cb6198..5cfc7c7 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/Constant/AliConstant.java
@@ -6,5 +6,8 @@
      * 支付宝配置
      */
     public static final String GRANT_TYPE = "authorization_code";
-
+    /**
+     * 获取token接口地址
+     */
+    public static final String LOGIN_SERVER_URL = "https://openapi.alipay.com/gateway.do";
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java
index 52d54d7..8a60f08 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java
@@ -1,6 +1,14 @@
 package com.ruoyi.account.ali.tools;
 
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
 import com.alipay.api.AlipayConfig;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
+import com.alipay.api.request.AlipayUserUserinfoShareRequest;
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
+import com.ruoyi.account.ali.Constant.AliConstant;
 import com.ruoyi.account.ali.model.AliProperties;
 import lombok.extern.slf4j.Slf4j;
 
@@ -13,8 +21,14 @@
 @Slf4j
 public class AliAppletTools {
 
-    private static final String SERVER_URL = "https://openapi.alipay.com/gateway.do";
-
+    //设置连接池中的最大可缓存的空闲连接数
+    private static final Integer MaxIdleConnections = 5;
+    //连接超时,单位:毫秒,默认3000
+    private static final Integer ConnectTimeout = 3000;
+    //读取超时,单位:毫秒,默认15000
+    private static final Integer ReadTimeout = 15000;
+    //空闲连接存活时间,单位:毫秒,默认10000L
+    private static final Long KeepAliveDuration = 10000L;
     private AliProperties aliProperties;
 
     public AliAppletTools(AliProperties aliProperties) {
@@ -22,15 +36,57 @@
     }
 
     /**
+     * 支付宝小程序授权登录接口
+     * @param code
+     * @return
+     */
+    public AlipaySystemOauthTokenResponse login(String code) {
+        try {
+            // 初始化SDK
+            AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL));
+            // 构造请求参数以调用接口
+            AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
+            // 设置授权码
+            request.setCode(code);
+            // 设置授权方式
+            request.setGrantType(AliConstant.GRANT_TYPE);
+            return alipayClient.execute(request);
+        } catch (AlipayApiException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 支付宝小程序授权获取手机号
+     * @return
+     */
+    public AlipayUserUserinfoShareResponse getUserInfo(String accessToken) {
+        try {
+            // 初始化SDK
+            AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL));
+            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.userinfo.share
+            AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest();
+            //授权类接口执行API调用时需要带上accessToken
+            return alipayClient.execute(request,accessToken);
+        } catch (AlipayApiException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
      * 初始化支付宝配置
      * @return
      */
-    public AlipayConfig getAlipayConfig() {
+    public AlipayConfig getAlipayConfig(String serverUrl) {
         AlipayConfig alipayConfig = new AlipayConfig();
-        alipayConfig.setServerUrl(SERVER_URL);
+        alipayConfig.setServerUrl(serverUrl);
         alipayConfig.setAppId(aliProperties.getAppId());
         alipayConfig.setPrivateKey(aliProperties.getPrivateKey());
         alipayConfig.setAlipayPublicKey(aliProperties.getAlipayPublicKey());
+        alipayConfig.setMaxIdleConnections(MaxIdleConnections);
+        alipayConfig.setConnectTimeout(ConnectTimeout);
+        alipayConfig.setReadTimeout(ReadTimeout);
+        alipayConfig.setKeepAliveDuration(KeepAliveDuration);
         return alipayConfig;
     }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/DataUpdateHandlerConfig.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/DataUpdateHandlerConfig.java
index 5530281..9fc9817 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/config/DataUpdateHandlerConfig.java
@@ -7,6 +7,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -33,8 +34,8 @@
      */
     @Override
     public void insertFill(MetaObject metaObject) {
-        this.setFieldValByName("createTime", new Date(), metaObject);
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
         //  获取登录信息
 //        LoginUser loginUser = tokenService.getLoginUser();
 //        String userName = loginUser.getUsername();
@@ -59,7 +60,7 @@
     @Override
     public void updateFill(MetaObject metaObject) {
 //        this.setFieldValByName("createTime", new Date(), metaObject);
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
         //  获取登录信息
 //        LoginUser loginUser = tokenService.getLoginUser();
 //        System.err.println(loginUser);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java
index b574502..408d79a 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java
@@ -7,6 +7,7 @@
 import com.alipay.api.diagnosis.DiagnosisUtils;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.account.ali.Constant.AliConstant;
@@ -48,44 +49,23 @@
     private AliProperties aliProperties;
     @Autowired
     private TAppUserService appUserService;
-    @Autowired
-    private TokenService tokenService;
     @ApiOperation(value = "通过code获得openid",tags = {"支付宝小程序登录"})
     @GetMapping("/openIdByJsCode")
-    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code) throws AlipayApiException {
+    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code){
         log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code);
-        // 初始化SDK
-        AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig());
-        // 构造请求参数以调用接口
-        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
-        // 设置授权码
-        request.setCode(code);
-        // 设置授权方式
-        request.setGrantType(AliConstant.GRANT_TYPE);
-        AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
-        TAppUser appUser = null;
+        // 登录
+        AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(code);
         if (response.isSuccess()) {
-            String openId = response.getOpenId();
-            appUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class).eq(TAppUser::getAliOpenid, openId).last("limit 1"));
-            if (Objects.isNull(appUser)) {
-                appUser = new TAppUser();
-                appUser.setWxOpenid(openId);
-                appUserService.save(appUser);
-            }
-            log.info("支付宝小程序登录调用成功");
+            // 获取用户信息
+            AlipayUserUserinfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken());
+            log.info("获取支付宝用户信息:{}", userInfo);
+            // 用户信息封装
+            return AjaxResult.ok(appUserService.aliLogin(response,userInfo));
         } else {
              String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
              log.warn("诊断结果:{}",diagnosisUrl);
              throw new ServiceException("支付宝小程序登录失败");
         }
-        LoginUserApplet loginUserApplet = new LoginUserApplet();
-        if(ObjectUtils.isNotNull(appUser)){
-            loginUserApplet.setUserId(appUser.getId());
-        }
-        HashMap<String, Object> tokenInfos = new HashMap<>();
-        tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet));
-        tokenInfos.put("info",loginUserApplet);
-        return AjaxResult.ok(tokenInfos);
     }
 
 }
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 4cf21b6..41f55e8 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
@@ -14,6 +14,7 @@
 import com.ruoyi.account.service.TAppUserCarService;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
 import com.ruoyi.chargingPile.api.vo.SiteInfoVO;
+import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.BasePage;
@@ -45,8 +46,6 @@
 public class TAppCouponController {
     @Autowired
     private TAppCouponService tAppCouponService;
-    @Autowired
-    private OtherClient otherClient;
 
     @Autowired
     private TAppUserCarService appUserCarService;
@@ -126,7 +125,7 @@
      * @return 优惠券ids 查询每个优惠券的发放数量
      */
     @PostMapping("/getCountByCouponIds")
-    public R<List<Integer>> getCountByCouponIds(String couponIds) {
+    public R<List<Integer>> getCountByCouponIds(@RequestParam("couponIds") String couponIds) {
         // 最终结果 和优惠券id一一对应
         List<Integer> res = new ArrayList<>();
         String[] split = couponIds.split(",");
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
index 277bfdd..6b4046f 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
@@ -6,6 +6,7 @@
 import com.ruoyi.account.service.TAppUserAddressService;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.security.service.TokenService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -25,10 +26,12 @@
 public class TAppUserAddressController {
 
     private final TAppUserAddressService appUserAddressService;
+    private final TokenService tokenService;
 
     @Autowired
-    public TAppUserAddressController(TAppUserAddressService appUserAddressService) {
+    public TAppUserAddressController(TAppUserAddressService appUserAddressService, TokenService tokenService) {
         this.appUserAddressService = appUserAddressService;
+        this.tokenService = tokenService;
     }
 
     /**
@@ -37,8 +40,9 @@
     @ApiOperation(tags = {"小程序-用户地址"},value = "查询用户地址列表")
     @GetMapping(value = "/queryAddress")
     public AjaxResult<List<TAppUserAddress>> queryAddress() {
-        // TODO 用户id
-        return AjaxResult.ok(appUserAddressService.list(Wrappers.<TAppUserAddress>lambdaQuery().eq(TAppUserAddress::getAppUserId, null)));
+        // 用户id
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        return AjaxResult.ok(appUserAddressService.list(Wrappers.<TAppUserAddress>lambdaQuery().eq(TAppUserAddress::getAppUserId, userId)));
     }
 
 
@@ -48,7 +52,8 @@
     @ApiOperation(tags = {"小程序-用户地址"},value = "添加用户地址")
     @PostMapping(value = "/add")
     public AjaxResult<Boolean> add(@RequestBody TAppUserAddress dto) {
-        // TODO 用户id
+        // 用户id
+        dto.setAppUserId(tokenService.getLoginUserApplet().getUserId());
         // 修改用户默认地址
         appUserAddressService.updateDefaultAddress(dto.getDefaultAddress(),dto.getAppUserId());
         return AjaxResult.ok(appUserAddressService.save(dto));
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 9c6f99d..6915db6 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
@@ -1,6 +1,7 @@
 package com.ruoyi.account.controller;
 
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -14,7 +15,10 @@
 import com.ruoyi.account.wx.body.resq.Code2SessionResqBody;
 import com.ruoyi.account.wx.model.WeixinProperties;
 import com.ruoyi.account.wx.tools.WxAppletTools;
+import com.ruoyi.account.util.GiveVipUtil;
+import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.domain.BasePojo;
@@ -27,6 +31,7 @@
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TExchangeOrder;
 import com.ruoyi.other.api.domain.TCompany;
+import com.ruoyi.other.api.domain.TCoupon;
 import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.feignClient.OtherClient;
 import com.ruoyi.system.api.domain.SysRole;
@@ -34,14 +39,17 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import java.time.Duration;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -83,10 +91,14 @@
     private TokenService tokenService;
     @Autowired
     private RedisService redisService;
-    @Autowired
-    private WeixinProperties wxConfig;
-    @Autowired
-    private RestTemplate wxRestTemplate;
+
+    @Resource
+    private  TAppUserSignService signService;
+    @Resource
+    private TAppCouponService appCouponService;
+    @Resource
+    private TAppUserCarService carService;
+
 
     @ApiOperation(value = "查询当前用户是否为会员 0否1是", tags = {"小程序--查询当前用户是否为会员"})
     @PostMapping(value = "/getUserInfo")
@@ -100,39 +112,14 @@
             return AjaxResult.ok(0);
         }
     }
-    @ApiOperation(value = "通过code获得openid,  1 --->对应的appid:wx4c405fa42539fc21  2---->对应的appid:wx02d9f6c92e6d3c86")
-    @GetMapping("openId-by-jscode2session/{code}")
-    public AjaxResult<Map<String, Object>> jscode2session(@PathVariable String code) {
-        log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code);
-        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
-        Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(code));
-        String openid = body.getOpenid();
-        String sessionKey = body.getSessionKey();
-        TAppUser appUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class).eq(TAppUser::getWxOpenid, openid).last("limit 1"));
-        if (Objects.isNull(appUser)) {
-            appUser = new TAppUser();
-            appUser.setWxOpenid(openid);
-            appUserService.save(appUser);
-        }
-        // 提前对sessionKey进行删除
-        log.info("换取sessionKey:{}", sessionKey);
-        // 将sessionKey进行存储,后续获取信息需要
-        redisService.setCacheObject(openid, sessionKey);
-        LoginUserApplet loginUserApplet = new LoginUserApplet();
-        if(ObjectUtils.isNotNull(appUser)){
-            loginUserApplet.setUserId(appUser.getId());
-        }
-        HashMap<String, Object> tokenInfos = new HashMap<>();
-        tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet));
-        tokenInfos.put("info",loginUserApplet);
-        return AjaxResult.ok(tokenInfos);
-    }
 
     @ApiOperation(value = "管理后台-根据手机号查询用户ids", tags = {"管理后台-活动费用统计"})
     @PostMapping(value = "/user/getUserIdsByPhone")
     public R<List<Long>> getUserIdsByPhone(@RequestParam("phone") String phone) {
         return R.ok(appUserService.list(new QueryWrapper<TAppUser>().like("phone",phone)).stream().map(TAppUser::getId).collect(Collectors.toList()));
     }
+    @Resource
+    private GiveVipUtil giveVipUtil;
     @ApiOperation(value = "单位管理列表", tags = {"用户管理-单位管理"})
     @PostMapping(value = "/unit/page")
     public R<Page<TCompany>> unitPage(@RequestBody UnitListQueryDto unitListQueryDto) {
@@ -146,6 +133,20 @@
         return R.ok(data);
     }
 
+
+    @ApiOperation(value = "单位下拉框", tags = {"用户管理-单位管理"})
+    @PostMapping(value = "/unit/select")
+    public R<List<TCompany>> unitSelect() {
+        UnitListQueryDto unitListQueryDto = new UnitListQueryDto();
+        unitListQueryDto.setPageCurr(1);
+        unitListQueryDto.setPageSize(9999);
+        //拿到单位列表
+        R<Page<TCompany>> pageR = otherClient.queryUnitPage(unitListQueryDto);
+
+        return R.ok(pageR.getData().getRecords());
+    }
+
+
     @ApiOperation(value = "单位管理添加或编辑", tags = {"用户管理-单位管理"})
     @PostMapping(value = "/unit/addOrUpdate")
     public R add(@RequestBody TCompany tCompany) {
@@ -153,10 +154,17 @@
        otherClient.unitAddorUpadate(tCompany);
         return R.ok();
     }
+
+
+
+
     @ApiOperation(value = "单位管理删除", tags = {"用户管理-单位管理"})
-    @PostMapping(value = "/unit/delete/{id}")
-    public R add(@PathVariable Integer id) {
-        otherClient.unitDelete(id);
+    @DeleteMapping(value = "/unit/delete")
+    public R add(@RequestParam String ids) {
+        String[] split = ids.split(",");
+        for (String s : split) {
+            otherClient.unitDelete(Integer.valueOf(s));
+        }
         return R.ok();
 
     }
@@ -316,7 +324,7 @@
         return R.ok(userDetailDto);
     }
 
-    @ApiOperation(value = "用户详情积分明细", tags = {"用户管理-用户列表"})
+    @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表","小程序-个人中心"})
     @PostMapping(value = "/user/points/page")
     public R<Page<TAppUserIntegralChange>> pointsDetail(@RequestBody PointsQueryDto pointsQueryDto) {
         List<Integer> types = new ArrayList<>();
@@ -352,7 +360,7 @@
 
     }
 
-    @ApiOperation(value = "用户详情积分明细", tags = {"用户管理-用户列表"})
+    @ApiOperation(value = "冻结解冻用户", tags = {"后台-用户管理-用户列表"})
     @PostMapping(value = "/user/status/change")
     public R pointsDetail(@RequestBody UserChangeDto userChangeDto) {
         TAppUser appUser = appUserService.getById(userChangeDto.getUserId());
@@ -361,39 +369,96 @@
         return R.ok();
     }
 
+    @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"})
+    @PostMapping(value = "/user/info")
+    public R<AppUserInfoDto> info() {
+        Long userId = 1L;
+        TAppUser byId = appUserService.getById(userId);
+        AppUserInfoDto appUserInfoDto = new AppUserInfoDto();
+
+        //判断会员
+        if (byId.getVipEndTime()==null||byId.getVipEndTime().isBefore(LocalDateTime.now())){
+            appUserInfoDto.setIsVip(0);
+        }else {
+            appUserInfoDto.setIsVip(1);
+            appUserInfoDto.setVipExpireTime(byId.getVipEndTime());
+        }
+        //判断当天是否签到
+        Long count = signService.lambdaQuery().eq(TAppUserSign::getSignDay, LocalDate.now()).count();
+        appUserInfoDto.setIsSign(count>0?1:0);
+        //获取当前拥有的优惠卷数量
+        Long coupons = appCouponService.lambdaQuery().eq(TAppCoupon::getAppUserId, userId).eq(TAppCoupon::getStatus, 1).count();
+        appUserInfoDto.setCouponNum(Math.toIntExact(coupons));
+        //当前绑定的车辆
+        List<TAppUserCar> list = carService.lambdaQuery().eq(TAppUserCar::getAppUserId, userId).list();
+        appUserInfoDto.setUserCars(list);
+        return R.ok(appUserInfoDto);
+
+
+    }
+
+    @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"})
+    @PostMapping(value = "/user/coupon")
+    public R<List<InfoCouponDto>> userCoupon(@RequestParam("type") Integer type) {
+        LocalDateTime now = LocalDateTime.now();
+
+        List<InfoCouponDto> couponDtos = new ArrayList<>();
+        List<TAppCoupon> list = appCouponService.lambdaQuery().le(TAppCoupon::getStartTime, now).ge(TAppCoupon::getEndTime, now).eq(TAppCoupon::getStatus, type).list();
+        for (TAppCoupon tAppCoupon : list) {
+            TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class);
+            InfoCouponDto infoCouponDto = new InfoCouponDto();
+            BeanUtils.copyProperties(coupon,infoCouponDto);
+            couponDtos.add(infoCouponDto);
+
+        }
+
+
+        return R.ok(couponDtos);
+
+
+    }
+
+
 
     @ApiOperation(value = "赠送会员", tags = {"用户管理-用户列表"})
     @PostMapping(value = "/user/give/vip")
     public R giveVip(@RequestBody GiveVipDto  giveVipDto) {
         TAppUser nowUser = appUserService.getById(giveVipDto.getUserId());
 
-
-        //如果vipEndTime为空或已过期,直接增加
-        if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) {
-            if (giveVipDto.getType() == 1) {
-                nowUser.setVipEndTime(LocalDateTime.now().plusDays(31));
-                //直接增加vipDetail
-            } else if (giveVipDto.getType() == 2) {
-                nowUser.setVipEndTime(LocalDateTime.now().plusDays(93));
-            } else if (giveVipDto.getType() == 3) {
-                nowUser.setVipEndTime(LocalDateTime.now().plusDays(365));
-            }
-            //直接赠送优惠卷
-        }else {
-            if (giveVipDto.getType() == 1) {
-                nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(31));
-                //如果有这个类型的vip,累加,没有的话,从entTime新增
-            } else if (giveVipDto.getType() == 2) {
-                nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(93));
-            } else if (giveVipDto.getType() == 3) {
-                nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(365));
-            }
+        int plusDay = 0;
+        if (giveVipDto.getType() == 1) {
+            plusDay = 1;
+        } else if (giveVipDto.getType() == 2) {
+            plusDay = 3;
+        } else if (giveVipDto.getType() == 3) {
+            plusDay = 12;
         }
+        //增加vipDetail
+        giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay);
 
 
-
+        appUserService.updateById(nowUser);
+        //执行一次赠送优惠卷的定时任务
 
         return R.ok();
+    }
+
+    @ApiOperation(value = "更换手机号", tags = {"小程序-用户管理-更换手机号"})
+    @PostMapping(value = "/user/updatePhone")
+    public AjaxResult<String> updatePhone(@Validated @RequestBody UpdatePhoneDTO dto) {
+        String code = redisService.getCacheObject(dto.getPhone() + Constants.APPLET);
+        if(StringUtils.isEmpty(code)){
+            return AjaxResult.error("验证码已过期,请重新获取验证码!");
+        }
+        if(!code.equals(dto.getCode())){
+            return AjaxResult.error("验证码错误!");
+        }
+        // 获取当前用户信息
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        TAppUser appUser = appUserService.getById(userId);
+        appUser.setPhone(dto.getPhone());
+        appUserService.updateById(appUser);
+        return AjaxResult.success();
     }
 
     /**
@@ -406,7 +471,7 @@
         return R.ok(appUserService.list(Wrappers.<TAppUser>lambdaQuery().in(TAppUser::getId,appUserIds)));
     }
 
-    
+
     /**
      * 根据用户id获取用户
      * @param id
@@ -417,8 +482,8 @@
         TAppUser appUser = appUserService.getById(id);
         return R.ok(appUser);
     }
-    
-    
+
+
     /**
      * 修改用户信息
      * @param appUser
@@ -430,5 +495,23 @@
         appUserService.updateById(appUser);
         return R.ok();
     }
+
+    /**
+     * 通过手机号查询用户
+     * @param phone
+     * @return
+     */
+    @GetMapping("/user/selectByPhone")
+    public R<TAppUser> selectByPhone(@RequestParam("phone") String phone){
+        return R.ok(appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                .eq(TAppUser::getPhone,phone)
+                .last("LIMIT 1")));
+    }
+
+//    @ApiOperation(value = "签到", tags = {"小程序-个人中心-签到"})
+//    @PostMapping(value = "/user/sign")
+//    public R sign() {
+//
+//    }
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java
index 7609389..c39f5a1 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java
@@ -55,10 +55,13 @@
     }
 
     @ApiOperation(value = "标签删除", tags = {"用户管理-用户标签管理"})
-    @PostMapping(value = "/tags/delete/{id}")
-    public R delete(@PathVariable Integer id) {
+    @DeleteMapping(value = "/tags/delete")
+    public R delete(@PathVariable String ids) {
         //拿到单位列表
-        otherClient.deleteTag(id);
+        String[] split = ids.split(",");
+        for (String id : split) {
+        otherClient.deleteTag(Integer.valueOf(id));
+        }
         return R.ok();
     }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
index e3444f7..58cc16d 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -62,6 +62,6 @@
         }
         AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey,  data.getIv());
         appletUserDecodeData.setOpenId(openid);
-        return AjaxResult.ok(appUserService.login(appletUserDecodeData));
+        return AjaxResult.ok(appUserService.wxLogin(appletUserDecodeData));
     }
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
index 11fec43..0a9a179 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java
@@ -1,5 +1,7 @@
 package com.ruoyi.account.service;
 
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.account.wx.pojo.AppletUserDecodeData;
@@ -21,6 +23,19 @@
      * @param appletUserDecodeData
      * @return
      */
-    Map<String, Object> login(AppletUserDecodeData appletUserDecodeData);
+    Map<String, Object> wxLogin(AppletUserDecodeData appletUserDecodeData);
 
+    /**
+     * 支付宝小程序登录用户封装
+     * @param userInfo
+     * @return
+     */
+    Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,AlipayUserUserinfoShareResponse userInfo);
+
+    /**
+     * 封装用户信息和token
+     * @param appUser
+     * @return
+     */
+    Map<String, Object> getUserInfo(TAppUser appUser);
 }
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
index 8e90bd7..4dff539 100644
--- 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
@@ -13,4 +13,5 @@
  */
 public interface TAppUserVipDetailService extends IService<TAppUserVipDetail> {
 
+    void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum);
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
index 912a5e0..f8cfe72 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ruoyi.account.service.impl;
 
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -32,27 +34,22 @@
     @Autowired
     private TokenService tokenService;
     @Override
-    public Map<String, Object> login(AppletUserDecodeData appletUserDecodeData) {
-        // 通过手机号查询用户,是否已存在手动导入用户
+    public Map<String, Object> wxLogin(AppletUserDecodeData appletUserDecodeData) {
+        // 通过手机号查询用户,是否已存在手动导入用户,包含支付宝用户
         TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
                 .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
                 .isNull(TAppUser::getWxOpenid)
                 .last("LIMIT 1"));
-        LambdaQueryWrapper<TAppUser> wrapper = Wrappers.lambdaQuery(TAppUser.class)
-                .eq(TAppUser::getWxOpenid, appletUserDecodeData.getOpenId());
         if(Objects.isNull(appUser)){
             // 先使用openId和当前手机号进行查询
-            wrapper.eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
-                    .last("LIMIT 1");
-            appUser = this.getOne(wrapper);
+            appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                    .eq(TAppUser::getWxOpenid, appletUserDecodeData.getOpenId())
+                    .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
+                    .last("LIMIT 1"));
             if(Objects.isNull(appUser)){
                 appUser = new TAppUser();
                 appUser.setPhone(appletUserDecodeData.getPhoneNumber());
             }
-        }else {
-            wrapper.last("LIMIT 1");
-            // 删除小程序原有授权用户
-            this.remove(wrapper);
         }
         appUser.setAvatar(appletUserDecodeData.getAvatarUrl());
         appUser.setCity(appletUserDecodeData.getCity());
@@ -60,6 +57,38 @@
         appUser.setProvince(appletUserDecodeData.getProvince());
         appUser.setWxOpenid(appletUserDecodeData.getOpenId());
         this.saveOrUpdate(appUser);
+        return this.getUserInfo(appUser);
+    }
+
+    @Override
+    public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserUserinfoShareResponse userInfo) {
+        // 通过手机号查询用户,是否已存在手动导入用户,包含微信用户
+        TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                .eq(TAppUser::getPhone, userInfo.getMobile())
+                .isNull(TAppUser::getAliOpenid)
+                .last("LIMIT 1"));
+        if(Objects.isNull(appUser)){
+            // 先使用openId和当前手机号进行查询
+            appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                    .eq(TAppUser::getAliOpenid, response.getOpenId())
+                    .eq(TAppUser::getPhone, userInfo.getMobile())
+                    .last("LIMIT 1"));
+            if(Objects.isNull(appUser)){
+                appUser = new TAppUser();
+                appUser.setPhone(userInfo.getMobile());
+            }
+        }
+        appUser.setAvatar(userInfo.getAvatar());
+        appUser.setCity(userInfo.getCity());
+        appUser.setName(userInfo.getNickName());
+        appUser.setProvince(userInfo.getProvince());
+        appUser.setAliOpenid(response.getOpenId());
+        this.saveOrUpdate(appUser);
+        return this.getUserInfo(appUser);
+    }
+
+    @Override
+    public Map<String, Object> getUserInfo(TAppUser appUser) {
         LoginUserApplet loginUserApplet = new LoginUserApplet();
         if(ObjectUtils.isNotNull(appUser)){
             loginUserApplet.setUserId(appUser.getId());
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
index 50674ce..1894f70 100644
--- 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
@@ -1,11 +1,27 @@
 package com.ruoyi.account.service.impl;
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.dto.SendCouponDto;
+import com.ruoyi.account.api.feignClient.AppCouponClient;
+import com.ruoyi.account.api.model.TAppCoupon;
 import com.ruoyi.account.api.model.TAppUserVipDetail;
 import com.ruoyi.account.mapper.TAppUserVipDetailMapper;
 
+import com.ruoyi.account.service.TAppCouponService;
 import com.ruoyi.account.service.TAppUserVipDetailService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.feignClient.OtherClient;
+import com.ruoyi.other.api.feignClient.VipClient;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -17,5 +33,49 @@
  */
 @Service
 public class TAppUserVipDetailServiceImpl extends ServiceImpl<TAppUserVipDetailMapper, TAppUserVipDetail> implements TAppUserVipDetailService {
+    @Resource
+    private VipClient vipClient;
+    @Resource
+    private OtherClient otherClient;
+    @Resource
+    private TAppCouponService appCouponService;
+    @Resource
+    private TAppUserVipDetailService tAppUserVipDetailService;
+
+
+
+    @Override
+    public void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum) {
+        //如果不包含,则更新sendNum,并且赠送优惠卷
+        TAppUserVipDetail byId = tAppUserVipDetailService.getById(recordId);
+        if (byId.getStartTime().plusMonths(byId.getSendMonth()).toLocalDate().compareTo(LocalDate.now())==0&&LocalDate.now().isBefore(byId.getEndTime().toLocalDate())){
+            byId.setSendMonth(byId.getSendMonth()+1);
+        //给这个用户发放对应vip的优惠卷以及充电次数加满
+            List<SendCouponDto> javaList = JSON.parseArray(byId.getCouponIds()).toJavaList(SendCouponDto.class);
+            for (SendCouponDto sendCouponDto : javaList) {
+                Integer number = sendCouponDto.getNumber();
+                for (Integer i = 0; i < number; i++) {
+                    R<TCoupon> couponById = otherClient.getCouponById(sendCouponDto.getId());
+                    TCoupon coupon = couponById.getData();
+                    //将该优惠卷添加到用户优惠卷中
+                    TAppCoupon tAppCoupon = new TAppCoupon();
+                    tAppCoupon.setAppUserId(appUserId);
+                    tAppCoupon.setCouponId(sendCouponDto.getId());
+                    if (coupon.getValidityPeriodMode() == 1) {
+                        tAppCoupon.setEndTime(coupon.getEndTime());
+                    } else {
+                        tAppCoupon.setEndTime(LocalDateTime.now().plusDays(coupon.getDays()));
+                    }
+                    tAppCoupon.setWaysToObtain(4);
+                    tAppCoupon.setStatus(1);
+                    tAppCoupon.setCouponJson(JSON.toJSONString(coupon));
+                    appCouponService.save(tAppCoupon);
+                }
+                }
+
+            }
+        byId.setChargeNum(byId.getSendChargeNum());
+        tAppUserVipDetailService.updateById(byId);
+        }
 
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
new file mode 100644
index 0000000..0bdf907
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
@@ -0,0 +1,54 @@
+package com.ruoyi.account.task;
+
+
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.service.TAppUserVipDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.util.List;
+
+
+/**
+ * 定时任务工具类
+ */
+@Component
+public class TaskUtil {
+
+    @Resource
+    private TAppUserVipDetailService tAppUserVipDetailService;
+
+
+
+    /**
+     * 每隔一分钟去处理的定时任务
+     */
+    @Scheduled(fixedRate = 1000 * 60)
+    public void sendVipCoupon(){
+        try {
+            //首先获取当前的月份,用int类型标识
+            LocalDate currentDate = LocalDate.now();
+            int monthNum = currentDate.getMonthValue();
+            //获取在当前时间内生效的vipDetail
+            List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery()
+                    .ge(TAppUserVipDetail::getStartTime, currentDate)
+                    .le(TAppUserVipDetail::getEndTime, currentDate)
+                    .orderByDesc(TAppUserVipDetail::getStartTime).list();
+            //判断sendNum是否包括当前月份
+            for (TAppUserVipDetail recentDetail : recentDetails) {
+
+                    //赠送优惠卷
+                    tAppUserVipDetailService.giveVipCoupun(recentDetail.getAppUserId(), recentDetail.getVipId(),recentDetail.getId(),monthNum);
+
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
new file mode 100644
index 0000000..b477141
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
@@ -0,0 +1,96 @@
+package com.ruoyi.account.util;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.ruoyi.account.api.dto.SendCouponDto;
+import com.ruoyi.account.api.model.TAppCoupon;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.service.TAppCouponService;
+import com.ruoyi.account.service.TAppUserVipDetailService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.feignClient.OtherClient;
+import com.ruoyi.other.api.feignClient.VipClient;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Component
+public class GiveVipUtil {
+
+    @Resource
+    private VipClient vipClient;
+    @Resource
+    private TAppUserVipDetailService tAppUserVipDetailService;
+    @Resource
+    private OtherClient otherClient;
+    @Resource
+    private TAppCouponService appCouponService;
+    public void sendVip(TAppUser nowUser,Integer vipId,Integer plusDay){
+        if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) {
+     
+            nowUser.setVipEndTime(LocalDateTime.now().plusMonths(plusDay));
+
+            //直接再detail里新增数据,因为不是续费
+            TAppUserVipDetail tAppUserVipDetail = new TAppUserVipDetail();
+            tAppUserVipDetail.setAppUserId(nowUser.getId());
+            tAppUserVipDetail.setStartTime(LocalDateTime.now());
+            tAppUserVipDetail.setEndTime(LocalDateTime.now().plusMonths(plusDay).minusDays(1));
+            tAppUserVipDetail.setVipId(vipId);
+
+            R<TVip> info = vipClient.getInfo(vipId);
+            TVip vip = info.getData();
+            List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
+
+            tAppUserVipDetail.setCouponIds(vip.getCoupon());
+            tAppUserVipDetail.setSendChargeNum(vip.getDiscountTimes());
+            tAppUserVipDetail.setChargeNum(vip.getDiscountTimes());
+            tAppUserVipDetail.setDiscountMoney(vip.getMaximumDeduction());
+            tAppUserVipDetail.setSendMonth(1);
+            tAppUserVipDetailService.save(tAppUserVipDetail);
+            //直接赠送优惠卷
+            for (SendCouponDto sendCouponDto : javaList) {
+                Integer number = sendCouponDto.getNumber();
+                for (Integer i = 0; i < number; i++) {
+
+
+                R<TCoupon> couponById = otherClient.getCouponById(sendCouponDto.getId());
+                TCoupon coupon = couponById.getData();
+                //将该优惠卷添加到用户优惠卷中
+                TAppCoupon tAppCoupon = new TAppCoupon();
+                tAppCoupon.setAppUserId(nowUser.getId());
+                tAppCoupon.setCouponId(Integer.valueOf(sendCouponDto.getId()));
+                if (coupon.getValidityPeriodMode() == 1) {
+                    tAppCoupon.setEndTime(coupon.getEndTime());
+                } else {
+                    tAppCoupon.setEndTime(LocalDateTime.now().plusDays(coupon.getDays()));
+                }
+                tAppCoupon.setWaysToObtain(4);
+                tAppCoupon.setStatus(1);
+                tAppCoupon.setCouponJson(JSON.toJSONString(coupon));
+                appCouponService.save(tAppCoupon);
+                }
+            }
+
+
+        }else {
+            nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(plusDay));
+            //获取detail里结束时间大于当前时间的数据,并将enttime延长
+            TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one();
+
+//            TAppUserVipDetail newAppUser = new TAppUserVipDetail();
+//            newAppUser.setAppUserId(nowUser.getId());
+//            newAppUser.setStartTime(tAppUserVipDetail.getEndTime());
+            tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
+//            newAppUser.setVipId(vipId);
+            tAppUserVipDetailService.updateById(tAppUserVipDetail);
+//                tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay));
+//                tAppUserVipDetailService.updateById(tAppUserVipDetail);
+        }
+
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java
new file mode 100644
index 0000000..3070952
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/PointDetailUtil.java
@@ -0,0 +1,28 @@
+package com.ruoyi.account.util;
+import java.time.LocalDateTime;
+
+import com.ruoyi.account.api.model.TAppUserIntegralChange;
+import com.ruoyi.account.service.TAppUserIntegralChangeService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+public class PointDetailUtil {
+    @Resource
+    private TAppUserIntegralChangeService appUserIntegralChangeService;
+    public void addDetail(Integer old,Integer now,Integer type,Long userId,String extension,String code){
+
+        TAppUserIntegralChange tAppUserIntegralChange= new TAppUserIntegralChange();
+        tAppUserIntegralChange.setCode(code);
+        tAppUserIntegralChange.setAppUserId(userId);
+        tAppUserIntegralChange.setChangeType(type);
+        tAppUserIntegralChange.setHistoricalIntegral(old);
+        tAppUserIntegralChange.setCurrentIntegral(now);
+        tAppUserIntegralChange.setCreateTime(LocalDateTime.now());
+        tAppUserIntegralChange.setExtension(extension);
+        appUserIntegralChangeService.save(tAppUserIntegralChange);
+
+
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/JsonUtils.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/JsonUtils.java
deleted file mode 100644
index 0b9fe63..0000000
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/JsonUtils.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.ruoyi.account.wx.tools;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.hotel.config.JacksonConfig;
-import com.hotel.exception.ServiceException;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
-/**
- * Json转换工具类
- * 参考:https://blog.csdn.net/weixin_38413579/article/details/82562634
- * @author madman
- */
-@Slf4j
-public final class JsonUtils {
-
-    private static final ObjectMapper OM = new ObjectMapper();
-    private static final JavaTimeModule timeModule = new JavaTimeModule();
-
-    /**
-     * 转换LocalDateTime
-     */
-    static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
-        @Override
-        public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
-            jsonGenerator.writeString(localDateTime.format(DateTimeFormatter.ofPattern(JacksonConfig.dateTimeFormat)));
-        }
-    }
-
-    /**
-     * 转换LocalDate
-     */
-    static class LocalDateSerializer extends JsonSerializer<LocalDate> {
-        @Override
-        public void serialize(LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
-            jsonGenerator.writeString(localDate.format(DateTimeFormatter.ofPattern(JacksonConfig.dateFormat)));
-        }
-    }
-
-    /**
-     * 设置 ObjectMapper
-     *
-     * @return
-     */
-    private static ObjectMapper getObjectMapper() {
-        // 序列化
-        timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
-        timeModule.addSerializer(LocalDate.class, new LocalDateSerializer());
-        // 反序列化
-        timeModule.addDeserializer(LocalDateTime.class,
-                new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(JacksonConfig.dateTimeFormat)));
-        timeModule.addDeserializer(LocalDate.class,
-                new LocalDateDeserializer(DateTimeFormatter.ofPattern(JacksonConfig.dateFormat)));
-        // 允许对象忽略json中不存在的属性
-        OM.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-        OM.registerModule(timeModule);
-        return OM;
-    }
-
-    /**
-     * 将对象序列化
-     */
-    public static <T> String toJsonString(T obj) {
-        try {
-            ObjectMapper om = getObjectMapper();
-            return om.writeValueAsString(obj);
-        } catch (JsonProcessingException e) {
-            log.error("转json字符串失败:{}", obj);
-            return null;
-        }
-    }
-
-    /**
-     * 反序列化对象字符串
-     */
-    public static <T> T parseObject(String json, Class<T> clazz) {
-        try {
-            ObjectMapper om = getObjectMapper();
-            return om.readValue(json, clazz);
-        } catch (JsonProcessingException e) {
-            throw new ServiceException("反序列化对象字符串失败");
-        }
-    }
-
-    /**
-     * 反序列化字符串成为对象
-     */
-    public static <T> T parseObject(String json, TypeReference<T> valueTypeRef) {
-        try {
-            ObjectMapper om = getObjectMapper();
-            return om.readValue(json, valueTypeRef);
-        } catch (JsonProcessingException e) {
-            throw new ServiceException("反序列化字符串成为对象失败");
-        }
-    }
-
-}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
index 01feebf..2dd2f67 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxAppletTools.java
@@ -58,12 +58,6 @@
     private RestTemplate wxRestTemplate;
     private WxCacheTemplate<String> wxCacheTemplate;
 
-    public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig, WxCaffineCache wxCacheTemplate) {
-        this.wxRestTemplate = wxRestTemplate;
-        this.wxCacheTemplate = wxCacheTemplate;
-        this.wxConfig = wxConfig;
-    }
-
     public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig) {
         this.wxRestTemplate = wxRestTemplate;
         this.wxConfig = wxConfig;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxCaffineCache.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxCaffineCache.java
deleted file mode 100644
index 5c40a14..0000000
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/wx/tools/WxCaffineCache.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.ruoyi.account.wx.tools;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.util.StringUtils;
-
-import java.util.Objects;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author xiaochen
- * @ClassName AbstractCaffineCache
- * @Description
- * @date 2021-01-11 11:27
- */
-@Slf4j
-class WxCaffineCache<T>  implements WxCacheTemplate<T> {
-    /**
-     * 缓存环境
-     */
-    private String env = "wx";
-
-    /**
-     * 本地缓存实例
-     */
-    private LoadingCache<String, Object> loadingCache;
-
-    /**
-     * 构造函数
-     *
-     */
-    public WxCaffineCache() {
-        WxCache cache = WxCache.options().setTimeUnit(TimeUnit.SECONDS).build();
-        // 构建本地缓存实例
-        this.loadingCache = caffineCacheManage(cache);
-    }
-
-
-    @Override
-    public boolean setKey(String key, T value) {
-        if (Objects.isNull(this.loadingCache)) {
-            return Boolean.FALSE;
-        }
-        if (StringUtils.hasLength(this.env)) {
-            this.loadingCache.put(this.env + ":" + key, value);
-        } else {
-            this.loadingCache.put(key, value);
-        }
-        return Boolean.TRUE;
-    }
-
-    @Override
-    public T getKey(String key) {
-        if (Objects.isNull(this.loadingCache)) {
-            return null;
-        }
-        try {
-            if (StringUtils.hasLength(this.env)) {
-                return (T) this.loadingCache.get(this.env + ":" + key);
-            } else {
-                return (T) this.loadingCache.get(key);
-            }
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    @Override
-    public boolean delKey(String key) {
-        if (Objects.isNull(this.loadingCache)) {
-            return Boolean.FALSE;
-        }
-        if (StringUtils.hasLength(this.env)) {
-            this.loadingCache.invalidate(this.env + ":" + key);
-        } else {
-            this.loadingCache.invalidate(key);
-        }
-        return Boolean.TRUE;
-    }
-
-    /**
-     * 缓存管理
-     *
-     * @param cache
-     * @param <T>
-     * @return
-     */
-    private static <T> LoadingCache<String, T> caffineCacheManage(WxCache cache) {
-        log.info("初始化缓存的实体数据:{}", cache);
-        if (Objects.isNull(cache)) {
-            throw new NullPointerException("请实例化一个Cache对象!");
-        }
-        LoadingCache<String, T> localcache =
-                // 构建本地缓存,调用链的方式
-                // ,1000是设置缓存的初始化容量,maximumSize是设置缓存最大容量,当超过了最大容量,guava将使用LRU算法(最少使用算法),来移除缓存项
-                // expireAfterAccess(12,TimeUnit.HOURS)设置缓存有效期为12个小时
-                Caffeine.newBuilder().initialCapacity(cache.getInitialCapacity()).maximumSize(cache.getMaximumSize())
-                        // 设置写缓存后n秒钟过期
-                        // .expireAfterWrite(30, TimeUnit.SECONDS)
-                        .expireAfterWrite(cache.getDuration(), cache.getTimeunit())
-                        // 设置读写缓存后n秒钟过期,实际很少用到,类似于expireAfterWrite
-                        //.expireAfterAccess(googleCache.getDuration(), googleCache.getTimeunit())
-                        // 只阻塞当前数据加载线程,其他线程返回旧值
-                        //.refreshAfterWrite(10, TimeUnit.SECONDS)
-                        // 设置缓存的移除通知//用户手动移除EXPLICIT,
-                        // //用户手动替换REPLACED,//被垃圾回收COLLECTED,//超时过期EXPIRED,//SIZE由于缓存大小限制
-                        .removalListener(new RemovalListener<String, T>() {
-                            @Override
-                            public void onRemoval(String key, Object value, RemovalCause cause) {
-                                log.info(key + ":" + value + ":" + cause.name());
-                            }
-                        })
-                        // build里面要实现一个匿名抽象类
-                        .build(new CacheLoader<String, T>() {
-                            // 这个方法是默认的数据加载实现,get的时候,如果key没有对应的值,就调用这个方法进行加载。此处是没有默认值则返回null
-                            @Override
-                            public T load(String key) throws Exception {
-                                return null;
-                            }
-                        });
-        return localcache;
-    }
-}
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 d7f4f4c..68d1800 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
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.api.feignClient.AppUserClient;
 import com.ruoyi.chargingPile.api.dto.TAccountingStrategyDTO;
 import com.ruoyi.chargingPile.api.model.*;
 import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery;
@@ -15,13 +16,16 @@
 import com.ruoyi.chargingPile.service.TChargingPileService;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.log.enums.OperatorType;
+import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -30,6 +34,7 @@
 import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.time.LocalTime;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -51,7 +56,8 @@
     private TChargingPileService chargingPileService;
     @Autowired
     private ISiteService siteService;
-
+    @Autowired
+    private SysUserClient sysUserClient;
     @Resource
     private TokenService tokenService;
 
@@ -120,8 +126,16 @@
      */
     @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "查看计费策略详情")
     @GetMapping(value = "/getDetailById")
-    public AjaxResult<TAccountingStrategy> getDetailById(@RequestParam("id") Integer id) {
-        return AjaxResult.ok(accountingStrategyService.getById(id));
+    public AjaxResult<TAccountingStrategyVO> getDetailById(@RequestParam("id") Integer id) {
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(id);
+        TAccountingStrategyVO accountingStrategyVO = new TAccountingStrategyVO();
+        BeanUtils.copyProperties(accountingStrategy,accountingStrategyVO);
+        // 查询用户信息
+        String firstUserName = sysUserClient.getSysUser(accountingStrategy.getFirstUserId()).getData().getNickName();
+        String twoUserName = sysUserClient.getSysUser(accountingStrategy.getTwoUserId()).getData().getNickName();
+        accountingStrategyVO.setFirstUserName(firstUserName);
+        accountingStrategyVO.setTwoUserName(twoUserName);
+        return AjaxResult.ok(accountingStrategyVO);
     }
 
     /**
@@ -143,11 +157,12 @@
     @Log(title = "批量删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-计费策略"},value = "批量删除计费策略")
     @DeleteMapping(value = "/deleteByIds")
-    public AjaxResult<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
+    public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
+        String[] split = ids.split(",");
         // 刪除计费策略明细信息
         accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
-                .in(TAccountingStrategyDetail::getAccountingStrategyId, ids));
-        return AjaxResult.ok(accountingStrategyService.removeByIds(ids));
+                .in(TAccountingStrategyDetail::getAccountingStrategyId, Arrays.asList(split)));
+        return AjaxResult.success(accountingStrategyService.removeByIds(Arrays.asList(split)));
     }
     
     
@@ -179,8 +194,6 @@
             }
 
         }
-
-
         return AjaxResult.ok(accountingStrategyService.pageList(query));
     }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
index 86aa7ab..e91f208 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -5,21 +5,15 @@
 import com.ruoyi.chargingPile.api.dto.ApplyChargingQuery;
 import com.ruoyi.chargingPile.api.dto.ApplyChargingRemarkDto;
 import com.ruoyi.chargingPile.api.model.TApplyChargingPile;
-import com.ruoyi.chargingPile.api.model.TCarport;
-import com.ruoyi.chargingPile.api.vo.TCarportVO;
-import com.ruoyi.chargingPile.dto.ChargeMonitoring;
 import com.ruoyi.chargingPile.service.TApplyChargingPileService;
-import com.ruoyi.chargingPile.service.TCarportService;
-import com.ruoyi.chargingPile.service.TVehicleRampService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.log.enums.OperatorType;
+import com.ruoyi.common.security.service.TokenService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
 
 /**
  * <p>
@@ -34,10 +28,12 @@
 public class TApplyChargingPileController {
 
     private final TApplyChargingPileService applyChargingPileService;
+    private final TokenService tokenService;
 
     @Autowired
-    public TApplyChargingPileController(TApplyChargingPileService applyChargingPileService) {
+    public TApplyChargingPileController(TApplyChargingPileService applyChargingPileService, TokenService tokenService) {
         this.applyChargingPileService = applyChargingPileService;
+        this.tokenService = tokenService;
     }
 
     /**
@@ -47,15 +43,15 @@
     @ApiOperation(tags = {"小程序-建桩申请"},value = "建桩申请")
     @PostMapping(value = "/add")
     public AjaxResult<Boolean> add(@RequestBody TApplyChargingPile dto) {
-        // TODO 用户id
-        dto.setAppUserId(null);
+        // 用户id
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        dto.setAppUserId(userId);
         return AjaxResult.ok(applyChargingPileService.save(dto));
     }
 
     @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "列表")
     @PostMapping(value = "/page")
     public AjaxResult<Page<TApplyChargingPile>> page(ApplyChargingQuery applyChargingQuery) {
-        // TODO 用户id
         Page<TApplyChargingPile> page = applyChargingPileService.lambdaQuery()
                 .like(applyChargingQuery.getName() != null && !applyChargingQuery.getName().equals(""), TApplyChargingPile::getAgentPhone, applyChargingQuery.getName())
                 .page(Page.of(applyChargingQuery.getPageCurr(), applyChargingQuery.getPageSize()));
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java
index cca360e..5969f06 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java
@@ -8,6 +8,7 @@
 import com.ruoyi.chargingPile.service.TCarportService;
 import com.ruoyi.chargingPile.service.TVehicleRampService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.log.enums.OperatorType;
@@ -16,6 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -98,11 +100,12 @@
     @Log(title = "批量删除车库", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-车库"},value = "批量删除车库")
     @DeleteMapping(value = "/deleteByIds")
-    public AjaxResult<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
+    public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
+        String[] split = ids.split(",");
         // 刪除车道信息
         vehicleRampService.remove(Wrappers.lambdaQuery(TVehicleRamp.class)
-                .in(TVehicleRamp::getCarportId, ids));
-        return AjaxResult.ok(carportService.removeByIds(ids));
+                .in(TVehicleRamp::getCarportId, Arrays.asList(split)));
+        return AjaxResult.ok(carportService.removeByIds(Arrays.asList(split)));
     }
     
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index 5820af8..f38add6 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -10,6 +10,7 @@
 import com.ruoyi.chargingPile.service.TChargingPileService;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
@@ -21,6 +22,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -102,8 +104,9 @@
     @Log(title = "批量删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-充电枪"},value = "批量删除充电枪")
     @DeleteMapping(value = "/deleteByIds")
-    public AjaxResult<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
-        return AjaxResult.ok(chargingGunService.removeByIds(ids));
+    public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
+        String[] split = ids.split(",");
+        return AjaxResult.ok(chargingGunService.removeByIds(Arrays.asList(split)));
     }
 
     /**
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TMonitoringEquipmentController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TMonitoringEquipmentController.java
index 52653ec..f062ac2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TMonitoringEquipmentController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TMonitoringEquipmentController.java
@@ -7,6 +7,7 @@
 import com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO;
 import com.ruoyi.chargingPile.service.TMonitoringEquipmentService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
@@ -16,6 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -92,8 +94,9 @@
     @Log(title = "批量删除监控", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-监控"},value = "批量删除监控")
     @DeleteMapping(value = "/deleteByIds")
-    public AjaxResult<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
-        return AjaxResult.ok(monitoringEquipmentService.removeByIds(ids));
+    public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
+        String[] split = ids.split(",");
+        return AjaxResult.ok(monitoringEquipmentService.removeByIds(Arrays.asList(split)));
     }
 
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
index aca8121..7009be3 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
@@ -13,6 +13,7 @@
 import com.ruoyi.chargingPile.service.TVehicleRampService;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
@@ -22,6 +23,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -117,14 +119,15 @@
     @Log(title = "批量删除停车场", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-停车场"},value = "批量删除停车场")
     @DeleteMapping(value = "/deleteByIds")
-    public AjaxResult<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
+    public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
+        String[] split = ids.split(",");
         // 刪除车道信息
         vehicleRampService.remove(Wrappers.lambdaQuery(TVehicleRamp.class)
-                .in(TVehicleRamp::getParkingLotId, ids));
+                .in(TVehicleRamp::getParkingLotId, Arrays.asList(split)));
         // 删除车库信息
         carportService.remove(Wrappers.lambdaQuery(TCarport.class)
-                .in(TCarport::getParkingLotId, ids));
-        return AjaxResult.ok(parkingLotService.removeByIds(ids));
+                .in(TCarport::getParkingLotId, Arrays.asList(split)));
+        return AjaxResult.ok(parkingLotService.removeByIds(Arrays.asList(split)));
     }
 
     /**
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
index fdeaa28..96b7093 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
@@ -4,6 +4,7 @@
 import com.ruoyi.chargingPile.api.model.TVehicleRamp;
 import com.ruoyi.chargingPile.service.TVehicleRampService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.log.enums.OperatorType;
@@ -12,6 +13,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -79,8 +81,9 @@
     @Log(title = "批量删除车道", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-车道"},value = "批量删除车道")
     @DeleteMapping(value = "/deleteByIds")
-    public AjaxResult<Boolean> deleteByIds(@RequestBody List<Integer> ids) {
-        return AjaxResult.ok(vehicleRampService.removeByIds(ids));
+    public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
+        String[] split = ids.split(",");
+        return AjaxResult.ok(vehicleRampService.removeByIds(Arrays.asList(split)));
     }
 
     /**
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
index 80097d4..14003b2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
@@ -139,10 +139,7 @@
 		user.setRoleId(partner.getRoleId().longValue());
 		user.setRoleType(2);
 		user.setObjectId(partner.getId());
-		R r = sysUserClient.addSysUser(user);
-		if(200 != r.getCode()){
-			throw new RuntimeException(r.getMsg());
-		}
+		sysUserClient.addSysUser(user);
 		return AjaxResult.success();
 	}
 	
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 0dd482f..6efbe5e 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
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
@@ -20,9 +22,12 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.feignClient.RoleSiteClient;
 import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.other.api.feignClient.VipClient;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import org.springframework.stereotype.Service;
@@ -30,10 +35,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @author zhibing.pu
@@ -59,7 +61,13 @@
 	
 	@Resource
 	private RoleSiteClient roleSiteClient;
-	
+	@Resource
+	private TokenService tokenService;
+	@Resource
+	private AppUserClient appUserClient;
+	@Resource
+	private VipClient vipClient;
+
 	
 	
 	/**
@@ -217,8 +225,21 @@
 
 	@Override
 	public PageInfo<SiteVO> pageList(SiteQuery query) {
+		// 获取当前登录用户id
+		Long userId = tokenService.getLoginUserApplet().getUserId();
+		// 根据id查询用户信息
+		TAppUser appUser = appUserClient.getUserById(userId).getData();
 		PageInfo<SiteVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
 		List<SiteVO> list = this.baseMapper.pageList(query,pageInfo);
+		if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){
+			// 查询会员信息
+			TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+			if(Objects.nonNull(vip) && vip.getType() == 2){
+				list.forEach(item -> {
+					item.setVipElectrovalence(vip.getDiscount().multiply(item.getElectrovalence()));
+				});
+			}
+		}
 		pageInfo.setRecords(list);
 		return pageInfo;
 	}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
index 8011eb8..ea793af 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
@@ -10,11 +12,13 @@
 import com.ruoyi.chargingPile.mapper.TAccountingStrategyMapper;
 import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.feignClient.VipClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalTime;
 import java.util.ArrayList;
@@ -36,7 +40,10 @@
     private TAccountingStrategyMapper accountingStrategyMapper;
     @Autowired
     private VipClient vipClient;
-
+    @Autowired
+    private TokenService tokenService;
+    @Autowired
+    private AppUserClient appUserClient;
     @Override
     public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) {
         return this.baseMapper.queryAccountingStrategyDetailByStrategyId(strategyId);
@@ -51,18 +58,40 @@
             throw new ServiceException("未查询到计费策略");
         }
         List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId());
-        // 获取当前时间段的计费策略明细
-        TAccountingStrategyDetailVO accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0)
-                .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细"));
-        accountingStrategyDetailVO.setDiscount(accountingStrategy.getDiscount());
-        // 获取后一次的计费策略明细
-        TAccountingStrategyDetailVO accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0)
-                .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细"));
-        accountingStrategyDetailNext.setDiscount(accountingStrategy.getDiscount());
-        list = new ArrayList<>();
-        list.add(accountingStrategyDetailVO);
-        list.add(accountingStrategyDetailNext);
-        return list;
+        // 获取当前登录用户id
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        // 根据id查询用户信息
+        TAppUser appUser = appUserClient.getUserById(userId).getData();
+        if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){
+            // 查询会员信息
+            TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+            TAccountingStrategyDetailVO accountingStrategyDetailVO;
+            TAccountingStrategyDetailVO accountingStrategyDetailNext;
+            if(Objects.nonNull(vip) && vip.getType() == 2){
+                // 获取当前时间段的计费策略明细
+                accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0)
+                        .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细"));
+                accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(vip.getDiscount()));
+                // 获取后一次的计费策略明细
+                accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0)
+                        .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细"));
+                accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(vip.getDiscount()));
+            }else {
+                // 获取当前时间段的计费策略明细
+                accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0)
+                        .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细"));
+                accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(accountingStrategy.getDiscount()));
+                // 获取后一次的计费策略明细
+                accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0)
+                        .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细"));
+                accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(accountingStrategy.getDiscount()));
+            }
+            list = new ArrayList<>();
+            list.add(accountingStrategyDetailVO);
+            list.add(accountingStrategyDetailNext);
+            return list;
+        }
+        return new ArrayList<>();
     }
 
     @Override
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java
index 80c0ca6..a6d6746 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java
@@ -17,6 +17,7 @@
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.HashSet;
@@ -44,20 +45,26 @@
     private TParkingLotService parkingLotService;
     @Override
     public PageInfo<TMonitoringEquipmentVO> pageList(TMonitoringEquipmentQuery query) {
-
         //校验合作商权限
         SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
         Integer roleType = sysUser.getRoleType();
         Integer objectId = sysUser.getObjectId();
         // 查询管理站点下的停车场
         List<TParkingLotVO> parkingLotVOS = parkingLotService.getList(null);
+        if(CollectionUtils.isEmpty(parkingLotVOS)){
+            return new PageInfo<>();
+        }
         List<Integer> parkingLotIds = parkingLotVOS.stream().map(TParkingLotVO::getId).collect(Collectors.toList());
 
         PageInfo<TMonitoringEquipmentVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
         List<TMonitoringEquipmentVO> list = this.baseMapper.pageList(query,pageInfo,parkingLotIds);
         for (TMonitoringEquipmentVO monitoringEquipmentVO : list) {
-            Integer siteId = parkingLotVOS.stream().filter(park->park.getId().equals(monitoringEquipmentVO.getParkingLotId())).findFirst().get().getSiteId();
-            monitoringEquipmentVO.setAuthQueryInfo(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_MONITOR));
+            TParkingLotVO tParkingLotVO = parkingLotVOS.stream().filter(park -> monitoringEquipmentVO.getParkingLotId().equals(park.getId())).findFirst().get();
+            if(null != tParkingLotVO){
+                Integer siteId = tParkingLotVO.getSiteId();
+                monitoringEquipmentVO.setAuthQueryInfo(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.PARKING_LOT_MONITOR));
+            }
+
         }
         pageInfo.setRecords(list);
         return pageInfo;
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
index 78f3e47..cb53cae 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -30,8 +30,9 @@
         FROM t_accounting_strategy
         <where>
             <if test="query.name != null and query.name != ''">
-                AND  `name` LIKE concat('%',#{query.name}, '%')
+                AND `name` LIKE concat('%',#{query.name}, '%')
             </if>
+            AND site_id IS NULL
             AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
         </where>
         ORDER BY create_time DESC
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
index ace731e..681c9a0 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
@@ -10,17 +10,19 @@
         <result column="parking_lot_id" property="parkingLotId" />
         <result column="location" property="location" />
         <result column="url_link" property="urlLink" />
+        <result column="status" property="status" />
+        <result column="faultTime" property="faultTime" />
         <result column="create_time" property="createTime" />
         <result column="del_flag" property="delFlag" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, `name`, code, parking_lot_id, location, url_link, create_time, del_flag
+        id, `name`, code, parking_lot_id, location, url_link,status,faultTime, create_time, del_flag
     </sql>
     <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO">
         SELECT
-        tme.id, tme.`name`, tme.code, tme.parking_lot_id, tme.location, tme.url_link, tme.create_time, tme.del_flag, tpl.name AS parkingLotName
+        tme.id, tme.`name`, tme.code, tme.parking_lot_id, tme.location, tme.url_link,tme.status,tme.faultTime, tme.create_time, tme.del_flag, tpl.name AS parkingLotName
         FROM t_monitoring_equipment tme
         LEFT JOIN t_parking_lot tpl ON tme.parking_lot_id = tpl.id
         <where>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/config/DataUpdateHandlerConfig.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/config/DataUpdateHandlerConfig.java
index aee3138..3fab04f 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/config/DataUpdateHandlerConfig.java
@@ -7,6 +7,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -33,8 +34,8 @@
      */
     @Override
     public void insertFill(MetaObject metaObject) {
-        this.setFieldValByName("createTime", new Date(), metaObject);
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 
     /**
@@ -44,6 +45,6 @@
      */
     @Override
     public void updateFill(MetaObject metaObject) {
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/DataUpdateHandlerConfig.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/DataUpdateHandlerConfig.java
index a94eff9..900ffcb 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/DataUpdateHandlerConfig.java
@@ -7,6 +7,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -33,8 +34,8 @@
      */
     @Override
     public void insertFill(MetaObject metaObject) {
-        this.setFieldValByName("createTime", new Date(), metaObject);
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 
     /**
@@ -44,6 +45,6 @@
      */
     @Override
     public void updateFill(MetaObject metaObject) {
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
index 9188660..8d8ec02 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -62,7 +62,7 @@
     @GetMapping(value = "/addOrderAppeal")
     @ApiOperation(value = "申诉订单", tags = {"小程序-充电记录(个人中心)"})
     public AjaxResult addOrderAppeal(@RequestBody TOrderAppeal orderAppeal){
-        Long appUserId = tokenService.getLoginUser().getUserid();
+        Long appUserId = tokenService.getLoginUserApplet().getUserId();
         orderAppeal.setAppUserId(appUserId);
         orderAppeal.setStatus(1);
         orderAppealService.save(orderAppeal);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index f189465..ae4d583 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -65,7 +65,7 @@
 	 */
 	@Override
 	public Map<String, Object> getMyChargingOrderList(GetMyChargingOrderList query) {
-		Long appUserId = tokenService.getLoginUser().getUserid();
+		Long appUserId = tokenService.getLoginUserApplet().getUserId();
 		Map<String, Object> map = new HashMap<>();
 		int size = this.baseMapper.getMyChargingOrderList(appUserId, 1, null, null).size();
 		map.put("number", size);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java
index 341d6b7..7ae05e6 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java
@@ -58,7 +58,7 @@
 	 */
 	@Override
 	public List<MyExchangeOrderList> getMyExchangeOrder(GetMyExchangeOrder query) {
-		Long userid = tokenService.getLoginUser().getUserid();
+		Long userid = tokenService.getLoginUserApplet().getUserId();
 		LambdaQueryWrapper<TExchangeOrder> wrapper = new LambdaQueryWrapper<TExchangeOrder>().eq(TExchangeOrder::getDelFlag, 0).eq(TExchangeOrder::getAppUserId, userid);
 		if(query.getStatus() == 0){
 			wrapper.ne(TExchangeOrder::getStatus, 4);
@@ -82,7 +82,7 @@
 				name = goods.getName();
 				imgUrl = goods.getCoverPicture();
 			}else{
-				TCoupon coupon = couponClient.getCouponById(tExchangeOrder.getGoodsId()).getData();
+				TCoupon coupon = couponClient.getCouponById1(tExchangeOrder.getGoodsId()).getData();
 				name = coupon.getName();
 				imgUrl = coupon.getCoverPicture();
 			}
@@ -118,7 +118,7 @@
 			name = goods.getName();
 			imgUrl = goods.getCoverPicture();
 		}else{
-			TCoupon coupon = couponClient.getCouponById(exchangeOrder.getGoodsId()).getData();
+			TCoupon coupon = couponClient.getCouponById1(exchangeOrder.getGoodsId()).getData();
 			info.setCouponType(coupon.getType());
 			info.setDays(coupon.getDays());
 			info.setEndTime(coupon.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index e0f76a8..5d772b8 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -246,7 +246,7 @@
         }
         orderEvaluate = new TOrderEvaluate();
         BeanUtils.copyProperties(query, orderEvaluate);
-        Long userid = tokenService.getLoginUser().getUserid();
+        Long userid = tokenService.getLoginUserApplet().getUserId();
         orderEvaluate.setAppUserId(userid);
         if(query.getOrderType() == 1){
             TChargingOrder chargingOrder = chargingOrderService.getById(query.getOrderId());
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/config/DataUpdateHandlerConfig.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/config/DataUpdateHandlerConfig.java
index 80db2a1..2e56889 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/config/DataUpdateHandlerConfig.java
@@ -7,6 +7,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -33,8 +35,8 @@
      */
     @Override
     public void insertFill(MetaObject metaObject) {
-        this.setFieldValByName("createTime", new Date(), metaObject);
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 
     /**
@@ -44,6 +46,6 @@
      */
     @Override
     public void updateFill(MetaObject metaObject) {
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java
index cd4eb1c..140d0d7 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java
@@ -45,11 +45,11 @@
         return AjaxResult.success();
     }
     @GetMapping("/getInfo")
-    @ApiOperation(tags = {"管理后台-活动管理"},value = "活动查看详情")
+    @ApiOperation(tags = {"管理后台-活动管理","小程序-个人中心-活动列表"},value = "活动查看详情")
     public AjaxResult<TActivity> getInfo(Integer id) {
         return AjaxResult.ok(activityService.getById(id));
     }
-    @ApiOperation(tags = {"管理后台-活动管理"},value = "活动列表分页查询")
+    @ApiOperation(tags = {"管理后台-活动管理","小程序-个人中心-活动列表"},value = "活动列表分页查询")
     @PostMapping(value = "/pageList")
     public AjaxResult<PageInfo<TActivity>> pageList(@RequestBody AdvertisingDTO dto) {
         return AjaxResult.ok(activityService.pageList(dto));
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
index 8bfd455..7d2b0bd 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
@@ -64,7 +64,7 @@
     }
 
     @ApiOperation(tags = {"小程序-广告管理"},value = "广告列表查询")
-    @PostMapping(value = "/list")
+    @GetMapping(value = "/list")
     public AjaxResult<List<TAdvertising>> list() {
         return AjaxResult.ok(advertisingService.list(Wrappers.lambdaQuery(TAdvertising.class)
                 .eq(TAdvertising::getStatus, AdvertisingStatusEnum.YES.getCode())));
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 6635c05..c5e604a 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
@@ -34,7 +34,6 @@
 				.like(unitListQueryDto.getCompanyName() != null && unitListQueryDto.getCompanyName().isEmpty(), TCompany::getName, unitListQueryDto.getCompanyName())
 				.page(Page.of(unitListQueryDto.getPageCurr(), unitListQueryDto.getPageSize()));
 		return R.ok(page);
-		
 	}
 	
 	//单位添加
@@ -48,8 +47,8 @@
 	}
 	
 	@PostMapping(value = "/unit/delete")
-	public R<TCompany> delete(@RequestParam("id") Integer id) {
-		return R.ok(companyService.getById(id));
+	public R delete(@RequestParam("id") Integer id) {
+		return R.ok(companyService.removeById(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 f36cca6..eede80e 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
@@ -117,6 +117,7 @@
         return AjaxResult.ok(tCouponService.pageList(dto));
     }
 
+
     /**
      * 小程序远程调用 获取优惠券信息
      */
@@ -136,8 +137,8 @@
      * @param id
      * @return
      */
-    @PostMapping(value = "/getCouponById/{id}")
-    public R<TCoupon> getCouponById(@PathVariable Integer id){
+    @PostMapping(value = "/getCouponById1/{id}")
+    public R<TCoupon> getCouponById1(@PathVariable(value = "id") Integer id){
         TCoupon coupon = tCouponService.getById(id);
         return R.ok(coupon);
     }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java
index f11efbe..113df1d 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.other.api.domain.TEnterpriseUserApplication;
 import com.ruoyi.other.service.TEnterpriseUserApplicationService;
 import io.swagger.annotations.ApiOperation;
@@ -27,10 +28,12 @@
 public class TEnterpriseUserApplicationController {
 
     private final TEnterpriseUserApplicationService enterpriseUserApplicationService;
+    private final TokenService tokenService;
 
     @Autowired
-    public TEnterpriseUserApplicationController(TEnterpriseUserApplicationService enterpriseUserApplicationService) {
+    public TEnterpriseUserApplicationController(TEnterpriseUserApplicationService enterpriseUserApplicationService, TokenService tokenService) {
         this.enterpriseUserApplicationService = enterpriseUserApplicationService;
+        this.tokenService = tokenService;
     }
 
     /**
@@ -40,14 +43,16 @@
     @ApiOperation(tags = {"小程序-计费策略"},value = "添加集团用户申请")
     @PostMapping(value = "/add")
     public AjaxResult<Boolean> add(@Validated @RequestBody TEnterpriseUserApplication dto) {
-        // TODO 用户id
+        // 用户id
+        dto.setAppUserId(tokenService.getLoginUserApplet().getUserId());
         return AjaxResult.ok(enterpriseUserApplicationService.save(dto));
     }
 
     @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "集团用户列表")
     @PostMapping(value = "/page")
     public AjaxResult<Boolean> page(@RequestBody TEnterpriseUserApplication dto) {
-        // TODO 用户id
+        // 用户id
+        dto.setAppUserId(tokenService.getLoginUserApplet().getUserId());
         return AjaxResult.ok(enterpriseUserApplicationService.save(dto));
     }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
index bd06451..191d727 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
@@ -38,8 +38,8 @@
     }
 
     @PostMapping("/getTagList")
-    public R<List<TEvaluationTagVO>> getTagList() {
-        return R.ok(evaluationTagService.getTagList());
+    public R<List<TEvaluationTagVO>> getTagList(@RequestParam("type") Integer type) {
+        return R.ok(evaluationTagService.getTagList(type));
     }
     
     
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java
index 1739f4d..46b995a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java
@@ -1,9 +1,14 @@
 package com.ruoyi.other.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.other.api.domain.THtml;
+import com.ruoyi.other.api.domain.TNotice;
+import com.ruoyi.other.service.THtmlService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
 
 /**
  * <p>
@@ -16,6 +21,21 @@
 @RestController
 @RequestMapping("/t-html")
 public class THtmlController {
+    @Resource
+    private THtmlService htmlService;
+    @ApiOperation(tags = {"后台-内容设置-协议服务"},value = "新增修改")
+    @PostMapping(value = "/saveOrUpdate")
+    public AjaxResult saveOrUpdate(@RequestBody THtml tHtml) {
+        htmlService.saveOrUpdate(tHtml);
+    return AjaxResult.success();
+    }
+
+    @ApiOperation(tags = {"后台-内容设置-协议服务"},value = "查询")
+    @PostMapping(value = "/selectByType/{type}")
+    public AjaxResult selectByType(@PathVariable Integer type) {
+        THtml one = htmlService.lambdaQuery().eq(THtml::getType, type).last("limit 1").one();
+        return AjaxResult.success(one);
+    }
 
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java
index ee4dcb9..06838a6 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java
@@ -1,9 +1,17 @@
 package com.ruoyi.other.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.other.api.domain.TNotice;
+import com.ruoyi.other.api.dto.NoticeQueryDto;
+import com.ruoyi.other.mapper.SysNoticeMapper;
+import com.ruoyi.other.service.TNoticeService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -16,6 +24,49 @@
 @RestController
 @RequestMapping("/t-notice")
 public class TNoticeController {
+    @Resource
+    private TNoticeService noticeService;
+
+    @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "新增修改")
+    @PostMapping(value = "/saveOrUpdate")
+    public AjaxResult saveOrUpdate(@RequestBody TNotice notice) {
+        noticeService.saveOrUpdate(notice);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "删除")
+    @PostMapping(value = "/deleteById/{id}")
+    public AjaxResult deleteById(@PathVariable Integer id) {
+        noticeService.removeById(id);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "查询")
+    @PostMapping(value = "/pageList")
+    public AjaxResult<Page<TNotice>> authPageList(@RequestBody NoticeQueryDto query) {
+            if (query.getStatus()==0){
+                return AjaxResult.success(noticeService.lambdaQuery()
+                        .le(TNotice::getStartTime, LocalDateTime.now())
+                        .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent())
+                        .page(Page.of(query.getPageCurr(),query.getPageSize())));
+            }else if (query.getStatus()==1){
+                return AjaxResult.success(noticeService.lambdaQuery()
+                        .ge(TNotice::getStartTime, LocalDateTime.now()).le(TNotice::getEndTime,LocalDateTime.now())
+                        .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent())
+                        .page(Page.of(query.getPageCurr(),query.getPageSize())));
+            }else if (query.getStatus()==2){
+                return AjaxResult.success(noticeService.lambdaQuery()
+                        .ge(TNotice::getEndTime, LocalDateTime.now())
+                        .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent())
+                        .page(Page.of(query.getPageCurr(),query.getPageSize())));
+            }else{
+                return AjaxResult.success(noticeService.lambdaQuery()
+                        .like(query.getContent()!=null&&query.getContent()!="",TNotice::getContent,query.getContent())
+                        .page(Page.of(query.getPageCurr(),query.getPageSize())));
+        }
+
+
+    }
 
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
index a78e805..f63f4a5 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java
@@ -8,11 +8,7 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 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 org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -36,12 +32,19 @@
     /**
      * 查看系统设置
      */
-    @ApiOperation(tags = {"小程序-系统设置"},value = "联系客服")
+    @ApiOperation(tags = {"小程序-系统设置","后台-内容设置"},value = "联系客服,查询设置")
     @GetMapping(value = "/getDetailById")
     public AjaxResult<TSystemConfiguration> getDetailById(@RequestParam(name = "type")@ApiParam(value = "1=客服信息,2=系统设置") Integer type) {
         return AjaxResult.ok(systemConfigurationService.getOne(Wrappers.lambdaQuery(TSystemConfiguration.class)
                 .eq(TSystemConfiguration::getType, type)));
     }
 
+    @ApiOperation(tags = {"后台-内容设置"},value = "客户信息,系统内容设置")
+    @GetMapping(value = "/save")
+    public AjaxResult getDetailById(@RequestBody TSystemConfiguration systemConfiguration) {
+        systemConfigurationService.saveOrUpdate(systemConfiguration);
+        return AjaxResult.success();
+    }
+
 }
 
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 97f0451..a460fb0 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
@@ -1,13 +1,19 @@
 package com.ruoyi.other.controller;
 
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.account.api.dto.SendCouponDto;
 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 com.ruoyi.other.api.domain.TIntegralRule;
 import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.dto.VipCouponDto;
+import com.ruoyi.other.api.dto.VipInfoDto;
+import com.ruoyi.other.service.TCouponService;
 import com.ruoyi.other.service.TVipService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -16,6 +22,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -33,6 +42,8 @@
 public class TVipController {
     @Autowired
     private TVipService vipService;
+    @Resource
+    private TCouponService couponService;
     @PostMapping("/saveVip")
     @ApiOperation(tags = {"管理后台-会员管理"},value = "会员添加")
     public AjaxResult saveVip(@RequestBody TVip dto) {
@@ -57,6 +68,13 @@
         return AjaxResult.ok(vipService.getById(id));
     }
 
+
+    @GetMapping("/getById")
+    @ApiOperation(value = "通过id查会员")
+    public R<TVip> getById(Integer id) {
+        return R.ok(vipService.getById(id));
+    }
+
     /**
      * 远程调用
      * @param id
@@ -74,6 +92,16 @@
     })
     public AjaxResult<PageInfo<TVip>> pageList(Integer pageCurr,Integer pageSize) {
         return AjaxResult.ok(vipService.pageList(pageCurr,pageSize));
+    }
+
+    @ApiOperation(tags = {"会员下拉框"},value = "会员列表分页查询")
+    @PostMapping(value = "/select")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageCurr", value = "分页参数,当前页码", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "分页参数,每页数量",required = true)
+    })
+    public AjaxResult<List<TVip>> select() {
+        return AjaxResult.ok(vipService.list());
     }
 
     //获取会员Map
@@ -115,5 +143,47 @@
         }
     }
 
+
+    @ApiOperation(value = "会员信息", tags = {"小程序-个人中心"})
+    @PostMapping("/vipInfo")
+    public AjaxResult vipInfo() {
+        List<VipInfoDto> vipInfoDtos = new ArrayList<>();
+        List<TVip> vips = vipService.lambdaQuery().eq(TVip::getReveal, 1).list();
+        for (TVip vip : vips) {
+            VipInfoDto vipInfoDto = new VipInfoDto();
+            vipInfoDto.setMonthlyCard(vip.getMonthlyCardReveal()==1?vip.getMonthlyCard():null);
+            vipInfoDto.setSeasonCard(vip.getSeasonCardReveal()==1?vip.getSeasonCard():null);
+            vipInfoDto.setAnnualCard(vip.getAnnualCardReveal()==1?vip.getAnnualCard():null);
+            vipInfoDto.setMaximumDeduction(vip.getMaximumDeduction());
+            vipInfoDto.setDiscountTimes(vip.getDiscountTimes());
+            vipInfoDto.setDoubleIntegration(vip.getDoubleIntegration());
+            vipInfoDto.setMallExclusivePrice(vip.getMallExclusivePrice());
+            List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
+            List<VipCouponDto> vipCouponDtos = new ArrayList<>();
+            if (!javaList.isEmpty()){
+                for (SendCouponDto sendCouponDto : javaList) {
+                    VipCouponDto vipCouponDto = new VipCouponDto();
+                    TCoupon byId = couponService.getById(sendCouponDto.getId());
+                    vipCouponDto.setNum(sendCouponDto.getNumber());
+                    vipCouponDto.setTCoupon(byId);
+                    vipCouponDtos.add(vipCouponDto);
+                }
+            }
+
+            vipInfoDto.setVipCouponDtos(vipCouponDtos);
+
+            //计算总折扣
+            BigDecimal  total = BigDecimal.ZERO;
+            total = total.add(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes())));
+            for (VipCouponDto vipCouponDto : vipCouponDtos) {
+                TCoupon tCoupon = vipCouponDto.getTCoupon();
+                total.add(tCoupon.getDiscount());
+            }
+            vipInfoDto.setTotalDiscount(total);
+            vipInfoDtos.add(vipInfoDto);
+        }
+        return AjaxResult.success(vipInfoDtos);
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java
index 4376dbf..5a71975 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java
@@ -22,7 +22,7 @@
      * 获取评价标签列表
      * @return
      */
-    List<TEvaluationTagVO> getTagList();
+    List<TEvaluationTagVO> getTagList(Integer type);
     
     
     /**
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java
index 7b0cb82..0a1555d 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java
@@ -22,7 +22,7 @@
      * 查询标签列表
      * @return
      */
-    List<TEvaluationTagVO> getTagList();
+    List<TEvaluationTagVO> getTagList(Integer type);
     
     
     /**
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java
index f6448d9..38bccd5 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java
@@ -23,8 +23,8 @@
 public class TEvaluationTagServiceImpl extends ServiceImpl<TEvaluationTagMapper, TEvaluationTag> implements TEvaluationTagService {
 
     @Override
-    public List<TEvaluationTagVO> getTagList() {
-        return this.baseMapper.getTagList();
+    public List<TEvaluationTagVO> getTagList(Integer type) {
+        return this.baseMapper.getTagList(type);
     }
     
     
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml
index ec534eb..db0ab29 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml
@@ -17,7 +17,11 @@
     </sql>
     <select id="getTagList" resultType="com.ruoyi.other.api.vo.TEvaluationTagVO">
         select <include refid="Base_Column_List"></include>
-        from t_evaluation_tag where del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} ORDER BY `type`
+        from t_evaluation_tag where del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        <if test="null != type">
+            and `type` = #{type}
+        </if>
+        ORDER BY `type`
     </select>
 
     
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/config/DataUpdateHandlerConfig.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/config/DataUpdateHandlerConfig.java
index 18adb74..4c2d0cf 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/config/DataUpdateHandlerConfig.java
@@ -7,6 +7,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -33,8 +34,8 @@
      */
     @Override
     public void insertFill(MetaObject metaObject) {
-        this.setFieldValByName("createTime", new Date(), metaObject);
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 
     /**
@@ -44,6 +45,6 @@
      */
     @Override
     public void updateFill(MetaObject metaObject) {
-        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
     }
 }

--
Gitblit v1.7.1