ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
New file @@ -0,0 +1,34 @@ package com.ruoyi.chargingPile.api.factory; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.util.List; /** * 充电桩服务降级处理 * * @author ruoyi */ @Component public class SiteFallbackFactory implements FallbackFactory<SiteClient> { private static final Logger log = LoggerFactory.getLogger(SiteFallbackFactory.class); @Override public SiteClient create(Throwable throwable) { log.error("站点调用失败:{}", throwable.getMessage()); return new SiteClient() { @Override public R<List<Site>> getSiteByIds(List<Integer> ids) { return R.fail("根据id集合获取站点数据调用失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.chargingPile.api.feignClient; import com.ruoyi.chargingPile.api.factory.SiteFallbackFactory; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/10 14:38 */ @FeignClient(contextId = "SiteClient", value = ServiceNameConstants.CONTRACT_SERVICE, fallbackFactory = SiteFallbackFactory.class) public interface SiteClient { /** * 根据id集合获取数据 * @param ids * @return */ @PostMapping("/site/getSiteByIds") R<List<Site>> getSiteByIds(@RequestBody List<Integer> ids); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPileNotification.java
@@ -35,10 +35,18 @@ @ApiModelProperty(value = "站点id") @TableField("site_id") private Integer siteId; @ApiModelProperty(value = "站点名称") @TableField(exist = false) private String siteName; @ApiModelProperty(value = "充电桩id") @TableField("charging_pile_id") private Integer chargingPileId; @ApiModelProperty(value = "通知电话") @TableField("phone") private String phone; @ApiModelProperty(value = "通知内容") @TableField("content") ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1,2 @@ com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory com.ruoyi.chargingPile.api.factory.SiteFallbackFactory ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/RoleSiteFallbackFactory.java
@@ -1,6 +1,7 @@ package com.ruoyi.other.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TRoleSite; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import org.slf4j.Logger; @@ -28,6 +29,16 @@ public R<List<Integer>> getSiteIds(Long roleId) { return R.fail("获取角色站点失败:" + throwable.getMessage()); } @Override public R addRoleSite(List<TRoleSite> roleSites) { return R.fail("添加角色站点失败:" + throwable.getMessage()); } @Override public R delRoleSite(Long roleId) { return R.fail("删除角色站点失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/UserSiteFallbackFactory.java
@@ -1,6 +1,7 @@ package com.ruoyi.other.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TUserSite; import com.ruoyi.other.api.feignClient.UserSiteClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,6 +28,16 @@ public R<List<Integer>> getSiteIds(Long userId) { return R.fail("获取用户站点失败:" + throwable.getMessage()); } @Override public R addUserSite(List<TUserSite> userSite) { return R.fail("添加用户站点失败:" + throwable.getMessage()); } @Override public R delUserSite(Long userId) { return R.fail("删除用户站点失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/RoleSiteClient.java
@@ -2,10 +2,13 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TRoleSite; import com.ruoyi.other.api.factory.RoleSiteFallbackFactory; import com.ruoyi.other.api.factory.UserSiteFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -23,6 +26,23 @@ * @param roleId * @return */ @GetMapping("/t-user-site/getSiteIds") R<List<Integer>> getSiteIds(@RequestParam("roleId") Long roleId); @GetMapping("/t-role-site/getSiteIds") R<List<Integer>> getSiteIds(Long roleId); /** * 添加角色站点数据 * @param roleSites * @return */ @PostMapping("/t-role-site/addRoleSite") R addRoleSite(List<TRoleSite> roleSites); /** * 删除角色站点数据 * @param roleId * @return */ @DeleteMapping("/t-role-site/delRoleSite") R delRoleSite(Long roleId); } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/UserSiteClient.java
@@ -2,9 +2,13 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TUserSite; import com.ruoyi.other.api.factory.UserSiteFallbackFactory; import org.apache.ibatis.annotations.Delete; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -23,5 +27,23 @@ * @return */ @GetMapping("/t-user-site/getSiteIds") R<List<Integer>> getSiteIds(@RequestParam("userId") Long userId); R<List<Integer>> getSiteIds(Long userId); /** * 添加用户站点关系数据 * @param userSite * @return */ @PostMapping("/t-user-site/getSiteIds") R addUserSite(List<TUserSite> userSite); /** * 删除用户站点数据 * @param userId * @return */ @DeleteMapping("/t-user-site/delUserSite") R delUserSite(Long userId); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
@@ -1,11 +1,13 @@ package com.ruoyi.system.api.domain; import java.util.List; import java.util.Set; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.core.annotation.Excel; @@ -77,20 +79,9 @@ /** 角色菜单权限 */ @TableField(exist = false) private Set<String> permissions; /** 车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限 */ private Integer carDataAuth; /** 车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限 */ private Integer carTrainOperAuth; /** 合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限 */ private Integer contractDataAuth; /** 公司id */ private Integer companyId; @ApiModelProperty(value = "站点名称") @TableField(exist = false) private List<String> siteNames; public SysRole() { @@ -100,38 +91,6 @@ public SysRole(Long roleId) { this.roleId = roleId; } public Integer getCarDataAuth() { return carDataAuth; } public void setCarDataAuth(Integer carDataAuth) { this.carDataAuth = carDataAuth; } public Integer getCarTrainOperAuth() { return carTrainOperAuth; } public void setCarTrainOperAuth(Integer carTrainOperAuth) { this.carTrainOperAuth = carTrainOperAuth; } public Integer getContractDataAuth() { return contractDataAuth; } public void setContractDataAuth(Integer contractDataAuth) { this.contractDataAuth = contractDataAuth; } public Integer getCompanyId() { return companyId; } public void setCompanyId(Integer companyId) { this.companyId = companyId; } public Long getRoleId() @@ -278,7 +237,15 @@ { this.permissions = permissions; } public List<String> getSiteNames() { return siteNames; } public void setSiteNames(List<String> siteNames) { this.siteNames = siteNames; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -113,7 +113,7 @@ /** * 角色类型 1=平台 2=公司 3=门店 4=修理厂 */ @ApiModelProperty(value = "角色类型 1=平台 2=公司 3=门店 4=修理厂") @ApiModelProperty(value = "角色类型 1=平台 2=合作商") private Integer roleType; @Excel(name = "密码修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT) @@ -124,6 +124,20 @@ @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "充电站") @TableField(exist = false) private List<String> siteNames; @ApiModelProperty(value = "充电站id", required = true) @TableField(exist = false) private List<Integer> siteIds; @ApiModelProperty(value = "角色") @TableField(exist = false) private List<String> roleNames; @Override public String getRemark() { @@ -365,6 +379,32 @@ { this.roleId = roleId; } public List<String> getSiteNames() { return siteNames; } public void setSiteNames(List<String> siteNames) { this.siteNames = siteNames; } public List<String> getRoleNames() { return roleNames; } public List<Integer> getSiteIds() { return siteIds; } public void setSiteIds(List<Integer> siteIds) { this.siteIds = siteIds; } public void setRoleNames(List<String> roleNames) { this.roleNames = roleNames; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) ruoyi-modules/ruoyi-system/pom.xml
@@ -106,6 +106,24 @@ </exclusion> </exclusions> </dependency> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-other</artifactId> <version>3.6.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-chargingPile</artifactId> <version>3.6.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>io.seata</groupId> <artifactId>seata-all</artifactId> <version>1.6.1</version> <scope>compile</scope> </dependency> </dependencies> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -12,8 +12,14 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TRoleSite; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.system.api.model.GetSysRoleByIds; import com.ruoyi.system.domain.SysMenus; import com.ruoyi.system.domain.SysRoleMenu; @@ -27,6 +33,7 @@ import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserRoleService; import com.ruoyi.system.service.ISysUserService; import io.seata.spring.annotation.GlobalTransactional; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -55,72 +62,75 @@ @Api(tags = "角色模块") public class SysRoleController extends BaseController { @Autowired @Resource private ISysRoleService roleService; @Autowired @Resource private ISysUserService userService; @Autowired @Resource private ISysDeptService deptService; @Resource private SysRoleMenuMapper sysRoleMenuMapper; @Autowired @Resource private ISysUserRoleService sysUserRoleService; @Resource private SysMenuMapper menuMapper; @ApiOperation("获取所有角色信息根据公司id") @Resource private RoleSiteClient roleSiteClient; @Resource private SiteClient siteClient; @ApiOperation(value = "获取角色列表", tags = {"管理后台-系统用户管理"}) @GetMapping("/list") public AjaxResult list(Integer companyId) { SysRole role = new SysRole(); role.setCompanyId(companyId); List<SysRole> list = roleService.selectRoleList(role); public AjaxResult list() { List<SysRole> list = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getDelFlag, 0).eq(SysRole::getStatus, 0)); return AjaxResult.success(list); } @ApiOperation("获取所有角色信息根据公司id--分页") @ResponseBody @GetMapping("/listPage") public AjaxResult listPage(Integer companyId,int pageNumber,int pageSize) { PageInfo<SysRole> pageInfo = new PageInfo<>(pageNumber, pageSize); PageInfo<SysRole> page = roleService.page(pageInfo, new LambdaQueryWrapper<SysRole>().eq(SysRole::getCompanyId, companyId).ne(SysRole::getRoleId,20)); @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(); List<String> collect = sites.stream().map(Site::getName).collect(Collectors.toList()); record.setSiteNames(collect); } return AjaxResult.success(page); } @ApiOperation("角色启用停用") @GetMapping("/roleStart") public AjaxResult roleStart(Long roleId) { SysRole role = roleService.selectRoleById(roleId); if(role.getStatus().equals("1")){ role.setStatus("0"); }else { role.setStatus("1"); } return AjaxResult.success(roleService.updateRole(role)); } @ApiOperation("添加角色") @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()) .eq(SysRole::getCompanyId,dto.getCompanyId())); .eq(SysRole::getRoleName,dto.getRoleName())); if(count>0){ return AjaxResult.error("角色已存在,请重新输入"); } @@ -130,36 +140,29 @@ } role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()]))); // 添加角色 role.setCompanyId(dto.getCompanyId()); role.setCarDataAuth(dto.getCarDataAuth()); role.setCarTrainOperAuth(dto.getCarTrainOperAuth()); role.setContractDataAuth(dto.getContractDataAuth()); role.setRemark(dto.getRemark()); role.setCreateBy(SecurityUtils.getUsername()); role.setCreateTime(new Date()); roleService.insertRole(role); // ArrayList<SysRoleMenu> sysRoleMenus = new ArrayList<>(); // List<Long> menuIds = dto.getMenuIds(); // for (Long menuId : menuIds) { // SysRoleMenu sysRoleMenu = new SysRoleMenu(); // sysRoleMenu.setMenuId(menuId); // sysRoleMenu.setRoleId(role.getRoleId()); // sysRoleMenus.add(sysRoleMenu); // } // sysRoleMenuMapper.batchRoleMenu(sysRoleMenus); //添加站点权限 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(); } @ApiOperation("角色详情") @GetMapping("/roleInfo") public AjaxResult roleInfo( @RequestParam Long id) { @ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"}) public AjaxResult roleInfo( @RequestParam Long id) { SysRole role = roleService.selectRoleById(id); RoleInfoVo roleInfoVo = new RoleInfoVo(); roleInfoVo.setRoleId(role.getRoleId()); roleInfoVo.setCarDataAuth(role.getCarDataAuth()); roleInfoVo.setCarTrainOperAuth(role.getCarTrainOperAuth()); roleInfoVo.setContractDataAuth(role.getContractDataAuth()); roleInfoVo.setRoleName(role.getRoleName()); // 获取当前角色的菜单id List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()); @@ -184,66 +187,29 @@ 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); } @ApiOperation("用户获取权限菜单") @GetMapping("/roleInfoFromUserId") public AjaxResult roleInfoFromUserId( @RequestParam Long userId) { SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId)); Long id =one.getRoleId(); // 获取当前角色的菜单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<>()); } if(id!=1){ menusId = menusId.stream().filter(e->e!=1074 && e!=1075 && e!=1193 && e!=1194).collect(Collectors.toList()); } //获取当前的权限菜单 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); } return AjaxResult.success(s1); } @ApiOperation("编辑角色") @PostMapping("/roleUpdate") public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto) { @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::getRoleId, dto.getRoleId())); List<SysRole> sysRoles = roleService.isExitUpdate(dto.getRoleName(),dto.getRoleId(),one.getCompanyId()); if(sysRoles.size()>0){ SysRole one = roleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleName, dto.getRoleName())); if(null != one && !one.getRoleId().equals(dto.getRoleId())){ return AjaxResult.error("角色已存在,请重新输入"); } // 编辑角色 role.setCarDataAuth(dto.getCarDataAuth()); role.setCarTrainOperAuth(dto.getCarTrainOperAuth()); role.setContractDataAuth(dto.getContractDataAuth()); role.setRemark(dto.getRemark()); role.setUpdateBy(SecurityUtils.getUsername()); role.setUpdateTime(new Date()); role.setRoleId(dto.getRoleId()); @@ -272,110 +238,21 @@ 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(); } @Log(title = "角色管理", businessType = BusinessType.EXPORT) @RequiresPermissions("system:role:export") @PostMapping("/export") public void export(HttpServletResponse response, SysRole role) { List<SysRole> list = roleService.selectRoleList(role); ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); util.exportExcel(response, list, "角色数据"); } /** * 根据角色编号获取详细信息 */ @RequiresPermissions("system:role:query") @GetMapping(value = "/{roleId}") public AjaxResult getInfo(@PathVariable Long roleId) { roleService.checkRoleDataScope(roleId); return success(roleService.selectRoleById(roleId)); } /** * 新增角色 */ @RequiresPermissions("system:role:add") @Log(title = "角色管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody SysRole role) { if (!roleService.checkRoleNameUnique(role)) { return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); } else if (!roleService.checkRoleKeyUnique(role)) { return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); } role.setCreateBy(SecurityUtils.getUsername()); return toAjax(roleService.insertRole(role)); } /** * 修改保存角色 */ @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysRole role) { roleService.checkRoleAllowed(role); roleService.checkRoleDataScope(role.getRoleId()); if (!roleService.checkRoleNameUnique(role)) { return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); } else if (!roleService.checkRoleKeyUnique(role)) { return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); } role.setUpdateBy(SecurityUtils.getUsername()); return toAjax(roleService.updateRole(role)); } /** * 修改保存数据权限 */ @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/dataScope") public AjaxResult dataScope(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); roleService.checkRoleDataScope(role.getRoleId()); return toAjax(roleService.authDataScope(role)); } /** * 状态修改 */ @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") public AjaxResult changeStatus(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); roleService.checkRoleDataScope(role.getRoleId()); role.setUpdateBy(SecurityUtils.getUsername()); return toAjax(roleService.updateRoleStatus(role)); } /** * 删除角色 @@ -383,39 +260,14 @@ @RequiresPermissions("system:role:remove") @Log(title = "角色管理", businessType = BusinessType.DELETE) @DeleteMapping("/{roleIds}") public AjaxResult remove(@PathVariable Long[] roleIds) { @ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"}) public AjaxResult remove(@PathVariable Long[] roleIds) { return toAjax(roleService.deleteRoleByIds(roleIds)); } /** * 停用角色 */ @RequiresPermissions("system:role:stop") @Log(title = "角色管理", businessType = BusinessType.STOP) @PutMapping("/stop") public AjaxResult stop(@RequestBody Long roleId) { SysRole sysRole = roleService.selectRoleById(roleId); if(sysRole.getStatus().equals("0")){ sysRole.setStatus("1"); }else { sysRole.setStatus("0"); } return toAjax(roleService.updateRole(sysRole)); } /** * 获取角色选择框列表 */ @RequiresPermissions("system:role:query") @GetMapping("/optionselect") public AjaxResult optionselect() { return success(roleService.selectRoleAll()); } /** * 查询已分配用户角色列表 */ @@ -440,39 +292,7 @@ return getDataTable(list); } /** * 取消授权用户 */ @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancel") public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) { return toAjax(roleService.deleteAuthUser(userRole)); } /** * 批量取消授权用户 */ @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancelAll") public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) { return toAjax(roleService.deleteAuthUsers(roleId, userIds)); } /** * 批量选择用户授权 */ @RequiresPermissions("system:role:edit") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/selectAll") public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) { roleService.checkRoleDataScope(roleId); return toAjax(roleService.insertAuthUsers(roleId, userIds)); } /** * 获取对应角色部门树列表 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -9,8 +9,13 @@ 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; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.domain.TUserSite; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.domain.dto.IndexDto; import com.ruoyi.system.domain.vo.UserRoleVO; import com.ruoyi.system.api.model.*; @@ -18,8 +23,12 @@ 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.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; @@ -52,37 +61,51 @@ @RequestMapping("/user") @Api(tags = "用户信息") public class SysUserController extends BaseController { @Autowired @Resource private ISysUserService userService; @Autowired @Resource private ISysRoleService roleService; @Autowired @Resource private ISysDeptService deptService; @Autowired @Resource private ISysPostService postService; @Autowired @Resource private ISysPermissionService permissionService; @Autowired @Resource private ISysConfigService configService; @Autowired @Resource private ISysUserRoleService userRoleService; @Autowired @Resource private ISysUserRoleService sysUserRoleService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Resource private SiteClient siteClient; /** * 获取用户列表 */ @GetMapping("/list") @ApiOperation("管理员列表") public AjaxResult list(String phonenumber, int pageNumber, int pageSize) { PageInfo<SysUser> pageInfo = new PageInfo<>(pageNumber, pageSize); PageInfo<SysUser> page = userService.getList(pageInfo, phonenumber); @ApiOperation(value = "获取系统用户列表", tags = {"管理后台-系统用户管理", "管理后台-角色管理"}) public AjaxResult list(GetSysUserList getSysUserList) { PageInfo<SysUser> pageInfo = new PageInfo<>(getSysUserList.getPageCurr(), getSysUserList.getPageSize()); PageInfo<SysUser> page = userService.getList(pageInfo, getSysUserList); return AjaxResult.success(page); } @@ -91,8 +114,9 @@ */ @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping("/add") @ApiOperation("添加管理员") public AjaxResult add(@Validated @RequestBody SysUser user) { @ApiOperation(value = "添加系统用户", tags = {"管理后台-系统用户管理"}) @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult add(@RequestBody SysUser user) { user.setUserName(user.getPhonenumber()); if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ user.setNickName(user.getPhonenumber()); @@ -100,24 +124,59 @@ if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("手机号已开通账号"); } if (StringUtils.isNotEmpty(user.getUserName()) && !userService.checkUserNameUnique(user)) { return error("登录账号重复"); } user.setCreateBy(SecurityUtils.getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setRoleType(1); int i = userService.insertUser(user); userService.insertUser(user); SysUserRole sysUserRole = new SysUserRole(); sysUserRole.setRoleId(user.getRoleId()); sysUserRole.setUserId(user.getUserId()); int i1 = userRoleService.insertSysUserRole(sysUserRole); return AjaxResult.success(i1); userRoleService.insertSysUserRole(sysUserRole); List<Integer> siteIds = user.getSiteIds(); List<TUserSite> userSites = new ArrayList<>(); for (Integer siteId : siteIds) { TUserSite userSite = new TUserSite(); userSite.setUserId(user.getUserId().intValue()); userSite.setSiteId(siteId); userSites.add(userSite); } userSiteClient.addUserSite(userSites); return AjaxResult.success(); } @GetMapping("/verifyUserNameRepeat/{username}") @ApiOperation(value = "校验账号是否重复", tags = {"管理后台-系统用户管理"}) public AjaxResult verifyUserNameRepeat(@PathVariable String username){ SysUser user = new SysUser(); user.setUserName(username); if (StringUtils.isNotEmpty(username) && !userService.checkUserNameUnique(user)) { return error("账号不可重复"); } return success(); } @GetMapping("/getRoleSiteName/{roleId}") @ApiOperation(value = "获取角色对应的站点名称", tags = {"管理后台-系统用户管理"}) public AjaxResult<List<String>> getRoleSiteName(@PathVariable Integer roleId){ List<Integer> ids = roleSiteClient.getSiteIds(roleId.longValue()).getData(); List<Site> data = siteClient.getSiteByIds(ids).getData(); List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList()); return AjaxResult.success(siteNames); } /** * 根据用户编号获取详细信息 */ @ApiOperation("管理员详情") @GetMapping(value = {"/", "/{userId}"}) public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) { @ApiOperation(value = "获取用户详情", tags = {"管理后台-系统用户管理"}) @GetMapping("/getInfo/{userId}") public AjaxResult getInfo(@PathVariable Long userId) { userService.checkUserDataScope(userId); AjaxResult ajax = AjaxResult.success(); List<SysRole> roles = roleService.selectRoleAll(); @@ -125,6 +184,11 @@ ajax.put("posts", postService.selectPostAll()); if (StringUtils.isNotNull(userId)) { SysUser sysUser = userService.selectUserById(userId); List<Integer> siteIds = userSiteClient.getSiteIds(userId).getData(); sysUser.setSiteIds(siteIds); List<Site> data = siteClient.getSiteByIds(siteIds).getData(); List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList()); sysUser.setSiteNames(siteNames); ajax.put(AjaxResult.DATA_TAG, sysUser); ajax.put("postIds", postService.selectPostListByUserId(userId)); ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); @@ -138,9 +202,9 @@ */ @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/update") @ApiOperation("编辑管理员") @ApiOperation(value = "编辑系统用户", tags = {"管理后台-系统用户管理"}) @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult edit(@Validated @RequestBody SysUser user) { user.setUserName(user.getPhonenumber()); if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ user.setNickName(user.getPhonenumber()); @@ -162,6 +226,13 @@ if (StringUtils.isNotEmpty(user.getPhonenumber()) && (Objects.nonNull(sysUser) && !user.getUserId().equals(sysUser.getUserId()) )) { return error("手机号已开通账号"); } sysUser = userService.getOne(Wrappers.lambdaQuery(SysUser.class) .eq(SysUser::getUserName, user.getUserName()) .eq(SysUser::getDelFlag,0) .last("LIMIT 1")); if (StringUtils.isNotEmpty(user.getUserName()) && (Objects.nonNull(sysUser) && !user.getUserId().equals(sysUser.getUserId()) )) { return error("登录账号重复"); } user.setUpdateBy(SecurityUtils.getUsername()); if (user.getPassword() != null && !"".equals(user.getPassword())) { user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); @@ -173,7 +244,20 @@ user.setPassword(null); user.setUpdateBy(SecurityUtils.getUsername()); user.setUpdateTime(new Date()); return toAjax(userService.updateUser(user)); userService.updateUser(user); //删除旧的站点数据后添加新的 userSiteClient.delUserSite(user.getUserId()); List<Integer> siteIds = user.getSiteIds(); List<TUserSite> userSites = new ArrayList<>(); for (Integer siteId : siteIds) { TUserSite userSite = new TUserSite(); userSite.setUserId(user.getUserId().intValue()); userSite.setSiteId(siteId); userSites.add(userSite); } userSiteClient.addUserSite(userSites); return success(); } @@ -182,7 +266,7 @@ */ @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") @ApiOperation("删除管理员") @ApiOperation(value = "删除系统用户", tags = {"管理后台-系统用户管理"}) public AjaxResult remove(@PathVariable Long[] userIds) { if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) { return error("当前用户不能删除"); @@ -190,98 +274,25 @@ return toAjax(userService.deleteUserByIds(userIds)); } @Log(title = "账号管理", businessType = BusinessType.INSERT) @PostMapping("/addCompanyUser") @ApiOperation("账号管理--添加账号") @Transactional(propagation = Propagation.REQUIRES_NEW) public AjaxResult addCompanyUser(@Validated @RequestBody AddCompanyUserDto dto) { SysUser user = dto.getSysUser(); if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("手机号已存在,请重新输入"); } user.setCreateBy(SecurityUtils.getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setRoleType(3); user.setUserName(user.getPhonenumber()); if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ user.setNickName(user.getPhonenumber()); } int i = userService.insertUser(user); if (i > 0) { // 添加role SysUserRole sysUserRole = new SysUserRole(); sysUserRole.setRoleId(dto.getRoleId()); sysUserRole.setUserId(dto.getSysUser().getUserId()); userRoleService.insertSysUserRole(sysUserRole); } return AjaxResult.success(); } @Log(title = "账号管理", businessType = BusinessType.INSERT) @PostMapping("/companyUserInfo") @ApiOperation("账号管理--账号详情") @Transactional(propagation = Propagation.REQUIRES_NEW) public AjaxResult companyUserInfo(@RequestParam Long userId) { SysUser sysUser = userService.selectUserById(userId); SysUserRole sysUserRole = userRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId)); CompanyUserVo companyUserVo = new CompanyUserVo(); companyUserVo.setRoleId(sysUserRole.getRoleId()); companyUserVo.setSysUser(sysUser); return AjaxResult.success(companyUserVo); } @Log(title = "账号管理", businessType = BusinessType.INSERT) @PostMapping("/updateCompanyUser") @ApiOperation("账号管理--修改账号") @Transactional(propagation = Propagation.REQUIRES_NEW) public AjaxResult updateCompanyUser(@Validated @RequestBody AddCompanyUserDto dto) { SysUser user = dto.getSysUser(); if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("手机号已存在,请重新输入"); } user.setUserName(user.getPhonenumber()); if(!org.springframework.util.StringUtils.hasLength(user.getNickName())){ user.setNickName(user.getPhonenumber()); } if (user.getPassword() != null && !"".equals(user.getPassword())) { user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); } user.setRoleType(1); user.setUpdateBy(SecurityUtils.getUsername()); user.setUpdateTime(new Date()); int i = userService.updateUser(user); // if (i > 0) { // 原来的role SysUserRole one = userRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, dto.getSysUser().getUserId())); one.setRoleId(dto.getRoleId()); //更新新的role userRoleService.updateSysUserRole(one); // } return AjaxResult.success(); } @PostMapping("/shopUserStart") @ApiOperation("账号管理--停用/启用") public AjaxResult shopUserStart(Long userId) { @ApiOperation(value = "账号管理--禁用/启用", tags = {"管理后台-系统用户管理"}) public AjaxResult shopUserStart(@RequestParam("userId") Long userId, @RequestParam("remark") String remark) { if (userId == null) { return AjaxResult.error("userId不能为空"); } SysUser sysUser = userService.selectUserById(userId); if (sysUser.getStatus().equals("0")) { sysUser.setStatus("1"); sysUser.setRemark(remark); } else { sysUser.setStatus("0"); sysUser.setRemark(""); } return toAjax(userService.updateUser(sysUser)); } @Autowired private ISysUserRoleService iSysUserRoleService; @PostMapping("/getUserList") @@ -454,32 +465,6 @@ } @Log(title = "用户管理", businessType = BusinessType.EXPORT) @RequiresPermissions("system:user:export") @PostMapping("/export") public void export(HttpServletResponse response, SysUser user) { List<SysUser> list = userService.selectUserList(user); ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); util.exportExcel(response, list, "用户数据"); } @PostMapping("/importTemplate") public void importTemplate(HttpServletResponse response) throws IOException { ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); util.importTemplateExcel(response, "用户数据"); } @Log(title = "用户管理", businessType = BusinessType.IMPORT) @RequiresPermissions("system:user:import") @PostMapping("/importData") public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); List<SysUser> userList = util.importExcel(file.getInputStream()); String operName = SecurityUtils.getUsername(); String message = userService.importUser(userList, updateSupport, operName); return success(message); } /** * 获取当前用户信息 */ @@ -505,7 +490,6 @@ /** * 注册用户信息 */ @InnerAuth @PostMapping("/register") public R<Boolean> register(@RequestBody SysUser sysUser) { String username = sysUser.getUserName(); @@ -544,6 +528,7 @@ @RequiresPermissions("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") @ApiOperation(value = "重置密码", tags = {"管理后台-系统用户管理"}) public AjaxResult resetPwd(@RequestBody SysUser user) { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/RoleAddDto.java
@@ -9,19 +9,14 @@ @Data public class RoleAddDto { @ApiModelProperty("角色名称") @ApiModelProperty(value = "角色名称", required = true) @NotBlank(message = "角色名称不能为空") private String roleName; @ApiModelProperty("车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限") private Integer carDataAuth; @ApiModelProperty("车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限") private Integer carTrainOperAuth; @ApiModelProperty("合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限") private Integer contractDataAuth; @ApiModelProperty("公司id") @NotNull(message = "公司id不能为空") private Integer companyId; @ApiModelProperty("菜单id") @ApiModelProperty(value = "站点id", required = true) private List<Integer> siteIds; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "菜单id", required = true) @NotNull(message = "菜单id不能为空") private List<Long> menuIds; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/RoleUpdateDto.java
@@ -10,15 +10,13 @@ public class RoleUpdateDto { @ApiModelProperty("角色id") private Long roleId; @ApiModelProperty("角色名称") @ApiModelProperty(value = "角色名称",required = true) @NotBlank(message = "角色名称不能为空") private String roleName; @ApiModelProperty("车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限") private Integer carDataAuth; @ApiModelProperty("车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限") private Integer carTrainOperAuth; @ApiModelProperty("合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限") private Integer contractDataAuth; @ApiModelProperty("菜单id") @ApiModelProperty(value = "站点id", required = true) private List<Integer> siteIds; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "菜单id", required = true) private List<Long> menuIds; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RoleInfoVo.java
@@ -13,13 +13,13 @@ private String roleName; @ApiModelProperty("车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限") private Integer carDataAuth; @ApiModelProperty("车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限") private Integer carTrainOperAuth; @ApiModelProperty("合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限") private Integer contractDataAuth; @ApiModelProperty("菜单id") private List<Long> menus; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty("站点id") private List<Integer> siteIds; @ApiModelProperty(value = "站点名称") private List<String> siteNames; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.system.query.GetSysUserList; import org.apache.ibatis.annotations.Param; import com.ruoyi.system.api.domain.SysUser; @@ -131,7 +132,7 @@ */ public SysUser checkEmailUnique(String email); PageInfo<SysUser> getList(@Param("pageInfo") PageInfo<SysUser> pageInfo, @Param("phonenumber") String phonenumber); List<SysUser> getList(@Param("pageInfo") PageInfo<SysUser> pageInfo, @Param("req") GetSysUserList getSysUserList); PageInfo<SysUser> getAllList(@Param("pageInfo") PageInfo<SysUser> pageInfo, @Param("ids") List<Integer> collect); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/GetSysUserList.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/10 14:10 */ @Data @ApiModel public class GetSysUserList extends BasePage { @ApiModelProperty(value = "人员搜索") private String search; @ApiModelProperty(value = "充电站id") private Integer siteId; @ApiModelProperty(value = "角色id") private List<Integer> roleIds; @ApiModelProperty(value = "账户状态(0=正常,1=禁用)") private Integer status; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.query.GetSysUserList; /** * 用户 业务层 @@ -208,7 +209,7 @@ */ public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, String phonenumber); PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, GetSysUserList getSysUserList); PageInfo<SysUser> getAllList(PageInfo<SysUser> pageInfo, List<Integer> collect); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -373,8 +373,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) public int deleteRoleByIds(Long[] roleIds) { public int deleteRoleByIds(Long[] roleIds) { for (Long roleId : roleIds) { checkRoleAllowed(new SysRole(roleId)); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,16 +1,26 @@ package com.ruoyi.system.service.impl; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.validation.Validator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.query.GetSysUserList; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserRoleService; import com.ruoyi.system.service.ISysUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,26 +53,41 @@ { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @Autowired @Resource private SysUserMapper userMapper; @Autowired @Resource private SysRoleMapper roleMapper; @Autowired @Resource private SysPostMapper postMapper; @Autowired @Resource private SysUserRoleMapper userRoleMapper; @Autowired @Resource private SysUserPostMapper userPostMapper; @Autowired @Resource private ISysConfigService configService; @Autowired @Resource protected Validator validator; @Resource private ISysUserRoleService sysUserRoleService; @Resource private RoleSiteClient roleSiteClient; @Resource private UserSiteClient userSiteClient; @Resource private SiteClient siteClient; /** * 根据条件分页查询用户列表 @@ -547,8 +572,26 @@ } @Override public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, String phonenumber) { return this.baseMapper.getList(pageInfo,phonenumber); public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, GetSysUserList getSysUserList) { List<SysUser> list = this.baseMapper.getList(pageInfo, getSysUserList); for (SysUser sysUser : list) { List<SysUserRole> list1 = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, sysUser.getUserId())); List<Integer> data1 = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); for (SysUserRole sysUserRole : list1) { List<Integer> data = roleSiteClient.getSiteIds(sysUserRole.getRoleId()).getData(); data1.addAll(data); } Set<Integer> siteIds = new HashSet<>(data1); List<Site> data = siteClient.getSiteByIds(siteIds.stream().collect(Collectors.toList())).getData(); List<String> siteNames = data.stream().map(Site::getName).collect(Collectors.toList()); sysUser.setSiteNames(siteNames); Set<Long> collect = list1.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet()); List<SysRole> sysRoles = roleMapper.selectBatchIds(collect); List<String> roleNames = sysRoles.stream().map(SysRole::getRoleName).collect(Collectors.toList()); sysUser.setRoleNames(roleNames); } return pageInfo.setRecords(list); } @Override ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -125,10 +125,24 @@ </select> <select id="getList" resultType="com.ruoyi.system.api.domain.SysUser"> select *,nick_name nickName,login_date loginDate,create_time createTime,user_id userId from sys_user where 1=1 <if test="phonenumber !=null and phonenumber !=''"> and phonenumber like concat("%", #{phonenumber},"%") <if test="req.search !=null and req.search !=''"> and (phonenumber like concat("%", #{phonenumber},"%") or nick_name like concat("%", #{phonenumber},"%")) </if> and del_flag = '0' and roleType =1 <if test="null != req.siteId"> and user_id in (select user_id from t_user_site where site_id = #{req.siteId}) and user_id in (select user_id from sys_user_role where role_id in (select role_id from t_role_site where site_id = #{req.siteId})) </if> <if test="null != req.roleIds and req.roleIds.size() > 0"> and user_id in (select user_id from sys_user_role where role_id in <foreach collection="req.roleIds" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> ) </if> <if test="null != req.status"> and status = #{req.status} </if> and del_flag = '0' and roleType =1 order by create_time desc </select> <select id="getAllList" resultType="com.ruoyi.system.api.domain.SysUser"> ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
@@ -43,7 +43,7 @@ @ResponseBody @GetMapping("/getPartnerList") @ApiOperation(value = "获取合作商列表", tags = {"管理后台-合作商管理"}) public AjaxResult<PageInfo<PartnerListDTO>> getPartnerList(@RequestBody GetPartnerList partnerList){ public AjaxResult<PageInfo<PartnerListDTO>> getPartnerList(GetPartnerList partnerList){ PageInfo<PartnerListDTO> list = partnerService.getPartnerList(partnerList); return AjaxResult.success(list); } @@ -86,7 +86,7 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "合作商id", name = "id", dataTypeClass = Integer.class, required = true) }) public AjaxResult delPartner(@PathVariable("id") Integer id){ public AjaxResult delPartner(@PathVariable("id") Integer[] id){ return partnerService.delPartner(id); } @@ -119,7 +119,7 @@ @ResponseBody @GetMapping("/getPermissionConfiguration/{siteId}") @ApiOperation(value = "获取合作商权限设置", tags = {"管理后台-站点管理"}) public AjaxResult<GetPermissionConfigurationDTO> getPermissionConfiguration(@PathVariable("siteId") Integer siteId, @RequestParam("partnerId") Integer partnerId){ public AjaxResult<GetPermissionConfigurationDTO> getPermissionConfiguration(@PathVariable("siteId") Integer siteId, Integer partnerId){ GetPermissionConfigurationDTO permissionConfiguration = partnerService.getPermissionConfiguration(siteId, partnerId); return AjaxResult.success(permissionConfiguration); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -17,6 +17,7 @@ import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingGunService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.GeodesyUtil; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; @@ -60,21 +61,19 @@ @Resource private RoleSiteClient roleSiteClient; @Autowired @Resource private TChargingPileService chargingPileService; @Autowired @Resource private TChargingGunService chargingGunService; @ResponseBody @GetMapping("/getSiteList") @ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"}) public AjaxResult<PageInfo<GetSiteListDTO>> getSiteList(@RequestBody GetSiteList siteList){ public AjaxResult<PageInfo<GetSiteListDTO>> getSiteList(GetSiteList siteList){ PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList); return AjaxResult.success(list); } @@ -129,7 +128,7 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "站点id", name = "id", dataTypeClass = Integer.class, required = true) }) public AjaxResult delSite(@PathVariable Integer id){ public AjaxResult delSite(@PathVariable Integer[] id){ return siteService.delSite(id); } @@ -149,7 +148,7 @@ @ResponseBody @GetMapping("/getAllSiteList") @ApiOperation(value = "获取所有站点数据", tags = {"管理后台-充电桩信息"}) @ApiOperation(value = "获取所有站点数据", tags = {"管理后台-充电桩信息", "管理后台-系统用户管理", "管理后台-角色管理", "管理后台-系统通知"}) public AjaxResult<List<Site>> getAllSiteList(){ //校验当前账户站点权限 SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); @@ -172,4 +171,17 @@ List<Site> list = siteService.list(wrapper.orderByDesc(Site::getCreateTime)); return AjaxResult.success(list); } /** * 获取站点数据集合 * @param ids * @return */ @ResponseBody @PostMapping("/getSiteByIds") public R<List<Site>> getSiteByIds(@RequestBody List<Integer> ids){ List<Site> sites = siteService.listByIds(ids); return R.ok(sites); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -110,7 +110,7 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "充电桩id", name = "id", dataTypeClass = Integer.class, required = true) }) public AjaxResult delChargingPile(@PathVariable Integer id){ public AjaxResult delChargingPile(@PathVariable Integer[] id){ return chargingPileService.delChargingPile(id); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileNotificationController.java
@@ -1,8 +1,15 @@ package com.ruoyi.chargingPile.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.chargingPile.service.TChargingPileNotificationService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * <p> @@ -15,6 +22,32 @@ @RestController @RequestMapping("/t-charging-pile-notification") public class TChargingPileNotificationController { @Resource private TChargingPileNotificationService chargingPileNotificationService; @ResponseBody @GetMapping("/chargingPileNotificationPageList") @ApiOperation(value = "获取系统通知列表数据", tags = {"管理后台-系统通知"}) public AjaxResult<PageInfo<TChargingPileNotification>> chargingPileNotificationPageList(Integer siteId, BasePage basePage){ PageInfo<TChargingPileNotification> pageInfo = chargingPileNotificationService.chargingPileNotificationPageList(siteId, basePage); return AjaxResult.success(pageInfo); } @ResponseBody @DeleteMapping("/delChargingPileNotification/{id}") @ApiOperation(value = "删除系统通知", tags = {"管理后台-系统通知"}) public AjaxResult delChargingPileNotification(@PathVariable Long id){ TChargingPileNotification chargingPileNotification = chargingPileNotificationService.getById(id); chargingPileNotification.setDelFlag(1); chargingPileNotificationService.updateById(chargingPileNotification); return AjaxResult.success(); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileNotificationMapper.java
@@ -2,6 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Set; /** * <p> @@ -12,5 +17,14 @@ * @since 2024-08-08 */ public interface TChargingPileNotificationMapper extends BaseMapper<TChargingPileNotification> { /** * 获取系统通知列表数据 * @param pageInfo * @param siteIds * @return */ List<TChargingPileNotification> chargingPileNotificationPageList(PageInfo<TChargingPileNotification> pageInfo, @Param("siteIds") Set<Integer> siteIds); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java
@@ -58,7 +58,7 @@ * 删除合作商 * @param id */ AjaxResult delPartner(Integer id); AjaxResult delPartner(Integer[] id); /** * 重置密码 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
@@ -49,7 +49,7 @@ * @param id * @return */ AjaxResult delSite(Integer id); AjaxResult delSite(Integer[] id); /** ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TChargingPileNotificationService.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; /** * <p> @@ -12,5 +14,13 @@ * @since 2024-08-08 */ public interface TChargingPileNotificationService extends IService<TChargingPileNotification> { /** * 获取系统通知列表数据 * @param siteId * @param basePage * @return */ PageInfo<TChargingPileNotification> chargingPileNotificationPageList(Integer siteId, BasePage basePage); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TChargingPileService.java
@@ -61,7 +61,7 @@ * @param id * @return */ AjaxResult delChargingPile(Integer id); AjaxResult delChargingPile(Integer[] id); /** ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
@@ -268,32 +268,33 @@ /** * 删除合作商 * @param id 合作商id * @param ids 合作商id */ @Override @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult delPartner(Integer id) { public AjaxResult delPartner(Integer[] ids) { //查询有无关联数据 //站点 long count = siteService.count(new LambdaQueryWrapper<Site>().eq(Site::getPartnerId, id).eq(Site::getDelFlag, 0)); long count = siteService.count(new LambdaQueryWrapper<Site>().in(Site::getPartnerId, Arrays.asList(ids)).eq(Site::getDelFlag, 0)); if(count > 0){ return AjaxResult.error("当前合作商有关联站点,删除失败!"); } //充电桩 long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getPartnerId, id).eq(TChargingPile::getDelFlag, 0)); long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getPartnerId, Arrays.asList(ids)).eq(TChargingPile::getDelFlag, 0)); if(count1 > 0){ return AjaxResult.error("当前合作商有关联充电桩,删除失败!"); } Partner partner = this.getById(id); if(null == partner){ return AjaxResult.error("删除失败"); for (Integer id : ids) { Partner partner = this.getById(id); if(null == partner){ return AjaxResult.error("删除失败"); } partner.setDelFlag(true); this.updateById(partner); SysUser user = sysUserClient.queryUserByUserName(partner.getAccount()).getData(); user.setDelFlag("2"); sysUserClient.updateUser(user); } partner.setDelFlag(true); this.updateById(partner); SysUser user = sysUserClient.queryUserByUserName(partner.getAccount()).getData(); user.setDelFlag("2"); sysUserClient.updateUser(user); return AjaxResult.success(); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -196,20 +197,22 @@ /** * 删除站点 * @param id 站点id * @param ids 站点id * @return */ @Override public AjaxResult delSite(Integer id) { public AjaxResult delSite(Integer[] ids) { //查询是否有关联数据 //充电桩 long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getSiteId, id).eq(TChargingPile::getDelFlag, 0)); long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getSiteId, Arrays.asList(ids)).eq(TChargingPile::getDelFlag, 0)); if(count1 > 0){ return AjaxResult.error("该站点有关联充电桩,删除失败!"); } Site site = this.getById(id); site.setDelFlag(true); this.updateById(site); for (Integer id : ids) { Site site = this.getById(id); site.setDelFlag(true); this.updateById(site); } return AjaxResult.success(); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -105,7 +105,8 @@ if(ajaxResult.isError()){ return ajaxResult; } long count = this.count(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getCode, dto.getCode()).eq(TChargingGun::getDelFlag, 0)); long count = this.count(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getCode, dto.getCode()) .eq(TChargingGun::getDelFlag, 0)); if(count > 0){ return AjaxResult.error("接口编码已存在"); } @@ -129,7 +130,8 @@ if(ajaxResult.isError()){ return ajaxResult; } TChargingGun one = this.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getCode, dto.getCode()).eq(TChargingGun::getDelFlag, 0)); TChargingGun one = this.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getCode, dto.getCode()) .eq(TChargingGun::getDelFlag, 0)); if(null != one && !dto.getId().equals(one.getId())){ return AjaxResult.error("接口编码已存在"); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java
@@ -1,10 +1,26 @@ package com.ruoyi.chargingPile.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TChargingPileNotificationMapper; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.chargingPile.service.TChargingPileNotificationService; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashSet; import java.util.List; import java.util.Set; /** * <p> @@ -16,5 +32,56 @@ */ @Service public class TChargingPileNotificationServiceImpl extends ServiceImpl<TChargingPileNotificationMapper, TChargingPileNotification> implements TChargingPileNotificationService { @Resource private SysUserClient sysUserClient; @Resource private IPartnerService partnerService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; /** * 获取系统通知列表数据 * @param siteId * @param basePage * @return */ @Override public PageInfo<TChargingPileNotification> chargingPileNotificationPageList(Integer siteId, BasePage basePage) { //校验当前账户站点权限 Set<Integer> siteIds = null; if(null == siteId){ SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); LambdaQueryWrapper<Site> wrapper = new LambdaQueryWrapper<Site>().eq(Site::getDelFlag, 0); if(2 == roleType){ siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); data.addAll(data1); siteIds = new HashSet<>(data); } } }else{ siteIds = new HashSet<>(siteId); } PageInfo<TChargingPileNotification> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize()); List<TChargingPileNotification> list = this.baseMapper.chargingPileNotificationPageList(pageInfo, siteIds); pageInfo.setRecords(list); return pageInfo; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -183,20 +184,22 @@ /** * 删除充电桩 * @param id * @param ids * @return */ @Override public AjaxResult delChargingPile(Integer id) { public AjaxResult delChargingPile(Integer[] ids) { //检查是否有关联数据 //接口 long count = chargingGunService.count(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, id).eq(TChargingGun::getDelFlag, 0)); long count = chargingGunService.count(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, Arrays.asList(ids)).eq(TChargingGun::getDelFlag, 0)); if(count > 0){ return AjaxResult.error("该充电桩有关联的接口数据,删除失败!"); } TChargingPile chargingPile = this.getById(id); chargingPile.setDelFlag(true); this.updateById(chargingPile); for (Integer id : ids) { TChargingPile chargingPile = this.getById(id); chargingPile.setDelFlag(true); this.updateById(chargingPile); } return AjaxResult.success(); } ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/PartnerMapper.xml
@@ -38,6 +38,6 @@ <if test="null != item.roleId and '' != item.name"> and role_id = #{item.roleId} </if> order by create_time desc limit #{item.pageCurr}, #{item.pageSize} order by create_time desc </select> </mapper> ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -100,7 +100,7 @@ #{itemm} </foreach> </if> order by a.sort desc, a.create_time desc limit #{item.pageCurr}, #{item.pageSize} order by a.sort desc, a.create_time desc </select> <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.SiteVO"> ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
@@ -62,7 +62,7 @@ #{itemm} </foreach> </if> order by a.create_time desc limit #{item.pageCurr}, #{item.pageSize} order by a.create_time desc </select> ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileNotificationMapper.xml
@@ -7,6 +7,7 @@ <id column="id" property="id" /> <result column="site_id" property="siteId" /> <result column="charging_pile_id" property="chargingPileId" /> <result column="phone" property="phone"/> <result column="content" property="content" /> <result column="create_time" property="createTime" /> <result column="del_flag" property="delFlag" /> @@ -17,4 +18,24 @@ id, site_id, charging_pile_id, content, create_time, del_flag </sql> <select id="chargingPileNotificationPageList" resultType="com.ruoyi.chargingPile.api.model.TChargingPileNotification"> select a.id, b.`name` as siteName, a.phone, a.content, a.create_time as createTime from t_charging_pile_notification a left join t_site b on (a.site_id = b.id) where a.del_flag = 0 <if test="null != siteIds"> and a.site_id in <foreach collection="siteIds" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> order by a.create_time desc </select> </mapper> ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TRoleSiteController.java
@@ -26,15 +26,41 @@ @Resource private TRoleSiteService roleSiteService; /** * 查询角色站点数据 * @param roleId * @return */ @ResponseBody @GetMapping("/getSiteIds") public R<List<Integer>> getSiteIds(@RequestParam("roleId") Long roleId){ public R<List<Integer>> getSiteIds(Long roleId){ List<TRoleSite> list = roleSiteService.list(new LambdaQueryWrapper<TRoleSite>().eq(TRoleSite::getRoleId, roleId)); List<Integer> collect = list.stream().map(TRoleSite::getSiteId).collect(Collectors.toList()); return R.ok(collect); } /** * 添加角色站点数据 * @param roleSites * @return */ @ResponseBody @PostMapping("/getSiteIds") public R addRoleSite(@RequestBody List<TRoleSite> roleSites){ roleSiteService.saveBatch(roleSites); return R.ok(); } /** * 删除角色站点数据 * @param roleId * @return */ @ResponseBody @DeleteMapping("/delRoleSite/{roleId}") public R delRoleSite(@PathVariable("roleId") Long roleId){ roleSiteService.remove(new LambdaQueryWrapper<TRoleSite>().eq(TRoleSite::getRoleId, roleId)); return R.ok(); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TUserSiteController.java
@@ -34,12 +34,35 @@ */ @ResponseBody @GetMapping("/getSiteIds") public R<List<Integer>> getSiteIds(@RequestParam("userId") Long userId){ public R<List<Integer>> getSiteIds(Long userId){ List<TUserSite> list = userSiteService.list(new LambdaQueryWrapper<TUserSite>().eq(TUserSite::getUserId, userId)); List<Integer> collect = list.stream().map(TUserSite::getSiteId).collect(Collectors.toList()); return R.ok(collect); } /** * 添加用户站点数据 * @param userSite * @return */ @ResponseBody @PostMapping("/addUserSite") public R addUserSite(@RequestBody List<TUserSite> userSite){ userSiteService.saveBatch(userSite); return R.ok(); } /** * 删除用户对应的站点数据 * @param userId * @return */ @ResponseBody @DeleteMapping("/delUserSite/{userId}") public R delUserSite(@PathVariable Long userId){ userSiteService.remove(new LambdaQueryWrapper<TUserSite>().eq(TUserSite::getUserId, userId)); return R.ok(); } }