kimi
2020-05-27 c007f0ca1785db093d48f4846cda82fe8e955765
src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java
@@ -12,6 +12,7 @@
import com.highdatas.mdm.service.*;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import com.highdatas.mdm.util.RedisClient;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -36,8 +37,7 @@
    IMasterAuthorService authorService;
    @Autowired
    IMasterAuthorDetailService authorDetailService;
    @Autowired
    ITUserRoleService userRoleService;
    @Autowired
    IMenuMappingService menuMappingService;
    @Autowired
@@ -50,6 +50,10 @@
    IMasterAuthorUnactiveService masterAuthorUnactiveService;
    @Autowired
    IMasterAuthorSubscribeService masterAuthorSubscribeService;
    @Autowired
    IMaintainService maintainService;
    @Autowired
    RedisClient redisClient;
    public static final String masterAuthorType = "masterAuthorType";
    public static final String masterId = "masterId";
@@ -60,8 +64,17 @@
    private String maintainFieldId = "maintainFieldId";
    private String maintain_field_id = "maintain_field_id";
    /**
     *
     * @description: 添加或者更新权限
     * @return 权限数据
     *
     */
    @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST)
    public Result deleteModel(@RequestBody MasterAuthor masterAuthor)  {
        if (StringUtils.isEmpty(masterAuthor.getMaintainFieldId())) {
            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
        }
        if (!StringUtils.isEmpty(masterAuthor.getId())) {
            masterAuthor.setUpdateTime(new Date());
        }else {
@@ -82,12 +95,21 @@
        boolean b = masterAuthor.insertOrUpdate();
        if (b) {
            redisClient.delByCharacter(masterAuthor.getCharacterId());
            return Result.success(masterAuthor);
        }else {
            return Result.error(CodeMsg.UPDATE_ERROR);
        }
    }
    /**
     *
     * @description: 通过系统用户获取权限
     * @param characterId 系统用户
     * @param isGroup 是否为用户组数据
    *  @param type 用户类型
     * @return 具体数据
     *
     */
    @RequestMapping(value = "/get/{characterId}", method = RequestMethod.GET)
    public Result get(@PathVariable String characterId,@RequestParam boolean isGroup, @RequestParam MasterAuthorType type, HttpServletRequest request){
        List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>().eq("user_group", isGroup).eq("type", type.name()).eq("character_id", characterId));
@@ -131,7 +153,6 @@
                            .eq(Constant.PARENT_ID, masterAuthor.getId()));
            masterAuthor.setFields(masterAuthorDetails);
        }
        JSONObject object = new JSONObject();
        object.fluentPut("type", type);
        object.fluentPut("author",masterAuthorList);
@@ -146,7 +167,14 @@
        object.fluentPut("audit",sysMenus);
        return Result.success(object);
    }
    /**
     *
     * @description: 通过系统用户删除权限
     * @param characterId 系统用户
     *  @param type 用户类型
     * @return 是否删除成功
     *
     */
    @RequestMapping(value = "/delete/{characterId}", method = RequestMethod.GET)
    public Result delete(@PathVariable String characterId, @RequestParam MasterAuthorType type){
        List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>()
@@ -163,13 +191,22 @@
        }
        if (delete) {
            redisClient.delByCharacter(characterId);
            return Result.success(CodeMsg.DELETE_SUCCESS);
        }else  {
            return Result.error(CodeMsg.DELETE_ERROR);
        }
    }
    /**
     *
     * @description: 通过主题删除权限
     * @param characterId 系统用户
     * @param menuId 主题id
     *  @param type 用户类型
     * @return 具体数据
     *
     */
    @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);
@@ -189,27 +226,36 @@
        if (count == 1 && !StringUtils.isEmpty(maintainFieldId)) {
            only = true;
        }
        MasterAuthor masterAuthor = authorService.selectOne(masterAuthorWrapper);
        if (masterAuthor == null) {
        List<MasterAuthor> masterAuthors = authorService.selectList(masterAuthorWrapper);
        if (masterAuthors == null || masterAuthors.isEmpty()) {
            return Result.success(null);
        }
        boolean delete = authorDetailService.delete(new EntityWrapper<MasterAuthorDetail>().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();
        boolean delete = false;
        for (MasterAuthor masterAuthor : masterAuthors) {
            delete = authorDetailService.delete(new EntityWrapper<MasterAuthorDetail>().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) {
            redisClient.delByCharacter(characterId);
            return Result.success(CodeMsg.DELETE_SUCCESS);
        }else  {
            return Result.error(CodeMsg.DELETE_ERROR);
        }
    }
    /**
     *
     * @description: 用户组添加角色关联
     * @param groupId 用户组id
     * @param roleId 角色id
     * @return 是否添加成功
     *
     */
    @RequestMapping(value = "/groupAddRole/{roleId}", method = RequestMethod.GET)
    public Result addGroupRole(@PathVariable String roleId, @RequestParam String groupId, HttpServletRequest request){
        TUser user = DbUtils.getUser(request);
@@ -233,7 +279,14 @@
        }
        return Result.success(tableMasterAuthor.values());
    }
    /**
     *
     * @description: 用户添加角色关联
     * @param userId 用户id
     * @param roleId 角色id
     * @return 是否添加成功
     *
     */
    @RequestMapping(value = "/userAddRole/{roleId}", method = RequestMethod.GET)
    public Result addRole(@PathVariable String roleId, @RequestParam String userId, HttpServletRequest request){
        TUser user = DbUtils.getUserById(userId);
@@ -258,7 +311,14 @@
        return Result.success(tableMasterAuthor.values());
    }
    /**
     *
     * @description: 用户删除角色关联
     * @param userId 用户id
     * @param roleId 角色id
     * @return 是否删除成功
     *
     */
    @RequestMapping(value = "/userDelRole/{roleId}", method = RequestMethod.GET)
    public Result delRole(@PathVariable String roleId, @RequestParam String userId, HttpServletRequest request){
        ArrayList<String> delRoleList = new ArrayList<>();
@@ -276,7 +336,14 @@
        }
        return Result.success(tableMasterAuthor.values());
    }
    /**
     *
     * @description: 用户组删除角色关联
     * @param groupId 用户组id
     * @param roleId 角色id
     * @return 是否删除成功
     *
     */
    @RequestMapping(value = "/groupDelRole/{roleId}", method = RequestMethod.GET)
    public Result delGroupRole(@PathVariable String roleId, @RequestParam String groupId, HttpServletRequest request){
        ArrayList<String> delRoleList = new ArrayList<>();
@@ -295,6 +362,13 @@
        return Result.success(tableMasterAuthor.values());
    }
    /**
     *
     * @description: 通过用户id获取已经注册list
     * @param userId 用户id
     * @return 已注册list
     *
     */
    @RequestMapping(value = "/subscribeList/{userId}", method = RequestMethod.GET)
    public Result subscribeList(@PathVariable  String userId,  HttpServletRequest request){
        TUser user = DbUtils.getUserById(userId);
@@ -331,11 +405,25 @@
            if (i > 0) {
                menu.setSubscribe(true);
            }
        }
        return Result.success(result);
    }
