From e49cf67643ebea55a7377b6d9e7d819c0edc24ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B3=95=E6=8B=8951246?= <719602854@qq.com> Date: Mon, 9 Jun 2025 11:40:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E9=97=A8=E5=92=8C?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/dept/vo/dept/DeptListReqVO.java | 5 +++++ .../admin/user/vo/user/UserSaveReqVO.java | 1 + .../system/dal/mysql/dept/DeptMapper.java | 1 + .../system/service/dept/DeptServiceImpl.java | 20 ++++++++++++++++++- .../service/user/AdminUserServiceImpl.java | 3 ++- .../customerinfo/CustomerInfoController.java | 8 ++++---- .../customerinfo/CustomerInfoMapper.java | 9 +++++---- .../customerinfo/CustomerInfoService.java | 2 +- .../customerinfo/CustomerInfoServiceImpl.java | 2 +- .../views/Profile/components/BasicInfo.vue | 12 +++++------ .../src/views/system/user/UserForm.vue | 1 + .../src/views/system/user/index.vue | 6 +++++- 12 files changed, 51 insertions(+), 19 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java index 131686f..f73c8cf 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.Collection; + @Schema(description = "管理后台 - 部门列表 Request VO") @Data public class DeptListReqVO { @@ -13,4 +15,7 @@ public class DeptListReqVO { @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") private Integer status; + @Schema(description = "deptId集合") + private Collection deptIds; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java index 827f5e9..ed6bee1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java @@ -38,6 +38,7 @@ public class UserSaveReqVO { private String remark; @Schema(description = "部门编号", example = "我是一个用户") + @NotBlank(message = "部门编号不能为空") @DiffLogField(name = "部门", function = DeptParseFunction.NAME) private Long deptId; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java index a09fcf7..6a1b50c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java @@ -15,6 +15,7 @@ public interface DeptMapper extends BaseMapperX { default List selectList(DeptListReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .likeIfPresent(DeptDO::getName, reqVO.getName()) + .inIfPresent(DeptDO::getId,reqVO.getDeptIds()) .eqIfPresent(DeptDO::getStatus, reqVO.getStatus())); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java index 95a3259..cf2581b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java @@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; @@ -167,11 +169,27 @@ public class DeptServiceImpl implements DeptService { @Override public List getDeptList(DeptListReqVO reqVO) { + //只查自己的部门及以下 + Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId(); + reqVO.setDeptIds(getDeptCondition(loginUserDeptId)); List list = deptMapper.selectList(reqVO); list.sort(Comparator.comparing(DeptDO::getSort)); return list; } - + /** + * 获得部门条件:查询指定部门的子部门编号们,包括自身 + * + * @param deptId 部门编号 + * @return 部门编号集合 + */ + private Set getDeptCondition(Long deptId) { + if (deptId == null) { + return Collections.emptySet(); + } + Set deptIds = convertSet(getChildDeptList(deptId), DeptDO::getId); + deptIds.add(deptId); // 包括自身 + return deptIds; + } @Override public List getChildDeptList(Collection ids) { List children = new LinkedList<>(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index cc37350..9977307 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -173,7 +173,8 @@ public class AdminUserServiceImpl implements AdminUserService { if (ObjectUtil.notEqual(updateReqVO.getId(), SecurityFrameworkUtils.getLoginUserId())) { //进入这里说明不是自己,那就根据逻辑是否强制下线 // 新增:如果更新了部门编号,则先查看该用户的id,根据id删除该用户token,强制下线重新登录 - if (Objects.nonNull(updateReqVO.getDeptId())&& !oldUser.getDeptId().equals(updateObj.getDeptId()) ) { + if (Objects.nonNull(updateReqVO.getDeptId()) + && !Objects.equals(updateObj.getDeptId(), oldUser.getDeptId())) { OAuth2AccessTokenPageReqVO reqVO = new OAuth2AccessTokenPageReqVO(); reqVO.setUserId(oldUser.getId()); PageResult accessTokenPage = oauth2TokenService.getAccessTokenPage(reqVO); diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java index ce92a1e..d7f6175 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java @@ -93,16 +93,16 @@ public class CustomerInfoController { @GetMapping("/getByCompanyName") @Operation(summary = "通过公司名称带出基本信息") @Parameter(name = "companyName", description = "公司名称", required = true, example = "郑州小牛") - public CommonResult> getCustomerInfoByCompanyName(@RequestParam("companyName") String companyName) { - List customerInfo = customerInfoService.getCustomerInfoByCompanyName(companyName); - List bean = BeanUtils.toBean(customerInfo, CustomerInfoRespVO.class); + public CommonResult getCustomerInfoByCompanyName(@RequestParam("companyName") String companyName) { + CustomerInfoDO customerInfo = customerInfoService.getCustomerInfoByCompanyName(companyName); + CustomerInfoRespVO bean = BeanUtils.toBean(customerInfo, CustomerInfoRespVO.class); return success(bean); } @GetMapping("/getByPhone") @Operation(summary = "通过手机号带出基本信息") - @Parameter(name = "companyName", description = "联系方式", required = true, example = "156") + @Parameter(name = "contact", description = "联系方式", required = true, example = "156") public CommonResult> getCustomerInfoByContact(@RequestParam("contact") String contact) { List customerInfo = customerInfoService.getCustomerInfoByContact(contact); List bean = BeanUtils.toBean(customerInfo, CustomerInfoRespVO.class); diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/mysql/customerinfo/CustomerInfoMapper.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/mysql/customerinfo/CustomerInfoMapper.java index a676559..64f4953 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/mysql/customerinfo/CustomerInfoMapper.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/mysql/customerinfo/CustomerInfoMapper.java @@ -53,17 +53,18 @@ public interface CustomerInfoMapper extends BaseMapperX { } // 根据公司名称或手机号查询(根据任一条件带出符合条件的列表) - default List selectListByCompanyName(String companyName) { + default CustomerInfoDO selectListByCompanyName(String companyName) { Long companyId = SecurityFrameworkUtils.getLoginUserDeptId(); - return selectList(new LambdaQueryWrapperX() + return selectOne(new LambdaQueryWrapperX() .eqIfPresent(CustomerInfoDO::getCompanyId, companyId) - .likeIfPresent(CustomerInfoDO::getCompanyName, companyName)); + .eqIfPresent(CustomerInfoDO::getCompanyName, companyName) + .last("LIMIT 1")); } default List selectListByContact(String contact) { Long companyId = SecurityFrameworkUtils.getLoginUserDeptId(); return selectList(new LambdaQueryWrapperX() .eqIfPresent(CustomerInfoDO::getCompanyId, companyId) - .likeIfPresent(CustomerInfoDO::getContact, contact)); + .eqIfPresent(CustomerInfoDO::getContact, contact)); } default List selectList(Long companyId){ diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoService.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoService.java index a48afe6..26d9a53 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoService.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoService.java @@ -52,7 +52,7 @@ public interface CustomerInfoService { */ PageResult getCustomerInfoPage(CustomerInfoPageReqVO pageReqVO); - List getCustomerInfoByCompanyName(String companyName); + CustomerInfoDO getCustomerInfoByCompanyName(String companyName); List getCustomerInfoByContact(String contact); diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoServiceImpl.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoServiceImpl.java index 6ab4eac..e328c44 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoServiceImpl.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/customerinfo/CustomerInfoServiceImpl.java @@ -123,7 +123,7 @@ public class CustomerInfoServiceImpl implements CustomerInfoService { } @Override - public List getCustomerInfoByCompanyName(String companyName) { + public CustomerInfoDO getCustomerInfoByCompanyName(String companyName) { return customerInfoMapper.selectListByCompanyName(companyName); } @Override diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue index f785aff..c5af085 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue @@ -70,12 +70,12 @@ const schema = reactive([ label: t('profile.user.email'), component: 'Input' }, - { - field: 'sex', - label: t('profile.user.sex'), - component: 'InputNumber', - value: 0 - } + // { + // field: 'sex', + // label: t('profile.user.sex'), + // component: 'InputNumber', + // value: 0 + // } ]) const formRef = ref() // 表单 Ref const submit = () => { diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/UserForm.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/UserForm.vue index 0787318..3e7e167 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/UserForm.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/UserForm.vue @@ -132,6 +132,7 @@ const formRules = reactive({ username: [{ required: true, message: '用户名称不能为空', trigger: 'blur' }], nickname: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }], password: [{ required: true, message: '用户密码不能为空', trigger: 'blur' }], + deptId: [{ required: true, message: '所属部门不能为空', trigger: 'blur' }], email: [ { type: 'email', diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/index.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/index.vue index a868886..8f7a9dc 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/index.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/system/user/index.vue @@ -206,12 +206,13 @@ import UserForm from './UserForm.vue' import UserImportForm from './UserImportForm.vue' import UserAssignRoleForm from './UserAssignRoleForm.vue' import DeptTree from './DeptTree.vue' +import {useUserStore} from "@/store/modules/user"; defineOptions({ name: 'SystemUser' }) const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 - +const userStore = useUserStore()//用户信息 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数 @@ -229,6 +230,9 @@ const queryFormRef = ref() // 搜索的表单 /** 查询列表 */ const getList = async () => { loading.value = true + if (userStore.user.deptId!==100){//如果不是总公司用户,再过滤,总公司用户可以看到所有 + queryParams.deptId = userStore.user.deptId + } try { const data = await UserApi.getUserPage(queryParams) list.value = data.list -- 2.22.0