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

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java                                  |   57 --
 ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml                                                                    |    2 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLoginLog.java                                                |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java                              |   10 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml                                               |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java                            |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java                      |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java                                     |    6 
 ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports        |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                                 |    4 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java                                           |    4 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java                                     |   18 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java                           |   10 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TExchangeOrderMapper.xml                                                   |   20 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                                                   |    2 
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java                                          |    8 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ShoppingOrderFallbackFactory.java                                |   31 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java                                    |    2 
 ruoyi-auth/pom.xml                                                                                                                   |    4 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml                                                        |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java                             |   27 +
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                                                              |   12 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml                                                   |   21 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java                        |   32 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java                                       |  796 ++++++++++++++++++--------------------
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java                                     |   21 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ShoppingOrderClient.java                                     |   29 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java                                   |   48 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java                                     |    2 
 30 files changed, 656 insertions(+), 529 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
index 80a88a5..a0a477c 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
@@ -26,7 +26,7 @@
      * @param carIds 车辆id集合
      * @return
      */
-    @PostMapping(value = "/t-app-user-car/getCarByIds")
+    @PostMapping(value = "/t-app-user-car/t-app-user-car/getCarByIds")
     public R<List<TAppUserCar>> getCarByIds(@RequestBody List<Long> carIds);
     
     
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
new file mode 100644
index 0000000..d2f3666
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
@@ -0,0 +1,32 @@
+package com.ruoyi.chargingPile.api.factory;
+
+import com.ruoyi.chargingPile.api.feignClient.PartnerClient;
+import com.ruoyi.chargingPile.api.model.Partner;
+import com.ruoyi.common.core.domain.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 充电桩服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class PartnerFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<PartnerClient> {
+	private static final Logger log = LoggerFactory.getLogger(PartnerFallbackFactory.class);
+	
+	@Override
+	public PartnerClient create(Throwable throwable) {
+		log.error("调用失败:{}", throwable.getMessage());
+		return new PartnerClient() {
+			
+			
+			@Override
+			public R<Partner> getPartnerById(Integer id) {
+				return R.fail("根据id获取合作商信息失败:" + throwable.getMessage());
+			}
+		};
+	}
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
new file mode 100644
index 0000000..198aeaa
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
@@ -0,0 +1,27 @@
+package com.ruoyi.chargingPile.api.feignClient;
+
+import com.ruoyi.chargingPile.api.factory.PartnerFallbackFactory;
+import com.ruoyi.chargingPile.api.model.Partner;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/30 9:36
+ */
+@FeignClient(contextId = "PartnerClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = PartnerFallbackFactory.class)
+public interface PartnerClient {
+	
+	
+	/**
+	 * 根据id获取合作商信息
+	 * @param id
+	 * @return
+	 */
+	@PostMapping("/partner/getPartnerById/{id}")
+	R<Partner> getPartnerById(@PathVariable("id") Integer id);
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 3de243c..ed69db2 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -5,4 +5,5 @@
 com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory
 com.ruoyi.chargingPile.api.factory.AccountingStrategyFallbackFactory
 com.ruoyi.chargingPile.api.factory.ParkingRecordFallbackFactory
-com.ruoyi.chargingPile.api.factory.FaultMessageFallbackFactory
\ No newline at end of file
+com.ruoyi.chargingPile.api.factory.FaultMessageFallbackFactory
+com.ruoyi.chargingPile.api.factory.PartnerFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ShoppingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ShoppingOrderFallbackFactory.java
new file mode 100644
index 0000000..9ce69c9
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ShoppingOrderFallbackFactory.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.api.factory;
+
+import com.ruoyi.order.api.feignClient.ShoppingOrderClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 充电订单服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class ShoppingOrderFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<ShoppingOrderClient> {
+	private static final Logger log = LoggerFactory.getLogger(ShoppingOrderFallbackFactory.class);
+	
+	
+	@Override
+	public ShoppingOrderClient create(Throwable cause) {
+		log.error("调用失败:{}", cause.getMessage());
+		return new ShoppingOrderClient() {
+			
+			
+			@Override
+			public void cancelShoppingOrderWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time) {
+				log.error("商城订单去掉退款回调通知失败:" + cause.getMessage());
+			}
+		};
+	}
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ShoppingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ShoppingOrderClient.java
new file mode 100644
index 0000000..94901e0
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ShoppingOrderClient.java
@@ -0,0 +1,29 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.order.api.factory.ShoppingOrderFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/29 16:23
+ */
+@FeignClient(contextId = "ShoppingOrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = ShoppingOrderFallbackFactory.class)
+public interface ShoppingOrderClient {
+	
+	
+	/**
+	 * 商城订单去掉退款回调通知
+	 * @param out_refund_no
+	 * @param refund_id
+	 * @param tradeState
+	 * @param success_time
+	 */
+	@PostMapping("/t-shopping-order/cancelShoppingOrderWxRefund")
+	void cancelShoppingOrderWxRefund(@RequestParam("out_refund_no") String out_refund_no,
+	                                 @RequestParam("refund_id") String refund_id,
+	                                 @RequestParam("tradeState") String tradeState,
+	                                 @RequestParam("success_time") String success_time);
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index afa46fb..108adca 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -3,4 +3,5 @@
 com.ruoyi.order.api.factory.ExchangeOrderFallbackFactory
 com.ruoyi.order.api.factory.ChargingOrderAccountingStrategyFallbackFactory
 com.ruoyi.order.api.factory.AccountingStrategyDetailOrderFallbackFactory
-com.ruoyi.order.api.factory.AccountingStrategyOrderFallbackFactory
\ No newline at end of file
+com.ruoyi.order.api.factory.AccountingStrategyOrderFallbackFactory
+com.ruoyi.order.api.factory.ShoppingOrderFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLoginLog.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLoginLog.java
index 1c74644..326c448 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLoginLog.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLoginLog.java
@@ -8,6 +8,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
@@ -66,6 +67,7 @@
 	@TableField("login_time")
 	@ApiModelProperty(value = "登录时间")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime loginTime;
 	/**
 	 * 登录状态(1=成功,2=失败)
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java
index e7d3e70..cc7712c 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java
@@ -21,6 +21,6 @@
 	 * @param loginLog
 	 * @return
 	 */
-	@PostMapping("/saveLoginLog")
+	@PostMapping("/sysLoginLog/saveLoginLog")
 	R saveLoginLog(@RequestBody SysLoginLog loginLog);
 }
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index 17035c7..6be75c3 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -89,6 +89,10 @@
             <artifactId>hutool-crypto</artifactId>
             <version>${hutool.version}</version>
         </dependency>
+	    <dependency>
+		    <groupId>com.ruoyi</groupId>
+		    <artifactId>ruoyi-api-chargingPile</artifactId>
+	    </dependency>
 
     </dependencies>
 	
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 1cc1d79..da2ac38 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
@@ -3,6 +3,8 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import com.ruoyi.chargingPile.api.feignClient.PartnerClient;
+import com.ruoyi.chargingPile.api.model.Partner;
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
@@ -40,6 +42,12 @@
 	@Resource
 	private SysUserClient userClient;
 	
+	@Resource
+	private PartnerClient partnerClient;
+	
+	
+	
+	
 	
 	@PostMapping("login")
 	@GlobalTransactional(rollbackFor = Exception.class)//分布式事务
@@ -55,6 +63,10 @@
 
         map.put("roleName",roles.get(0).getRoleName());
 		map.put("info", userInfo);
+		if(userInfo.getSysUser().getRoleType() == 2){
+			Partner partner = partnerClient.getPartnerById(userInfo.getSysUser().getObjectId()).getData();
+			map.put("partnerName", partner.getName());
+		}
 		// 修改用户最后登录时间
 		SysUser sysUser = new SysUser();
 		sysUser.setUserId(userInfo.getSysUser().getUserId());
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 ca886c7..1598576 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
@@ -60,12 +60,12 @@
     /**
      * 登录成功状态
      */
-    public static final String LOGIN_SUCCESS_STATUS = "0";
+    public static final String LOGIN_SUCCESS_STATUS = "1";
 
     /**
      * 登录失败状态
      */
-    public static final String LOGIN_FAIL_STATUS = "1";
+    public static final String LOGIN_FAIL_STATUS = "2";
 
     /**
      * 登录成功
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index e5cc275..3c52cfc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -29,427 +29,389 @@
 
 /**
  * 角色 业务层处理
- * 
+ *
  * @author ruoyi
  */
 @Service
-public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService
-{
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysRoleMenuMapper roleMenuMapper;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
-
-    @Autowired
-    private SysRoleDeptMapper roleDeptMapper;
-
-    /**
-     * 根据条件分页查询角色数据
-     * 
-     * @param role 角色信息
-     * @return 角色数据集合信息
-     */
-    @Override
-    @DataScope(deptAlias = "d")
-    public List<SysRole> selectRoleList(SysRole role)
-    {
-        return roleMapper.selectRoleList(role);
-    }
-
-    /**
-     * 根据用户ID查询角色
-     * 
-     * @param userId 用户ID
-     * @return 角色列表
-     */
-    @Override
-    public List<SysRole> selectRolesByUserId(Long userId)
-    {
-        List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
-        List<SysRole> roles = selectRoleAll();
-        for (SysRole role : roles)
-        {
-            for (SysRole userRole : userRoles)
-            {
-                if (role.getRoleId().longValue() == userRole.getRoleId().longValue())
-                {
-                    role.setFlag(true);
-                    break;
-                }
-            }
-        }
-        return roles;
-    }
-
-    /**
-     * 根据用户ID查询权限
-     * 
-     * @param userId 用户ID
-     * @return 权限列表
-     */
-    @Override
-    public Set<String> selectRolePermissionByUserId(Long userId)
-    {
-        List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
-        Set<String> permsSet = new HashSet<>();
-        for (SysRole perm : perms)
-        {
-            if (StringUtils.isNotNull(perm))
-            {
-                permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
-            }
-        }
-        return permsSet;
-    }
-
-    /**
-     * 查询所有角色
-     * 
-     * @return 角色列表
-     */
-    @Override
-    public List<SysRole> selectRoleAll()
-    {
-        return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
-    }
-
-    /**
-     * 根据用户ID获取角色选择框列表
-     * 
-     * @param userId 用户ID
-     * @return 选中角色ID列表
-     */
-    @Override
-    public List<Long> selectRoleListByUserId(Long userId)
-    {
-        return roleMapper.selectRoleListByUserId(userId);
-    }
-
-    /**
-     * 通过角色ID查询角色
-     * 
-     * @param roleId 角色ID
-     * @return 角色对象信息
-     */
-    @Override
-    public SysRole selectRoleById(Long roleId)
-    {
-        return roleMapper.selectRoleById(roleId);
-    }
-
-    /**
-     * 校验角色名称是否唯一
-     * 
-     * @param role 角色信息
-     * @return 结果
-     */
-    @Override
-    public boolean checkRoleNameUnique(SysRole role)
-    {
-        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
-        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 校验角色权限是否唯一
-     * 
-     * @param role 角色信息
-     * @return 结果
-     */
-    @Override
-    public boolean checkRoleKeyUnique(SysRole role)
-    {
-        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
-        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 校验角色是否允许操作
-     * 
-     * @param role 角色信息
-     */
-    @Override
-    public void checkRoleAllowed(SysRole role)
-    {
-        if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
-        {
-            throw new ServiceException("不允许操作超级管理员角色");
-        }
-    }
-
-    /**
-     * 校验角色是否有数据权限
-     * 
-     * @param roleId 角色id
-     */
-    @Override
-    public void checkRoleDataScope(Long roleId)
-    {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
-        {
-            SysRole role = new SysRole();
-            role.setRoleId(roleId);
-            List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
-            if (StringUtils.isEmpty(roles))
-            {
-                throw new ServiceException("没有权限访问角色数据!");
-            }
-        }
-    }
-
-    /**
-     * 通过角色ID查询角色使用数量
-     * 
-     * @param roleId 角色ID
-     * @return 结果
-     */
-    @Override
-    public int countUserRoleByRoleId(Long roleId)
-    {
-        return userRoleMapper.countUserRoleByRoleId(roleId);
-    }
-
-    /**
-     * 新增保存角色信息
-     * 
-     * @param role 角色信息
-     * @return 结果
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int insertRole(SysRole role)
-    {
-        // 新增角色信息
-        roleMapper.insertRole(role);
-        return insertRoleMenu(role);
-    }
-
-    /**
-     * 修改保存角色信息
-     * 
-     * @param role 角色信息
-     * @return 结果
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateRole(SysRole role)
-    {
-        // 修改角色信息
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService {
+	@Autowired
+	private SysRoleMapper roleMapper;
+	
+	@Autowired
+	private SysRoleMenuMapper roleMenuMapper;
+	
+	@Autowired
+	private SysUserRoleMapper userRoleMapper;
+	
+	@Autowired
+	private SysRoleDeptMapper roleDeptMapper;
+	
+	/**
+	 * 根据条件分页查询角色数据
+	 *
+	 * @param role 角色信息
+	 * @return 角色数据集合信息
+	 */
+	@Override
+	@DataScope(deptAlias = "d")
+	public List<SysRole> selectRoleList(SysRole role) {
+		return roleMapper.selectRoleList(role);
+	}
+	
+	/**
+	 * 根据用户ID查询角色
+	 *
+	 * @param userId 用户ID
+	 * @return 角色列表
+	 */
+	@Override
+	public List<SysRole> selectRolesByUserId(Long userId) {
+		List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
+		List<SysRole> roles = selectRoleAll();
+		for (SysRole role : roles) {
+			for (SysRole userRole : userRoles) {
+				if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) {
+					role.setFlag(true);
+					break;
+				}
+			}
+		}
+		return roles;
+	}
+	
+	/**
+	 * 根据用户ID查询权限
+	 *
+	 * @param userId 用户ID
+	 * @return 权限列表
+	 */
+	@Override
+	public Set<String> selectRolePermissionByUserId(Long userId) {
+		List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
+		Set<String> permsSet = new HashSet<>();
+		for (SysRole perm : perms) {
+			if (StringUtils.isNotNull(perm)) {
+				permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
+			}
+		}
+		return permsSet;
+	}
+	
+	/**
+	 * 查询所有角色
+	 *
+	 * @return 角色列表
+	 */
+	@Override
+	public List<SysRole> selectRoleAll() {
+		return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
+	}
+	
+	/**
+	 * 根据用户ID获取角色选择框列表
+	 *
+	 * @param userId 用户ID
+	 * @return 选中角色ID列表
+	 */
+	@Override
+	public List<Long> selectRoleListByUserId(Long userId) {
+		return roleMapper.selectRoleListByUserId(userId);
+	}
+	
+	/**
+	 * 通过角色ID查询角色
+	 *
+	 * @param roleId 角色ID
+	 * @return 角色对象信息
+	 */
+	@Override
+	public SysRole selectRoleById(Long roleId) {
+		return roleMapper.selectRoleById(roleId);
+	}
+	
+	/**
+	 * 校验角色名称是否唯一
+	 *
+	 * @param role 角色信息
+	 * @return 结果
+	 */
+	@Override
+	public boolean checkRoleNameUnique(SysRole role) {
+		Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+		SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
+		if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
+			return UserConstants.NOT_UNIQUE;
+		}
+		return UserConstants.UNIQUE;
+	}
+	
+	/**
+	 * 校验角色权限是否唯一
+	 *
+	 * @param role 角色信息
+	 * @return 结果
+	 */
+	@Override
+	public boolean checkRoleKeyUnique(SysRole role) {
+		Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+		SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
+		if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
+			return UserConstants.NOT_UNIQUE;
+		}
+		return UserConstants.UNIQUE;
+	}
+	
+	/**
+	 * 校验角色是否允许操作
+	 *
+	 * @param role 角色信息
+	 */
+	@Override
+	public void checkRoleAllowed(SysRole role) {
+		if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) {
+			throw new ServiceException("不允许操作超级管理员角色");
+		}
+	}
+	
+	/**
+	 * 校验角色是否有数据权限
+	 *
+	 * @param roleId 角色id
+	 */
+	@Override
+	public void checkRoleDataScope(Long roleId) {
+		if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
+			SysRole role = new SysRole();
+			role.setRoleId(roleId);
+			List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
+			if (StringUtils.isEmpty(roles)) {
+				throw new ServiceException("没有权限访问角色数据!");
+			}
+		}
+	}
+	
+	/**
+	 * 通过角色ID查询角色使用数量
+	 *
+	 * @param roleId 角色ID
+	 * @return 结果
+	 */
+	@Override
+	public int countUserRoleByRoleId(Long roleId) {
+		return userRoleMapper.countUserRoleByRoleId(roleId);
+	}
+	
+	/**
+	 * 新增保存角色信息
+	 *
+	 * @param role 角色信息
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int insertRole(SysRole role) {
+		// 新增角色信息
+		roleMapper.insertRole(role);
+		return insertRoleMenu(role);
+	}
+	
+	/**
+	 * 修改保存角色信息
+	 *
+	 * @param role 角色信息
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int updateRole(SysRole role) {
+		// 修改角色信息
 //        roleMapper.updateRole(role);
-        // 删除角色与菜单关联
+		// 删除角色与菜单关联
 //        roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
-        return   roleMapper.updateRole(role);
-    }
-
-    /**
-     * 修改角色状态
-     * 
-     * @param role 角色信息
-     * @return 结果
-     */
-    @Override
-    public int updateRoleStatus(SysRole role)
-    {
-        return roleMapper.updateRole(role);
-    }
-
-    /**
-     * 修改数据权限信息
-     * 
-     * @param role 角色信息
-     * @return 结果
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int authDataScope(SysRole role)
-    {
-        // 修改角色信息
-        roleMapper.updateRole(role);
-        // 删除角色与部门关联
-        roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId());
-        // 新增角色和部门信息(数据权限)
-        return insertRoleDept(role);
-    }
-
-    /**
-     * 新增角色菜单信息
-     * 
-     * @param role 角色对象
-     */
-    public int insertRoleMenu(SysRole role)
-    {
-        int rows = 1;
-        // 新增用户与角色管理
-        List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
-        Long[] menuIds = role.getMenuIds();
+		return roleMapper.updateRole(role);
+	}
+	
+	/**
+	 * 修改角色状态
+	 *
+	 * @param role 角色信息
+	 * @return 结果
+	 */
+	@Override
+	public int updateRoleStatus(SysRole role) {
+		return roleMapper.updateRole(role);
+	}
+	
+	/**
+	 * 修改数据权限信息
+	 *
+	 * @param role 角色信息
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int authDataScope(SysRole role) {
+		// 修改角色信息
+		roleMapper.updateRole(role);
+		// 删除角色与部门关联
+		roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId());
+		// 新增角色和部门信息(数据权限)
+		return insertRoleDept(role);
+	}
+	
+	/**
+	 * 新增角色菜单信息
+	 *
+	 * @param role 角色对象
+	 */
+	public int insertRoleMenu(SysRole role) {
+		int rows = 1;
+		// 新增用户与角色管理
+		List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
+		Long[] menuIds = role.getMenuIds();
 //        List<Long> longs = Arrays.asList(menuIds);
-        List<Long> longs = new ArrayList<>();
-        for (Long menuId : menuIds) {
-            longs.add(menuId);
-        }
-        if(!longs.contains(1061L)){
-            longs.add(1061L);
-            longs.add(1062L);
-            longs.add(1065L);
-            longs.add(1073L);
-            longs.add(1161L);
-            longs.add(1203L);
-        }
-
-        for (Long menuId : longs)
-        {
-            SysRoleMenu rm = new SysRoleMenu();
-            rm.setRoleId(role.getRoleId());
-            rm.setMenuId(menuId);
-            list.add(rm);
-        }
-        if (list.size() > 0)
-        {
-            rows = roleMenuMapper.batchRoleMenu(list);
-        }
-        return rows;
-    }
-
-    /**
-     * 新增角色部门信息(数据权限)
-     *
-     * @param role 角色对象
-     */
-    public int insertRoleDept(SysRole role)
-    {
-        int rows = 1;
-        // 新增角色与部门(数据权限)管理
-        List<SysRoleDept> list = new ArrayList<SysRoleDept>();
-        for (Long deptId : role.getDeptIds())
-        {
-            SysRoleDept rd = new SysRoleDept();
-            rd.setRoleId(role.getRoleId());
-            rd.setDeptId(deptId);
-            list.add(rd);
-        }
-        if (list.size() > 0)
-        {
-            rows = roleDeptMapper.batchRoleDept(list);
-        }
-        return rows;
-    }
-
-    /**
-     * 通过角色ID删除角色
-     * 
-     * @param roleId 角色ID
-     * @return 结果
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteRoleById(Long roleId)
-    {
-        // 删除角色与菜单关联
-        roleMenuMapper.deleteRoleMenuByRoleId(roleId);
-        // 删除角色与部门关联
-        roleDeptMapper.deleteRoleDeptByRoleId(roleId);
-        return roleMapper.deleteRoleById(roleId);
-    }
-
-    /**
-     * 批量删除角色信息
-     * 
-     * @param roleIds 需要删除的角色ID
-     * @return 结果
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteRoleByIds(Long[] roleIds) {
-        for (Long roleId : roleIds)
-        {
-            checkRoleAllowed(new SysRole(roleId));
-            checkRoleDataScope(roleId);
-            SysRole role = selectRoleById(roleId);
-            if (countUserRoleByRoleId(roleId) > 0)
-            {
-                throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
-            }
-        }
-        // 删除角色与菜单关联
-        roleMenuMapper.deleteRoleMenu(roleIds);
-        // 删除角色与部门关联
-        roleDeptMapper.deleteRoleDept(roleIds);
-        return roleMapper.deleteRoleByIds(roleIds);
-    }
-
-    /**
-     * 取消授权用户角色
-     * 
-     * @param userRole 用户和角色关联信息
-     * @return 结果
-     */
-    @Override
-    public int deleteAuthUser(SysUserRole userRole)
-    {
-        return userRoleMapper.deleteUserRoleInfo(userRole);
-    }
-
-    /**
-     * 批量取消授权用户角色
-     * 
-     * @param roleId 角色ID
-     * @param userIds 需要取消授权的用户数据ID
-     * @return 结果
-     */
-    @Override
-    public int deleteAuthUsers(Long roleId, Long[] userIds)
-    {
-        return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
-    }
-
-    /**
-     * 批量选择授权用户角色
-     * 
-     * @param roleId 角色ID
-     * @param userIds 需要授权的用户数据ID
-     * @return 结果
-     */
-    @Override
-    public int insertAuthUsers(Long roleId, Long[] userIds)
-    {
-        // 新增用户与角色管理
-        List<SysUserRole> list = new ArrayList<SysUserRole>();
-        for (Long userId : userIds)
-        {
-            SysUserRole ur = new SysUserRole();
-            ur.setUserId(userId);
-            ur.setRoleId(roleId);
-            list.add(ur);
-        }
-        return userRoleMapper.batchUserRole(list);
-    }
-
-    @Override
-    public List<SysRole> isExitUpdate(String roleName, Long roleId,Integer companyId) {
-        return roleMapper.isExitUpdate(roleName,roleId,companyId);
-    }
-    
-    /**
-     * 根据id获取数据
-     * @param ids 数据id集合
-     * @return
-     */
-    @Override
-    public List<SysRole> getSysRoleByIds(List<Integer> ids) {
-        return this.baseMapper.getSysRoleByIds(ids);
-    }
+		List<Long> longs = new ArrayList<>();
+		for (Long menuId : menuIds) {
+			longs.add(menuId);
+		}
+		if (!longs.contains(1061L)) {
+			longs.add(1061L);
+			longs.add(1062L);
+			longs.add(1065L);
+			longs.add(1073L);
+			longs.add(1161L);
+			longs.add(1203L);
+		}
+		
+		for (Long menuId : longs) {
+			SysRoleMenu rm = new SysRoleMenu();
+			rm.setRoleId(role.getRoleId());
+			rm.setMenuId(menuId);
+			list.add(rm);
+		}
+		if (list.size() > 0) {
+			rows = roleMenuMapper.batchRoleMenu(list);
+		}
+		return rows;
+	}
+	
+	/**
+	 * 新增角色部门信息(数据权限)
+	 *
+	 * @param role 角色对象
+	 */
+	public int insertRoleDept(SysRole role) {
+		int rows = 1;
+		// 新增角色与部门(数据权限)管理
+		List<SysRoleDept> list = new ArrayList<SysRoleDept>();
+		for (Long deptId : role.getDeptIds()) {
+			SysRoleDept rd = new SysRoleDept();
+			rd.setRoleId(role.getRoleId());
+			rd.setDeptId(deptId);
+			list.add(rd);
+		}
+		if (list.size() > 0) {
+			rows = roleDeptMapper.batchRoleDept(list);
+		}
+		return rows;
+	}
+	
+	/**
+	 * 通过角色ID删除角色
+	 *
+	 * @param roleId 角色ID
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int deleteRoleById(Long roleId) {
+		// 删除角色与菜单关联
+		roleMenuMapper.deleteRoleMenuByRoleId(roleId);
+		// 删除角色与部门关联
+		roleDeptMapper.deleteRoleDeptByRoleId(roleId);
+		return roleMapper.deleteRoleById(roleId);
+	}
+	
+	/**
+	 * 批量删除角色信息
+	 *
+	 * @param roleIds 需要删除的角色ID
+	 * @return 结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public int deleteRoleByIds(Long[] roleIds) {
+		for (Long roleId : roleIds) {
+			checkRoleAllowed(new SysRole(roleId));
+			checkRoleDataScope(roleId);
+			SysRole role = selectRoleById(roleId);
+			if (countUserRoleByRoleId(roleId) > 0) {
+				throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
+			}
+		}
+		// 删除角色与菜单关联
+		roleMenuMapper.deleteRoleMenu(roleIds);
+		// 删除角色与部门关联
+		roleDeptMapper.deleteRoleDept(roleIds);
+		return roleMapper.deleteRoleByIds(roleIds);
+	}
+	
+	/**
+	 * 取消授权用户角色
+	 *
+	 * @param userRole 用户和角色关联信息
+	 * @return 结果
+	 */
+	@Override
+	public int deleteAuthUser(SysUserRole userRole) {
+		return userRoleMapper.deleteUserRoleInfo(userRole);
+	}
+	
+	/**
+	 * 批量取消授权用户角色
+	 *
+	 * @param roleId  角色ID
+	 * @param userIds 需要取消授权的用户数据ID
+	 * @return 结果
+	 */
+	@Override
+	public int deleteAuthUsers(Long roleId, Long[] userIds) {
+		return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
+	}
+	
+	/**
+	 * 批量选择授权用户角色
+	 *
+	 * @param roleId  角色ID
+	 * @param userIds 需要授权的用户数据ID
+	 * @return 结果
+	 */
+	@Override
+	public int insertAuthUsers(Long roleId, Long[] userIds) {
+		// 新增用户与角色管理
+		List<SysUserRole> list = new ArrayList<SysUserRole>();
+		for (Long userId : userIds) {
+			SysUserRole ur = new SysUserRole();
+			ur.setUserId(userId);
+			ur.setRoleId(roleId);
+			list.add(ur);
+		}
+		return userRoleMapper.batchUserRole(list);
+	}
+	
+	@Override
+	public List<SysRole> isExitUpdate(String roleName, Long roleId, Integer companyId) {
+		return roleMapper.isExitUpdate(roleName, roleId, companyId);
+	}
+	
+	/**
+	 * 根据id获取数据
+	 *
+	 * @param ids 数据id集合
+	 * @return
+	 */
+	@Override
+	public List<SysRole> getSysRoleByIds(List<Integer> ids) {
+		return this.baseMapper.getSysRoleByIds(ids);
+	}
 }
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 e17f179..f675847 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
@@ -223,6 +223,7 @@
      */
     @PostMapping("/grantCoupon")
     public R  grantCoupon(@RequestBody GrantCouponDto dto){
+        dto.setWaysToObtain(3);
         List<TAppCoupon> res = new ArrayList<>();
         TCoupon coupon = otherClient.getCouponById(dto.getCouponId()).getData();
 
@@ -246,9 +247,20 @@
                 break;
             case 2:
                 // 根据市codes 查询用户ids
-                List<Long> collect1 = appUserService.list(new QueryWrapper<TAppUser>()
-                                .in("city_code", Arrays.asList(dto.getCityCode().split(","))))
-                        .stream().map(TAppUser::getId).collect(Collectors.toList());
+                List<Long> collect1 = new ArrayList<>();
+                // 根据市codes 查询用户ids
+                if (StringUtils.hasLength(dto.getProvinceCode())){
+                    List<Long> collect2 = appUserService.list(new QueryWrapper<TAppUser>()
+                            .in("province_code", Arrays.asList(dto.getProvinceCode().split(","))))
+                            .stream().map(TAppUser::getId).collect(Collectors.toList());
+                    collect1.addAll(collect2);
+                }
+                if (StringUtils.hasLength(dto.getCityCode())){
+                    List<Long> collect2 = appUserService.list(new QueryWrapper<TAppUser>()
+                            .in("city_code", Arrays.asList(dto.getCityCode().split(","))))
+                            .stream().map(TAppUser::getId).collect(Collectors.toList());
+                    collect1.addAll(collect2);
+                }
                 for (Long l : collect1) {
                     TAppCoupon tAppCoupon = new TAppCoupon();
                     tAppCoupon.setAppUserId(l);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java
index 3383c94..f501947 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java
@@ -39,7 +39,8 @@
 	@ApiOperation(value = "获取开票抬头数据列表", tags = {"小程序-充电发票"})
 	public AjaxResult<List<InvoiceInformationVo>> getInvoiceInformationList(){
 		Long userId = tokenService.getLoginUserApplet().getUserId();
-		List<TInvoiceInformation> list = invoiceInformationService.list(new LambdaQueryWrapper<TInvoiceInformation>().eq(TInvoiceInformation::getAppUserId, userId).eq(TInvoiceInformation::getDelFlag, 0));
+		List<TInvoiceInformation> list = invoiceInformationService.list(new LambdaQueryWrapper<TInvoiceInformation>()
+				.eq(TInvoiceInformation::getAppUserId, userId).eq(TInvoiceInformation::getDelFlag, 0).orderByDesc(TInvoiceInformation::getIsDefault));
 		List<InvoiceInformationVo> lists = new ArrayList<>();
 		for (TInvoiceInformation tInvoiceInformation : list) {
 			InvoiceInformationVo vo = new InvoiceInformationVo();
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
index 46ae69f..9739d0d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
@@ -148,4 +148,14 @@
 	}
 	
 	
+	/**
+	 * 根据id获取合作商信息
+	 * @param id
+	 * @return
+	 */
+	@PostMapping("/getPartnerById/{id}")
+	public R<Partner> getPartnerById(@PathVariable("id") Integer id){
+		Partner partner = partnerService.getPartner(id);
+		return R.ok(partner);
+	}
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 1add52d..82e9536 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -164,6 +164,8 @@
 		PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList);
 		return AjaxResult.success(list);
 	}
+	
+	
 	@GetMapping("/getSiteList/byUserId")
 	@ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"})
 	public R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId){
@@ -424,7 +426,7 @@
 	@ResponseBody
 	@PostMapping("/getSiteByIds")
 	public R<List<Site>> getSiteByIds(@RequestBody List<Integer> ids){
-		List<Site> sites = siteService.listByIds(ids);
+		List<Site> sites = siteService.list(new LambdaQueryWrapper<Site>().in(Site::getId, ids).eq(Site::getDelFlag, 0));
 		return R.ok(sites);
 	}
 	
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 2ad2b83..5bb8860 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
@@ -94,10 +94,10 @@
 		List<SysRole> data = r.getData();
 		for (PartnerListDTO partnerListDTO : list) {
 			Integer roleId = partnerListDTO.getRoleId();
-			if(null != roleId){
+			if(null == roleId){
 				continue;
 			}
-			SysRole sysRole = data.stream().filter(s -> roleId.equals(s.getRoleId())).findFirst().get();
+			SysRole sysRole = data.stream().filter(s -> roleId.compareTo(s.getRoleId().intValue()) == 0).findFirst().get();
 			if(null != sysRole){
 				partnerListDTO.setRoleName(sysRole.getRoleName());
 			}
@@ -286,12 +286,12 @@
 		//站点
 		long count = siteService.count(new LambdaQueryWrapper<Site>().in(Site::getPartnerId, Arrays.asList(ids)).eq(Site::getDelFlag, 0));
 		if(count > 0){
-			return AjaxResult.error("当前合作商有关联站点,删除失败!");
+			return AjaxResult.error("该合作商已关联站点不可删除!");
 		}
 		//充电桩
-		long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getPartnerId, Arrays.asList(ids)).eq(TChargingPile::getDelFlag, 0));
+		long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().in(TChargingPile::getPartnerId, Arrays.asList(ids)).eq(TChargingPile::getDelFlag, 0));
 		if(count1 > 0){
-			return AjaxResult.error("当前合作商有关联充电桩,删除失败!");
+			return AjaxResult.error("该合作商已关联充电桩不可删除!");
 		}
 		for (Integer id : ids) {
 			Partner partner = this.getById(id);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
index 9badeb7..0a3d4e7 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -111,7 +111,7 @@
             return ajaxResult;
         }
         long count = this.count(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getCode, dto.getCode())
