From a2620230c68cf6e8c732311b65aa4912efb350a4 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 22 八月 2024 15:31:26 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java                  |   42 +
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java         |    5 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java                                  |   12 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserService.java                           |    6 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java                  |    2 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java                        |  512 +++++++++++------------
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                                      |    1 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java               |   12 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                     |   11 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/template/充电桩申请记录.xlsx                                          |    0 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java                          |   22 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java                      |    7 
 ruoyi-auth/pom.xml                                                                                                 |    7 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java                     |   27 
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                                            |  131 ++---
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml                                 |   18 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java                        |   32 -
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java                                     |    4 
 ruoyi-service/ruoyi-other/pom.xml                                                                                  |    4 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java                          |   63 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java |    2 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserRoleController.java                    |  137 +++---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserRoleServiceImpl.java                 |  147 +++---
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java              |    7 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java                        |   15 
 25 files changed, 679 insertions(+), 547 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
index 106e23b..ed6ce4b 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
@@ -29,6 +29,11 @@
             public R<List<Site>> getSiteByIds(List<Integer> ids) {
                 return R.fail("根据id集合获取站点数据调用失败:" + throwable.getMessage());
             }
+    
+            @Override
+            public R<List<Site>> getSiteAll() {
+                return R.fail("获取所有站点调用失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
index ecedc5b..2412cf2 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
@@ -24,4 +24,11 @@
 	 */
 	@PostMapping("/site/getSiteByIds")
 	R<List<Site>> getSiteByIds(@RequestBody List<Integer> ids);
+	
+	/**
+	 * 获取所有站点
+	 * @return
+	 */
+	@PostMapping("/site/getSiteAll")
+	R<List<Site>> getSiteAll();
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java
index 43fa2a1..84e3633 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TGoods.java
@@ -84,8 +84,8 @@
     private Integer underlyingSales;
 
     @ApiModelProperty(value = "商品描述")
-    @TableField("describe")
-    private String describe;
+    @TableField("describes")
+    private String describes;
 
     @ApiModelProperty(value = "商品介绍")
     @TableField("introduce")
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
index 0bbb062..6ec6741 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -127,6 +127,10 @@
     @ApiModelProperty(value = "备注")
     private String remark;
     
+    @ApiModelProperty(value = "禁用账户备注")
+    @TableField("forbidden_remark")
+    private String forbiddenRemark;
+    
     @ApiModelProperty(value = "充电站")
     @TableField(exist = false)
     private List<String> siteNames;
@@ -407,6 +411,14 @@
         this.roleNames = roleNames;
     }
     
+    public String getForbiddenRemark() {
+        return forbiddenRemark;
+    }
+    
+    public void setForbiddenRemark(String forbiddenRemark) {
+        this.forbiddenRemark = forbiddenRemark;
+    }
+    
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
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 dc862b5..9a8a1f6 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
@@ -27,7 +27,7 @@
 
             @Override
             public R<Boolean> updateSysUser(SysUser sysUser) {
-                return R.fail("更新用户失败:" + cause.getMessage());
+                throw new RuntimeException("更新用户失败:" + cause.getMessage());
             }
 
             @Override
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index df1fa2a..17035c7 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -38,7 +38,12 @@
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
         </dependency>
-		
+    
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-seata</artifactId>
+        </dependency>
+        
         <!-- SpringBoot Web -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
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 91f7ab4..77abd3e 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
@@ -6,6 +6,7 @@
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
+import io.seata.spring.annotation.GlobalTransactional;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -24,82 +25,74 @@
 
 /**
  * token 控制
- * 
+ *
  * @author ruoyi
  */
 @Slf4j
 @RestController
-public class TokenController
-{
-    @Autowired
-    private TokenService tokenService;
-
-    @Autowired
-    private SysLoginService sysLoginService;
-    @Resource
-    private SysUserClient userClient;
-
-    
-    
-    
-    
-
-    @PostMapping("login")
-    public R<?> login(@RequestBody LoginBody form, HttpServletRequest request) {
-        // 用户登录
-        LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(), request);
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("token",tokenService.createToken(userInfo));
-        List<SysRole> roles = userInfo.getSysUser().getRoles();
+public class TokenController {
+	@Autowired
+	private TokenService tokenService;
+	
+	@Autowired
+	private SysLoginService sysLoginService;
+	@Resource
+	private SysUserClient userClient;
+	
+	
+	@PostMapping("login")
+	@GlobalTransactional(rollbackFor = Exception.class)//分布式事务
+	public R<?> login(@RequestBody LoginBody form, HttpServletRequest request) {
+		// 用户登录
+		LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(), request);
+		HashMap<String, Object> map = new HashMap<>();
+		map.put("token", tokenService.createToken(userInfo));
+		List<SysRole> roles = userInfo.getSysUser().getRoles();
 //        if(CollectionUtils.isEmpty(roles)){
 //            return R.fail("请关联角色!");
 //        }
 
 //        map.put("roleName",roles.get(0).getRoleName());
-        map.put("info",userInfo);
-        // 修改用户最后登录时间
-        SysUser sysUser = new SysUser();
-        sysUser.setUserId(userInfo.getSysUser().getUserId());
-        sysUser.setLoginDate(new Date());
-        System.out.println("修改用户登录时间"+sysUser);
-        userClient.updateSysUser(sysUser);
-        return R.ok(map);
-    }
-
-    @DeleteMapping("logout")
-    public R<?> logout(HttpServletRequest request) {
-        String token = SecurityUtils.getToken(request);
-        if (StringUtils.isNotEmpty(token))
-        {
-            String username = JwtUtils.getUserName(token);
-            // 删除用户缓存记录
-            AuthUtil.logoutByToken(token);
-            // 记录用户退出日志
-            sysLoginService.logout(username, request);
-        }
-        return R.ok();
-    }
-
-
-    @PostMapping("refresh")
-    public R<?> refresh(HttpServletRequest request)
-    {
-        LoginUser loginUser = tokenService.getLoginUser(request);
-        if (StringUtils.isNotNull(loginUser))
-        {
-            // 刷新令牌有效期
-            tokenService.refreshToken(loginUser);
-            return R.ok();
-        }
-        return R.ok();
-    }
-
-    @PostMapping("register")
-    public R<?> register(@RequestBody RegisterBody registerBody, HttpServletRequest request)
-    {
-        // 用户注册
-        sysLoginService.register(registerBody.getUsername(), registerBody.getPassword(), request);
-        return R.ok();
-    }
-
+		map.put("info", userInfo);
+		// 修改用户最后登录时间
+		SysUser sysUser = new SysUser();
+		sysUser.setUserId(userInfo.getSysUser().getUserId());
+		sysUser.setLoginDate(new Date());
+		System.out.println("修改用户登录时间" + sysUser);
+		userClient.updateSysUser(sysUser);
+		return R.ok(map);
+	}
+	
+	@DeleteMapping("logout")
+	public R<?> logout(HttpServletRequest request) {
+		String token = SecurityUtils.getToken(request);
+		if (StringUtils.isNotEmpty(token)) {
+			String username = JwtUtils.getUserName(token);
+			// 删除用户缓存记录
+			AuthUtil.logoutByToken(token);
+			// 记录用户退出日志
+			sysLoginService.logout(username, request);
+		}
+		return R.ok();
+	}
+	
+	
+	@PostMapping("refresh")
+	public R<?> refresh(HttpServletRequest request) {
+		LoginUser loginUser = tokenService.getLoginUser(request);
+		if (StringUtils.isNotNull(loginUser)) {
+			// 刷新令牌有效期
+			tokenService.refreshToken(loginUser);
+			return R.ok();
+		}
+		return R.ok();
+	}
+	
+	@PostMapping("register")
+	public R<?> register(@RequestBody RegisterBody registerBody, HttpServletRequest request) {
+		// 用户注册
+		sysLoginService.register(registerBody.getUsername(), registerBody.getPassword(), request);
+		return R.ok();
+	}
+	
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
index 7b05f57..23f0b74 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -54,271 +54,259 @@
 
 /**
  * 角色信息
- * 
+ *
  * @author ruoyi
  */
 @RestController
 @RequestMapping("/role")
 @Api(tags = "角色模块")
-public class SysRoleController extends BaseController
-{
-    @Resource
-    private ISysRoleService roleService;
-
-    @Resource
-    private ISysUserService userService;
-
-    @Resource
-    private ISysDeptService deptService;
-
-    @Resource
-    private SysRoleMenuMapper sysRoleMenuMapper;
-
-    @Resource
-    private ISysUserRoleService sysUserRoleService;
-
-    @Resource
-    private SysMenuMapper menuMapper;
-    
-    @Resource
-    private RoleSiteClient roleSiteClient;
-    
-    @Resource
-    private SiteClient siteClient;
-    
-    
-    
-    
-    @ApiOperation(value = "获取角色列表", tags = {"管理后台-系统用户管理"})
-    @GetMapping("/list")
-    public AjaxResult list() {
-        List<SysRole> list = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getDelFlag, 0).eq(SysRole::getStatus, 0));
-        return AjaxResult.success(list);
-    }
-    
-    
-    
-    @ResponseBody
-    @GetMapping("/listPage")
-    @ApiOperation(value = "获取角色列表", tags = {"管理后台-角色管理"})
-    public AjaxResult listPage(String name, BasePage basePage) {
-        PageInfo<SysRole> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
-        LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<SysRole>().eq(SysRole::getStatus, 0).eq(SysRole::getDelFlag, 0);
-        if(StringUtils.isNotEmpty(name)){
-            wrapper.like(SysRole::getRoleName, name);
-        }
-    
-        PageInfo<SysRole> page = roleService.page(pageInfo, wrapper.orderByDesc(SysRole::getCreateTime));
-        for (SysRole record : page.getRecords()) {
-            List<Integer> data = roleSiteClient.getSiteIds(record.getRoleId()).getData();
-            List<Site> sites = siteClient.getSiteByIds(data).getData();
-            if(null != sites){
-                List<String> collect = sites.stream().map(Site::getName).collect(Collectors.toList());
-                record.setSiteNames(collect);
-            }
-        }
-        return AjaxResult.success(page);
-    }
-    
-    
-    
-    
-    @ResponseBody
-    @PostMapping("/roleAdd")
-    @ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"})
-    @GlobalTransactional(rollbackFor = Exception.class)//分布式事务
-    public AjaxResult roleAdd(@Validated @RequestBody RoleAddDto dto)
-    {
-        SysRole role = new SysRole();
-        role.setRoleName(dto.getRoleName());
-        long count = roleService.count(Wrappers.lambdaQuery(SysRole.class)
-                    .eq(SysRole::getRoleName,dto.getRoleName()));
-        if(count>0){
-            return AjaxResult.error("角色已存在,请重新输入");
-        }
-        List<Long> menuIds1 = dto.getMenuIds();
-        if(CollectionUtils.isEmpty(menuIds1)){
-            return AjaxResult.error("菜单id不能为空");
-        }
-        role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()])));
-        // 添加角色
-        role.setRemark(dto.getRemark());
-        role.setCreateBy(SecurityUtils.getUsername());
-        role.setCreateTime(new Date());
-        roleService.insertRole(role);
-        //添加站点权限
-        List<TRoleSite> roleSites = new ArrayList<>();
-        for (Integer siteId : dto.getSiteIds()) {
-            TRoleSite roleSite = new TRoleSite();
-            roleSite.setRoleId(role.getRoleId().intValue());
-            roleSite.setSiteId(siteId);
-            roleSites.add(roleSite);
-        }
-        roleSiteClient.addRoleSite(roleSites);
-        return AjaxResult.success();
-    }
-
-
-    @GetMapping("/roleInfo")
-    @ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"})
-    public AjaxResult roleInfo( @RequestParam Long id) {
-        SysRole role = roleService.selectRoleById(id);
-        RoleInfoVo roleInfoVo = new RoleInfoVo();
-        roleInfoVo.setRoleId(role.getRoleId());
-        roleInfoVo.setRoleName(role.getRoleName());
-        // 获取当前角色的菜单id
-        List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
-        if(menusId.size()==0){
-            return AjaxResult.success(new ArrayList<>());
-        }
-        //获取当前的权限菜单
-        List<SysMenus> all = menuMapper.getAllInIds(menusId);
-        // 第三级
-        List<SysMenus> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
-        // 第二级
-        List<SysMenus> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
-        // 第一级
-        List<SysMenus> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
-
-        for (SysMenus menus : s2) {
-            List<SysMenus> collect = s3.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
-            menus.setChildren(collect);
-        }
-
-        for (SysMenus menus : s1) {
-            List<SysMenus> collect = s2.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
-            menus.setChildren(collect);
-        }
-        roleInfoVo.setMenus(menusId);
-        roleInfoVo.setRemark(role.getRemark());
-        List<Integer> siteIds = roleSiteClient.getSiteIds(role.getRoleId()).getData();
-        List<Site> sites = siteClient.getSiteByIds(siteIds).getData();
-        List<String> siteNames = sites.stream().map(Site::getName).collect(Collectors.toList());
-        roleInfoVo.setSiteNames(siteNames);
-        roleInfoVo.setSiteIds(siteIds);
-        return AjaxResult.success(roleInfoVo);
-    }
-
-
-
-    @PostMapping("/roleUpdate")
-    @ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"})
-    @GlobalTransactional(rollbackFor = Exception.class)//分布式事务
-    public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto) {
-        SysRole role = new SysRole();
-        role.setRoleName(dto.getRoleName());
-        SysRole one = roleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleName, dto.getRoleName()));
-        if(null != one && !one.getRoleId().equals(dto.getRoleId())){
-            return AjaxResult.error("角色已存在,请重新输入");
-        }
-        role.setRemark(dto.getRemark());
-        role.setUpdateBy(SecurityUtils.getUsername());
-        role.setUpdateTime(new Date());
-        role.setRoleId(dto.getRoleId());
-        roleService.updateRole(role);
-        ArrayList<SysRoleMenu> sysRoleMenus = new ArrayList<>();
-        List<Long> menuIds = dto.getMenuIds();
-        // 移除原来的权限菜单
-        if(menuIds.contains(1061L)){
-            sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
-                    .eq(SysRoleMenu::getRoleId,dto.getRoleId()));
-        }else {
-            sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
-                    .eq(SysRoleMenu::getRoleId,dto.getRoleId())
-                    .ne(SysRoleMenu::getMenuId,1061L)
-                    .ne(SysRoleMenu::getMenuId,1062L)
-                    .ne(SysRoleMenu::getMenuId,1065L)
-                    .ne(SysRoleMenu::getMenuId,1073L)
-                    .ne(SysRoleMenu::getMenuId,1161L)
-                    .ne(SysRoleMenu::getMenuId,1203L)
-            );
-        }
-        for (Long menuId : menuIds) {
-            SysRoleMenu sysRoleMenu = new SysRoleMenu();
-            sysRoleMenu.setMenuId(menuId);
-            sysRoleMenu.setRoleId(role.getRoleId());
-            sysRoleMenus.add(sysRoleMenu);
-        }
-        sysRoleMenuMapper.batchRoleMenu(sysRoleMenus);
-        //删除旧站点数据
-        roleSiteClient.delRoleSite(dto.getRoleId());
-        //添加站点权限
-        List<TRoleSite> roleSites = new ArrayList<>();
-        for (Integer siteId : dto.getSiteIds()) {
-            TRoleSite roleSite = new TRoleSite();
-            roleSite.setRoleId(role.getRoleId().intValue());
-            roleSite.setSiteId(siteId);
-            roleSites.add(roleSite);
-        }
-        roleSiteClient.addRoleSite(roleSites);
-        return AjaxResult.success();
-    }
-
-
-
-    /**
-     * 删除角色
-     */
-    @RequiresPermissions("system:role:remove")
-    @Log(title = "角色管理", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{roleIds}")
-    @ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"})
-    public AjaxResult remove(@PathVariable Long[] roleIds) {
-        return toAjax(roleService.deleteRoleByIds(roleIds));
-    }
-
-    
-
-
-    /**
-     * 查询已分配用户角色列表
-     */
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/authUser/allocatedList")
-    public TableDataInfo allocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectAllocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 查询未分配用户角色列表
-     */
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/authUser/unallocatedList")
-    public TableDataInfo unallocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectUnallocatedList(user);
-        return getDataTable(list);
-    }
-
- 
-
-    /**
-     * 获取对应角色部门树列表
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping(value = "/deptTree/{roleId}")
-    public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
-        ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
-        return ajax;
-    }
-    
-    
-    /**
-     * 根据id集合获取数据
-     * @param ids
-     * @return
-     */
-    @ResponseBody
-    @PostMapping(value = "/getSysRoleByIds")
-    public R<List<SysRole>> getSysRoleByIds(@RequestBody GetSysRoleByIds ids){
-        List<SysRole> sysRoleByIds = roleService.getSysRoleByIds(ids.getIds());
-        return R.ok(sysRoleByIds);
-    }
+public class SysRoleController extends BaseController {
+	@Resource
+	private ISysRoleService roleService;
+	
+	@Resource
+	private ISysUserService userService;
+	
+	@Resource
+	private ISysDeptService deptService;
+	
+	@Resource
+	private SysRoleMenuMapper sysRoleMenuMapper;
+	
+	@Resource
+	private ISysUserRoleService sysUserRoleService;
+	
+	@Resource
+	private SysMenuMapper menuMapper;
+	
+	@Resource
+	private RoleSiteClient roleSiteClient;
+	
+	@Resource
+	private SiteClient siteClient;
+	
+	
+	@ApiOperation(value = "获取角色列表", tags = {"管理后台-系统用户管理"})
+	@GetMapping("/list")
+	public AjaxResult list() {
+		List<SysRole> list = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getDelFlag, 0).eq(SysRole::getStatus, 0));
+		return AjaxResult.success(list);
+	}
+	
+	
+	@ResponseBody
+	@GetMapping("/listPage")
+	@ApiOperation(value = "获取角色列表", tags = {"管理后台-角色管理"})
+	public AjaxResult listPage(String name, BasePage basePage) {
+		PageInfo<SysRole> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
+		LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<SysRole>().eq(SysRole::getStatus, 0).eq(SysRole::getDelFlag, 0);
+		if (StringUtils.isNotEmpty(name)) {
+			wrapper.like(SysRole::getRoleName, name);
+		}
+		
+		PageInfo<SysRole> page = roleService.page(pageInfo, wrapper.orderByDesc(SysRole::getCreateTime));
+		for (SysRole record : page.getRecords()) {
+			List<Integer> data = roleSiteClient.getSiteIds(record.getRoleId()).getData();
+			List<Site> sites = siteClient.getSiteByIds(data).getData();
+			if (null != sites) {
+				List<String> collect = sites.stream().map(Site::getName).collect(Collectors.toList());
+				record.setSiteNames(collect);
+			}
+		}
+		return AjaxResult.success(page);
+	}
+	
+	
+	@ResponseBody
+	@PostMapping("/roleAdd")
+	@ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"})
+	@GlobalTransactional(rollbackFor = Exception.class)//分布式事务
+	public AjaxResult roleAdd(@Validated @RequestBody RoleAddDto dto) {
+		SysRole role = new SysRole();
+		role.setRoleName(dto.getRoleName());
+		long count = roleService.count(Wrappers.lambdaQuery(SysRole.class)
+				.eq(SysRole::getRoleName, dto.getRoleName()));
+		if (count > 0) {
+			return AjaxResult.error("角色已存在,请重新输入");
+		}
+		List<Long> menuIds1 = dto.getMenuIds();
+		if (CollectionUtils.isEmpty(menuIds1)) {
+			return AjaxResult.error("菜单id不能为空");
+		}
+		role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()])));
+		// 添加角色
+		role.setRemark(dto.getRemark());
+		role.setCreateBy(SecurityUtils.getUsername());
+		role.setCreateTime(new Date());
+		roleService.insertRole(role);
+		//添加站点权限
+		List<TRoleSite> roleSites = new ArrayList<>();
+		for (Integer siteId : dto.getSiteIds()) {
+			TRoleSite roleSite = new TRoleSite();
+			roleSite.setRoleId(role.getRoleId().intValue());
+			roleSite.setSiteId(siteId);
+			roleSites.add(roleSite);
+		}
+		roleSiteClient.addRoleSite(roleSites);
+		return AjaxResult.success();
+	}
+	
+	
+	@GetMapping("/roleInfo")
+	@ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"})
+	public AjaxResult roleInfo(@RequestParam Long id) {
+		SysRole role = roleService.selectRoleById(id);
+		RoleInfoVo roleInfoVo = new RoleInfoVo();
+		roleInfoVo.setRoleId(role.getRoleId());
+		roleInfoVo.setRoleName(role.getRoleName());
+		// 获取当前角色的菜单id
+		List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
+		if (menusId.size() == 0) {
+			return AjaxResult.success(new ArrayList<>());
+		}
+		//获取当前的权限菜单
+		List<SysMenus> all = menuMapper.getAllInIds(menusId);
+		// 第三级
+		List<SysMenus> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
+		// 第二级
+		List<SysMenus> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
+		// 第一级
+		List<SysMenus> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
+		
+		for (SysMenus menus : s2) {
+			List<SysMenus> collect = s3.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
+			menus.setChildren(collect);
+		}
+		
+		for (SysMenus menus : s1) {
+			List<SysMenus> collect = s2.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList());
+			menus.setChildren(collect);
+		}
+		roleInfoVo.setMenus(menusId);
+		roleInfoVo.setRemark(role.getRemark());
+		List<Integer> siteIds = roleSiteClient.getSiteIds(role.getRoleId()).getData();
+		if (null != siteIds && siteIds.size() > 0) {
+			List<Site> sites = siteClient.getSiteByIds(siteIds).getData();
+			List<String> siteNames = sites.stream().map(Site::getName).collect(Collectors.toList());
+			roleInfoVo.setSiteNames(siteNames);
+			roleInfoVo.setSiteIds(siteIds);
+		}
+		return AjaxResult.success(roleInfoVo);
+	}
+	
+	
+	@PostMapping("/roleUpdate")
+	@ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"})
+	@GlobalTransactional(rollbackFor = Exception.class)//分布式事务
+	public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto) {
+		SysRole role = new SysRole();
+		role.setRoleName(dto.getRoleName());
+		SysRole one = roleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleName, dto.getRoleName()));
+		if (null != one && !one.getRoleId().equals(dto.getRoleId())) {
+			return AjaxResult.error("角色已存在,请重新输入");
+		}
+		role.setRemark(dto.getRemark());
+		role.setUpdateBy(SecurityUtils.getUsername());
+		role.setUpdateTime(new Date());
+		role.setRoleId(dto.getRoleId());
+		roleService.updateRole(role);
+		ArrayList<SysRoleMenu> sysRoleMenus = new ArrayList<>();
+		List<Long> menuIds = dto.getMenuIds();
+		// 移除原来的权限菜单
+		if (menuIds.contains(1061L)) {
+			sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
+					.eq(SysRoleMenu::getRoleId, dto.getRoleId()));
+		} else {
+			sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
+					.eq(SysRoleMenu::getRoleId, dto.getRoleId())
+					.ne(SysRoleMenu::getMenuId, 1061L)
+					.ne(SysRoleMenu::getMenuId, 1062L)
+					.ne(SysRoleMenu::getMenuId, 1065L)
+					.ne(SysRoleMenu::getMenuId, 1073L)
+					.ne(SysRoleMenu::getMenuId, 1161L)
+					.ne(SysRoleMenu::getMenuId, 1203L)
+			);
+		}
+		for (Long menuId : menuIds) {
+			SysRoleMenu sysRoleMenu = new SysRoleMenu();
+			sysRoleMenu.setMenuId(menuId);
+			sysRoleMenu.setRoleId(role.getRoleId());
+			sysRoleMenus.add(sysRoleMenu);
+		}
+		sysRoleMenuMapper.batchRoleMenu(sysRoleMenus);
+		//删除旧站点数据
+		roleSiteClient.delRoleSite(dto.getRoleId());
+		//添加站点权限
+		List<TRoleSite> roleSites = new ArrayList<>();
+		for (Integer siteId : dto.getSiteIds()) {
+			TRoleSite roleSite = new TRoleSite();
+			roleSite.setRoleId(role.getRoleId().intValue());
+			roleSite.setSiteId(siteId);
+			roleSites.add(roleSite);
+		}
+		roleSiteClient.addRoleSite(roleSites);
+		return AjaxResult.success();
+	}
+	
+	
+	/**
+	 * 删除角色
+	 */
+	@RequiresPermissions("system:role:remove")
+	@Log(title = "角色管理", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{roleIds}")
+	@ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"})
+	public AjaxResult remove(@PathVariable Long[] roleIds) {
+		return toAjax(roleService.deleteRoleByIds(roleIds));
+	}
+	
+	
+	/**
+	 * 查询已分配用户角色列表
+	 */
+	@RequiresPermissions("system:role:list")
+	@GetMapping("/authUser/allocatedList")
+	public TableDataInfo allocatedList(SysUser user) {
+		startPage();
+		List<SysUser> list = userService.selectAllocatedList(user);
+		return getDataTable(list);
+	}
+	
+	/**
+	 * 查询未分配用户角色列表
+	 */
+	@RequiresPermissions("system:role:list")
+	@GetMapping("/authUser/unallocatedList")
+	public TableDataInfo unallocatedList(SysUser user) {
+		startPage();
+		List<SysUser> list = userService.selectUnallocatedList(user);
+		return getDataTable(list);
+	}
+	
+	
+	/**
+	 * 获取对应角色部门树列表
+	 */
+	@RequiresPermissions("system:role:query")
+	@GetMapping(value = "/deptTree/{roleId}")
+	public AjaxResult deptTree(@PathVariable("roleId") Long roleId) {
+		AjaxResult ajax = AjaxResult.success();
+		ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
+		ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
+		return ajax;
+	}
+	
+	
+	/**
+	 * 根据id集合获取数据
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@ResponseBody
+	@PostMapping(value = "/getSysRoleByIds")
+	public R<List<SysRole>> getSysRoleByIds(@RequestBody GetSysRoleByIds ids) {
+		List<SysRole> sysRoleByIds = roleService.getSysRoleByIds(ids.getIds());
+		return R.ok(sysRoleByIds);
+	}
 }
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 6315e1b..7372a9a 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
@@ -1,12 +1,9 @@
 package com.ruoyi.system.controller;
 
-import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
 
-import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
@@ -17,32 +14,19 @@
 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.*;
 import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.domain.dto.AddCompanyUserDto;
-import com.ruoyi.system.domain.vo.CompanyUserVo;
-import com.ruoyi.system.domain.vo.TCompanyToUserVo;
 import com.ruoyi.system.query.GetSysUserList;
 import com.ruoyi.system.query.ShopUserStart;
 import com.ruoyi.system.service.*;
 import io.seata.spring.annotation.GlobalTransactional;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
@@ -300,10 +284,10 @@
         SysUser sysUser = userService.selectUserById(shopUserStart.getUserId());
         if (sysUser.getStatus().equals("0")) {
             sysUser.setStatus("1");
-            sysUser.setRemark(shopUserStart.getRemark());
+            sysUser.setForbiddenRemark(shopUserStart.getRemark());
         } else {
             sysUser.setStatus("0");
-            sysUser.setRemark("");
+            sysUser.setForbiddenRemark("");
         }
         return toAjax(userService.updateUser(sysUser));
     }
@@ -387,11 +371,13 @@
             sysUser.setUpdateBy(SecurityUtils.getUsername());
             sysUser.setUpdateTime(new Date());
             userService.updateUser(sysUser);
-            userRoleService.deleteSysUserRoleByUserId(sysUser.getUserId());
-            SysUserRole sysUserRole = new SysUserRole();
-            sysUserRole.setRoleId(sysUser.getRoleId());
-            sysUserRole.setUserId(sysUser.getUserId());
-            userRoleService.insertSysUserRole(sysUserRole);
+            if(null != sysUser.getRoleId()){
+                userRoleService.deleteSysUserRoleByUserId(sysUser.getUserId());
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setRoleId(sysUser.getRoleId());
+                sysUserRole.setUserId(sysUser.getUserId());
+                userRoleService.insertSysUserRole(sysUserRole);
+            }
             return R.ok(true);
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserRoleController.java
index 25ac609..b0ef148 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserRoleController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserRoleController.java
@@ -25,82 +25,75 @@
 
 /**
  * 用户和角色关联Controller
- * 
+ *
  * @author xiaochen
  * @date 2023-06-12
  */
 @RestController
 @RequestMapping("/userRole")
-public class SysUserRoleController extends BaseController
-{
-    @Autowired
-    private ISysUserRoleService sysUserRoleService;
-
-    /**
-     * 查询用户和角色关联列表
-     */
-    @RequiresPermissions("car:role:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysUserRole sysUserRole)
-    {
-        startPage();
-        List<SysUserRole> list = sysUserRoleService.selectSysUserRoleList(sysUserRole);
-        return getDataTable(list);
-    }
-
-    /**
-     * 导出用户和角色关联列表
-     */
-    @RequiresPermissions("car:role:export")
-    @Log(title = "用户和角色关联", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysUserRole sysUserRole)
-    {
-        List<SysUserRole> list = sysUserRoleService.selectSysUserRoleList(sysUserRole);
-        ExcelUtil<SysUserRole> util = new ExcelUtil<SysUserRole>(SysUserRole.class);
-        util.exportExcel(response, list, "用户和角色关联数据");
-    }
-
-    /**
-     * 获取用户和角色关联详细信息
-     */
-    @RequiresPermissions("car:role:query")
-    @GetMapping(value = "/{userId}")
-    public AjaxResult getInfo(@PathVariable("userId") Long userId)
-    {
-        return success(sysUserRoleService.selectSysUserRoleByUserId(userId));
-    }
-
-    /**
-     * 新增用户和角色关联
-     */
-    @RequiresPermissions("car:role:add")
-    @Log(title = "用户和角色关联", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody SysUserRole sysUserRole)
-    {
-        return toAjax(sysUserRoleService.insertSysUserRole(sysUserRole));
-    }
-
-    /**
-     * 修改用户和角色关联
-     */
-    @RequiresPermissions("car:role:edit")
-    @Log(title = "用户和角色关联", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody SysUserRole sysUserRole)
-    {
-        return toAjax(sysUserRoleService.updateSysUserRole(sysUserRole));
-    }
-
-    /**
-     * 删除用户和角色关联
-     */
-    @RequiresPermissions("car:role:remove")
-    @Log(title = "用户和角色关联", businessType = BusinessType.DELETE)
+public class SysUserRoleController extends BaseController {
+	@Autowired
+	private ISysUserRoleService sysUserRoleService;
+	
+	/**
+	 * 查询用户和角色关联列表
+	 */
+	@RequiresPermissions("car:role:list")
+	@GetMapping("/list")
+	public TableDataInfo list(SysUserRole sysUserRole) {
+		startPage();
+		List<SysUserRole> list = sysUserRoleService.selectSysUserRoleList(sysUserRole);
+		return getDataTable(list);
+	}
+	
+	/**
+	 * 导出用户和角色关联列表
+	 */
+	@RequiresPermissions("car:role:export")
+	@Log(title = "用户和角色关联", businessType = BusinessType.EXPORT)
+	@PostMapping("/export")
+	public void export(HttpServletResponse response, SysUserRole sysUserRole) {
+		List<SysUserRole> list = sysUserRoleService.selectSysUserRoleList(sysUserRole);
+		ExcelUtil<SysUserRole> util = new ExcelUtil<SysUserRole>(SysUserRole.class);
+		util.exportExcel(response, list, "用户和角色关联数据");
+	}
+	
+	/**
+	 * 获取用户和角色关联详细信息
+	 */
+	@RequiresPermissions("car:role:query")
+	@GetMapping(value = "/{userId}")
+	public AjaxResult getInfo(@PathVariable("userId") Long userId) {
+		return success(sysUserRoleService.selectSysUserRoleByUserId(userId));
+	}
+	
+	/**
+	 * 新增用户和角色关联
+	 */
+	@RequiresPermissions("car:role:add")
+	@Log(title = "用户和角色关联", businessType = BusinessType.INSERT)
+	@PostMapping
+	public AjaxResult add(@RequestBody SysUserRole sysUserRole) {
+		return toAjax(sysUserRoleService.insertSysUserRole(sysUserRole));
+	}
+	
+	/**
+	 * 修改用户和角色关联
+	 */
+	@RequiresPermissions("car:role:edit")
+	@Log(title = "用户和角色关联", businessType = BusinessType.UPDATE)
+	@PutMapping
+	public AjaxResult edit(@RequestBody SysUserRole sysUserRole) {
+		return toAjax(sysUserRoleService.updateSysUserRole(sysUserRole));
+	}
+	
+	/**
+	 * 删除用户和角色关联
+	 */
+	@RequiresPermissions("car:role:remove")
+	@Log(title = "用户和角色关联", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{userIds}")
-    public AjaxResult remove(@PathVariable Long[] userIds)
-    {
-        return toAjax(sysUserRoleService.deleteSysUserRoleByUserIds(userIds));
-    }
+	public AjaxResult remove(@PathVariable Long[] userIds) {
+		return toAjax(sysUserRoleService.deleteSysUserRoleByUserIds(userIds));
+	}
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserRoleServiceImpl.java
index 8a777ec..ab578b5 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserRoleServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserRoleServiceImpl.java
@@ -11,85 +11,78 @@
 
 /**
  * 用户和角色关联Service业务层处理
- * 
+ *
  * @author xiaochen
  * @date 2023-06-12
  */
 @Service
-public class SysUserRoleServiceImpl  extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements ISysUserRoleService
-{
-    @Autowired
-    private SysUserRoleMapper sysUserRoleMapper;
-
-    /**
-     * 查询用户和角色关联
-     * 
-     * @param userId 用户和角色关联主键
-     * @return 用户和角色关联
-     */
-    @Override
-    public SysUserRole selectSysUserRoleByUserId(Long userId)
-    {
-        return sysUserRoleMapper.selectSysUserRoleByUserId(userId);
-    }
-
-    /**
-     * 查询用户和角色关联列表
-     * 
-     * @param sysUserRole 用户和角色关联
-     * @return 用户和角色关联
-     */
-    @Override
-    public List<SysUserRole> selectSysUserRoleList(SysUserRole sysUserRole)
-    {
-        return sysUserRoleMapper.selectSysUserRoleList(sysUserRole);
-    }
-
-    /**
-     * 新增用户和角色关联
-     * 
-     * @param sysUserRole 用户和角色关联
-     * @return 结果
-     */
-    @Override
-    public int insertSysUserRole(SysUserRole sysUserRole)
-    {
-        return sysUserRoleMapper.insertSysUserRole(sysUserRole);
-    }
-
-    /**
-     * 修改用户和角色关联
-     * 
-     * @param sysUserRole 用户和角色关联
-     * @return 结果
-     */
-    @Override
-    public int updateSysUserRole(SysUserRole sysUserRole)
-    {
-        return sysUserRoleMapper.updateSysUserRole(sysUserRole);
-    }
-
-    /**
-     * 批量删除用户和角色关联
-     * 
-     * @param userIds 需要删除的用户和角色关联主键
-     * @return 结果
-     */
-    @Override
-    public int deleteSysUserRoleByUserIds(Long[] userIds)
-    {
-        return sysUserRoleMapper.deleteSysUserRoleByUserIds(userIds);
-    }
-
-    /**
-     * 删除用户和角色关联信息
-     * 
-     * @param userId 用户和角色关联主键
-     * @return 结果
-     */
-    @Override
-    public int deleteSysUserRoleByUserId(Long userId)
-    {
-        return sysUserRoleMapper.deleteSysUserRoleByUserId(userId);
-    }
+public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements ISysUserRoleService {
+	@Autowired
+	private SysUserRoleMapper sysUserRoleMapper;
+	
+	/**
+	 * 查询用户和角色关联
+	 *
+	 * @param userId 用户和角色关联主键
+	 * @return 用户和角色关联
+	 */
+	@Override
+	public SysUserRole selectSysUserRoleByUserId(Long userId) {
+		return sysUserRoleMapper.selectSysUserRoleByUserId(userId);
+	}
+	
+	/**
+	 * 查询用户和角色关联列表
+	 *
+	 * @param sysUserRole 用户和角色关联
+	 * @return 用户和角色关联
+	 */
+	@Override
+	public List<SysUserRole> selectSysUserRoleList(SysUserRole sysUserRole) {
+		return sysUserRoleMapper.selectSysUserRoleList(sysUserRole);
+	}
+	
+	/**
+	 * 新增用户和角色关联
+	 *
+	 * @param sysUserRole 用户和角色关联
+	 * @return 结果
+	 */
+	@Override
+	public int insertSysUserRole(SysUserRole sysUserRole) {
+		return sysUserRoleMapper.insertSysUserRole(sysUserRole);
+	}
+	
+	/**
+	 * 修改用户和角色关联
+	 *
+	 * @param sysUserRole 用户和角色关联
+	 * @return 结果
+	 */
+	@Override
+	public int updateSysUserRole(SysUserRole sysUserRole) {
+		return sysUserRoleMapper.updateSysUserRole(sysUserRole);
+	}
+	
+	/**
+	 * 批量删除用户和角色关联
+	 *
+	 * @param userIds 需要删除的用户和角色关联主键
+	 * @return 结果
+	 */
+	@Override
+	public int deleteSysUserRoleByUserIds(Long[] userIds) {
+		return sysUserRoleMapper.deleteSysUserRoleByUserIds(userIds);
+	}
+	
+	/**
+	 * 删除用户和角色关联信息
+	 *
+	 * @param userId 用户和角色关联主键
+	 * @return 结果
+	 */
+	@Override
+	public int deleteSysUserRoleByUserId(Long userId) {
+		return sysUserRoleMapper.deleteSysUserRoleByUserId(userId);
+	}
 }
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 6ea45fd..b484da7 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
@@ -22,6 +22,7 @@
         <result property="createTime"   column="create_time"  />
         <result property="updateBy"     column="update_by"    />
         <result property="updateTime"   column="update_time"  />
+	    <result property="forbiddenRemark"           column="forbidden_remark"/>
         <result property="remark"       column="remark"       />
         <result property="roleType"       column="roleType"       />
         <result property="objectId"       column="objectId"       />
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java
new file mode 100644
index 0000000..dc7e36b
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/pojo/AppletUserLogin.java
@@ -0,0 +1,22 @@
+package com.ruoyi.account.ali.pojo;
+
+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 = "支付宝小程序登录")
+public class AppletUserLogin implements Serializable {
+
+    @ApiModelProperty(value = "auth_code")
+    @NotBlank(message = "auth_code不能为空")
+    private String code;
+
+    @ApiModelProperty(value = "获取用户信息加密串")
+    @NotBlank(message = "获取用户信息加密串不能为空")
+    private String token;
+
+}
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 8a60f08..0678b48 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,16 +1,24 @@
 package com.ruoyi.account.ali.tools;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.parser.Feature;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.AlipayConfig;
 import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.internal.util.AlipayEncrypt;
+import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
-import com.alipay.api.request.AlipayUserUserinfoShareRequest;
+import com.alipay.api.request.AlipayUserInfoShareRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
-import com.alipay.api.response.AlipayUserUserinfoShareResponse;
+import com.alipay.api.response.AlipayUserInfoShareResponse;
 import com.ruoyi.account.ali.Constant.AliConstant;
 import com.ruoyi.account.ali.model.AliProperties;
+import com.ruoyi.common.core.exception.ServiceException;
 import lombok.extern.slf4j.Slf4j;
+
+import java.util.Map;
 
 /**
  * @author xiaochen
@@ -60,12 +68,12 @@
      * 支付宝小程序授权获取手机号
      * @return
      */
-    public AlipayUserUserinfoShareResponse getUserInfo(String accessToken) {
+    public AlipayUserInfoShareResponse 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();
+            AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
             //授权类接口执行API调用时需要带上accessToken
             return alipayClient.execute(request,accessToken);
         } catch (AlipayApiException e) {
@@ -74,6 +82,53 @@
     }
 
     /**
+     * 获取用户手机号
+     * @param response
+     * @return
+     */
+    public String getPhoneNumber(String response){
+        //1. 获取验签和解密所需要的参数
+        Map<String, String> openapiResult = JSON.parseObject(response,new TypeReference<Map<String, String>>() {}, Feature.OrderedField);
+        String signType = "RSA2";
+        String charset = "UTF-8";
+        String encryptType = "AES";
+        String sign = openapiResult.get("sign");
+        String content = openapiResult.get("response");
+        //判断是否为加密内容
+        boolean isDataEncrypted = !content.startsWith("{");
+        boolean signCheckPass = false;
+        //2. 验签
+        String signContent = content;
+        if (isDataEncrypted) {
+            signContent = "\"" + signContent + "\"";
+        } try {
+            signCheckPass = AlipaySignature.rsaCheck(signContent, sign, aliProperties.getAlipayPublicKey(), charset, signType);
+        } catch (AlipayApiException e) {
+            // 验签异常, 日志
+        } if (!signCheckPass) {
+            //验签不通过(异常或者报文被篡改),终止流程(不需要做解密)
+            throw new ServiceException("验签失败");
+        }
+        //3. 解密
+        String plainData = null;
+        if (isDataEncrypted) {
+            try {
+                plainData = AlipayEncrypt.decryptContent(content, encryptType, "XABBSOeWDakvuG9TDez4Qg====", charset);
+            } catch (AlipayApiException e) {
+                //解密异常, 记录日志
+                throw new ServiceException("解密异常");
+            }} else {
+            plainData = content;
+        }
+        log.info("解密后的数据:{}", plainData);
+        String phoneNumber = "";
+        if (plainData.contains("mobile")) {
+            phoneNumber = JSON.parseObject(plainData).getString("mobile");
+        }
+        return phoneNumber;
+    }
+
+    /**
      * 初始化支付宝配置
      * @return
      */
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 408d79a..52f871a 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,15 +7,18 @@
 import com.alipay.api.diagnosis.DiagnosisUtils;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserInfoShareResponse;
 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;
 import com.ruoyi.account.ali.model.AliProperties;
+import com.ruoyi.account.ali.pojo.AppletUserLogin;
 import com.ruoyi.account.ali.tools.AliAppletTools;
 import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.account.service.TAppUserService;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.system.api.model.LoginUserApplet;
@@ -23,10 +26,7 @@
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 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.*;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -50,17 +50,22 @@
     @Autowired
     private TAppUserService appUserService;
     @ApiOperation(value = "通过code获得openid",tags = {"支付宝小程序登录"})
-    @GetMapping("/openIdByJsCode")
-    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code){
-        log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code);
+    @PostMapping("/openIdByJsCode")
+    public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserLogin appletUserLogin){
+        log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", appletUserLogin.getCode());
         // 登录
-        AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(code);
+        AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(appletUserLogin.getCode());
         if (response.isSuccess()) {
             // 获取用户信息
-            AlipayUserUserinfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken());
-            log.info("获取支付宝用户信息:{}", userInfo);
+//            AlipayUserInfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken());
+            if(StringUtils.isEmpty(appletUserLogin.getToken())){
+                return AjaxResult.success("已拒绝授权");
+            }
+            // 获取用户手机号
+            String phoneNumber = new AliAppletTools(aliProperties).getPhoneNumber(appletUserLogin.getToken());
+            log.info("获取支付宝用户信息:{}", phoneNumber);
             // 用户信息封装
-            return AjaxResult.ok(appUserService.aliLogin(response,userInfo));
+            return AjaxResult.success(appUserService.aliLogin(response,phoneNumber));
         } else {
              String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
              log.warn("诊断结果:{}",diagnosisUrl);
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 3e381b6..a3e6011 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
@@ -284,6 +284,9 @@
         if (userListQueryDto.getUserTagId() != null){
             String[] split = userListQueryDto.getUserTagId().split(",");
             userIds = appUserTagService.lambdaQuery().in(TAppUserTag::getUserTagId, Arrays.asList(split)).list().stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList());
+            if (userIds.isEmpty()){
+                userIds.add(-1L);
+            }
         }
         //列表查询
         Page<TAppUser> page = appUserService.lambdaQuery()
@@ -305,9 +308,11 @@
             //拿到最新的tagId
             TAppUserTag one = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, appUser.getId()).orderByDesc(TAppUserTag::getCreateTime).last("limit 1").one();
             //设置最新的tagName
-            R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId());
-            if (byIdTag.getData()!=null) {
-                appUser.setTagName(byIdTag.getData().getName());
+            if (one!=null){
+                R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId());
+                if (byIdTag.getData()!=null) {
+                    appUser.setTagName(byIdTag.getData().getName());
+                }
             }
             //匹配vipMap的值
             appUser.setVipName(vipMap.getData().get(appUser.getVipId()));
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 2fcec55..d4252d8 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
@@ -15,6 +15,7 @@
 import com.ruoyi.account.wx.tools.WxAppletTools;
 import com.ruoyi.account.wx.tools.WxUtils;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
@@ -22,7 +23,6 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
@@ -60,8 +60,11 @@
 //        if (StringUtils.isNotBlank(data.getSignature())) {
 //            WxUtils.verifySignature(data.getRawData(), sessionKey, data.getSignature());
 //        }
+        if(StringUtils.isEmpty(data.getEncryptedData()) || StringUtils.isEmpty(data.getIv())){
+            return AjaxResult.success("已拒绝授权");
+        }
         AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey,  data.getIv());
         appletUserDecodeData.setOpenId(openid);
