From 5dbb5ef23bfb3c5db2d2a4e0a2a977e044df1c89 Mon Sep 17 00:00:00 2001 From: xuyuxiang Date: Wed, 14 Jun 2023 18:34:34 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=8B=E6=9C=BA=E5=8F=B7=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E7=9A=84bug=EF=BC=8C=E4=BF=AE=E5=A4=8D=20#I7?= =?UTF-8?q?1SNK=20=E9=9D=9E=E8=B6=85=E7=AE=A1=E8=A7=92=E8=89=B2=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=B8=8D=E5=8F=AF=E8=A2=AB=E6=8E=88=E6=9D=83=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=A8=A1=E5=9D=97=E8=8F=9C=E5=8D=95=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/service/impl/BizUserServiceImpl.java | 4 +- .../service/impl/ClientUserServiceImpl.java | 4 +- .../user/service/impl/SysUserServiceImpl.java | 42 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/impl/BizUserServiceImpl.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/impl/BizUserServiceImpl.java index f6ed79d9..eea0c01d 100644 --- a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/impl/BizUserServiceImpl.java +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/impl/BizUserServiceImpl.java @@ -186,7 +186,7 @@ public class BizUserServiceImpl extends ServiceImpl impl throw new CommonException("手机号码:{}格式错误", bizUserAddParam.getPhone()); } if (this.count(new LambdaQueryWrapper() - .eq(BizUser::getPhone, bizUserAddParam.getPhone())) > 0) { + .eq(BizUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(bizUserAddParam.getPhone()))) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", bizUserAddParam.getPhone()); } } @@ -240,7 +240,7 @@ public class BizUserServiceImpl extends ServiceImpl impl throw new CommonException("手机号码:{}格式错误", bizUserEditParam.getPhone()); } if (this.count(new LambdaQueryWrapper() - .eq(BizUser::getPhone, bizUserEditParam.getPhone()) + .eq(BizUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(bizUserEditParam.getPhone())) .ne(BizUser::getId, bizUserEditParam.getId())) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", bizUserEditParam.getPhone()); } diff --git a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java index 1f91e024..12ecedc9 100644 --- a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java +++ b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java @@ -147,7 +147,7 @@ public class ClientUserServiceImpl extends ServiceImpl() - .eq(ClientUser::getPhone, clientUserAddParam.getPhone())) > 0) { + .eq(ClientUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(clientUserAddParam.getPhone()))) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", clientUserAddParam.getPhone()); } } @@ -181,7 +181,7 @@ public class ClientUserServiceImpl extends ServiceImpl() - .eq(ClientUser::getPhone, clientUserEditParam.getPhone()) + .eq(ClientUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(clientUserEditParam.getPhone())) .ne(ClientUser::getId, clientUserEditParam.getId())) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", clientUserEditParam.getPhone()); } diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java index 5a52143e..9f8db274 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -264,7 +264,7 @@ public class SysUserServiceImpl extends ServiceImpl impl throw new CommonException("手机号码:{}格式错误", sysUserAddParam.getPhone()); } if (this.count(new LambdaQueryWrapper() - .eq(SysUser::getPhone, sysUserAddParam.getPhone())) > 0) { + .eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(sysUserAddParam.getPhone()))) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", sysUserAddParam.getPhone()); } } @@ -307,7 +307,7 @@ public class SysUserServiceImpl extends ServiceImpl impl throw new CommonException("手机号码:{}格式错误", sysUserEditParam.getPhone()); } if (this.count(new LambdaQueryWrapper() - .eq(SysUser::getPhone, sysUserEditParam.getPhone()) + .eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(sysUserEditParam.getPhone())) .ne(SysUser::getId, sysUserEditParam.getId())) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", sysUserEditParam.getPhone()); } @@ -784,30 +784,30 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override public void grantResource(SysUserGrantResourceParam sysUserGrantResourceParam) { - String id = sysUserGrantResourceParam.getId(); - SysUserIdParam sysUserIdParam = new SysUserIdParam(); - List roleIdList = this.ownRole(sysUserIdParam); - if(ObjectUtil.isEmpty(roleIdList)) { - throw new CommonException("非超管角色用户不可被授权系统模块菜单资源"); - } - boolean hasSuperAdminRole = sysRoleService.listByIds(roleIdList).stream().map(SysRole::getCode).collect(Collectors.toSet()) - .contains(SysBuildInEnum.BUILD_IN_ROLE_CODE.getValue()); List menuIdList = sysUserGrantResourceParam.getGrantInfoList().stream() .map(SysUserGrantResourceParam.SysUserGrantResource::getMenuId).collect(Collectors.toList()); - if(!hasSuperAdminRole) { - if(ObjectUtil.isNotEmpty(menuIdList)) { - Set sysModuleIdList = sysMenuService.listByIds(menuIdList).stream().map(SysMenu::getModule).collect(Collectors.toSet()); - boolean containsSystemModule = sysModuleService.listByIds(sysModuleIdList).stream().map(SysModule::getCode) - .collect(Collectors.toSet()).contains(SysBuildInEnum.BUILD_IN_MODULE_CODE.getValue()); - if(containsSystemModule) { + if(ObjectUtil.isNotEmpty(menuIdList)) { + SysUserIdParam sysUserIdParam = new SysUserIdParam(); + sysUserIdParam.setId(sysUserGrantResourceParam.getId()); + List roleIdList = this.ownRole(sysUserIdParam); + Set sysModuleIdList = sysMenuService.listByIds(menuIdList).stream().map(SysMenu::getModule).collect(Collectors.toSet()); + boolean containsSystemModule = sysModuleService.listByIds(sysModuleIdList).stream().map(SysModule::getCode) + .collect(Collectors.toSet()).contains(SysBuildInEnum.BUILD_IN_MODULE_CODE.getValue()); + if(containsSystemModule) { + if(ObjectUtil.isEmpty(roleIdList)) { throw new CommonException("非超管角色用户不可被授权系统模块菜单资源"); + } else { + boolean hasSuperAdminRole = sysRoleService.listByIds(roleIdList).stream().map(SysRole::getCode).collect(Collectors.toSet()) + .contains(SysBuildInEnum.BUILD_IN_ROLE_CODE.getValue()); + if(!hasSuperAdminRole) { + throw new CommonException("非超管角色用户不可被授权系统模块菜单资源"); + } } } + List extJsonList = sysUserGrantResourceParam.getGrantInfoList().stream() + .map(JSONUtil::toJsonStr).collect(Collectors.toList()); + sysRelationService.saveRelationBatchWithClear(sysUserGrantResourceParam.getId(), menuIdList, SysRelationCategoryEnum.SYS_USER_HAS_RESOURCE.getValue(), extJsonList); } - List extJsonList = sysUserGrantResourceParam.getGrantInfoList().stream() - .map(JSONUtil::toJsonStr).collect(Collectors.toList()); - sysRelationService.saveRelationBatchWithClear(id, menuIdList, SysRelationCategoryEnum.SYS_USER_HAS_RESOURCE.getValue(), - extJsonList); } @Override @@ -858,7 +858,7 @@ public class SysUserServiceImpl extends ServiceImpl impl throw new CommonException("手机号码:{}格式错误", sysUserUpdateInfoParam.getPhone()); } if (this.count(new LambdaQueryWrapper().ne(SysUser::getId, sysUser.getId()) - .eq(SysUser::getPhone, sysUserUpdateInfoParam.getPhone())) > 0) { + .eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(sysUserUpdateInfoParam.getPhone()))) > 0) { throw new CommonException("存在重复的手机号,手机号为:{}", sysUserUpdateInfoParam.getPhone()); } } From ddae7f6ef3f7b65d641636509eca7a0bff05f184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=AF=BA?= <1253070437@qq.com> Date: Wed, 14 Jun 2023 23:35:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91request?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=B7=A5=E5=85=B7=E5=90=8C=E6=AD=A5=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- snowy-admin-web/src/utils/request.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snowy-admin-web/src/utils/request.js b/snowy-admin-web/src/utils/request.js index 802fc35e..291d387b 100644 --- a/snowy-admin-web/src/utils/request.js +++ b/snowy-admin-web/src/utils/request.js @@ -116,7 +116,6 @@ service.interceptors.response.use( 'update', 'grant', 'reset', - 'start', 'stop', 'pass', 'disable', @@ -126,7 +125,8 @@ service.interceptors.response.use( 'active', 'turn', 'adjust', - 'reject' + 'reject', + 'saveDraft' ] apiNameArray.forEach((apiName) => { if (responseUrl.includes(apiName)) { From 004bb60d86b690f448375c0dfa6f79685d02e8dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=AF=BA?= <1253070437@qq.com> Date: Wed, 14 Jun 2023 23:37:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=93=8D=E4=BD=9C=E7=BB=84=E4=BB=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=B8=94=E5=8A=A0=E5=85=A5=E5=9B=BE=E6=A0=87=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E6=94=AF=E6=8C=81=EF=BC=8C=E4=B8=8A=E4=BC=A0=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=BC=98=E5=A4=9A=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E4=B8=94=E6=8F=90=E4=BE=9B=E4=B8=BB=E5=8A=A8=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/XnBatchButton/index.vue | 21 +++++++++- .../src/components/XnUpload/index.vue | 39 +++++++++++++++---- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/snowy-admin-web/src/components/XnBatchButton/index.vue b/snowy-admin-web/src/components/XnBatchButton/index.vue index 46389e35..b8967320 100644 --- a/snowy-admin-web/src/components/XnBatchButton/index.vue +++ b/snowy-admin-web/src/components/XnBatchButton/index.vue @@ -5,9 +5,9 @@ @visibleChange="batchVisibleChange" @confirm="deleteBatch" > - + {{ props.buttonName }} @@ -18,6 +18,7 @@ import { message } from 'ant-design-vue' const batchVisible = ref(false) const emit = defineEmits({ batchCallBack: null }) + const buttonLoading = ref(false) const props = defineProps({ buttonName: { type: String, @@ -35,9 +36,17 @@ type: String, default: () => '' }, + size: { + type: String, + default: () => 'middle' + }, selectedRowKeys: { type: Array, default: () => [] + }, + color: { + type: String, + default: () => '' } }) // 参数校验 @@ -64,4 +73,12 @@ // 发起方法调用,谁的谁来实现 emit('batchCallBack', params) } + // 打开loading + const loading = () => { + buttonLoading.value = true + } + // 关闭loading + const closeLoading = () => { + buttonLoading.value = true + } diff --git a/snowy-admin-web/src/components/XnUpload/index.vue b/snowy-admin-web/src/components/XnUpload/index.vue index 9dc72d76..6645e42a 100644 --- a/snowy-admin-web/src/components/XnUpload/index.vue +++ b/snowy-admin-web/src/components/XnUpload/index.vue @@ -5,11 +5,11 @@ name="file" :action="action" :headers="headers" - :maxCount="props.uploadMumber" + :maxCount="props.uploadNumber" @change="handleChange" > - + 上传 @@ -21,11 +21,11 @@ :multiple="true" :action="action" :headers="headers" - :maxCount="props.uploadMumber" + :maxCount="props.uploadNumber" @change="handleChange" >