-                .eq(TChargingGun::getDelFlag, 0));
+                .eq(TChargingGun::getDelFlag, 0).eq(TChargingGun::getChargingPileId, dto.getChargingPileId()));
         if(count > 0){
             return AjaxResult.error("接口编码已存在");
         }
@@ -136,7 +136,7 @@
             return ajaxResult;
         }
         TChargingGun one = this.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getCode, dto.getCode())
-                .eq(TChargingGun::getDelFlag, 0));
+                .eq(TChargingGun::getDelFlag, 0).eq(TChargingGun::getChargingPileId, dto.getChargingPileId()));
         if(null != one && !dto.getId().equals(one.getId())){
             return AjaxResult.error("接口编码已存在");
         }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
index 24c1227..af5069b 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
@@ -46,7 +46,7 @@
   enabled: true
   application-id: ${spring.application.name}
   tx-service-group: seata_tx_group    #此处配置自定义的seata事务分组名称
-  enable-auto-data-source-proxy: true
+  enable-auto-data-source-proxy: false
   service:
     vgroup-mapping:
       seata_tx_group: default
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
index 2acbc96..759a7b1 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -61,7 +61,7 @@
 		a.phone,
 		a.service_phone as servicePhone,
 		a.parking_space as parkingSpace,
-		DATE_FORMAT('%Y-%m-%d %H:%i:%s', a.establishment_time) as establishmentTime,
+		DATE_FORMAT(a.establishment_time, '%Y-%m-%d %H:%i:%s') as establishmentTime,
 		c.num as chargingPileNumber,
 		a.sort,
 		a.accounting_strategy_id as accountingStrategyId,
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
index 26c049f..42d7456 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -202,14 +202,16 @@
                 for (int i = 0; i < split1.length; i++) {
                     Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>()
                                     .eq("order_type",1)
-                                    .ne("refund_status", 2))
+                                    .eq("goods_id", split1[i])
+                                    .isNull("refund_status"))
                             .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum);
                     res.add(reduce);
                 }
                 break;
             case 2:
                 for (int i = 0; i < split1.length; i++) {
-                    Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",1).ne("status",4).eq("goods_id", split1[i]))
+                    Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",1)
+                            .ne("status",4).eq("goods_id", split1[i]))
                             .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum);
                     res.add(reduce);
                 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index 397c94d..85a3ca5 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -281,11 +281,11 @@
 	public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum() {
 		Long userId = tokenService.getLoginUserApplet().getUserId();
 		long dfh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
-				.eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId));
+				.eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
 		long dsh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
