package com.highdatas.mdm.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.highdatas.mdm.entity.*; import com.highdatas.mdm.pojo.CodeMsg; import com.highdatas.mdm.pojo.MasterAuthorType; import com.highdatas.mdm.pojo.Result; import com.highdatas.mdm.service.*; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.DbUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; /** *

* 前端控制器 *

* * @author kimi * @since 2020-03-23 */ @RestController @RequestMapping("/masterAuthor") public class MasterAuthorController { @Autowired IMasterAuthorService authorService; @Autowired IMasterAuthorDetailService authorDetailService; @Autowired ITUserRoleService userRoleService; @Autowired IMenuMappingService menuMappingService; @Autowired ISysMenuService menuService; public static final String masterAuthorType = "masterAuthorType"; public static final String masterId = "masterId"; public static final String tableName = "table_name"; public static final String characterId = "characterId"; public static final String character_id = "character_id"; public static final String fields = "fields"; private String maintainFieldId = "maintainFieldId"; private String maintain_field_id = "maintain_field_id"; @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST) public Result deleteModel(@RequestBody MasterAuthor masterAuthor) { if (!StringUtils.isEmpty(masterAuthor.getId())) { masterAuthor.setUpdateTime(new Date()); }else { masterAuthor.setId(DbUtils.getUUID()).setCreateTime(new Date()); } String menuId = masterAuthor.getMenuId(); String tableName = menuMappingService.getTableNameByMenu(menuId); masterAuthor.setTableName(tableName); //delete pre boolean delete = authorDetailService.delete(new EntityWrapper().eq(Constant.PARENT_ID, masterAuthor.getId())); if (!delete){ return Result.error(CodeMsg.DELETE_ERROR); } for (MasterAuthorDetail detail : masterAuthor.getFields()) { detail.setId(DbUtils.getUUID()).setParentId(masterAuthor.getId()).insert(); } boolean b = masterAuthor.insertOrUpdate(); if (b) { return Result.success(masterAuthor); }else { return Result.error(CodeMsg.UPDATE_ERROR); } } @RequestMapping(value = "/get/{characterId}", method = RequestMethod.GET) public Result get(@PathVariable String characterId,@RequestParam boolean isGroup, @RequestParam MasterAuthorType type, HttpServletRequest request){ List masterAuthorList = authorService.selectList(new EntityWrapper().eq("user_group", isGroup).eq("type", type.name()).eq("character_id", characterId)); if (type.equals(MasterAuthorType.role) && masterAuthorList.isEmpty()) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); }else if (type.equals(MasterAuthorType.user) && masterAuthorList.isEmpty()){ //user 获取角色 多脚色混合 String userId = characterId; Set roleIdSet; if (isGroup) { roleIdSet = DbUtils.getRoleByGroup(userId); } else { roleIdSet = DbUtils.getRoleByUser(userId); } if (roleIdSet.isEmpty()) { return Result.success(null); } HashMap tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet); if (tableMasterAuthor == null) { Result.success(null); } JSONObject object = new JSONObject(); ArrayList list = new ArrayList(tableMasterAuthor.values()); object.fluentPut("type", MasterAuthorType.role); object.fluentPut("author",list); Set collect = list.stream().map(masterAuthor -> masterAuthor.getMenuId()).collect(Collectors.toSet()); LinkedHashSet menuIds= new LinkedHashSet<>(collect); LinkedHashSet byParentId = menuService.getByParentId(menuIds); if (byParentId == null) { return Result.success(object); } List sysMenus = menuService.selectBatchIds(byParentId); object.fluentPut("audit",sysMenus); return Result.success(object); } for (MasterAuthor masterAuthor : masterAuthorList) { List masterAuthorDetails = authorDetailService .selectList(new EntityWrapper() .eq(Constant.PARENT_ID, masterAuthor.getId())); masterAuthor.setFields(masterAuthorDetails); } JSONObject object = new JSONObject(); object.fluentPut("type", type); object.fluentPut("author",masterAuthorList); Set collect = masterAuthorList.stream().map(masterAuthor -> masterAuthor.getMenuId()).collect(Collectors.toSet()); LinkedHashSet menuIds= new LinkedHashSet<>(collect); LinkedHashSet byParentId = menuService.getByParentId(menuIds); if (byParentId == null) { return Result.success(object); } List sysMenus = menuService.selectBatchIds(byParentId); object.fluentPut("audit",sysMenus); return Result.success(object); } @RequestMapping(value = "/delete/{characterId}", method = RequestMethod.GET) public Result delete(@PathVariable String characterId, @RequestParam MasterAuthorType type){ List masterAuthorList = authorService.selectList(new EntityWrapper() .eq(Constant.TYPE, type).eq(this.character_id, characterId)); if (masterAuthorList.isEmpty()) { return Result.success(null); } boolean delete = false; for (MasterAuthor masterAuthor : masterAuthorList) { delete = authorDetailService.delete(new EntityWrapper().eq(Constant.PARENT_ID, masterAuthor.getId())); if (delete) { delete = masterAuthor.deleteById(); } } if (delete) { return Result.success(CodeMsg.DELETE_SUCCESS); }else { return Result.error(CodeMsg.DELETE_ERROR); } } @RequestMapping(value = "/delete/menu/{menuId}", method = RequestMethod.GET) public Result deleteTable(@PathVariable String menuId, @RequestParam String characterId, @RequestParam MasterAuthorType type, HttpServletRequest request){ String maintainFieldId = request.getParameter(this.maintainFieldId); Wrapper masterAuthorWrapper = new EntityWrapper() .eq(Constant.TYPE, type) .eq(character_id, characterId) .eq("menu_id", menuId); Wrapper menuWrapper = new EntityWrapper() .eq(Constant.TYPE, type) .eq(character_id, characterId) .eq("menu_id", menuId); if (!StringUtils.isEmpty(maintainFieldId)) { masterAuthorWrapper.eq(this.maintain_field_id, maintainFieldId); } int count = authorService.selectCount(menuWrapper); boolean only = false; if (count == 1 && !StringUtils.isEmpty(maintainFieldId)) { only = true; } MasterAuthor masterAuthor = authorService.selectOne(masterAuthorWrapper); if (masterAuthor == null) { return Result.success(null); } boolean delete = authorDetailService.delete(new EntityWrapper().eq(Constant.PARENT_ID, masterAuthor.getId())); if (delete) { if (only){ delete = masterAuthor.setMaintainFieldId(null).setFieldAuto(false).setMaintainAuto(false).setUpdateTime(new Date()).updateById(); }else { delete = masterAuthor.deleteById(); } } if (delete) { return Result.success(CodeMsg.DELETE_SUCCESS); }else { return Result.error(CodeMsg.DELETE_ERROR); } } @RequestMapping(value = "/groupAddRole/{roleId}", method = RequestMethod.GET) public Result addGroupRole(@PathVariable String roleId, @RequestParam String groupId, HttpServletRequest request){ TUser user = DbUtils.getUser(request); if (user == null){ return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } ArrayList addRoleList = new ArrayList<>(); Set roleIdSet = DbUtils.getRoleByGroup(groupId); addRoleList.addAll(roleIdSet); addRoleList.add(roleId); boolean b = DbUtils.groupAddOneRole(user.getUserId(),groupId, addRoleList); if (!b) { return Result.error(CodeMsg.INSERT_ERROR); } roleIdSet.add(roleId); HashMap tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet); if (tableMasterAuthor == null) { Result.success(null); } return Result.success(tableMasterAuthor.values()); } @RequestMapping(value = "/userAddRole/{roleId}", method = RequestMethod.GET) public Result addRole(@PathVariable String roleId, @RequestParam String userId, HttpServletRequest request){ TUser user = DbUtils.getUserById(userId); if (user == null){ return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } ArrayList addRoleList = new ArrayList<>(); Set roleIdSet = DbUtils.getRoleByUser(userId); addRoleList.addAll(roleIdSet); addRoleList.add(roleId); boolean b = DbUtils.addOneRole(user, addRoleList); if (!b) { return Result.error(CodeMsg.INSERT_ERROR); } roleIdSet.add(roleId); HashMap tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet); if (tableMasterAuthor == null) { Result.success(null); } return Result.success(tableMasterAuthor.values()); } @RequestMapping(value = "/userDelRole/{roleId}", method = RequestMethod.GET) public Result delRole(@PathVariable String roleId, @RequestParam String userId, HttpServletRequest request){ ArrayList delRoleList = new ArrayList<>(); delRoleList.add(roleId); boolean b = DbUtils.delOneRole(userId, delRoleList); if (!b) { return Result.error(CodeMsg.INSERT_ERROR); } Set roleIdSet = DbUtils.getRoleByUser(userId); HashMap tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet); if (tableMasterAuthor == null) { Result.success(null); } return Result.success(tableMasterAuthor.values()); } @RequestMapping(value = "/groupDelRole/{roleId}", method = RequestMethod.GET) public Result delGroupRole(@PathVariable String roleId, @RequestParam String groupId, HttpServletRequest request){ ArrayList delRoleList = new ArrayList<>(); delRoleList.add(roleId); boolean b = DbUtils.groupDelOneRole(groupId, delRoleList); if (!b) { return Result.error(CodeMsg.INSERT_ERROR); } Set roleIdSet = DbUtils.getRoleByGroup(groupId); HashMap tableMasterAuthor = authorService.merageRoleAuthor(roleIdSet); if (tableMasterAuthor == null) { Result.success(null); } return Result.success(tableMasterAuthor.values()); } }