ChartsUtilService.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.server.chart;
  2. import com.dao.chart.ChartsConfigMapper;
  3. import com.dao.dataSource.DataConnectorMapper;
  4. import com.dao.strategy.StrategysBdMapper;
  5. import com.dao.strategy.StrategysChartMapper;
  6. import com.dao.user.RecordMapper;
  7. import com.model.vo.configVo.RecordInfo;
  8. import com.util.GetTokenData;
  9. import org.apache.ibatis.binding.BindingException;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Component;
  12. import java.util.ArrayList;
  13. import java.util.Iterator;
  14. import java.util.List;
  15. import java.util.Map;
  16. @Component
  17. public class ChartsUtilService {
  18. @Autowired
  19. GetTokenData getTokenData;
  20. @Autowired
  21. DataConnectorMapper dataConnectorMapper;
  22. @Autowired
  23. ChartsConfigMapper chartsConfigMapper;
  24. @Autowired
  25. StrategysBdMapper strategysBdMapper;
  26. @Autowired
  27. StrategysChartMapper strategysChartMapper;
  28. @Autowired
  29. RecordMapper recordMapper;
  30. public String getSqlStr(String token, int id, int dashId) {
  31. Map<String, String> resultMap = getTokenData.getTokenData(token);
  32. int userId = Integer.parseInt(resultMap.get("id"));
  33. int createID;
  34. int baseId;
  35. try {
  36. createID = chartsConfigMapper.getCreateId(id);
  37. baseId = dataConnectorMapper.getBaseId(id);
  38. }catch (BindingException exception){
  39. throw new BindingException();
  40. }
  41. String tableName = chartsConfigMapper.getTableName(id);
  42. System.out.println("table:"+tableName);
  43. System.out.println("userId:" + userId + ", createID:" + createID + "");
  44. if (dashId == 0) {
  45. if (userId == createID) {
  46. //如果数据源创建人ID跟用户ID一样,获得数据源全部权限
  47. if (tableName == null || "".equals(tableName)) {
  48. return "";
  49. } else {
  50. return columnNameUtil(userId, baseId, tableName, true, id, -1);
  51. }
  52. } else {
  53. //先拿图表创建者权限,在取分发权限
  54. String sql = columnNameUtil(createID, baseId, tableName, true, id, -1);
  55. return columnNameUtil(userId, baseId, sql, false, id, -1);
  56. }
  57. }else {
  58. return columnNameUtil(createID, baseId, tableName, true, id, -1);
  59. }
  60. }
  61. public String columnNameUtil(int userId, int baseId, String tableName, boolean isOrder, int id, int createBId){
  62. //用户不是创建人
  63. List<String> strList = new ArrayList<>();
  64. if (isOrder){
  65. int baseCreateId;
  66. if (id != 0) {
  67. baseCreateId = chartsConfigMapper.getCreateIdBychart(id);
  68. }else {
  69. baseCreateId = createBId;
  70. }
  71. if (baseCreateId == userId ){
  72. System.out.println("等于吗");
  73. return "(" + tableName +")";
  74. }else {
  75. System.out.println("周到这里。。。。。。。。。。。。。。。。。");
  76. strList = strategysBdMapper.getSqlStr(userId, baseId);
  77. System.out.println("strList:" + strList);
  78. }
  79. }else {
  80. strList = strategysChartMapper.getSqlStr(userId, id);
  81. }
  82. if (strList.size() == 0){
  83. return "";
  84. }
  85. String sqlStr = "";
  86. Iterator isList = strList.iterator();
  87. while (isList.hasNext()){
  88. String str = (String) isList.next();
  89. if ("".equals(str) || str == null){
  90. return "(select * from " + "(" + tableName +"))";
  91. }
  92. System.out.println("str111:" + str);
  93. StringBuilder sb = new StringBuilder(str);
  94. sqlStr = sqlStr + String.valueOf(sb .replace(1, 5, "( ")) + ") or";
  95. }
  96. System.out.println("sqlStr:" + sqlStr);
  97. StringBuilder sb = new StringBuilder(sqlStr);
  98. sqlStr = "(select * from " + "(" + tableName +")" + " where " + sb.replace(sb.length()-2,sb.length(), "") + ")";
  99. System.out.println("sql:" + sqlStr);
  100. return sqlStr;
  101. }
  102. /*
  103. 浏览记录
  104. */
  105. public void inputRecord(String token, RecordInfo recordInfo){
  106. int tarId = recordInfo.getTarId();
  107. String type = recordInfo.getType();
  108. Map<String, String> resultMap = getTokenData.getTokenData(token);
  109. int userId = Integer.parseInt(resultMap.get("id"));
  110. int count = recordMapper.getCount(type, userId);
  111. List<Integer> integerList = recordMapper.getListId(type, userId);
  112. if (integerList.contains(tarId)){
  113. recordMapper.updateRecord(type, tarId);
  114. }else {
  115. if (count >= 10) {
  116. recordMapper.deleteRecord(type, userId);
  117. }
  118. recordMapper.inputRecord(type, userId, tarId);
  119. }
  120. }
  121. }