-				.eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId));
+				.eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
 		long ywc = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
-				.eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId));
+				.eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2));
 		Map<String, Object> map = new HashMap<>();
 		map.put("dfh", dfh);
 		map.put("dsh", dsh);
@@ -316,6 +316,7 @@
 			return AjaxResult.error("订单已取消,不允许操作。");
 		}
 		shoppingOrder.setStatus(3);
+		shoppingOrder.setReceivingTime(LocalDateTime.now());
 		shoppingOrderService.updateById(shoppingOrder);
 		return AjaxResult.success();
 	}
@@ -331,15 +332,11 @@
 	 * 商城订单取消微信退款回调
 	 */
 	@PostMapping("/cancelShoppingOrderWxRefund")
-	public void cancelShoppingOrderWxRefund(HttpServletRequest request) {
-//		WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
-//		if (null != data) {
-//			String out_refund_no = data.getOut_refund_no();
-//			String refund_id = data.getRefund_id();
-//			String tradeState = data.getTradeState();
-//			String success_time = data.getSuccess_time();
-//			shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
-//		}
+	public void cancelShoppingOrderWxRefund(@RequestParam("out_refund_no") String out_refund_no,
+	                                        @RequestParam("refund_id") String refund_id,
+	                                        @RequestParam("tradeState") String tradeState,
+	                                        @RequestParam("success_time") String success_time) {
+		shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
 	}
 	
 	
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
index 685ecea..38cd013 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -119,13 +119,17 @@
 		}
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
 		String code = Double.valueOf(Math.random() * 1000).intValue() + sdf.format(new Date());
