From 5268a2b7dfa556bd6f5a2d5e446cea3ea9940c10 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 22 四月 2020 11:18:23 +0800 Subject: [PATCH] add 分发 master_author 添加字段 subscribe increment, 添加7个表 master_author_subscribe master_author_unactive sys_dispense_config sys_dispense_logs sys_view sys_view_join sys_view_logic --- src/main/java/com/highdatas/mdm/controller/SysViewController.java | 377 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 374 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/controller/SysViewController.java b/src/main/java/com/highdatas/mdm/controller/SysViewController.java index bcd7cd4..d9d58e6 100644 --- a/src/main/java/com/highdatas/mdm/controller/SysViewController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysViewController.java @@ -1,9 +1,29 @@ package com.highdatas.mdm.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.alibaba.fastjson.JSONArray; +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.mapper.TableInfoMapper; +import com.highdatas.mdm.mapper.UserMapper; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.ViewMapFieldItem; +import com.highdatas.mdm.service.*; +import com.highdatas.mdm.util.AESUtil; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import lombok.SneakyThrows; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; -import org.springframework.stereotype.Controller; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** * <p> @@ -13,8 +33,359 @@ * @author kimi * @since 2020-04-15 */ -@Controller +@RestController @RequestMapping("/sysView") public class SysViewController { + @Autowired + ISysViewService viewService; + @Autowired + ISysViewJoinService sysViewJoinService; + @Autowired + IMaintainService maintainService; + @Autowired + ISysMenuService menuService; + @Autowired + UserMapper mapper; + @Autowired + IMasterAuthorService masterAuthorService; + @Autowired + MasterDataService masterDataService; + @Autowired + TableInfoMapper tableInfoMapper; + @Autowired + IMenuMappingService menuMappingService; + @SneakyThrows + @RequestMapping(value = "/test", method = RequestMethod.GET) + public Result test(HttpServletRequest request) throws Exception { + List<Map<String, Object>> test = mapper.test(); + String keys = "ismytestkeys"; + byte[] secretKey = AESUtil.getSecretKey(keys); + String content = JSONArray.toJSONString(test); + long start = System.currentTimeMillis(); + byte[] bytes = content.getBytes("utf-8"); + int length = bytes.length; + System.out.println(length + "K"); + String s = AESUtil.aesPKCS7PaddingEncrypt(content, secretKey.toString()); + long end = System.currentTimeMillis(); + float time = (end - start) ; + System.out.println(time + "s"); + return Result.success(s); + } + + @RequestMapping(value = "/test1", method = RequestMethod.GET) + public Result test1(HttpServletRequest request) throws InterruptedException { + Thread.sleep(3000); + return Result.success(null); + } + + @RequestMapping(value = "/all/{userId}", method = RequestMethod.GET) + public Result getAll(@PathVariable String userId, HttpServletRequest request) { + //TODO + Wrapper<SysView> eq = new EntityWrapper<SysView>().eq(Constant.USERID, userId); + List<SysView> records = viewService.selectList(eq); + for (SysView record : records) { + String id = record.getId(); + String baseMaintainStr = record.getBaseMaintain(); + + Maintain baseMaintain = viewService.getBaseMaintain(record); + if (baseMaintain == null) { + continue; + } + record.setBaseTableName(baseMaintain.getTableName()); + record.setBaseVersion(baseMaintain.getVersion()); + String menuId = record.getMenuId(); + SysMenu sysMenu = menuService.selectById(menuId); + if (sysMenu == null) { + continue; + } + record.setMenuName(sysMenu.getName()); + List<SysViewJoin> sysViewJoins = sysViewJoinService.selectList(new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, id)); + List<String> menuIds = sysViewJoins.stream() + .map(sysViewJoin -> sysViewJoin.getMenuId()) + .collect(Collectors.toList()); + if (!menuIds.isEmpty()) { + List<SysMenu> sysMenus = menuService.selectBatchIds(menuIds); + Collections.reverse(sysMenus); + String subMenuName = sysMenus.stream().map(subMenu -> subMenu.getName()).collect(Collectors.joining(Constant.SEMICOLON)); + record.setSubMenuName(subMenuName); + } + + } + return Result.success(records); + } + + @RequestMapping(value = "/refreshData/{id}", method = RequestMethod.GET) + public Result createView(@RequestParam String id, @RequestParam Boolean active) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + viewService.createView(sysView.getId()); + return Result.success(sysView); + } + + @RequestMapping(value = "/saveMapField/{id}", method = RequestMethod.GET) + public Result saveMapField(@RequestParam String id, @RequestParam String mapField) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + sysView.setMappingField(mapField).updateById(); + return Result.success(sysView); + } + + @RequestMapping(value = "/createView/{id}", method = RequestMethod.GET) + public Result createView(@PathVariable String id) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean view = viewService.createView(sysView.getId()); + if (view) { + return Result.success(null); + } else { + return Result.error(CodeMsg.CREATE_ERROR); + } + + } + + + @RequestMapping(value = "/active/{id}", method = RequestMethod.GET) + public Result active(@PathVariable String id, @RequestParam Boolean active) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + sysView.setActive(active).updateById(); + return Result.success(sysView); + } + + @RequestMapping(value = "/getViewData/{id}/page/{pageNo}", method = RequestMethod.GET) + public Result getViewData(@PathVariable String id, @PathVariable Integer pageNo, HttpServletRequest request) { + String pageSizeStr = request.getParameter("pageSize"); + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + int pageSize = 15; + if (!StringUtils.isEmpty(pageSizeStr)) { + pageSize = Integer.valueOf(pageSizeStr); + } + return viewService.getViewData(sysView, pageNo, pageSize); + + } + + @RequestMapping(value = "/getMapData/{id}/page/{pageNo}", method = RequestMethod.GET) + public Result getMapData(@PathVariable String id, @PathVariable Integer pageNo, @RequestParam String changedField, HttpServletRequest request) { + String pageSizeStr = request.getParameter("pageSize"); + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + int pageSize = 15; + if (!StringUtils.isEmpty(pageSizeStr)) { + pageSize = Integer.valueOf(pageSizeStr); + } + return viewService.getMapData(sysView, changedField, pageNo, pageSize); + + } + + @RequestMapping(value = "/field/{userId}", method = RequestMethod.GET) + public Result<List<SysField>> fieldList(@PathVariable String userId, @RequestParam boolean needUpdate, @RequestParam String maintainId, HttpServletRequest request) { + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + if (needUpdate) { + Maintain nowVersion = maintainService.getNowVersion(maintainId); + List<SysField> field = masterAuthorService.getField(user, nowVersion.getId()); + return Result.success(field) ; + } + List<SysField> field = masterAuthorService.getField(user, maintainId); + return Result.success(field) ; + } + + @RequestMapping(value = "/mapFieldList/{id}", method = RequestMethod.GET) + public Result active(@PathVariable String id) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + List<ViewMapFieldItem> mapField = viewService.getMapField(sysView); + return Result.success(mapField); + } + + @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) + public Result get(@PathVariable String id) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String menuId = sysView.getMenuId(); + LinkedHashSet<String> parentIdSet = new LinkedHashSet<>(); + parentIdSet.add(menuId); + LinkedHashSet<String> byParentId = menuService.getByParentId(parentIdSet); + ArrayList<String> strings = new ArrayList<>(byParentId); + Collections.reverse(strings); + String collect = strings.stream().collect(Collectors.joining(Constant.SEMICOLON)); + sysView.setMenuName(collect); + List<SysViewJoin> sysViewJoins = sysViewJoinService.selectList(new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, id)); + for (SysViewJoin sysViewJoin : sysViewJoins) { + parentIdSet.clear(); + parentIdSet.add(sysViewJoin.getMenuId()); + LinkedHashSet<String> subParent = menuService.getByParentId(parentIdSet); + ArrayList<String> subList = new ArrayList<>(subParent); + Collections.reverse(subList); + String subMenuName = subList.stream().collect(Collectors.joining(Constant.SEMICOLON)); + sysViewJoin.setMenuName(subMenuName); + } + sysView.setViewJoinList(sysViewJoins); + return Result.success(sysView); + } + + @RequestMapping(value = "/getCnt/{userId}", method = RequestMethod.GET) + public Result cnt(@PathVariable String userId, HttpServletRequest request) { + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Wrapper<SysView> userWrapper = new EntityWrapper<SysView>().eq("user_id", userId); + int totalCnt = viewService.selectCount(userWrapper); + userWrapper.eq("active", true); + int activeCnt = viewService.selectCount(userWrapper); + userWrapper.eq("subscribe", true); + int subscribeCnt = viewService.selectCount(userWrapper); + JSONObject object = new JSONObject(); + object.fluentPut("totalCnt", totalCnt); + object.fluentPut("activeCnt", activeCnt); + object.fluentPut("subscribeCnt", subscribeCnt); + return Result.success(object); + } + + + @RequestMapping(value = "/create/{userId}", method = RequestMethod.GET) + public Result add(@PathVariable String userId, HttpServletRequest request) { + SysView sysView = new SysView(); + sysView.setId(DbUtils.getUUID()) + .setUserId(userId) + .setCreateTime(new Date()) + .setStatus(ViewStatus.edit) + .setEmptyData(true) + .insert(); + viewService.getMappingTableName(sysView); + return Result.success(sysView); + } + + @SneakyThrows + @RequestMapping(value = "/deleteMap/{id}", method = RequestMethod.GET) + public Result deleteMap(@PathVariable String id, @RequestParam String changedField) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + boolean b = viewService.deleteMapField(sysView, changedField); + if (!b) { + return Result.error(CodeMsg.DELETE_ERROR); + } + return Result.success(sysView); + } + @SneakyThrows + @RequestMapping(value = "/delete/detail/{id}", method = RequestMethod.GET) + public Result deleteDetail(@PathVariable String id) { + SysViewJoin sysViewJoin = sysViewJoinService.selectById(id); + if (sysViewJoin == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String parentId = sysViewJoin.getParentId(); + SysView sysView = viewService.selectById(parentId); + String userId = sysView.getUserId(); + TUser user = DbUtils.getUserById(userId); + + Maintain joinMaintain = viewService.getJoinMaintain(sysViewJoin); + List<String> subFieldList = viewService.getSubFieldList(sysViewJoin, user); + boolean delete = false; + for (String subField: subFieldList) { + String changeFieldName = viewService.changeFieldName(joinMaintain.getTableName(), subField); + delete = viewService.deleteMapField(sysView, changeFieldName); + } + if (delete) { + return Result.success(CodeMsg.DELETE_SUCCESS); + } else { + return Result.error(CodeMsg.DELETE_ERROR); + } + } + + + @SneakyThrows + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public Result delete(@PathVariable String id) { + return viewService.deleteView(id); + } + + @RequestMapping(value = "/maintainList/{userId}", method = RequestMethod.GET) + public Result add(@PathVariable String userId, @RequestParam String menuId, HttpServletRequest request) { + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + String tableNameByMenu = menuMappingService.getTableNameByMenu(menuId); + if (StringUtils.isEmpty(tableNameByMenu)) { + return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); + } + LinkedHashSet<Maintain> maintainSet = masterAuthorService.getMaintainSet(tableNameByMenu, user); + ArrayList<Maintain> maintains = new ArrayList<>(maintainSet); + for (Maintain maintain : maintains) { + maintain.setNeedUpdate(false); + } + Maintain max = new Maintain(); + max.setId(tableNameByMenu); + max.setTableName(tableNameByMenu); + max.setNeedUpdate(true); + maintains.add(0, max); + return Result.success(maintains); + } + + @RequestMapping(value = "/update", method = RequestMethod.POST) + public Result add(@RequestBody SysView view) { + if (StringUtils.isEmpty(view.getId())) { + return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); + } + if (StringUtils.isEmpty(view.getMenuId()) || StringUtils.isEmpty(view.getBaseMaintain()) ) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + view.setEmptyData(false).setStatus(ViewStatus.edit); + //delete + sysViewJoinService.delete(new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, view.getId())); + + List<SysViewJoin> viewJoinList = view.getViewJoinList(); + boolean insert; + for (SysViewJoin sysViewJoin : viewJoinList) { + insert = sysViewJoin.setId(DbUtils.getUUID()).insert(); + if (!insert) { + return Result.error(CodeMsg.INSERT_ERROR); + } + } + view.setUpdateTime(new Date()); + view.updateById(); + return Result.success(view); + } + @SneakyThrows + @RequestMapping(value = "/download/{id}", method = RequestMethod.GET) + public void download(@PathVariable String id, @RequestParam String menuId, @RequestParam String field, HttpServletResponse response) { + + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return; + } + String userId = sysView.getUserId(); + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return; + } + viewService.downlodMap(sysView,user, response, field, menuId); + } } -- Gitblit v1.8.0