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/DispenseController.java | 367 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 355 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/controller/DispenseController.java b/src/main/java/com/highdatas/mdm/controller/DispenseController.java index 3c9508f..441f536 100644 --- a/src/main/java/com/highdatas/mdm/controller/DispenseController.java +++ b/src/main/java/com/highdatas/mdm/controller/DispenseController.java @@ -1,24 +1,27 @@ package com.highdatas.mdm.controller; -import com.highdatas.mdm.entity.TUser; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.*; import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.util.pool.MqEntity; import com.highdatas.mdm.pojo.Result; -import com.highdatas.mdm.service.DispenseService; -import com.highdatas.mdm.service.MasterDataService; +import com.highdatas.mdm.pojo.SubscribeEntity; +import com.highdatas.mdm.service.*; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.DbUtils; import com.highdatas.mdm.util.RedisClient; import com.highdatas.mdm.util.pool.MqMessage; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -29,7 +32,7 @@ * @since 2019-12-31 */ @RestController -@RequestMapping("/dispense") +@RequestMapping("/subscribe") public class DispenseController { @Autowired DispenseService dispenseService; @@ -37,11 +40,333 @@ RedisClient redisClient; @Autowired MasterDataService masterDataService; + @Autowired + IMasterAuthorService masterAuthorService; + @Autowired + IMaintainFieldService maintainFieldService; + @Autowired + IMaintainService maintainService; + @Autowired + ISysMenuService menuService; + @Autowired + ISysViewService viewService; + @Autowired + IMasterAuthorSubscribeService masterAuthorSubscribeService; + @Autowired + IMasterAuthorUnactiveService masterAuthorUnactiveService; + @Autowired + ISysDispenseLogsService dispenseLogsService; - @RequestMapping(value = "/add", method = RequestMethod.GET) - public void getAll(@RequestParam String code, HttpServletResponse response) { - dispenseService.pushPassiveMq(new MqMessage( code, response)); + @RequestMapping(value = "/dispense/surface", method = RequestMethod.GET) + public Result surface(@RequestParam String userId, @RequestParam String type, @RequestParam String dataId, HttpServletRequest request, HttpServletResponse response) { + String versionId = request.getParameter("versionId"); + return addPassiveMq(userId, type, dataId, versionId, request, "surface"); } + + @RequestMapping(value = "/dispense/surface/muti", method = RequestMethod.POST) + public Result surface(@RequestBody JSONObject objectList, HttpServletRequest request, HttpServletResponse response) { + String userId = objectList.getString("userId"); + JSONArray datas = objectList.getJSONArray("datas"); + ArrayList<Result> results = new ArrayList<>(); + for (int i = 0; i < datas.size(); i++) { + JSONObject oneRequest = datas.getJSONObject(i); + String type = oneRequest.getString("type"); + String dataId = oneRequest.getString("dataId"); + String versionId = oneRequest.getString("versionId"); + Result result = addPassiveMq(userId, type, dataId, versionId, request, "muti"); + results.add(result); + } + return Result.success(results); + + } + + private Result addPassiveMq(@RequestParam String userId, @RequestParam String type, @RequestParam String dataId, String versionId, HttpServletRequest request, String touchType) { + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + String incrementStr = request.getParameter("increment"); + boolean increment = true; + if (!StringUtils.isEmpty(incrementStr)) { + increment = Boolean.valueOf(incrementStr); + } + MqEntity mqEntity = new MqEntity(); + mqEntity.setUserId(userId); + mqEntity.setIncrement(increment); + mqEntity.setMsgTopicName(type); + mqEntity.setType(type); + mqEntity.setDataId(dataId); + if(type.equalsIgnoreCase(Constant.Master)) { + + if (StringUtils.isEmpty(versionId)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + mqEntity.setMaintainId(versionId); + SysMenu sysMenu = menuService.selectById(dataId); + if (sysMenu == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + int i = masterAuthorUnactiveService.selectCount(new EntityWrapper<MasterAuthorUnactive>().eq("maintain_id", versionId).eq("user_id", userId)); + if (i > 0) { + return Result.error(CodeMsg.Active_UN_ERROR); + } + + mqEntity.setMsgTagName(sysMenu.getId()); + } else if (type.equalsIgnoreCase(Constant.View)) { + SysView sysView = viewService.selectById(dataId); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Boolean active = sysView.getActive(); + if (!active) { + return Result.error(CodeMsg.Active_UN_ERROR); + } + mqEntity.setMsgTagName(sysView.getId()); + } else { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + mqEntity.setMsgKey(DbUtils.getUUID(16)); + MqEntity.MsgBodyBean msgBody = mqEntity.getMsgBody(); + msgBody.setVersion(versionId); + MqMessage mqMessage = new MqMessage(mqEntity); + + dispenseService.pushPassiveMq(mqMessage,touchType); //琚姩杩斿洖 +// dispenseService.pushActiveMq(mqMessage); 涓诲姩鎺� + return Result.success(CodeMsg.ADDQUEUE_SUCCESS); + + } + + @RequestMapping(value = "/dispense/api", method = RequestMethod.GET) + public Result api(@RequestParam String token, @RequestParam String type, @RequestParam String dataId, HttpServletRequest request, HttpServletResponse response) { + String userId = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(userId)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + String versionId = request.getParameter("versionId"); + return addPassiveMq(userId, type, dataId, versionId, request, "api"); + } + + @RequestMapping(value = "/add", method = RequestMethod.GET) + public Result add(@RequestParam String token, @RequestParam String type, @RequestParam String dataId) { + try{ + String redisVal = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(redisVal)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + if(type.equalsIgnoreCase(Constant.Master)) { + MasterAuthor masterAuthor = masterAuthorService.selectById(dataId); + if (masterAuthor == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean updated = new MasterAuthorSubscribe().setId(DbUtils.getUUID()).setMenuId(masterAuthor.getId()).setUserId(redisVal).insert(); + if (updated) { + return Result.success(null); + } else { + return Result.error(CodeMsg.SUBSCRIBE_SAVE_ERROR); + } + } else if (type.equalsIgnoreCase(Constant.View)) { + SysView sysView = viewService.selectById(dataId); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean updated = sysView.setSubscribe(true).updateById(); + if (updated) { + return Result.success(null); + } else { + return Result.error(CodeMsg.SUBSCRIBE_SAVE_ERROR); + } + } else { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(CodeMsg.ERROR_SAVE_TOKEN); + } + } + + @RequestMapping(value = "/refreshList", method = RequestMethod.POST) + public Result refreshList(@RequestBody JSONObject requestBody) { + String token = requestBody.getString(Constant.Token); + if (StringUtils.isEmpty(token)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + try{ + String userId = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(userId)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + JSONArray dataList = requestBody.getJSONArray("dataList"); + if (dataList == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //un subscribe + List<SysView> sysViews = viewService.selectList(new EntityWrapper<SysView>().eq(Constant.USERID, userId)); + for (SysView sysView : sysViews) { + sysView.setSubscribe(false).updateById(); + } + + masterAuthorSubscribeService.delete(new EntityWrapper<MasterAuthorSubscribe>().eq(Constant.USERID, userId)); + + for (int i = 0; i < dataList.size(); i++) { + JSONObject oneObj = dataList.getJSONObject(i); + String dataId = oneObj.getString("dataId"); + String type = oneObj.getString("type"); + if (StringUtils.isEmpty(dataId) || StringUtils.isEmpty(type)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + if(type.equalsIgnoreCase(Constant.Master)) { + MasterAuthor masterAuthor = masterAuthorService.selectById(dataId); + if (masterAuthor == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean updated = new MasterAuthorSubscribe().setId(DbUtils.getUUID()).setMenuId(masterAuthor.getId()).setUserId(userId).insert(); + if (updated) { + return Result.success(null); + } else { + return Result.error(CodeMsg.SUBSCRIBE_SAVE_ERROR); + } + } else if (type.equalsIgnoreCase(Constant.View)) { + SysView sysView = viewService.selectById(dataId); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean updated = sysView.setSubscribe(true).updateById(); + if (updated) { + return Result.success(null); + } else { + return Result.error(CodeMsg.SUBSCRIBE_SAVE_ERROR); + } + } else { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + } + return Result.success(null); + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(CodeMsg.ERROR_SAVE_TOKEN); + } + } + + + + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public Result delete(@RequestParam String token, @RequestParam String type, @RequestParam String dataId) { + try{ + String redisVal = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(redisVal)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + if(type.equalsIgnoreCase(Constant.Master)) { + MasterAuthor masterAuthor = masterAuthorService.selectById(dataId); + if (masterAuthor == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean updated = masterAuthorSubscribeService.delete(new EntityWrapper<MasterAuthorSubscribe>().eq("master_author_id", masterAuthor.getId()).eq(Constant.USERID, redisVal)); + + if (updated) { + return Result.success(null); + } else { + return Result.error(CodeMsg.SUBSCRIBE_SAVE_ERROR); + } + } else if (type.equalsIgnoreCase(Constant.View)) { + SysView sysView = viewService.selectById(dataId); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean updated = sysView.setSubscribe(false).updateById(); + if (updated) { + return Result.success(null); + } else { + return Result.error(CodeMsg.SUBSCRIBE_SAVE_ERROR); + } + } else { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(CodeMsg.ERROR_SAVE_TOKEN); + } + } + + @RequestMapping(value = "/authors", method = RequestMethod.GET) + public Result authors(@RequestParam String token) { + try{ + String userId = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(userId)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + List<SubscribeEntity> result = new ArrayList<>(); + + // author 鍙湁鎷ユ湁鏈�鏂版潈闄愮殑鎵嶈兘璁㈤槄 + List<MasterAuthor> userAuthor = masterAuthorService.getUserAuthor(userId, null); + userAuthor = userAuthor.stream() + .filter(masterAuthor -> !StringUtils.isEmpty(masterAuthor.getMaintainFieldId())) +// .filter(masterAuthor -> masterAuthor.getMaintainFieldId().equalsIgnoreCase(Constant.All)) + .collect(Collectors.toList()); + + for (MasterAuthor masterAuthor : userAuthor) { + SubscribeEntity subscribeEntity = new SubscribeEntity(); + subscribeEntity.setId(masterAuthor.getId()); + subscribeEntity.setType(Constant.Master); + String menuId = masterAuthor.getMenuId(); + SysMenu sysMenu = menuService.selectById(menuId); + if (sysMenu == null) { + continue; + } + subscribeEntity.setName(sysMenu.getName()); + String maintainFieldId = masterAuthor.getMaintainFieldId(); + String tableName = masterAuthor.getTableName(); + Maintain nowVersion = maintainService.getNowVersion(tableName); + if (nowVersion == null) { + continue; + } + List<Maintain> maintainByMaintainField = maintainFieldService.getMaintainByMaintainField(maintainFieldId, tableName); + long count = maintainByMaintainField.stream().filter(maintain -> maintain.getId().equalsIgnoreCase(nowVersion.getId())).count(); + if (count == 1) { + result.add(subscribeEntity); + } + + } + + //view + List<SysView> sysViews = viewService.selectList(new EntityWrapper<SysView>().eq(Constant.USERID, userId)); + List<SubscribeEntity> viewList = sysViews.stream() + .map(view -> new SubscribeEntity().setId(view.getId()).setName(view.getName()).setType(Constant.View)) + .collect(Collectors.toList()); + result.addAll(viewList); + + return Result.success(result); + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(CodeMsg.ERROR_SAVE_TOKEN); + } + + } + + @RequestMapping(value = "/getSubscribeList", method = RequestMethod.GET) + public Result getSubscribeList(@RequestParam String token, HttpServletResponse response) { + String userId = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(userId)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + List<SysMenu> menuList = masterAuthorService.getMenu(user); + +// maintainFieldService.getMaintainByMaintainField() + return null; + } + @RequestMapping(value = "/test", method = RequestMethod.GET) public String test(@RequestParam String tableName, HttpServletRequest request) { TUser user = DbUtils.getUser(request); @@ -54,11 +379,29 @@ public Result login(HttpServletRequest request) { TUser user = DbUtils.getUser(request); String token = DbUtils.getUUID(32); - boolean b = redisClient.putRedisVal(user.getId(), token); + boolean b = redisClient.putRedisVal(token, user.getId()); if (b) { return Result.success(token); }else { return Result.success(CodeMsg.ERROR_SAVE_TOKEN); } } + + + @RequestMapping(value = "/key", method = RequestMethod.GET) + public Result key(@RequestParam String token, HttpServletRequest request) { + try{ + String redisVal = redisClient.getRedisVal(token); + if (StringUtils.isEmpty(redisVal)) { + return Result.error(CodeMsg.ERROR_FIND_TOKEN); + } + //todo aes KEY; + return null; + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(CodeMsg.ERROR_SAVE_TOKEN); + } + + } } -- Gitblit v1.8.0