+		//获取开票类型
+		TInvoiceType invoiceType = invoiceTypeClient.getInvoiceType(addOrderInvoice.getInvoiceTypeId()).getData();
+		addOrderInvoice.setInvoicingCompany(invoiceType.getInvoicingCompany());
+		addOrderInvoice.setInvoiceType(invoiceType.getName());
+		addOrderInvoice.setInvoiceMaterial(2);
+		addOrderInvoice.setInvoicingMethod(invoiceType.getInvoicingMethod());
 		addOrderInvoice.setAppUserId(userId);
 		addOrderInvoice.setCode(code);
 		addOrderInvoice.setStatus(1);
 		addOrderInvoice.setCreateTime(LocalDateTime.now());
 		this.save(addOrderInvoice);
-		//获取开票类型
-		TInvoiceType invoiceType = invoiceTypeClient.getInvoiceType(addOrderInvoice.getInvoiceTypeId()).getData();
 		for (Long orderId : orderIds) {
 			List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>()
 					.eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId));
@@ -263,31 +267,37 @@
 		List<TOrderInvoiceVO> list = this.baseMapper.pageList(query,pageInfo);
 		for (TOrderInvoiceVO tOrderInvoiceVO : list) {
 			tOrderInvoiceVO.setUid(tOrderInvoiceVO.getId().toString());
-			List<Long> collect = orderInvoiceDetailService.lambdaQuery().eq(TOrderInvoiceDetail::getOrderInvoiceId, tOrderInvoiceVO.getId())
-					.eq(TOrderInvoiceDetail::getOrderType, 1).list().stream()
+			List<Long> collect = orderInvoiceDetailService.lambdaQuery().eq(TOrderInvoiceDetail::getOrderInvoiceId, tOrderInvoiceVO.getId()).list().stream()
 					.map(TOrderInvoiceDetail::getOrderId).collect(Collectors.toList());
 			// 将其全部转化为String
 			tOrderInvoiceVO.setIds(collect.stream().map(String::valueOf).collect(Collectors.toList()));
 		}
 		// 查询这个开票的订单ids
 
