diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java index f4c7c952..c0a4701a 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/DeptController.java @@ -131,19 +131,10 @@ public class DeptController { //将Dept转化为简单的Dept List simpleDeptList = new ArrayList<>(); simpleDeptList.addAll(DeptConvert.INSTANCE.convertList02(deptDOList)); - deptDOList.forEach(deptDO -> { - List adminUserList = userService.getUserListByDeptIds(Collections.singleton(deptDO.getId())); - for (AdminUserDO adminUserDO : adminUserList){ - DeptSimpleRespVO deptSimpleRespVO = new DeptSimpleRespVO(); - deptSimpleRespVO.setId(adminUserDO.getId()); - deptSimpleRespVO.setParentId(adminUserDO.getDeptId()); - deptSimpleRespVO.setName(adminUserDO.getNickname()); - simpleDeptList.add(deptSimpleRespVO); - } - }); //将list转为树状 -// List list = deptService.buildTree(simpleDeptList,0); - return success(simpleDeptList); + List list = deptService.buildTree(simpleDeptList,0); + List result = deptService.setBuildTree(list,0); + return success(result); } } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java index a9b1ba5f..5cea32ca 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java @@ -24,5 +24,8 @@ public class DeptSimpleRespVO { @Schema(description = "父部门 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long parentId; + @Schema(description = "子集" ) + private List children; + } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java index fc91ade4..e354df95 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserController.java @@ -22,6 +22,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.Operation; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -204,5 +205,4 @@ public class UserController { list.sort(Comparator.comparing(AdminUserDO::getId)); return success(UserConvert.INSTANCE.convertList04(list)); } - } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserProfileController.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserProfileController.java index c1f811d1..e7140571 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserProfileController.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/UserProfileController.java @@ -65,16 +65,30 @@ public class UserProfileController { // 获得用户角色 List userRoles = roleService.getRoleListFromCache(permissionService.getUserRoleIdListByUserId(user.getId())); resp.setRoles(UserConvert.INSTANCE.convertList(userRoles)); + String deptNames = ""; // 获得部门信息 if (user.getDeptId() != null) { DeptDO dept = deptService.getDept(user.getDeptId()); resp.setDept(UserConvert.INSTANCE.convert02(dept)); + deptNames = deptNames + dept.getName() + ","; } + if(deptNames.length() > 0){ + deptNames = deptNames.substring(0, deptNames.length() - 1); + } + resp.setDeptNames(deptNames); + String postNames = ""; // 获得岗位信息 if (CollUtil.isNotEmpty(user.getPostIds())) { List posts = postService.getPostList(user.getPostIds()); resp.setPosts(UserConvert.INSTANCE.convertList02(posts)); + for (PostDO postDO : posts) { + postNames = postNames + postDO.getName() + ","; + } + } + if(postNames.length() > 0){ + postNames = postNames.substring(0, postNames.length() - 1); } + resp.setPostNames(postNames); // 获得社交用户信息 List socialUsers = socialService.getSocialUserList(user.getId(), UserTypeEnum.ADMIN.getValue()); resp.setSocialUsers(UserConvert.INSTANCE.convertList03(socialUsers)); diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java index dad3c365..b376f812 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java @@ -33,6 +33,41 @@ public class UserProfileRespVO extends UserBaseVO { @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") private LocalDateTime createTime; + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "事业部,传感部") + private String deptNames; + + @Schema(description = "职务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "董事长,周经理") + private String postNames; + + /** + * 籍贯 + */ + private String nativePlace; + /** + * 学历 + */ + private String education; + /** + * 专业 + */ + private String speciality; + /** + * 毕业院校 + */ + private String graduationInstitution; + /** + * 毕业时间 + */ + private LocalDateTime institutionDatatime; + /** + * 毕业时间 + */ + private LocalDateTime birthDatetime; + /** + * 个人简介 + */ + private String personalProfile; + /** * 所属角色 */ diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java index efd41144..98cbed1b 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.Size; @Schema(description = "管理后台 - 用户个人信息更新 Request VO") @Data -public class UserProfileUpdateReqVO { +public class UserProfileUpdateReqVO extends UserProfileRespVO{ @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") @Size(max = 30, message = "用户昵称长度不能超过 30 个字符") diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java index 624bf803..e5628ca1 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/dal/dataobject/dept/DeptDO.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.yunxi.scm.framework.common.enums.CommonStatusEnum; import com.yunxi.scm.framework.tenant.core.db.TenantBaseDO; import com.yunxi.scm.module.system.controller.admin.auth.vo.AuthPermissionInfoRespVO; +import com.yunxi.scm.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; import com.yunxi.scm.module.system.dal.dataobject.user.AdminUserDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; @@ -71,8 +72,8 @@ public class DeptDO extends TenantBaseDO { */ private Long enterpriseId; -// @TableField(exist = false) -// private List children; + @TableField(exist = false) + private List children; } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java index 17dc4282..aa461177 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptService.java @@ -107,5 +107,7 @@ public interface DeptService { * 组装为树形结构 * */ -// List buildTree(List deptDOList, long pid); + List buildTree(List deptDOList, long pid); + + List setBuildTree(List deptDOList, long pid); } diff --git a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java index 8afe295e..f02cb49b 100644 --- a/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java +++ b/yunxi-module-system/yunxi-module-system-biz/src/main/java/com/yunxi/scm/module/system/service/dept/DeptServiceImpl.java @@ -19,6 +19,7 @@ import com.yunxi.scm.module.system.service.user.AdminUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -41,6 +42,9 @@ public class DeptServiceImpl implements DeptService { @Resource private DeptMapper deptMapper; + @Resource + @Lazy + private AdminUserService userService; @Override @CacheEvict(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST, @@ -205,17 +209,38 @@ public class DeptServiceImpl implements DeptService { }); } -// @Override -// public List buildTree(List deptDOList, long pid) { -// List treeList = new ArrayList<>(); -// for (DeptSimpleRespVO dept : deptDOList) { -// if (dept.getParentId() == pid) { -// dept.setChildren(buildTree(deptDOList, dept.getId())); -// treeList.add(dept); -// } -// } -// return treeList; -// } + @Override + public List buildTree(List deptDOList, long pid) { + List treeList = new ArrayList<>(); + for (DeptSimpleRespVO dept : deptDOList) { + if (dept.getParentId() == pid) { + dept.setChildren(buildTree(deptDOList, dept.getId())); + treeList.add(dept); + } + } + return treeList; + } + + @Override + public List setBuildTree(List deptDOList, long pid) { + for (DeptSimpleRespVO dept : deptDOList) { + if (dept.getChildren() != null && dept.getChildren().size() > 0) { + setBuildTree(dept.getChildren(), dept.getId()); + } else { + List adminUserList = userService.getUserListByDeptIds(Collections.singleton(dept.getId())); + List simpleDeptList = new ArrayList<>(); + for (AdminUserDO adminUserDO : adminUserList) { + DeptSimpleRespVO deptSimpleRespVO = new DeptSimpleRespVO(); + deptSimpleRespVO.setId(adminUserDO.getId()); + deptSimpleRespVO.setParentId(adminUserDO.getDeptId()); + deptSimpleRespVO.setName(adminUserDO.getNickname()); + simpleDeptList.add(deptSimpleRespVO); + } + dept.setChildren(simpleDeptList); + } + } + return deptDOList; + } } diff --git a/yunxi-ui-admin-vben/.env b/yunxi-ui-admin-vben/.env index 5f9b194b..40b893df 100644 --- a/yunxi-ui-admin-vben/.env +++ b/yunxi-ui-admin-vben/.env @@ -1,11 +1,11 @@ # 端口号 -VITE_PORT = 80 +VITE_PORT = 8090 # 网站标题 -VITE_GLOB_APP_TITLE = 芋道管理系统 +VITE_GLOB_APP_TITLE = 云息Saas平台 # 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符 -VITE_GLOB_APP_SHORT_NAME = Yudao_Admin +VITE_GLOB_APP_SHORT_NAME = Yunxi_Saas_Admin # 租户开关 VITE_GLOB_APP_TENANT_ENABLE = true diff --git a/yunxi-ui-admin-vben/src/api/xxjj/businessWarehouse/index.ts b/yunxi-ui-admin-vben/src/api/xxjj/businessWarehouse/index.ts index 29ea9229..c5d9edcf 100644 --- a/yunxi-ui-admin-vben/src/api/xxjj/businessWarehouse/index.ts +++ b/yunxi-ui-admin-vben/src/api/xxjj/businessWarehouse/index.ts @@ -33,19 +33,19 @@ export function exportBusinessWarehouse(params) { // 查询业务线(精简)列表 export function listSimpleBusiness() { - return defHttp.get({ url: '/system/business-warehouse/list-all-simple' }) + return defHttp.get({ url: '/system/business-warehouse/list-all-simple' }) } - // 查询业务线列表 +// 查询业务线列表 export function getBusinessPage(params) { return defHttp.get({ url: '/system/business-warehouse/business', params }) } - // 查询业务组织列表 - export function getBusinessUserList(params) { +// 查询业务组织列表 +export function getBusinessUserList(params) { return defHttp.get({ url: '/system/business-warehouse/business-user', params }) } - -export function getDeptUserList() { - return defHttp.get({ url: '/system/dept/list-dept-user'}) -} +// //查询业务组织配置列表 +// export function getDeptUserList() { +// return defHttp.get({ url: '/system/dept/list-dept-user' }) +// } diff --git a/yunxi-ui-admin-vben/src/utils/dict.ts b/yunxi-ui-admin-vben/src/utils/dict.ts index 75a8f678..e7b0d1f1 100644 --- a/yunxi-ui-admin-vben/src/utils/dict.ts +++ b/yunxi-ui-admin-vben/src/utils/dict.ts @@ -169,4 +169,5 @@ export enum DICT_TYPE { industryClassify = 'industry_classify', //客户星级 customerSource = 'customer_source', //客户星级 enterpriseNature = 'enterprise_nature', //客户星级 + XUELI = 'XUELI', //学历 } diff --git a/yunxi-ui-admin-vben/src/views/system/user/user.data.ts b/yunxi-ui-admin-vben/src/views/system/user/user.data.ts index 5c8b3a61..e0fca052 100644 --- a/yunxi-ui-admin-vben/src/views/system/user/user.data.ts +++ b/yunxi-ui-admin-vben/src/views/system/user/user.data.ts @@ -154,6 +154,12 @@ export const formSchema: FormSchema[] = [ handleTree: 'id', }, }, + { + label: '工号', + field: 'jobNumber', + required: true, + component: 'Input', + }, { label: '手机号码', field: 'mobile', @@ -161,6 +167,12 @@ export const formSchema: FormSchema[] = [ defaultValue: 0, component: 'InputNumber', }, + { + label: '微信号', + field: 'wechatAccount', + required: true, + component: 'Input', + }, { label: '邮箱', field: 'email', @@ -187,6 +199,54 @@ export const formSchema: FormSchema[] = [ options: getDictOptions(DICT_TYPE.SYSTEM_USER_SEX), }, }, + { + label: '出生日期', + field: 'birthDatetime', + component: 'DatePicker', + componentProps: { + showTime: false, + format: 'YYYY-MM-DD', + valueFormat: 'x', + }, + }, + { + label: '籍贯', + field: 'nativePlace', + component: 'Input', + }, + { + label: '学历', + field: 'education', + component: 'Select', + componentProps: { + options: getDictOptions(DICT_TYPE.XUELI), + }, + }, + { + label: '专业', + field: 'speciality', + component: 'Input', + }, + { + label: '毕业院校', + field: 'graduationInstitution', + component: 'Input', + }, + { + label: '毕业时间', + field: 'institutionDatatime', + component: 'DatePicker', + componentProps: { + showTime: false, + format: 'YYYY-MM-DD', + valueFormat: 'x', + }, + }, + { + label: '个人简介', + field: 'personalProfile', + component: 'InputTextArea', + }, { label: '岗位', field: 'postIds', diff --git a/yunxi-ui-admin-vben/src/views/users/mine/index.vue b/yunxi-ui-admin-vben/src/views/users/mine/index.vue index a2636260..1f69a5cb 100644 --- a/yunxi-ui-admin-vben/src/views/users/mine/index.vue +++ b/yunxi-ui-admin-vben/src/views/users/mine/index.vue @@ -1,8 +1,8 @@