- +

单击或拖动文件到此区域上传

@@ -53,7 +53,7 @@ required: false }, // 上传数量 - uploadMumber: { + uploadNumber: { type: Number, default: 1, required: false @@ -61,11 +61,13 @@ }) const action = sysConfig.API_URL + props.action + // 上传时间,构造上传数组,主动推送至调用组件,单文件可以使用 const handleChange = () => { + // 单个文件可以使用回调方法,多个文件建议主动获取 let result = [] - for (let a = 0; a < props.uploadMumber; a++) { + for (let a = 0; a < props.uploadNumber; a++) { const file = fileList.value[a] - if (file.status === 'done' && file.response && file.response.code === 200) { + if (file && file.status === 'done' && file.response && file.response.code === 200) { const resultObj = { name: file.name, url: file.response.data @@ -77,4 +79,27 @@ emit('uploadDone', result) } } + // 通过DOM获取上传的文件 + const uploadFileList = () => { + if (fileList.value) { + const result = [] + // 只返回这些就够用了,其他基本用不到 + fileList.value.forEach((item) => { + const obj = { + name: item.name, + type: item.type, + size: item.size, + url: item.response.data + } + result.push(obj) + }) + return result + } else { + return [] + } + } + // 抛出这个获取文件列表的方法 + defineExpose({ + uploadFileList + })