-		List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList());
+		if (!list.isEmpty()){
+			List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList());
 
-		List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>()
-				.in(TOrderInvoiceDetail::getOrderInvoiceId, ids));
+			List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>()
+					.in(TOrderInvoiceDetail::getOrderInvoiceId, ids));
 
-		List<TAppUser> finalTAppUsers = tAppUsers;
-		list.forEach(e->{
-			e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff());
-			e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff());
-			e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff());
-			e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
-			e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
-			e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
-			if (e.getBillingUserId()!=null){
-				e.setUserPhone(finalTAppUsers.stream().filter(t->t.getId()!=null).filter(m->m.getId().equals(Long.parseLong(e.getAppUserId().toString()))).findFirst().get().getPhone());
-			}
-		});
+			List<TAppUser> finalTAppUsers = tAppUsers;
+			list.forEach(e->{
+				if (e.getOrderType()!=null&&e.getOrderType()==1){
+					e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff());
+				}else{
+					e.setServiceTariff(new BigDecimal("0"));
+				}
+				e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff());
+				e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff());
+				e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get());
+				e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get());
+				e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get());
+				if (e.getBillingUserId()!=null){
+					e.setUserPhone(finalTAppUsers.stream().filter(t->t.getId()!=null).filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone());
+				}
+			});
+		}
+
 
 		pageInfo.setRecords(list);
 		return pageInfo;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index 30d8358..1093912 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -202,7 +202,7 @@
     public Map<String, Object> getMyShoppingOrderList(GetMyShoppingOrderList query) {
         Long userId = tokenService.getLoginUserApplet().getUserId();
         LambdaQueryWrapper<TShoppingOrder> wrapper = new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
-                .eq(TShoppingOrder::getAppUserId, userId);
+                .eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2);
         if(query.getStatus() != 0){
             wrapper.eq(TShoppingOrder::getStatus, query.getStatus());
         }
