From e778f4198931e1e3bdf62c070076aaa33c0a597b Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 23 Nov 2023 17:31:48 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E7=B3=BB=E7=BB=9F=E5=8F=82?= =?UTF-8?q?=E6=95=B0-=E5=9F=BA=E7=A1=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/manage/SysParameterManage.java | 42 +++- .../system/server/SysParameterServer.java | 14 ++ .../src/views/system/common/InfoTemplate.vue | 33 +++- .../system/parameter/basic/BasicEdit.vue | 180 ++++++++++-------- .../system/parameter/basic/BasicInfo.vue | 60 +++++- .../src/views/system/parameter/index.vue | 6 +- .../dataease/api/system/SysParameterApi.java | 9 + .../dataease/api/system/vo/SettingItemVO.java | 19 ++ 8 files changed, 257 insertions(+), 106 deletions(-) create mode 100644 sdk/api/api-base/src/main/java/io/dataease/api/system/vo/SettingItemVO.java diff --git a/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java b/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java index 29198b5241..510138086f 100644 --- a/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java +++ b/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java @@ -1,15 +1,17 @@ package io.dataease.system.manage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.dataease.api.system.vo.SettingItemVO; import io.dataease.system.dao.auto.entity.CoreSysSetting; import io.dataease.system.dao.auto.mapper.CoreSysSettingMapper; +import io.dataease.system.dao.ext.mapper.ExtCoreSysSettingMapper; +import io.dataease.utils.BeanUtils; import io.dataease.utils.IDUtils; import jakarta.annotation.Resource; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -22,6 +24,9 @@ public class SysParameterManage { @Resource private CoreSysSettingMapper coreSysSettingMapper; + @Resource + private ExtCoreSysSettingMapper extCoreSysSettingMapper; + public String singleVal(String key) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("pkey", key); @@ -53,22 +58,39 @@ public class SysParameterManage { sysSetting.setPval(val); coreSysSettingMapper.updateById(sysSetting); } - void save(List boList) { - List all = all(); - } - private List all() { - QueryWrapper queryWrapper = new QueryWrapper<>(); - return coreSysSettingMapper.selectList(queryWrapper); - } - public Map groupVal(String groupKey) { + public Map groupVal(String groupKey) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.like("pkey", groupKey); + queryWrapper.likeRight("pkey", groupKey); + queryWrapper.orderByAsc("sort"); List sysSettings = coreSysSettingMapper.selectList(queryWrapper); if (!CollectionUtils.isEmpty(sysSettings)) { return sysSettings.stream().collect(Collectors.toMap(CoreSysSetting::getPkey, CoreSysSetting::getPval)); } return null; } + + public List groupList(String groupKey) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.likeRight("pkey", groupKey); + queryWrapper.orderByAsc("sort"); + List sysSettings = coreSysSettingMapper.selectList(queryWrapper); + if (!CollectionUtils.isEmpty(sysSettings)) { + return sysSettings.stream().map(item -> BeanUtils.copyBean(new SettingItemVO(), item)).toList(); + } + return null; + } + + public void saveGroup(List vos, String groupKey) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.likeRight("pkey", groupKey); + coreSysSettingMapper.delete(queryWrapper); + List sysSettings = vos.stream().map(item -> { + CoreSysSetting sysSetting = BeanUtils.copyBean(new CoreSysSetting(), item); + sysSetting.setId(IDUtils.snowID()); + return sysSetting; + }).collect(Collectors.toList()); + extCoreSysSettingMapper.saveBatch(sysSettings); + } } diff --git a/core/core-backend/src/main/java/io/dataease/system/server/SysParameterServer.java b/core/core-backend/src/main/java/io/dataease/system/server/SysParameterServer.java index 937d57c67b..2a6ba90fd3 100644 --- a/core/core-backend/src/main/java/io/dataease/system/server/SysParameterServer.java +++ b/core/core-backend/src/main/java/io/dataease/system/server/SysParameterServer.java @@ -2,12 +2,15 @@ package io.dataease.system.server; import io.dataease.api.system.SysParameterApi; import io.dataease.api.system.request.OnlineMapEditor; +import io.dataease.api.system.vo.SettingItemVO; import io.dataease.system.manage.SysParameterManage; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("/sysParameter") public class SysParameterServer implements SysParameterApi { @@ -29,4 +32,15 @@ public class SysParameterServer implements SysParameterApi { String key = sysParameterManage.queryOnlineMap(); return StringUtils.isNotBlank(key) ? key : ""; } + + @Override + public List queryBasicSetting() { + String key = "basic."; + return sysParameterManage.groupList(key); + } + + @Override + public void saveBasicSetting(List settingItemVOS) { + sysParameterManage.saveGroup(settingItemVOS, "basic."); + } } diff --git a/core/core-frontend/src/views/system/common/InfoTemplate.vue b/core/core-frontend/src/views/system/common/InfoTemplate.vue index 9cadffed47..3f8d37ff0c 100644 --- a/core/core-frontend/src/views/system/common/InfoTemplate.vue +++ b/core/core-frontend/src/views/system/common/InfoTemplate.vue @@ -33,6 +33,9 @@ + + {{ item.pval + ' ' + executeTime + '执行一次' }} + {{ item.pval }} @@ -62,22 +65,35 @@ const props = defineProps({ default: '基础设置' } }) - +const executeTime = ref('0分0秒') const curTitle = computed(() => { return props.settingTitle }) const loadList = () => { + settingList.value = [] if (props.settingData?.length) { props.settingData.forEach(item => { - settingList.value.push(item) + if (item.pkey === '数据源检测频率') { + executeTime.value = getExecuteTime(item.pval) + } else { + settingList.value.push(item) + } }) } } +const getExecuteTime = val => { + const options = [ + { value: 'minute', label: '分钟(执行时间:0秒)' }, + { value: 'hour', label: '小时(执行时间:0分0秒)' } + ] + return options.filter(item => item.value === val)[0].label +} + const settingList = ref([] as SettingRecord[]) -const loadBasic = () => { +/* const loadBasic = () => { settingList.value.push({ pkey: '请求超时时间', pval: '100', @@ -147,15 +163,9 @@ const loadEmail = () => { type: 'text', sort: 7 }) -} +} */ const init = () => { - if (props.settingKey === 'basic') { - loadBasic() - } - if (props.settingKey === 'email') { - loadEmail() - } if (props.settingData?.length) { loadList() } @@ -186,6 +196,9 @@ const emits = defineEmits(['edit']) const edit = () => { emits('edit') } +defineExpose({ + init +}) init() formatPwd() formatLabel() diff --git a/core/core-frontend/src/views/system/parameter/basic/BasicEdit.vue b/core/core-frontend/src/views/system/parameter/basic/BasicEdit.vue index 75ea9f560d..a7b28155fa 100644 --- a/core/core-frontend/src/views/system/parameter/basic/BasicEdit.vue +++ b/core/core-frontend/src/views/system/parameter/basic/BasicEdit.vue @@ -3,51 +3,82 @@ import { ref, reactive } from 'vue' import { ElMessage, ElLoading } from 'element-plus-secondary' import { useI18n } from '@/hooks/web/useI18n' import type { FormInstance, FormRules } from 'element-plus-secondary' - +import request from '@/config/axios' const { t } = useI18n() const dialogVisible = ref(false) const loadingInstance = ref(null) -const createUserForm = ref() +const basicForm = ref() +const options = [ + { value: 'minute', label: '分钟(执行时间:0秒)' }, + { value: 'hour', label: '小时(执行时间:0分0秒)' } +] +interface BasicFrom { + autoCreateUser?: boolean + dsIntervalTime?: string + dsExecuteTime?: string +} const state = reactive({ - roleList: [], - form: reactive({ - id: null, - account: null, - name: null, - email: null, - enable: true, - phone: null, - phonePrefix: '+86', - roleIds: [] + form: reactive({ + autoCreateUser: false, + dsIntervalTime: '30', + dsExecuteTime: 'minute' }) }) -const rule = reactive({}) +const rule = reactive({ + dsIntervalTime: [ + { + required: true, + message: t('common.require'), + trigger: 'blur' + } + ] +}) -const edit = () => { +const edit = row => { + state.form = { + autoCreateUser: row.autoCreateUser === 'true', + dsIntervalTime: row.dsIntervalTime, + dsExecuteTime: row.dsExecuteTime + } dialogVisible.value = true - // queryForm() } -/* const queryForm = () => { - showLoading() - personInfoApi().then(res => { - state.form = reactive(res.data) - closeLoading() - }) -} */ + const emits = defineEmits(['saved']) + +const buildSettingList = () => { + const param = { ...state.form } + const item0 = { + pkey: 'basic.autoCreateUser', + pval: param.autoCreateUser.toString(), + type: 'text', + sort: 1 + } + const item1 = { + pkey: 'basic.dsIntervalTime', + pval: param.dsIntervalTime, + type: 'text', + sort: 2 + } + const item2 = { + pkey: 'basic.dsExecuteTime', + pval: param.dsExecuteTime, + type: 'text', + sort: 3 + } + return [item0, item1, item2] +} const submitForm = async (formEl: FormInstance | undefined) => { if (!formEl) return await formEl.validate((valid, fields) => { if (valid) { - const param = { ...state.form } - const method = null + const param = buildSettingList() showLoading() - method(param) + request + .post({ url: '/sysParameter/basic/save', data: param }) .then(res => { if (!res.msg) { ElMessage.success(t('common.save_success')) - emits('saved') reset() } @@ -69,7 +100,7 @@ const resetForm = (formEl: FormInstance | undefined) => { } const reset = () => { - resetForm(createUserForm.value) + resetForm(basicForm.value) } const showLoading = () => { @@ -92,32 +123,46 @@ defineExpose({ direction="rtl" > - - + + - - + +
+ + + + + + 执行一次 +
- diff --git a/core/core-frontend/src/views/system/parameter/basic/BasicInfo.vue b/core/core-frontend/src/views/system/parameter/basic/BasicInfo.vue index 0ffb0ca5b4..37bbbe5304 100644 --- a/core/core-frontend/src/views/system/parameter/basic/BasicInfo.vue +++ b/core/core-frontend/src/views/system/parameter/basic/BasicInfo.vue @@ -1,27 +1,81 @@ diff --git a/core/core-frontend/src/views/system/parameter/index.vue b/core/core-frontend/src/views/system/parameter/index.vue index d550718101..2313a0f321 100644 --- a/core/core-frontend/src/views/system/parameter/index.vue +++ b/core/core-frontend/src/views/system/parameter/index.vue @@ -7,7 +7,7 @@
- +
@@ -17,12 +17,12 @@ import { ref } from 'vue' import { useI18n } from '@/hooks/web/useI18n' import MapSetting from './map/MapSetting.vue' import BasicInfo from './basic/BasicInfo.vue' -import EmailInfo from './email/EmailInfo.vue' +/* import EmailInfo from './email/EmailInfo.vue' */ const { t } = useI18n() const tabArray = [ { label: '基础设置', name: 'basic' }, - { label: '邮件设置', name: 'email' }, + /* { label: '邮件设置', name: 'email' }, */ { label: '地图设置', name: 'map' } /* {label: '引擎设置', name: 'engine'}, */ ] diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/system/SysParameterApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/system/SysParameterApi.java index 6b42b57a0b..a2234315f5 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/system/SysParameterApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/system/SysParameterApi.java @@ -1,11 +1,14 @@ package io.dataease.api.system; import io.dataease.api.system.request.OnlineMapEditor; +import io.dataease.api.system.vo.SettingItemVO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import java.util.List; + public interface SysParameterApi { @GetMapping("/singleVal/{key}") @@ -17,4 +20,10 @@ public interface SysParameterApi { @GetMapping("/queryOnlineMap") String queryOnlineMap(); + @GetMapping("basic/query") + List queryBasicSetting(); + + @PostMapping("/basic/save") + void saveBasicSetting(@RequestBody List settingItemVOS); + } diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/system/vo/SettingItemVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/system/vo/SettingItemVO.java new file mode 100644 index 0000000000..c004582577 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/system/vo/SettingItemVO.java @@ -0,0 +1,19 @@ +package io.dataease.api.system.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +public class SettingItemVO implements Serializable { + + private String pkey; + + private String pval; + + private String type; + + private Integer sort; +} From 92ada5b068a4dc5cea759209095cfc2ab40b16b2 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 23 Nov 2023 20:43:21 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=E6=9F=A5=E8=AF=A2=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E5=B9=B3=E5=8F=B0=E7=8A=B6=E6=80=81=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/dataease/api/lark/vo/LarkInfoVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/lark/vo/LarkInfoVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/lark/vo/LarkInfoVO.java index 4b24e66e79..c1a19faa6d 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/lark/vo/LarkInfoVO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/lark/vo/LarkInfoVO.java @@ -15,5 +15,5 @@ public class LarkInfoVO implements Serializable { private String callBack; - private Boolean enable; + private Boolean enable = false; } From e9a5bbe0a13a0e320e5141a615e0c39d3ee174da Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 23 Nov 2023 22:14:37 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=E5=9C=B0=E7=90=86=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/assets/svg/de-json.svg | 1 + .../views/system/parameter/map/Geometry.vue | 11 +- .../system/parameter/map/GeometryEdit.vue | 240 ++++++++++++++++++ .../views/system/parameter/map/interface.ts | 5 + 4 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 core/core-frontend/src/assets/svg/de-json.svg create mode 100644 core/core-frontend/src/views/system/parameter/map/GeometryEdit.vue create mode 100644 core/core-frontend/src/views/system/parameter/map/interface.ts diff --git a/core/core-frontend/src/assets/svg/de-json.svg b/core/core-frontend/src/assets/svg/de-json.svg new file mode 100644 index 0000000000..9e62a6c556 --- /dev/null +++ b/core/core-frontend/src/assets/svg/de-json.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/views/system/parameter/map/Geometry.vue b/core/core-frontend/src/views/system/parameter/map/Geometry.vue index 47c21db890..68768887d2 100644 --- a/core/core-frontend/src/views/system/parameter/map/Geometry.vue +++ b/core/core-frontend/src/views/system/parameter/map/Geometry.vue @@ -3,7 +3,7 @@
{{ t('online_map.geometry') }} - + @@ -83,6 +83,7 @@
+ @@ -158,7 +165,7 @@ loadTreeData() line-height: 24px; } .add-icon-span { - display: none; + // display: none; color: #3370ff; height: 20px; width: 20px; diff --git a/core/core-frontend/src/views/system/parameter/map/GeometryEdit.vue b/core/core-frontend/src/views/system/parameter/map/GeometryEdit.vue new file mode 100644 index 0000000000..cb4d663e2f --- /dev/null +++ b/core/core-frontend/src/views/system/parameter/map/GeometryEdit.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/core/core-frontend/src/views/system/parameter/map/interface.ts b/core/core-frontend/src/views/system/parameter/map/interface.ts new file mode 100644 index 0000000000..1600eae66d --- /dev/null +++ b/core/core-frontend/src/views/system/parameter/map/interface.ts @@ -0,0 +1,5 @@ +export interface GeometryFrom { + pid?: string + code?: string + name?: string +} From f30ecd1812d604f374e3a0cbe3cb365a76f76566 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 23 Nov 2023 22:19:35 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E6=BC=8F=E6=8F=90=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dao/ext/mapper/ExtCoreSysSettingMapper.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 core/core-backend/src/main/java/io/dataease/system/dao/ext/mapper/ExtCoreSysSettingMapper.java diff --git a/core/core-backend/src/main/java/io/dataease/system/dao/ext/mapper/ExtCoreSysSettingMapper.java b/core/core-backend/src/main/java/io/dataease/system/dao/ext/mapper/ExtCoreSysSettingMapper.java new file mode 100644 index 0000000000..cff68a42b5 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/system/dao/ext/mapper/ExtCoreSysSettingMapper.java @@ -0,0 +1,10 @@ +package io.dataease.system.dao.ext.mapper; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.dataease.system.dao.auto.entity.CoreSysSetting; +import io.dataease.system.dao.auto.mapper.CoreSysSettingMapper; +import org.springframework.stereotype.Component; + +@Component("extCoreSysSettingMapper") +public class ExtCoreSysSettingMapper extends ServiceImpl { +} From 4c8e85932988b90f824d709a74db2d02ab5c40e3 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 23 Nov 2023 22:28:17 +0800 Subject: [PATCH 5/5] =?UTF-8?q?perf:=20=E8=B7=A8=E5=9F=9F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/io/dataease/auth/interceptor/CorsConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/common/src/main/java/io/dataease/auth/interceptor/CorsConfig.java b/sdk/common/src/main/java/io/dataease/auth/interceptor/CorsConfig.java index 63c5164187..35e39b1a3a 100644 --- a/sdk/common/src/main/java/io/dataease/auth/interceptor/CorsConfig.java +++ b/sdk/common/src/main/java/io/dataease/auth/interceptor/CorsConfig.java @@ -17,7 +17,7 @@ public class CorsConfig implements WebMvcConfigurer { @Resource(name = "deCorsInterceptor") private CorsInterceptor corsInterceptor; - @Value("#{'${dataease.origin-list}'.split(',')}") + @Value("#{'${dataease.origin-list:http://127.0.0.1:8100}'.split(',')}") private List originList; @Override