From e28747425a73a1f59232d47297141968f60ff8a6 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Sat, 19 Sep 2020 15:15:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controller/RecordRoleController.java | 199 ++++++++++++++++++ .../lz/modules/flow/dao/RecordAuthMapper.java | 2 + .../flow/dao/RecordRoleAuthMapper.java | 8 + .../lz/modules/flow/dao/RecordRoleMapper.java | 7 + .../flow/service/RecordAuthService.java | 2 + .../flow/service/RecordRoleAuthService.java | 5 + .../flow/service/RecordRoleService.java | 9 + .../service/impl/RecordAuthServiceImpl.java | 6 + .../impl/RecordRoleAuthServiceImpl.java | 75 ++++--- .../service/impl/RecordRoleServiceImpl.java | 25 +++ .../mapper/flow/RecordAuthMapper.xml | 5 + .../mapper/flow/RecordRoleAuthMapper.xml | 16 +- .../mapper/flow/RecordRoleMapper.xml | 16 ++ src/test/java/com/lz/flt/Create.java | 2 +- 14 files changed, 342 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/lz/modules/app/controller/RecordRoleController.java diff --git a/src/main/java/com/lz/modules/app/controller/RecordRoleController.java b/src/main/java/com/lz/modules/app/controller/RecordRoleController.java new file mode 100644 index 00000000..df162831 --- /dev/null +++ b/src/main/java/com/lz/modules/app/controller/RecordRoleController.java @@ -0,0 +1,199 @@ +package com.lz.modules.app.controller; + +import com.lz.common.utils.NumberUtil; +import com.lz.common.utils.PageUtils; +import com.lz.common.utils.R; +import com.lz.modules.flow.entity.FlowDepartment; +import com.lz.modules.flow.entity.RecordAuth; +import com.lz.modules.flow.entity.RecordRole; +import com.lz.modules.flow.entity.RecordRoleAuth; +import com.lz.modules.flow.service.RecordAuthService; +import com.lz.modules.flow.service.RecordRoleAuthService; +import com.lz.modules.flow.service.RecordRoleService; +import com.lz.modules.sys.entity.SysMenuEntity; +import com.lz.modules.sys.entity.SysRoleEntity; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +/** + * 记录表 + * + * @author zgh + * @email zgh@ldxinyong.com + * @date 2020-09-18 16:33:18 + */ +@RestController +@RequestMapping("user/lzrecordrole") +public class RecordRoleController { + @Autowired + private RecordRoleService lzRecordRoleService; + + @Autowired + private RecordAuthService recordAuthService; + + @Autowired + private RecordRoleAuthService recordRoleAuthService; + + /** + * 列表 + */ + @RequestMapping("/list") + @RequiresPermissions("user:lzrecordrole:list") + public R list(@RequestParam Map params) { + PageUtils page = lzRecordRoleService.queryPage(params); + return R.ok().put("page", page); + } + + + /** + * 信息 + */ + @RequestMapping("/info/{id}") + public R info(@PathVariable("id") Long id) { + RecordRole lzRecordRole = lzRecordRoleService.selectRecordRoleById(id); + SysRoleEntity role = new SysRoleEntity(); + role.setRoleId(lzRecordRole.getId()); + role.setRoleName(lzRecordRole.getName()); + //查询角色对应的菜单 + List menuIdList = recordRoleAuthService.queryMenuIdList(id); + role.setMenuIdList(menuIdList); + return R.ok().put("role", role); + } + + @RequestMapping("/menu/list") + public List menuList() { + List list = new ArrayList<>(); + List recordAuths = recordAuthService.selectAll(); + for (int i = 0; i < recordAuths.size(); i++) { + RecordAuth recordAuth = recordAuths.get(i); + Long parentId = recordAuth.getId(); + if (i + 1 < recordAuths.size()) { + RecordAuth child = recordAuths.get(i + 1); + if (child.getIdentity().equals(recordAuth.getIdentity())) { + parentId = NumberUtil.objToLong(recordAuth.getId() + "000000"); + } + } + SysMenuEntity sysMenuEntity = buildMenuEntity(parentId, recordAuth.getName(), 0l, ""); + list.add(sysMenuEntity); + if (i + 1 < recordAuths.size()) { + RecordAuth child = recordAuths.get(i + 1); + if (!child.getIdentity().equals(recordAuth.getIdentity())) { + continue; + } + for (int j = i; j < recordAuths.size(); j++) { + child = recordAuths.get(j); + if (!child.getIdentity().equals(recordAuth.getIdentity())) { + if (j == recordAuths.size() - 1) { + i = j; + } else { + i = j - 1; + } + break; + } + String name = "不可见"; + if (child.getStatus().equals(1)) { + name = "可见"; + } else if (child.getStatus().equals(2)) { + name = "可编辑"; + } + SysMenuEntity childMenuEntity = buildMenuEntity(child.getId(), name, parentId, recordAuth.getName()); + list.add(childMenuEntity); + if (j == recordAuths.size() - 1) { + i = j; + } + } + } + } + return list; + } + + /** + * 修改角色 + */ + @PostMapping("/updateOrAdd") + public R update(@RequestBody SysRoleEntity role) { + RecordRole recordRole = null; + if (role.getRoleId() != null) { + recordRole = lzRecordRoleService.getById(role.getRoleId()); + recordRole.setName(role.getRoleName()); + lzRecordRoleService.updateRecordRoleById(recordRole); + }else{ + recordRole = new RecordRole(); + recordRole.setName(role.getRoleName()); + lzRecordRoleService.insertRecordRole(recordRole); + } + + List recordRoleAuths = recordRoleAuthService.selectByRoleId(role.getRoleId()); + List menuIds = role.getMenuIdList(); + for (RecordRoleAuth roleAuth : recordRoleAuths) { + if (!menuIds.contains(roleAuth.getAuthId())) { + recordRoleAuthService.deleteRecordRoleAuth(roleAuth.getId()); + } + } + recordRoleAuths = recordRoleAuthService.selectByRoleId(role.getRoleId()); + Map staffEntityMap = recordRoleAuths.stream().collect(Collectors.toMap(RecordRoleAuth::getAuthId,p->p)); + for(Long menuId:menuIds){ + if(menuId <= 0 ){ + continue; + } + RecordRoleAuth recordRoleAuth = staffEntityMap.get(menuId); + if(recordRoleAuth == null){ + recordRoleAuth = new RecordRoleAuth(); + recordRoleAuth.setRoleId(recordRole.getId()); + recordRoleAuth.setAuthId(menuId); + recordRoleAuthService.insertRecordRoleAuth(recordRoleAuth); + } + } + return R.ok(); + } + + public SysMenuEntity buildMenuEntity(Long id, String name, Long parentId, String parentName) { + SysMenuEntity sysMenuEntity = new SysMenuEntity(); + sysMenuEntity.setMenuId(id); + sysMenuEntity.setName(name); + sysMenuEntity.setParentId(parentId); + sysMenuEntity.setParentName(parentName); + return sysMenuEntity; + } + + /** + * 保存 + */ + @RequestMapping("/save") + @RequiresPermissions("user:lzrecordrole:save") + public R save(@RequestBody RecordRole lzRecordRole) { + lzRecordRoleService.insertRecordRole(lzRecordRole); + + return R.ok(); + } + + /** + * 修改 + */ + @RequestMapping("/update") + @RequiresPermissions("user:lzrecordrole:update") + public R update(@RequestBody RecordRole lzRecordRole) { + lzRecordRoleService.updateRecordRoleById(lzRecordRole); + + return R.ok(); + } + + /** + * 删除 + */ + @RequestMapping("/delete") + @RequiresPermissions("user:lzrecordrole:delete") + public R delete(@RequestBody Long[] ids) { + lzRecordRoleService.deleteBatchIds(Arrays.asList(ids)); + return R.ok(); + } + +} diff --git a/src/main/java/com/lz/modules/flow/dao/RecordAuthMapper.java b/src/main/java/com/lz/modules/flow/dao/RecordAuthMapper.java index b937fadf..363735fd 100644 --- a/src/main/java/com/lz/modules/flow/dao/RecordAuthMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/RecordAuthMapper.java @@ -35,4 +35,6 @@ public interface RecordAuthMapper extends BaseMapper { List selectAuthInfo(@Param("roleId") Long roleId); + + List selectAll(); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/RecordRoleAuthMapper.java b/src/main/java/com/lz/modules/flow/dao/RecordRoleAuthMapper.java index 6be982d6..b023085f 100644 --- a/src/main/java/com/lz/modules/flow/dao/RecordRoleAuthMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/RecordRoleAuthMapper.java @@ -11,6 +11,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.modules.flow.entity.RecordRoleAuth; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; + @Mapper public interface RecordRoleAuthMapper extends BaseMapper { @@ -30,4 +33,9 @@ public interface RecordRoleAuthMapper extends BaseMapper { int deleteRecordRoleAuthById(@Param("id")Long id); + List queryMenuIdList(@Param("roleId") Long roleId); + + List selectByRoleId(@Param("roleId") Long roleId); + + void deleteRecordRoleAuth(@Param("id") Long id); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/RecordRoleMapper.java b/src/main/java/com/lz/modules/flow/dao/RecordRoleMapper.java index e2a24861..ab79d537 100644 --- a/src/main/java/com/lz/modules/flow/dao/RecordRoleMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/RecordRoleMapper.java @@ -8,9 +8,14 @@ package com.lz.modules.flow.dao; * @since 2020-08-18 */ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.lz.modules.flow.entity.RecordRole; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + @Mapper public interface RecordRoleMapper extends BaseMapper { @@ -29,5 +34,7 @@ public interface RecordRoleMapper extends BaseMapper { int deleteRecordRoleById(@Param("id")Long id); + List selectByCondition(@Param("page") IPage page, @Param("params") Map params); + List selectAll(); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/RecordAuthService.java b/src/main/java/com/lz/modules/flow/service/RecordAuthService.java index af0d3bc3..d25b64f4 100644 --- a/src/main/java/com/lz/modules/flow/service/RecordAuthService.java +++ b/src/main/java/com/lz/modules/flow/service/RecordAuthService.java @@ -41,4 +41,6 @@ public interface RecordAuthService extends IService { Auth getAuth(List listAuth); String selectByStaffId(Long staffId); + + List selectAll(); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/RecordRoleAuthService.java b/src/main/java/com/lz/modules/flow/service/RecordRoleAuthService.java index 6dbfe963..c3ef1511 100644 --- a/src/main/java/com/lz/modules/flow/service/RecordRoleAuthService.java +++ b/src/main/java/com/lz/modules/flow/service/RecordRoleAuthService.java @@ -3,6 +3,8 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.flow.entity.RecordRoleAuth; +import java.util.List; + /** *

* 权限角色表 服务类 @@ -30,6 +32,9 @@ public interface RecordRoleAuthService extends IService { int deleteRecordRoleAuthById(Long id); + List queryMenuIdList(Long id); + List selectByRoleId(Long roleId); + void deleteRecordRoleAuth(Long id); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/RecordRoleService.java b/src/main/java/com/lz/modules/flow/service/RecordRoleService.java index 42e1b988..c6edebb4 100644 --- a/src/main/java/com/lz/modules/flow/service/RecordRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/RecordRoleService.java @@ -1,7 +1,12 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.lz.common.utils.PageUtils; import com.lz.modules.flow.entity.RecordRole; +import com.lz.modules.sys.entity.app.ResultRecord; + +import java.util.List; +import java.util.Map; /** *

@@ -30,5 +35,9 @@ public interface RecordRoleService extends IService { int deleteRecordRoleById(Long id); + void deleteBatchIds(List asList); + PageUtils queryPage(Map params); + + List selectAll(); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java index bc5d97ba..463c92c5 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java @@ -170,6 +170,12 @@ public class RecordAuthServiceImpl extends ServiceImpl selectAll() { + + return recordAuthMapper.selectAll(); + } + public StaffEntity getLeader(String departmentId){ DepartmentsStaffRelateEntity leader = departmentsStaffRelateService.selectLeaderByDepartmentId(departmentId); if(leader !=null && leader.getIsLeader().equals(1)){ diff --git a/src/main/java/com/lz/modules/flow/service/impl/RecordRoleAuthServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/RecordRoleAuthServiceImpl.java index b5d869c5..8eacd013 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/RecordRoleAuthServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/RecordRoleAuthServiceImpl.java @@ -7,57 +7,68 @@ import com.lz.modules.flow.service.RecordRoleAuthService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** -*

-* 权限角色表 服务类 -*

-* -* @author quyixiao -* @since 2020-08-18 -*/ + *

+ * 权限角色表 服务类 + *

+ * + * @author quyixiao + * @since 2020-08-18 + */ @Service public class RecordRoleAuthServiceImpl extends ServiceImpl implements RecordRoleAuthService { @Autowired - private RecordRoleAuthMapper recordRoleAuthMapper; + private RecordRoleAuthMapper recordRoleAuthMapper; - - @Override - public RecordRoleAuth selectRecordRoleAuthById(Long id){ - return recordRoleAuthMapper.selectRecordRoleAuthById(id); - } + @Override + public RecordRoleAuth selectRecordRoleAuthById(Long id) { + return recordRoleAuthMapper.selectRecordRoleAuthById(id); + } - - @Override - public Long insertRecordRoleAuth(RecordRoleAuth recordRoleAuth){ - return recordRoleAuthMapper.insertRecordRoleAuth(recordRoleAuth); - } + @Override + public Long insertRecordRoleAuth(RecordRoleAuth recordRoleAuth) { + return recordRoleAuthMapper.insertRecordRoleAuth(recordRoleAuth); + } - - @Override - public int updateRecordRoleAuthById(RecordRoleAuth recordRoleAuth){ - return recordRoleAuthMapper.updateRecordRoleAuthById(recordRoleAuth); - } + @Override + public int updateRecordRoleAuthById(RecordRoleAuth recordRoleAuth) { + return recordRoleAuthMapper.updateRecordRoleAuthById(recordRoleAuth); + } - - @Override - public int updateCoverRecordRoleAuthById(RecordRoleAuth recordRoleAuth){ - return recordRoleAuthMapper.updateCoverRecordRoleAuthById(recordRoleAuth); - } + @Override + public int updateCoverRecordRoleAuthById(RecordRoleAuth recordRoleAuth) { + return recordRoleAuthMapper.updateCoverRecordRoleAuthById(recordRoleAuth); + } + @Override + public int deleteRecordRoleAuthById(Long id) { + return recordRoleAuthMapper.deleteRecordRoleAuthById(id); + } - @Override - public int deleteRecordRoleAuthById(Long id){ - return recordRoleAuthMapper.deleteRecordRoleAuthById(id); - } + @Override + public List queryMenuIdList(Long id) { + return recordRoleAuthMapper.queryMenuIdList(id); + } + @Override + public List selectByRoleId(Long roleId) { + return recordRoleAuthMapper.selectByRoleId(roleId); + } + + @Override + public void deleteRecordRoleAuth(Long id) { + recordRoleAuthMapper.deleteRecordRoleAuth(id); + } } diff --git a/src/main/java/com/lz/modules/flow/service/impl/RecordRoleServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/RecordRoleServiceImpl.java index 899c7fda..8aeb937e 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/RecordRoleServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/RecordRoleServiceImpl.java @@ -1,12 +1,18 @@ package com.lz.modules.flow.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lz.common.utils.NumberUtil; +import com.lz.common.utils.PageUtils; import com.lz.modules.flow.dao.RecordRoleMapper; import com.lz.modules.flow.entity.RecordRole; import com.lz.modules.flow.service.RecordRoleService; +import com.lz.modules.sys.entity.app.ResultRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; + /** *

* 记录表 服务类 @@ -58,8 +64,27 @@ public class RecordRoleServiceImpl extends ServiceImpl asList) { + for(Long id :asList){ + deleteRecordRoleById(id); + } + } + @Override + public PageUtils queryPage(Map params) { + PageUtils pageUtils = PageUtils.startPage( + NumberUtil.objToIntDefault(params.get("page"),1), + NumberUtil.objToIntDefault(params.get("limit"),10)).doSelect( + page -> recordRoleMapper.selectByCondition(page, params) + ); + return pageUtils; + } + @Override + public List selectAll() { + return recordRoleMapper.selectAll(); + } } diff --git a/src/main/resources/mapper/flow/RecordAuthMapper.xml b/src/main/resources/mapper/flow/RecordAuthMapper.xml index babbd534..567a28d4 100644 --- a/src/main/resources/mapper/flow/RecordAuthMapper.xml +++ b/src/main/resources/mapper/flow/RecordAuthMapper.xml @@ -93,5 +93,10 @@ + + + diff --git a/src/main/resources/mapper/flow/RecordRoleAuthMapper.xml b/src/main/resources/mapper/flow/RecordRoleAuthMapper.xml index 0907fee0..532b09dc 100644 --- a/src/main/resources/mapper/flow/RecordRoleAuthMapper.xml +++ b/src/main/resources/mapper/flow/RecordRoleAuthMapper.xml @@ -19,8 +19,6 @@ - - @@ -74,5 +72,19 @@ update lz_record_role_auth set is_delete = 1 where id=#{id} limit 1 + + + + + + + delete from lz_record_role_auth where id = #{id} + + + diff --git a/src/main/resources/mapper/flow/RecordRoleMapper.xml b/src/main/resources/mapper/flow/RecordRoleMapper.xml index b72446c3..d4fc11c0 100644 --- a/src/main/resources/mapper/flow/RecordRoleMapper.xml +++ b/src/main/resources/mapper/flow/RecordRoleMapper.xml @@ -25,6 +25,7 @@ + insert into lz_record_role( name, @@ -69,5 +70,20 @@ update lz_record_role set is_delete = 1 where id=#{id} limit 1 + + + + + diff --git a/src/test/java/com/lz/flt/Create.java b/src/test/java/com/lz/flt/Create.java index 34d5aedf..19447d79 100644 --- a/src/test/java/com/lz/flt/Create.java +++ b/src/test/java/com/lz/flt/Create.java @@ -51,7 +51,7 @@ public class Create { } public static void main(String[] args) { Create ot=new Create(); - String [] tableNames = {"lz_result_record"}; + String [] tableNames = {"lz_record_role"}; try { ot.generatorCode(tableNames); } catch (Exception e) {