@@ -255,7 +255,7 @@
         TAppUserAddress userAddress = appUserAddressClient.getAppUserAddressById(shoppingOrder.getAppUserAddressId()).getData();
         info.setConsignee(userAddress.getName());
         info.setPhone(userAddress.getPhone());
-        info.setAddress(userAddress.getAddress());
+        info.setAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getAddress());
         info.setExpressCompany(shoppingOrder.getExpressCompany());
         info.setExpressNumber(shoppingOrder.getExpressNumber());
         String name = "";
@@ -364,6 +364,9 @@
         shoppingOrderRefund.setRefundRemark("全额退款");
         shoppingOrderRefund.setRefundTotalAmount(refundAmount.add(bigDecimal));
         shoppingOrderRefund.setPayAmount(shoppingOrder.getPaymentAmount());
+    
+        shoppingOrder.setCancellationTime(LocalDateTime.now());
+        shoppingOrder.setCancellationId(shoppingOrder.getAppUserId());
         if(1 == paymentType){
             WxPaymentRefundModel model = new WxPaymentRefundModel();
             model.setOut_trade_no(shoppingOrder.getCode());
@@ -378,6 +381,7 @@
             model.setAmount(amount);
             R<String> orderR = wxPaymentClient.refundOrderR(model);
             if(200 == orderR.getCode()){
+                this.updateById(shoppingOrder);
                 shoppingOrderRefundService.save(shoppingOrderRefund);
             }
         }