//    @RequestMapping(value = "/canLoadData/{userId}", method = RequestMethod.GET)
//    public Result canLoadData(@PathVariable String userId, @RequestParam String tableName, HttpServletRequest request) {
//        TUser user = DbUtils.getUserById(userId);
//        if (user == null) {
//            return Result.error(CodeMsg.USER_NOT_MATHED);
//        }
//    }
    /**
     *
     * @description: 通过userid获取有权限的主题
     * @param userId 用户id
     * @return 主题列表
     *
     */
    @RequestMapping(value = "/menu/{userId}", method = RequestMethod.GET)
    public Result<List<SysMenu>> menuList(@PathVariable String userId, HttpServletRequest request) {
        TUser user = DbUtils.getUserById(userId);
@@ -347,7 +435,13 @@
        return Result.success(menu) ;
    }
    /**
     *
     * @description: 通过userid获取有权限的主题数据
     * @param userId 用户id
     * @return 获取有权限的数据数
     *
     */
    @RequestMapping(value = "/getCnt/{userId}",  method = RequestMethod.GET)
    public Result cnt(@PathVariable String userId, HttpServletRequest request) {
        //TODO active
@@ -380,7 +474,10 @@
                    String maintainFieldId = masterAuthor.getMaintainFieldId();
                    String tableName = masterAuthor.getTableName();
                    List<Maintain> maintainByMaintainField = maintainFieldService.getMaintainByMaintainField(maintainFieldId, tableName);
                    maintainSet.addAll(maintainByMaintainField);
                    if (maintainByMaintainField != null) {
                        maintainSet.addAll(maintainByMaintainField);
                    }
                }
                int unActiveCnt = masterAuthorUnactiveService.selectCount(new EntityWrapper<MasterAuthorUnactive>().in("maintain_id", maintainSet).eq("user_id", userId));
                if (maintainSet.size() != unActiveCnt) {
@@ -401,7 +498,15 @@
        object.fluentPut("subscribeCnt", subscribeCnt);
        return Result.success(object);
    }
    /**
     *
     * @description: 通过版本获取激活的主题
     * @param maintainId 主题id
     * @param userId 用户id
     * @param active 激活状态
     * @return 已激活的主题数
     *
     */
    @RequestMapping(value = "/active/{maintainId}",  method = RequestMethod.GET)
    public Result active(@PathVariable String maintainId, @RequestParam String userId, @RequestParam Boolean active) {
        TUser user = DbUtils.getUserById(userId);
@@ -430,7 +535,12 @@
        }
    }
    /**
     *
     * @description: 获取有权限的list和用户map
     * @return list和用户map列表
     *
     */
    @RequestMapping(value = "/cntList",  method = RequestMethod.GET)
    public Result cntList() {
        HashMap<String, Long> result = new HashMap<>();
@@ -476,7 +586,14 @@
        }
        return Result.success(result);
    }
    /**
     *
     * @description: 通过表名获取有权限的版本list
     * @param userId 用户id
     * @param tableName 表名
     * @return 获取有权限的版本list
     *
     */
    @RequestMapping(value = "/maintainList/{userId}",  method = RequestMethod.GET)
    public Result maintainList(@PathVariable String userId, @RequestParam String tableName) {
        TUser user = DbUtils.getUserById(userId);
@@ -499,7 +616,14 @@
        return Result.success(maintainSet);
    }
    /**
     *
     * @description: 通过版本获取激活的主题
     * @param result 组装用户id, 数据的  map
     * @param masterUserMapList 视图的数据list map
     * @return result 用户id, 权限数据量的  map
     *
     */
    private void merageUserCnt(HashMap<String, Long> result, List<Map<String, Object>> masterUserMapList) {
        for (Map<String, Object> stringStringMap : masterUserMapList) {
            String user = stringStringMap.get(Constant.USERID).toString();