-        return AjaxResult.ok(appUserService.wxLogin(appletUserDecodeData));
+        return AjaxResult.success(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 fbed3d2..9e59184 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,6 +1,7 @@
 package com.ruoyi.account.service;
 
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserInfoShareResponse;
 import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.account.api.model.TAppUser;
@@ -27,10 +28,11 @@
 
     /**
      * 支付宝小程序登录用户封装
-     * @param userInfo
+     * @param response
      * @return
      */
-    Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,AlipayUserUserinfoShareResponse userInfo);
+//    Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserInfoShareResponse userInfo);
+    Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,String phone);
 
     /**
      * 封装用户信息和token
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 7fd0ff1..d3351ef 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,6 +1,7 @@
 package com.ruoyi.account.service.impl;
 
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserInfoShareResponse;
 import com.alipay.api.response.AlipayUserUserinfoShareResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -65,34 +66,59 @@
     }
 
     @Override
-    public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserUserinfoShareResponse userInfo) {
+    public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response,String phone) {
         // 通过手机号查询用户,是否已存在手动导入用户,包含微信用户
         TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
-                .eq(TAppUser::getPhone, userInfo.getMobile())
+                .eq(TAppUser::getPhone, phone)
                 .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())
+                    .eq(TAppUser::getPhone, phone)
                     .last("LIMIT 1"));
             if(Objects.isNull(appUser)){
                 appUser = new TAppUser();
-                appUser.setPhone(userInfo.getMobile());
+                appUser.setPhone(phone);
             }
         }
         if(Objects.nonNull(appUser.getStatus())){
             throwInfo(appUser.getStatus());
         }
-        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> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserInfoShareResponse 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());
+//            }
+//        }
+//        if(Objects.nonNull(appUser.getStatus())){
+//            throwInfo(appUser.getStatus());
+//        }
+//        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) {
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 24753b0..5c6da4a 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
@@ -243,4 +243,16 @@
 		List<Site> sites = siteService.listByIds(ids);
 		return R.ok(sites);
 	}
+	
+	
+	/**
+	 * 获取所有站点数据
+	 * @return
+	 */
+	@ResponseBody
+	@PostMapping("/getSiteAll")
+	public R<List<Site>> getSiteAll(){
+		List<Site> list = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0));
+		return R.ok(list);
+	}
 }
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 2587a65..fc6ee66 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
@@ -98,7 +98,7 @@
             return R.fail("excel导出失败!");
         }
         try {
-            List<TApplyChargingPile> list = applyChargingPileService.lambdaQuery().list();
+            List<TApplyChargingPile> list = applyChargingPileService.lambdaQuery().last("limit 1").list();
 
             List<TApplyChargingPileExportDto> exportDtos =new ArrayList<>();
             for (TApplyChargingPile tApplyChargingPile : list) {
diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx"
index cbe9d6d..1456be1 100644
--- "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx"
+++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\346\241\251\347\224\263\350\257\267\350\256\260\345\275\225.xlsx"
Binary files differ
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 ef4d722..a433566 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
@@ -57,11 +57,11 @@
             <if test="null != req.code and req.code!=''">
                 and t1.code  LIKE CONCAT('%',#{req.code},'%')
             </if>
-            <if test="req.type != null and ·req.type != '' and req.type == 1">
-                and t1.coupon_discount_amount  != null and t1.coupon_discount_amount  != 0
+            <if test="req.type != null and req.type != '' and req.type == 1">
+                and t1.coupon_discount_amount  IS NOT NULL and t1.coupon_discount_amount  != 0
             </if>
             <if test="req.type != null and req.type != '' and req.type == 2">
-                and t1.vip_discount_amount  != null and t1.vip_discount_amount  != 0
+                and t1.vip_discount_amount  IS NOT NULL and t1.vip_discount_amount  != 0
             </if>
             <if test="null != req.userIds and req.userIds.size()>0" >
                 and t1.app_user_id in
@@ -97,13 +97,13 @@
                 and t2.code  LIKE CONCAT('%',#{req.code},'%')
             </if>
             <if test="req.type != null and req.type != '' and req.type == 1">
-                and t2.coupon_discount_amount  != null and t1.coupon_discount_amount  != 0
+                and t2.coupon_discount_amount  IS NOT NULL and t2.coupon_discount_amount  != 0
             </if>
             <if test="req.type != null and req.type != '' and req.type == 2">
-                and t2.vip_discount_amount  != null and t1.vip_discount_amount  != 0
+                and t2.vip_discount_amount  IS NOT NULL and t2.vip_discount_amount  != 0
             </if>
             <if test="req.type == null ">
-                and t2.vip_discount_amount  != null and t1.vip_discount_amount  != 0 and t2.coupon_discount_amount  != null and t1.coupon_discount_amount  != 0
+                and t2.vip_discount_amount  IS NOT NULL and t2.vip_discount_amount  != 0 and t2.coupon_discount_amount  IS NOT NULL and t2.coupon_discount_amount  != 0
             </if>
             <if test="null != req.userIds and req.userIds.size()>0" >
                 and t2.app_user_id in
@@ -129,12 +129,12 @@
                 3 as orderType
                 from t_vip_order t3
                 where 1 = 1
-                and t3.type ==1
+                and t3.type =1
                 <if test="null != req.code and req.code!=''">
                     and t3.code  LIKE CONCAT('%',#{req.code},'%')
                 </if>
                 <if test="req.type == null ">
-                    and t3.discount_amount  != null and t3.discount_amount  != 0
+                    and t3.discount_amount  IS NOT NULL and t3.discount_amount  != 0
                 </if>
                 <if test="null != req.userIds and req.userIds.size()>0" >
                     and t3.app_user_id in
@@ -164,7 +164,7 @@
                     and t4.code  LIKE CONCAT('%',#{req.code},'%')
                 </if>
                 <if test="req.type == null ">
-                    and t4.discount_amount  != null and t4.discount_amount  != 0
+                    and t4.discount_amount  IS NOT NULL and t4.discount_amount  != 0
                 </if>
                 <if test="null != req.userIds and req.userIds.size()>0" >
                     and t4.app_user_id in
diff --git a/ruoyi-service/ruoyi-other/pom.xml b/ruoyi-service/ruoyi-other/pom.xml
index 67e4405..0ca03f6 100644
--- a/ruoyi-service/ruoyi-other/pom.xml
+++ b/ruoyi-service/ruoyi-other/pom.xml
@@ -92,6 +92,10 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-swagger</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-chargingPile</artifactId>
+        </dependency>
 
         <!-- 引入Druid依赖,阿里巴巴所提供的数据源 -->
         <dependency>
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java
index 089747c..7a1f511 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java
@@ -2,6 +2,8 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TRoleSite;
 import com.ruoyi.other.service.TRoleSiteService;
@@ -26,6 +28,11 @@
 	@Resource
 	private TRoleSiteService roleSiteService;
 	
+	@Resource
+	private SiteClient siteClient;
+	
+	
+	
 	/**
 	 * 查询角色站点数据
 	 * @param roleId
@@ -35,6 +42,14 @@
 	@PostMapping("/getSiteIds/{roleId}")
 	public R<List<Integer>> getSiteIds(@PathVariable Long roleId){
 		List<TRoleSite> list = roleSiteService.list(new LambdaQueryWrapper<TRoleSite>().eq(TRoleSite::getRoleId, roleId));
+		if(list.size() == 1){
+			Integer siteId = list.get(0).getSiteId();
+			if(0 == siteId){
+				List<Site> data = siteClient.getSiteAll().getData();
+				List<Integer> collect = data.stream().map(Site::getId).collect(Collectors.toList());
+				return R.ok(collect);
+			}
+		}
 		List<Integer> collect = list.stream().map(TRoleSite::getSiteId).collect(Collectors.toList());
 		return R.ok(collect);
 	}

--
Gitblit v1.7.1