@@ -389,49 +393,9 @@
             dto.setRefundReason("取消订单");
             RefundResp resp = aliPaymentClient.refund(dto).getData();
             if(null != resp){
+                this.updateById(shoppingOrder);
                 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
                 AjaxResult success = cancelShoppingOrderWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
-                if(success.isSuccess()){
-                    shoppingOrderRefundService.save(shoppingOrderRefund);
-                    //商品
-                    if(shoppingOrder.getOrderType() == 1){
-                        //redis锁 和支付使用同一个锁
-                        RedisLock redisLock = new RedisLock(redisTemplate, "SHOPPING_GOODS_LOCK", 5, 30000);
-                        try {
-                            redisLock.lock();
-                            TGoods goods = goodsClient.getGoodsById(shoppingOrder.getGoodsId()).getData();
-                            Integer inventory = goods.getInventory();
-                            if(-1 != inventory){
-                                goods.setInventory(inventory + shoppingOrder.getPurchaseQuantity());
-                                goodsClient.updateGoods(goods);
-                            }
-                        }catch (Exception e){
-                            e.printStackTrace();
-                        }finally {
-                            //解锁
-                            redisLock.unlock();
-                        }
-                    }
-                    //优惠券
-                    if(shoppingOrder.getOrderType() == 2){
-                        //redis锁 和支付使用同一个锁
-                        RedisLock redisLock = new RedisLock(redisTemplate, "SHOPPING_COUPON_LOCK", 5, 30000);
-                        try {
-                            redisLock.lock();
-                            TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getCouponId()).getData();
-                            Integer inventory = coupon.getInventoryQuantity();
-                            if(-1 != inventory){
-                                coupon.setInventoryQuantity(inventory + shoppingOrder.getPurchaseQuantity());
-                                couponClient.updateCoupon(coupon);
-                            }
-                        }catch (Exception e){
-                            e.printStackTrace();
-                        }finally {
-                            //解锁
-                            redisLock.unlock();
-                        }
-                    }
-                }
             }
         }
         return AjaxResult.success();
