diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 71caa0df56..635bfa35c2 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1,5 +1,7 @@ package io.dataease.service.dataset; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import io.dataease.auth.annotation.DeCleaner; import io.dataease.auth.api.dto.CurrentUserDto; @@ -960,6 +962,8 @@ public class DataSetTableService { res.put("data", jsonArray); return res; } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); return res; } } @@ -1321,6 +1325,17 @@ public class DataSetTableService { DatasourceTypes datasourceTypes = DatasourceTypes.valueOf(ds.getType()); String keyword = datasourceTypes.getKeywordPrefix() + "%s" + datasourceTypes.getKeywordSuffix(); + String configuration = ds.getConfiguration(); + JSONObject jsonObject = JSON.parseObject(configuration); + String schema = jsonObject.getString("schema"); + String joinPrefix = ""; + if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) || + StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) || + StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.oracle.getType()) || + StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.pg.getType()))) { + joinPrefix = String.format(keyword, schema) + "."; + } + List union = dataTableInfoDTO.getUnion(); // 所有选中的字段,即select后的查询字段 Map checkedInfo = new LinkedHashMap<>(); @@ -1386,7 +1401,7 @@ public class DataSetTableService { String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class) .getTable(); - join.append(" ").append(joinType).append(" ").append(String.format(keyword, currentTableName)) + join.append(" ").append(joinType).append(" ").append(joinPrefix).append(String.format(keyword, currentTableName)) .append(" ON "); for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) { UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i); @@ -1409,13 +1424,13 @@ public class DataSetTableService { if (StringUtils.isEmpty(f)) { DEException.throwException(Translator.get("i18n_union_ds_no_checked")); } - sql = MessageFormat.format("SELECT {0} FROM {1}", f, String.format(keyword, tableName)) + join.toString(); + sql = MessageFormat.format("SELECT {0} FROM {1}", f, joinPrefix + String.format(keyword, tableName)) + join.toString(); } else { String f = StringUtils.join(checkedInfo.get(tableName), ","); if (StringUtils.isEmpty(f)) { throw new RuntimeException(Translator.get("i18n_union_ds_no_checked")); } - sql = MessageFormat.format("SELECT {0} FROM {1}", f, String.format(keyword, tableName)); + sql = MessageFormat.format("SELECT {0} FROM {1}", f, joinPrefix + String.format(keyword, tableName)); } Map map = new HashMap<>(); map.put("sql", sql); @@ -1494,6 +1509,9 @@ public class DataSetTableService { public void saveTableField(DatasetTable datasetTable) throws Exception { Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId()); + if (ObjectUtils.isEmpty(ds)) { + throw new RuntimeException(Translator.get("i18n_datasource_delete")); + } DataSetTableRequest dataSetTableRequest = new DataSetTableRequest(); BeanUtils.copyBean(dataSetTableRequest, datasetTable); diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue index c8272a8227..a3614a0081 100644 --- a/frontend/src/views/system/user/index.vue +++ b/frontend/src/views/system/user/index.vue @@ -183,7 +183,7 @@ import { pluginLoaded } from '@/api/user' /* import { ldapStatus, pluginLoaded } from '@/api/user' */ import { userLists, addUser, editUser, delUser, editPassword, editStatus, allRoles } from '@/api/system/user' import { getDeptTree, treeByDeptId } from '@/api/system/dept' - +import { mapGetters } from 'vuex' export default { components: { ComplexTable, LayoutContent, Treeselect }, @@ -320,6 +320,11 @@ export default { canLoadDom: false } }, + computed: { + ...mapGetters([ + 'user' + ]) + }, mounted() { this.allRoles() this.search() @@ -420,7 +425,7 @@ export default { this.$success(this.$t('commons.modify_success')) this.editPasswordVisible = false this.search() - window.location.reload() + this.user && this.user.userId && (this.user.userId === editPasswordForm.userId) && window.location.reload() }) } else { return false diff --git a/frontend/src/views/system/user/personPwd.vue b/frontend/src/views/system/user/personPwd.vue index e6d26c116c..5a5e9f4385 100644 --- a/frontend/src/views/system/user/personPwd.vue +++ b/frontend/src/views/system/user/personPwd.vue @@ -85,12 +85,17 @@ export default { } updatePersonPwd(param).then(res => { this.$success(this.$t('commons.save_success')) - this.$router.push('/panel/index') + this.logout() + // this.$router.push('/panel/index') }) } else { return false } }) + }, + async logout() { + await this.$store.dispatch('user/logout') + this.$router.push('/') } } } diff --git a/mobile/public/index.html b/mobile/public/index.html index ba6f5166c9..7f4260a564 100644 --- a/mobile/public/index.html +++ b/mobile/public/index.html @@ -3,7 +3,8 @@ - + + <%= htmlWebpackPlugin.options.title %>