package com.highdatas.mdm.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.highdatas.mdm.entity.MasterAuthor; import com.highdatas.mdm.entity.MasterAuthorDetail; import com.highdatas.mdm.entity.SysField; 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.HashMap; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** *

* 前端控制器 *

* * @author kimi * @since 2020-03-23 */ @RestController @RequestMapping("/masterAuthor/detail") public class MasterAuthorDetailController { @Autowired IMasterAuthorService masterAuthorService; @Autowired IMasterAuthorDetailService masterAuthorDetailService; @Autowired ISysFieldService fieldService; @Autowired IMaintainFieldService maintainFieldService; @Autowired IMenuMappingService menuMappingService; @Autowired ITUserRoleService userRoleService; @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) public Result addRole(@PathVariable String id,@RequestParam String field){ MasterAuthor masterAuthor = masterAuthorService.selectById(id); if (masterAuthor == null) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } boolean delete = masterAuthorDetailService.delete(new EntityWrapper() .eq(Constant.PARENT_ID, masterAuthor.getId()).eq(Constant.FIELD, field)); if (delete) { return Result.success(CodeMsg.DELETE_SUCCESS); }else { return Result.error(CodeMsg.DELETE_ERROR); } } @RequestMapping(value = "/getFieldByMaintainFieldId/{id}", method = RequestMethod.GET) public Result getFieldByMaintainFieldId(@PathVariable String id, @RequestParam boolean isGroup, @RequestParam MasterAuthorType type, @RequestParam String characterId, HttpServletRequest request) { List result; String menuId = request.getParameter("menuId"); String tableName = menuMappingService.getTableNameByMenu(menuId); if (Constant.Default.equalsIgnoreCase(id)) { if (StringUtils.isEmpty(tableName)) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } result = fieldService.getDefaultTableField(tableName); }else if (Constant.All.equalsIgnoreCase(id)) { if (StringUtils.isEmpty(tableName)) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } result = fieldService.getTotalTableField(tableName); }else { result = fieldService.getFieldByMaintainField(id); } JSONObject resultObj = new JSONObject(); MasterAuthor masterAuthor = masterAuthorService.selectOne(new EntityWrapper() .eq(Constant.TYPE, type) .eq("user_group", isGroup) .eq("table_name", tableName) .eq("character_id", characterId) .eq("maintain_field_id", id)); if (masterAuthor == null && type.equals(MasterAuthorType.user)) { Set roleIdSet; if (isGroup) { roleIdSet = DbUtils.getRoleByGroup(characterId); } else { roleIdSet = DbUtils.getRoleByUser(characterId); } if (roleIdSet == null || roleIdSet.isEmpty()) { masterAuthor = null; } else { HashMap tableMasterAuthor = masterAuthorService.merageRoleAuthor(roleIdSet); String key = DbUtils.getFieldRedisKey(tableName, id); masterAuthor = tableMasterAuthor.get(key); } } if (masterAuthor == null) { resultObj.fluentPut("unchecked", result); return Result.success(resultObj); } List fields = masterAuthorDetailService.selectList(new EntityWrapper().eq(Constant.PARENT_ID, masterAuthor.getId())); if (fields != null) { List checkedFieldStrList = fields.stream().map(masterAuthorDetail -> masterAuthorDetail.getField()).collect(Collectors.toList()); result = result.stream().filter(sysField -> !checkedFieldStrList.contains(sysField.getField())).collect(Collectors.toList()); } resultObj.fluentPut("unchecked", result); resultObj.fluentPut("checked", fields); return Result.success(resultObj); } }