@@ -457,6 +421,13 @@
             shoppingOrderRefundService.updateById(one);
             //判断是否需要回退库存
             TShoppingOrder shoppingOrder = this.getById(one.getShoppingOrderId());
+            shoppingOrder.setStatus(4);
+            shoppingOrder.setRefundCode(one.getRefundSerialNumber());
+            shoppingOrder.setRefundAmount(one.getRefundAmount());
+            shoppingOrder.setRefundStatus(2);
+            shoppingOrder.setRefundTime(one.getRefundTime());
+            this.updateById(shoppingOrder);
+            
             //商品
             if(shoppingOrder.getOrderType() == 1){
                 //redis锁 和支付使用同一个锁
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index ed7f52c..a1b1e71 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -62,7 +62,7 @@
         </if>
     </select>
     <select id="getNoInvoicedOrder" resultMap="BaseResultMap">
-        select * from t_charging_order where del_flag = 0 and app_user_id = #{appUserId}
+        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is null and app_user_id = #{appUserId}
         <if test="null != month and '' != month">
             and DATE_FORMAT(end_time, '%Y-%m') = #{month}
         </if>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TExchangeOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TExchangeOrderMapper.xml
index d69a772..2cad0b5 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TExchangeOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TExchangeOrderMapper.xml
@@ -37,23 +37,33 @@
         <if test="null != req.code and req.code!=''">
             and t1.code  LIKE CONCAT('%',#{req.code},'%')
         </if>
+        <if test="null != req.status">
+            and t1.status = #{req.status}
+        </if>
         <if test="null != req.userIds and req.userIds.size()>0" >
             and t1.app_user_id in
             <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                 #{item}
             </foreach>
         </if>
-        <if test="null != req.couponIds and req.couponIds.size()>0 or null != req.couponIds and req.couponIds.size()>0" >
-            and (t1.goods_id in
-            <foreach collection="req.goodsIds" item="item" index="index" separator="," open="(" close=")">
+        <if test="null != req.userIds and req.userIds.size()>0" >
+            and t1.app_user_id in
+            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                 #{item}
             </foreach>
-            or
+        </if>
+
+        <if test="null != req.couponIds and req.couponIds.size()>0" >
             and t1.coupon_id in
             <foreach collection="req.couponIds" item="item" index="index" separator="," open="(" close=")">
                 #{item}
             </foreach>
-            )
+        </if>
+        <if test="null != req.goodsIds and req.goodsIds.size()>0" >
+            and t1.goods_id in
+            <foreach collection="req.goodsIds" item="item" index="index" separator="," open="(" close=")">
+                #{item}
+            </foreach>
         </if>
         <if test="startTime1 != null and startTime1!=''">
             and (t1.create_time between #{startTime1} and #{startTime2})
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
index e6933bf..514f70e 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
@@ -214,7 +214,7 @@
     
     
     <select id="getNoInvoicedOrder" resultMap="BaseResultMap">
-        select * from t_shopping_order where del_flag = 0 and app_user_id = #{appUserId}
+        select * from t_shopping_order where del_flag = 0 and payment_status = 2 and status = 3 and app_user_id = #{appUserId}
         <if test="null != month and '' != month">
             and DATE_FORMAT(create_time, '%Y-%m') = #{month}
         </if>
@@ -227,9 +227,12 @@
     <select id="pageList" resultType="com.ruoyi.order.api.model.TShoppingOrder">
         select t1.*
         from t_shopping_order t1
-        where 1=1
+        where 1 = 1
         <if test="null != req.code and req.code!=''">
             and t1.code  LIKE CONCAT('%',#{req.code},'%')
+        </if>
+        <if test="null != req.status">
+            and t1.status = #{req.status}
         </if>
         <if test="null != req.userIds and req.userIds.size()>0" >
             and t1.app_user_id in
@@ -238,17 +241,17 @@
             </foreach>
         </if>
 
-        <if test="null != req.couponIds and req.couponIds.size()>0 or null != req.couponIds and req.couponIds.size()>0" >
-            and (t1.goods_id in
-            <foreach collection="req.goodsIds" item="item" index="index" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-                     or
+        <if test="null != req.couponIds and req.couponIds.size()>0" >
             and t1.coupon_id in
             <foreach collection="req.couponIds" item="item" index="index" separator="," open="(" close=")">
                 #{item}
             </foreach>
-            )
+        </if>
+        <if test="null != req.goodsIds and req.goodsIds.size()>0" >
+            and t1.goods_id in
+            <foreach collection="req.goodsIds" item="item" index="index" separator="," open="(" close=")">
+                #{item}
+            </foreach>
         </if>
         <if test="startTime1 != null and startTime1!=''">
             and (t1.create_time between #{startTime1} and #{startTime2})
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
index ca0b516..739d696 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
@@ -42,7 +42,7 @@
             and t1.vip_id = #{req.vipId}
         </if>
         <if test="startTime1 != null and startTime1!=''">
-            and (t1.create_time between #{startTime1} and #{startTime2}
+            and t1.create_time between #{startTime1} and #{startTime2}
         </if>
         and t1.payment_status = 2
         AND t1.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
index 985ca03..04048b4 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.ShoppingOrderClient;
 import com.ruoyi.payment.api.vo.PaymentOrder;
 import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
 import com.ruoyi.payment.wx.enums.RefundEnum;
@@ -41,6 +42,9 @@
     
     @Resource
     private ChargingOrderClient chargingOrderClient;
+
+    @Resource
+    private ShoppingOrderClient shoppingOrderClient;
 
 
 
@@ -196,6 +200,10 @@
                         chargingOrderClient.chargingOrderStartupFailureWxRefund(out_refund_no, refund_id, tradeState, success_time);
                         System.err.println("----充电启动失败退款回调通知");
                         break;
+                    case "GDF":
+                        shoppingOrderClient.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
+                        System.err.println("----商城订单取消退款回调通知");
+                        break;
                     //充电订单
                     case "GWF":
                         chargingOrderClient.shoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);

--
Gitblit v1.7.1