微服务版后端初始化

This commit is contained in:
yaoyn
2025-02-08 17:51:37 +08:00
parent 54af6be188
commit da009a7cc4
1897 changed files with 429541 additions and 81 deletions

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>xjrsoft-service-api</artifactId>
<groupId>com.xjrsoft</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xjrsoft-service-organization-api</artifactId>
<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<dependencies>
<!--引入hutool依赖-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-service-system-api</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-service-desktop-api</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
<!--引入Lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>me.zhyd.oauth</groupId>
<artifactId>JustAuth</artifactId>
<version>${justauth.version}</version>
</dependency>
<dependency>
<groupId>com.xjrsoft</groupId>
<artifactId>xjrsoft-common-tenant</artifactId>
<version>${xjrsoft.framework.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,54 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.Department;
import com.xjrsoft.organization.fallback.DepartmentClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/11 16:20
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = DepartmentClientFallBack.class)
public interface IDepartmentClient {
/**
* 根据id获取部门
* @param depId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getDepartmentByIdFeign")
Department getDepartmentByIdFeign(@RequestParam("depId") Long depId);
/**
* 根据id获取部门
* @param depIds
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getDepartmentListByIdsFeign")
List<Department> getDepartmentListByIdsFeign(@RequestParam("depIds") List<Long> depIds);
/**
* 新增部门
* @param department
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/addDepartmentFeign")
boolean addDepartmentFeign(Department department);
/**
* 手动缓存所有部门数据
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/departmentCacheFeign")
void departmentCacheFeign();
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.fallback.IOauthClientFallBack;
import me.zhyd.oauth.request.AuthRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @author yjw
* @createDate 2024-07-17
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME, fallback = IOauthClientFallBack.class)
public interface IOauthClient {
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getAuthRequestFeign")
AuthRequest getAuthRequest(String source);
}

View File

@ -0,0 +1,50 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.Post;
import com.xjrsoft.organization.fallback.PostClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/12 16:21
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = PostClientFallBack.class)
public interface IPostClient {
/**
* 获取角色 根据 角色id
* @param postId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getPostByIdFeign")
Post getPostByIdFeign(@RequestParam("postId") Long postId);
/**
* 获取角色 根据 角色ids
* @param postIds
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getPostListByIdsFeign")
List<Post> getPostListByIdsFeign(@RequestParam("postIds") List<Long> postIds);
/**
* 新增岗位
* @param post
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/addPostFeign")
boolean addPostFeign(Post post);
/**
* 手动缓存所有岗位数据
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/postCacheFeign")
void postCacheFeign();
}

View File

@ -0,0 +1,59 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.Role;
import com.xjrsoft.organization.fallback.RoleClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/10 9:57
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = RoleClientFallBack.class)
public interface IRoleClient {
/**
* 根据关联id 获取角色
* @param relationIds
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getRoleListByRelationIdsFeign")
List<Role> getRoleListByRelationIdsFeign(@RequestParam("relationIds") List<Long> relationIds);
/**
* 获取角色 根据 橘色ids
* @param roleIds
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getRoleByIdsFeign")
List<Role> getRoleByIdsFeign(@RequestParam("roleIds") List<Long> roleIds);
/**
* 获取当前租户最新的角色 id
* @param
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getTenantRoleFeign")
Role getTenantRoleFeign();
/**
* 新增角色
* @param role
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/addRoleFeign")
boolean addRoleFeign(Role role);
/**
* 获取当前租户最新的角色 id
* @param
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getTenantRoleLtFeign")
Role getTenantRoleLtFeign(@RequestParam("id") Long roleId);
}

View File

@ -0,0 +1,118 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.Department;
import com.xjrsoft.organization.entity.User;
import com.xjrsoft.organization.fallback.UserClientFallBack;
import com.xjrsoft.organization.vo.UserRoleVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Set;
/**
* @Author: tzx
* @Date: 2023/10/11 14:44
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = UserClientFallBack.class)
public interface IUserClient {
/**
* 获取用户 根据 用户ids
* @param userIds
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserByIdsFeign")
List<User> getUserByIdsFeign(@RequestParam("userName") List<Long> userIds);
/**
* 根据用户名 获取用户信息
* @param userName
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserByUserNameFeign")
User getUserByUserNameFeign(@RequestParam("userName") String userName);
/**
* 根据用户名 获取用户信息
* @param userName
* @param tenantId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getTenantUserByUserNameFeign")
User getTenantUserByUserNameNoTenantFeign(@RequestParam("userName") String userName, @RequestParam("tenantId") Long tenantId);
/**
* 手动缓存所有用户数据
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/userCacheFeign")
void userCacheFeign();
/**
* 新增用户
* @param user
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/addUserFeign")
boolean addUserFeign(@RequestBody User user);
/**
* 添加默认租户管理员信息
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/addTenantDefInfoFeign")
boolean addTenantDefInfoFeign(@RequestParam("tenantId") Long tenantId);
/**
* 更新用户
* @param user
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/updateUserInfoFeign")
boolean updateUserInfoFeign(@RequestBody User user);
/**
* 查询用户所有部门
* @param id
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/queryDepartmentsOfUserIdFeign")
List<Department> queryDepartmentsOfUserIdFeign(@RequestParam("id") Long id);
/**
* 查询用户所有角色
* @param id
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/queryRolesOfUserFeign")
List<UserRoleVo> queryRolesOfUserFeign(@RequestParam("id") Long id);
/**
* 根据手机号码 获取用户信息
* @param mobile
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserByMobileFeign")
User getUserByMobileFeign(@RequestParam("mobile") String mobile);
/**
* 根据编号 获取用户信息
* @param code
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserByCodeFeign")
User getUserByCodeFeign(String code);
/**
* 获取用户 根据 用户ids
* @param userIds
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserByIdsFeignSet")
List<User> getUserByIdsFeignSet( Set<String> userIds);
}

View File

@ -0,0 +1,37 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.UserDeptRelation;
import com.xjrsoft.organization.fallback.UserDeptRelationClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/10 10:33
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = UserDeptRelationClientFallBack.class)
public interface IUserDeptRelationClient {
/**
* 根据用户id 查询 用户部门关联 的数据
* @param userId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserDeptRelationListFeign")
List<UserDeptRelation> getUserDeptRelationListFeign(@RequestParam("userId") Long userId);
/**
* 新增用户部门关联
* @param userDeptRelation
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/addUserDeptRelationFeign")
boolean addUserDeptRelationFeign(UserDeptRelation userDeptRelation);
}

View File

@ -0,0 +1,37 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.UserPostRelation;
import com.xjrsoft.organization.fallback.UserPostRelationClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/12 16:18
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = UserPostRelationClientFallBack.class)
public interface IUserPostRelationClient {
/**
* 根据用户id 查询 用户岗位关联 的数据
* @param userId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserPostRelationListFeign")
List<UserPostRelation> getUserPostRelationListFeign(@RequestParam("userId") Long userId);
/**
* 新增用户岗位关联
* @param userPostRelation
* @return
*/
@PostMapping(GlobalConstant.CLIENT_API_PRE + GlobalConstant.MODULE_ORGANIZATION_NAME + "/addUserPostRelationFeign")
boolean addUserPostRelationFeign(UserPostRelation userPostRelation);
}

View File

@ -0,0 +1,51 @@
package com.xjrsoft.organization.client;
import com.xjrsoft.common.core.constant.GlobalConstant;
import com.xjrsoft.organization.entity.UserRoleRelation;
import com.xjrsoft.organization.fallback.UserRoleRelationClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/10 10:20
*/
@FeignClient(value = GlobalConstant.CLIENT_ORGANIZATION_NAME,fallback = UserRoleRelationClientFallBack.class)
public interface IUserRoleRelationClient {
/**
* 根据用户id 获取 所关联的橘色
* @param userId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserRoleRelationListByUserIdFeign")
List<UserRoleRelation> getUserRoleRelationListByUserIdFeign(@RequestParam("userId") Long userId);
/**
* 根据角色获取所有关联信息
* @param roleId
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/getUserRoleRelationListByRoleIdFeigh")
List<UserRoleRelation> getUserRoleRelationListByRoleIdFeigh(@RequestParam("roleId") Long roleId);
/**
* 新增 用户角色关联
* @param userRoleRelation
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/addUserRoleRelationFeign")
boolean addUserRoleRelationFeign(UserRoleRelation userRoleRelation);
/**
* 获取用户角色列表
* @param userRoleRelation
* @return
*/
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_ORGANIZATION_NAME + "/addUserRoleRelationFeign")
List<UserRoleRelation> list(UserRoleRelation userRoleRelation);
}

View File

@ -0,0 +1,122 @@
package com.xjrsoft.organization.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @title: AddDepartmentDto
* @Author tzx
* @Date: 2022/4/4 16:48
* @Version 1.0
*/
@Data
public class AddDepartmentDto implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="机构名称")
@NotNull(message = "机构名称不能为空!")
@Length(min = 2,max = 100,message = "机构名称最少2个字符最多100个字符")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
@NotNull(message = "机构编码不能为空!")
@Length(min = 2,max = 50,message = "机构编码最少2个字符最多50个字符")
private String code;
@Schema(name ="电话")
@Length(max = 13,message = "电话最多13个字符")
private String mobile;
@Schema(name ="邮箱")
@Email(message = "邮箱格式不正确!")
@Length(max = 50,message = "邮箱最多50个字符")
private String email;
@Schema(name ="主页")
@Length(max = 50,message = "主页最多50个字符")
private String website;
@Schema(name ="地址")
@Length(max = 250,message = "地址最多50个字符")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
@Length(max = 250,message = "备注最多50个字符")
private String remark;
@Schema(name ="是否启用")
private Integer enabledMark;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
@Schema(name ="简称")
private String shortName;
@Schema(name ="组织性质-数据字典id")
private Long departmentNature;
@Schema(name ="成立时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Timestamp establishedTime;
@Schema(name ="管理人-用户id")
private Long custodian;
@Schema(name ="传真")
private String facsimile;
@Schema(name ="行政正职领导-用户id")
private Long administrativeLeader;
@Schema(name ="党委正职领导-用户id")
private Long partyCommitteeLeader;
@Schema(name ="部门领导-ids")
private String departmentLeaders;
@Schema(name ="上级分管领导-ids")
private String chargeOfLeaders;
@Schema(name ="部门标签-数据字典ids")
private String departmentLabel;
@Schema(name ="分机号")
private String extensionNumber;
@Schema(name ="所属行业 - 数据字典id")
private Long industry;
@Schema(name ="公司法人")
private String corporateLegalPerson;
@Schema(name ="联系手机")
private String phoneNumber;
@Schema(name ="联系电话")
private String contactNumber;
@Schema(name ="开户银行")
private String depositBank;
@Schema(name ="银行账户")
private String bankAccount;
@Schema(name ="经营范围")
private String businessScope;
}

View File

@ -0,0 +1,16 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class AddDepartmentUserDto {
@NotNull(message = "组织ID不能为空")
private Long id;
@NotNull(message = "人员ID不能为空")
private List<Long> userIds;
}

View File

@ -0,0 +1,47 @@
package com.xjrsoft.organization.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @title: AddPostDto
* @Author tzx
* @Date: 2022/4/4 17:59
* @Version 1.0
*/
@Data
public class AddPostDto implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="岗位名称")
@NotNull(message = "岗位名称不能为空!")
@Length(min = 2,max = 20,message = "岗位名称不能少于2个字符大于20个字符")
private String name;
@Schema(name ="编码")
@NotNull(message = "岗位编码不能为空!")
@Length(max = 10,message = "岗位编码不能大于10个字符")
private String code;
@Schema(name ="父级")
private Long parentId = 0L;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
@Length(max = 255,message = "备注不能大于255个字符")
private String remark;
@Schema(name ="有效标记")
private Integer enabledMark;
@Schema(name ="岗位所属组织id")
private Long deptId = 0L;
}

View File

@ -0,0 +1,47 @@
package com.xjrsoft.organization.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @title: AddRoleDto
* @Author tzx
* @Date: 2022/4/4 18:27
* @Version 1.0
*/
@Data
public class AddRoleDto implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "角色名不能为空")
@Length(min = 1,max = 20,message = "角色名最多20个字符")
@Schema(name ="名字")
private String name;
@NotNull(message = "角色编码不能为空")
@Length(min = 1,max = 10,message = "编码最多20个字符")
@Schema(name ="编码")
private String code;
@Schema(name ="数据权限")
private Integer dataAuthType;
@Schema(name ="排序号")
private Integer sortCode;
@Length(max = 255,message = "备注最多20个字符")
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
}

View File

@ -0,0 +1,22 @@
package com.xjrsoft.organization.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class AddRoleUserDto {
@NotNull(message = "角色ID不能为空")
private Long id;
private List<Long> userIds;
@Schema(name ="类型0人员选择1按组织架构选择")
@NotNull(message = "类型不能为空")
private Integer type;
private List<Long> departmentIds;
}

View File

@ -0,0 +1,150 @@
package com.xjrsoft.organization.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
* @title: AddUserDto
* @Author tzx
* @Date: 2022/4/4 17:11
* @Version 1.0
*/
@Data
public class AddUserDto implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="账户")
@NotNull(message = "用户名不能为空")
@Length(min = 3,max = 25,message = "用户名最少3个字符最多25个字符")
private String userName;
@Schema(name ="姓名")
@NotNull(message = "姓名不能为空")
@Length(min = 2,max = 20,message = "姓名最少2个字符最多20个字符")
private String name;
@Schema(name ="编号")
@NotNull(message = "编码不能为空")
@Length(min = 2,max = 20,message = "编码最少2个字符最多10个字符")
private String code;
@Schema(name ="昵称")
@Length(max = 50,message = "昵称最多50个字符")
private String nickName;
@Schema(name ="密码")
@NotNull(message = "密码不能为空")
@Length(min = 6,max = 60,message = "密码最少6个字符最多50个字符")
private String password;
@Schema(name ="性别")
@NotNull(message = "性别必须选择")
@Range(min = -1,max = 2,message = "性别参数不正确!")
private Integer gender = -1;
@Schema(name ="手机号")
@NotNull(message = "手机不能为空")
@Pattern(regexp = "1[3-9][0-9]\\d{8}",message = "手机号格式不正确!")
private String mobile;
// @NotNull(message = "角色不能为空!")
@Schema(name ="角色Id")
private Long postId;
@Schema(name ="头像")
private String avatar;
@Schema(name ="邮箱")
@Email(message = "邮箱格式不正确!")
@Length(max = 60,message = "邮箱字符不能超过60字符")
private String email;
@Schema(name ="地址")
@Length(max = 200,message = "地址不能超过60字符")
private String address;
@Schema(name ="经度")
private Double longitude;
@Schema(name ="纬度")
private Double latitude;
@Schema(name ="排序码")
private Integer sortCode;
@Schema(name ="备注")
@Length(max = 255,message = "备注字符不能超过60字符")
private String remark;
@NotNull(message = "部门不能为空!")
@Schema(name ="部门id")
private String departmentIds;
@Schema(name ="微信号码")
private String wechatNumber;
@Schema(name ="qq号码")
private String qqNumber;
// @JsonFormat(pattern = "yyyy-MM-dd")
@Schema(name ="生日")
private Timestamp birthDate;
@Schema(name ="是否开启密码验证")
private Integer passwordAuthentication;
@Schema(name ="电话号码")
private String phoneNumber;
@Schema(name ="身份证号")
private String identityCardNumber;
@Schema(name ="政治面貌-数据字典id")
private Long politicsStatus;
@Schema(name ="行政职务-数据字典id")
private Long administrativePost;
@Schema(name ="行政职级-数据字典id")
private Long administrativeRank;
@Schema(name ="用户密级-数据字典id")
private Long secretLevel;
@Schema(name ="职称等级-数据字典id")
private Long professionalTitleGrade;
@Schema(name ="技术职务-数据字典id")
private Long technicalPosition;
@Schema(name ="管理职务-数据字典id")
private Long managerialPosition;
@Schema(name ="职业技能-数据字典id")
private Long vocationalSkill;
@Schema(name ="所有角色信息")
private List<Long> roleIds;
@Schema(name ="所有岗位信息")
private List<Long> postIds;
@Schema(name ="负责的部门信息")
private List<Long> chargeDepartmentIds;
@Schema(name ="绑定ip")
private String bindIp;
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
/**
* @title: DepartmentPageDto
* @Author tzx
* @Date: 2022/4/4 16:35
* @Version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class DepartmentPageDto extends PageInput {
@Length(min = 1,max = 20,message = "机构名称最少2个字符最多20个字符")
private String name;
@Length(min = 1,max = 10,message = "机构编码最少2个字符最多10个字符")
private String code;
private Integer enabledMark;
}

View File

@ -0,0 +1,31 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
* @title: DepartmentTreeDto
* @Author tzx
* @Date: 2022/4/9 21:16
* @Version 1.0
*/
@Data
public class DepartmentTreeDto {
private String id;
//id集合以逗号隔开
private String ids;
@Length(min = 1,max = 20,message = "机构名称最少2个字符最多20个字符")
private String name;
@Length(min = 1,max = 10,message = "机构编码最少2个字符最多10个字符")
private String code;
private Integer enabledMark;
private Integer isOrg;
private boolean parentNode;
}

View File

@ -0,0 +1,15 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
@Data
public class DingDeptSettingDto {
private Long id;
private String dingAgentId;
private String dingAppKey;
private String dingAppSecret;
}

View File

@ -0,0 +1,16 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class OfflineUsersDto {
@NotNull(message = "设备不能为空!")
private String device;
@NotNull(message = "人员id不能为空")
private List<Long> userIds;
}

View File

@ -0,0 +1,10 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import lombok.Data;
@Data
public class OnlineUsersPageDto extends PageInput {
private String device;
}

View File

@ -0,0 +1,29 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
/**
* @title: PostPageDto
* @Author tzx
* @Date: 2022/4/4 17:56
* @Version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class PostPageDto extends PageInput {
@Length(max = 20,message = "岗位名称不能大于10个字符")
private String name;
@Length(max = 10,message = "岗位编码不能大于10个字符")
private String code;
private Integer enabledMark;
@Schema(name ="岗位所属组织id")
private Long departmentId;
}

View File

@ -0,0 +1,22 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.ListInput;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
@Data
@EqualsAndHashCode(callSuper = true)
public class PostTreeDto extends ListInput {
@Length(min = 1,max = 20,message = "机构名称最少2个字符最多20个字符")
private String name;
@Length(min = 1,max = 10,message = "机构编码最少2个字符最多10个字符")
private String code;
private Integer enabledMark;
@Schema(name ="岗位所属组织id")
private Long deptId;
}

View File

@ -0,0 +1,9 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
@Data
public class ResetPasswordDto {
private Long id;//接收单个的id
}

View File

@ -0,0 +1,14 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.ListInput;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @Author: tzx
* @Date: 2023/3/8 16:53
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RoleListDto extends ListInput {
}

View File

@ -0,0 +1,24 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
/**
* @title: RolePageDto
* @Author tzx
* @Date: 2022/4/4 18:26
* @Version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class RolePageDto extends PageInput {
@Length(max = 20,message = "岗位名称不能大于10个字符")
private String name;
@Length(max = 10,message = "岗位编码不能大于10个字符")
private String code;
private Integer enabledMark;
}

View File

@ -0,0 +1,14 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class SwitchPostDto {
/**
* 所切换的岗位id
*/
@NotNull(message = "所要切换的岗位id不能为空")
private Long postId;
}

View File

@ -0,0 +1,126 @@
package com.xjrsoft.organization.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @title: UpdateDepartmentDto
* @Author tzx
* @Date: 2022/4/4 16:52
* @Version 1.0
*/
@Data
public class UpdateDepartmentDto implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="主键")
@NotNull(message = "主键不能为空!")
private Long id;
@Schema(name ="机构名称")
@NotNull(message = "机构名称不能为空!")
@Length(min = 2,max = 100,message = "机构名称最少2个字符最多100个字符")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
@NotNull(message = "机构编码不能为空!")
@Length(min = 2,max = 50,message = "机构编码最少2个字符最多50个字符")
private String code;
@Schema(name ="电话")
@Length(max = 13,message = "电话最多13个字符")
private String mobile;
@Schema(name ="邮箱")
@Email(message = "邮箱格式不正确!")
@Length(max = 50,message = "邮箱最多50个字符")
private String email;
@Schema(name ="主页")
@Length(max = 50,message = "主页最多50个字符")
private String website;
@Schema(name ="地址")
@Length(max = 250,message = "地址最多50个字符")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
@Length(max = 250,message = "备注最多50个字符")
private String remark;
@Schema(name ="是否启用")
private Integer enabledMark;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
@Schema(name ="简称")
private String shortName;
@Schema(name ="组织性质-数据字典id")
private Long departmentNature;
@Schema(name ="成立时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Timestamp establishedTime;
@Schema(name ="管理人-用户id")
private Long custodian;
@Schema(name ="传真")
private String facsimile;
@Schema(name ="行政正职领导-用户id")
private Long administrativeLeader;
@Schema(name ="党委正职领导-用户id")
private Long partyCommitteeLeader;
@Schema(name ="部门领导-ids")
private String departmentLeaders;
@Schema(name ="上级分管领导-ids")
private String chargeOfLeaders;
@Schema(name ="部门标签-数据字典ids")
private String departmentLabel;
@Schema(name ="分机号")
private String extensionNumber;
@Schema(name ="所属行业 - 数据字典id")
private Long industry;
@Schema(name ="公司法人")
private String corporateLegalPerson;
@Schema(name ="联系手机")
private String phoneNumber;
@Schema(name ="联系电话")
private String contactNumber;
@Schema(name ="开户银行")
private String depositBank;
@Schema(name ="银行账户")
private String bankAccount;
@Schema(name ="经营范围")
private String businessScope;
}

View File

@ -0,0 +1,41 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author: tzx
* @Date:2022/3/28 16:29
*/
@Data
public class UpdateInfoDto implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@Length(min = 2,max = 20,message = "姓名不能小于2个字符不能大于20个字符")
private String name;
@NotNull
@Length(min = 2,max = 20,message = "编码不能小于2个字符不能大于20个字符")
private String code;
@NotNull
@Length(min = 11,max = 11,message = "手机号码必须11位数字")
private String mobile;
@Email
private String email;
@Length(max = 255,message = "备注不能超过255个字符")
private String remark;
@Length(max = 200,message = "备注不能超过255个字符")
private String address;
}

View File

@ -0,0 +1,33 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author: tzx
* @Date:2022/3/28 16:43
*/
@Data
public class UpdatePasswordDto implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull
@Length(min = 6,max = 32,message = "当前密码长度不得小于6个字符不得大于32个字符")
private String oldPassword;
@NotNull
@Length(min = 6,max = 32,message = "新密码长度不得小于6个字符不得大于32个字符")
private String newPassword;
@NotNull
@Length(min = 6,max = 32,message = "确认密码长度不得小于6个字符不得大于32个字符")
private String confirmPassword;
}

View File

@ -0,0 +1,50 @@
package com.xjrsoft.organization.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @title: UpdatePostDto
* @Author tzx
* @Date: 2022/4/4 18:00
* @Version 1.0
*/
@Data
public class UpdatePostDto implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="主键")
@NotNull(message = "主键不能为空!")
private Long id;
@Schema(name ="岗位名称")
@NotNull(message = "岗位名称不能为空!")
@Length(min = 2,max = 20,message = "岗位名称不能少于2个字符大于20个字符")
private String name;
@Schema(name ="编码")
@NotNull(message = "岗位编码不能为空!")
@Length(max = 10,message = "岗位编码不能大于10个字符")
private String code;
@Schema(name ="父级")
private Long parentId = 0L;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
@Length(max = 255,message = "备注不能大于255个字符")
private String remark;
@Schema(name ="有效标记")
private Integer enabledMark;
@Schema(name ="岗位所属组织id")
private Long deptId = 0L;
}

View File

@ -0,0 +1,50 @@
package com.xjrsoft.organization.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @title: UpdateRoleDto
* @Author tzx
* @Date: 2022/4/4 18:28
* @Version 1.0
*/
@Data
public class UpdateRoleDto implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "角色ID不能为空")
private Long id;
@NotNull(message = "角色名不能为空")
@Length(min = 1,max = 20,message = "角色名最多20个字符")
@Schema(name ="名字")
private String name;
@NotNull(message = "角色编码不能为空")
@Length(min = 1,max = 10,message = "编码最多20个字符")
@Schema(name ="编码")
private String code;
@Schema(name ="数据权限")
private Integer dataAuthType;
@Schema(name ="排序号")
private Integer sortCode;
@Length(max = 255,message = "备注最多20个字符")
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
}

View File

@ -0,0 +1,21 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @title: UpdateRoleStatusDto
* @Author tzx
* @Date: 2022/4/10 16:03
* @Version 1.0
*/
@Data
public class UpdateRoleStatusDto {
@NotNull(message = "角色id不能为空")
private Long id;
@NotNull(message = "角色状态不能为空")
private Integer enabledMark;
}

View File

@ -0,0 +1,144 @@
package com.xjrsoft.organization.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
* @title: UpdateUserDto
* @Author tzx
* @Date: 2022/4/4 17:14
* @Version 1.0
*/
@Data
public class UpdateUserDto implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "主键不能为空!")
@Schema(name ="主键")
private String id;
@Schema(name ="账户")
@NotNull(message = "用户名不能为空")
@Length(min = 3,max = 25,message = "用户名最少3个字符最多25个字符")
private String userName;
@Schema(name ="姓名")
@NotNull(message = "姓名不能为空")
@Length(min = 2,max = 20,message = "姓名最少2个字符最多20个字符")
private String name;
@Schema(name ="编号")
@NotNull(message = "编码不能为空")
@Length(min = 2,max = 20,message = "姓名最少2个字符最多10个字符")
private String code;
@Schema(name ="昵称")
@Length(max = 50,message = "昵称最多50个字符")
private String nickName;
@Schema(name ="性别")
@NotNull(message = "性别必须选择")
@Range(min = -1,max = 2,message = "性别参数不正确!")
private Integer gender = -1;
@Schema(name ="手机号")
@NotNull(message = "手机不能为空")
@Pattern(regexp = "1[3-9][0-9]\\d{8}",message = "手机号格式不正确!")
private String mobile;
@Schema(name ="头像")
private String avatar;
@Schema(name ="邮箱")
@Email(message = "邮箱格式不正确!")
@Length(max = 60,message = "邮箱字符不能超过60字符")
private String email;
@Schema(name ="地址")
@Length(max = 200,message = "地址字符不能超过200字符")
private String address;
@Schema(name ="经度")
private Double longitude;
@Schema(name ="纬度")
private Double latitude;
@Schema(name ="排序码")
private Integer sortCode;
@Schema(name ="备注")
@Length(max = 255,message = "备注字符不能超过255字符")
private String remark;
@NotNull(message = "部门不能为空!")
@Schema(name ="部门id")
private String departmentIds;
@Schema(name ="微信号码")
private String wechatNumber;
@Schema(name ="qq号码")
private String qqNumber;
// @JsonFormat(pattern = "yyyy-MM-dd")
@Schema(name ="生日")
private Timestamp birthDate;
@Schema(name ="是否开启密码验证")
private Integer passwordAuthentication;
@Schema(name ="电话号码")
private String phoneNumber;
@Schema(name ="身份证号")
private String identityCardNumber;
@Schema(name ="政治面貌-数据字典id")
private Long politicsStatus;
@Schema(name ="行政职务-数据字典id")
private Long administrativePost;
@Schema(name ="行政职级-数据字典id")
private Long administrativeRank;
@Schema(name ="用户密级-数据字典id")
private Long secretLevel;
@Schema(name ="职称等级-数据字典id")
private Long professionalTitleGrade;
@Schema(name ="技术职务-数据字典id")
private Long technicalPosition;
@Schema(name ="管理职务-数据字典id")
private Long managerialPosition;
@Schema(name ="职业技能-数据字典id")
private Long vocationalSkill;
@Schema(name ="所有角色信息")
private List<Long> roleIds;
@Schema(name ="所有岗位信息")
private List<Long> postIds;
@Schema(name ="负责的部门信息")
private List<Long> chargeDepartmentIds;
@Schema(name ="绑定ip")
private String bindIp;
}

View File

@ -0,0 +1,24 @@
package com.xjrsoft.organization.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class UpdateUserPostDto {
@NotNull(message = "岗位id不能为空")
private Long postId;//岗位id
private List<Long> userIds;//接收用户id的列表
@NotNull(message = "部门id不能为空")
private Long deptId;//部门id
@Schema(name ="类型0人员选择1按组织架构选择")
@NotNull(message = "类型不能为空")
private Integer type;//
private List<Long> departmentIds;//按组织架构选择人员的组织id
}

View File

@ -0,0 +1,31 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
/**
* @title: UserPageDto
* @Author tzx
* @Date: 2022/4/4 17:06
* @Version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserPageDto extends PageInput {
private Long departmentId;
@Length(max = 20, message = "用户名长度不能超过20")
private String userName;
@Length(max = 20, message = "姓名长度不能超过20")
private String name;
@Length(max = 10, message = "编码长度不能超过10")
private String code;
@Length(max = 20, message = "手机号长度不能超过20")
private String mobile;
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
@Data
public class WeChatDepartDto {
//机构id
private Long id;
//机构名字
private String name;
/**
* 机构编码
*/
private String name_en;
//父部门id
private Long parentid;
//排序
private String order;
}

View File

@ -0,0 +1,14 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import lombok.Data;
import java.io.Serializable;
@Data
public class WeChatDepartPageDto extends PageInput implements Serializable {
private Long departmentId;
}

View File

@ -0,0 +1,12 @@
package com.xjrsoft.organization.dto;
import com.xjrsoft.common.core.domain.page.PageInput;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@Data
public class WeChatPageDto extends PageInput {
@Length(max = 20, message = "姓名长度不能超过20")
private String name;
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.organization.dto;
import lombok.Data;
import java.util.List;
@Data
public class WeChatUserDto {
private String userid;
private String name;
private List<Integer> department;
private String mobile;
private String email;
private String position;
private String gender;
private String avatar;
}

View File

@ -0,0 +1,147 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xjrsoft.common.core.domain.base.AuditEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 机构
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@TableName("xjr_department")
@Tag(name = "Department对象", description = "机构")
@Data
@EqualsAndHashCode(callSuper = false)
public class Department extends AuditEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="机构名称")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
private String code;
public Department(){
}
public Department(Long id,String code,String name,Long parentId){
this.id=id;
this.code=code;
this.name=name;
this.parentId=parentId;
setIsSync("Y");
}
@Schema(name ="电话")
private String mobile;
@Schema(name ="邮箱")
private String email;
@Schema(name ="主页")
private String website;
@Schema(name ="地址")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="层级")
private String hierarchy;
@Schema(name ="组织类别3总部2板块1公司0部门")
private Integer departmentType;
@Schema(name ="租户id")
private Long tenantId;
@Schema(name ="是否同步")
private String isSync;
@Schema(name ="对应企业微信部门id")
private Long wechatDeptId;
@Schema(name ="对应钉钉部门id")
private Long dingtalkDeptId;
private String dingAgentId;
private String dingAppKey;
private String dingAppSecret;
@Schema(name ="简称")
private String shortName;
@Schema(name ="组织性质-数据字典id")
private Long departmentNature;
@Schema(name ="成立时间")
private LocalDateTime establishedTime;
@Schema(name ="管理人-用户id")
private Long custodian;
@Schema(name ="传真")
private String facsimile;
@Schema(name ="行政正职领导-用户id")
private Long administrativeLeader;
@Schema(name ="党委正职领导-用户id")
private Long partyCommitteeLeader;
@Schema(name ="部门领导-ids")
private String departmentLeaders;
@Schema(name ="上级分管领导-ids")
private String chargeOfLeaders;
@Schema(name ="部门标签-数据字典id")
private String departmentLabel;
@Schema(name ="分机号")
private String extensionNumber;
@Schema(name ="所属行业 - 数据字典id")
private Long industry;
@Schema(name ="公司法人")
private String corporateLegalPerson;
@Schema(name ="联系手机")
private String phoneNumber;
@Schema(name ="联系电话")
private String contactNumber;
@Schema(name ="开户银行")
private String depositBank;
@Schema(name ="银行账户")
private String bankAccount;
@Schema(name ="经营范围")
private String businessScope;
}

View File

@ -0,0 +1,51 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xjrsoft.common.core.domain.base.AuditEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
* 岗位
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@TableName("xjr_post")
@Tag(name = "Post对象", description = "岗位")
@Data
@EqualsAndHashCode(callSuper = false)
public class Post extends AuditEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="父级")
private Long parentId;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="岗位所属组织id")
private Long deptId;
@Schema(name = "租户id")
private Long tenantId;
}

View File

@ -0,0 +1,56 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xjrsoft.common.core.domain.base.AuditEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
* 角色
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@TableName("xjr_role")
@Tag(name = "Role对象", description = "角色")
@Data
@EqualsAndHashCode(callSuper = false)
public class Role extends AuditEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
public Role(){
}
public Role(String code,String name){
this.name=name;
this.code=code;
}
// @Schema(name ="数据权限")
// private Integer dataAuthType;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name = "租户id")
private Long tenantId;
}

View File

@ -0,0 +1,237 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xjrsoft.common.core.domain.base.AuditEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@TableName("xjr_sync_datacenter_org_user")
@Tag(name = "数据中台组织人员的同步对象", description = "数据中台的组织和人员")
@Data
@EqualsAndHashCode(callSuper = false)
public class SyncOrgAndUserFromDataCenter extends AuditEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 编码
*/
@Schema(name = "编码")
private String code ;
@Schema(name = "根据编码生成的long类型id")
private Long longId;
@Schema(name = "根据父级编码生成的long类型id")
private Long parentLongId;
/**
* 姓名
*/
@Schema(name = "姓名")
private String name ;
/**
* 父级编码
*/
@Schema(name = "父级编码")
private String parentCode ;
/**
* 父级名称
*/
@Schema(name = "父级名称")
private String parentName ;
/**
* 类型 0-板块 1-公司 2-部门 3-人员
*/
@Schema(name = "类型 0-板块 1-公司 2-部门 3-人员")
private String type ;
/**
* 可用标记
*/
@Schema(name = "可用标记")
private String enableFlag ;
/**
* 排序字段
*/
@Schema(name = "排序字段")
private String sort ;
/**
* 三字编码
*/
@Schema(name = "三字编码")
private String code3 ;
/**
* ehr编码
*/
@Schema(name = "ehr编码")
private String ehrCode ;
/**
* ad编码
*/
@Schema(name = "ad编码")
private String adCode ;
/**
*上级架构路径 编码
*/
@Schema(name = "上级架构路径 编码")
private String adminFramework ;
/**
* 所属公司名称
*/
@Schema(name = "所属公司名称")
private String compName ;
/**
* 所属公司编码
*/
@Schema(name = "所属公司编码")
private String compCode ;
/**
* 所属公司三字码
*/
@Schema(name = "所属公司三字码")
private String compCode3 ;
/**
* 所属公司EHR编码
*/
@Schema(name = "所属公司EHR编码")
private String compEhrCode ;
/**
* 所属公司AD域编码
*/
@Schema(name = "所属公司AD域编码")
private String compAdCode ;
/**
* 员工移动电话
*/
@Schema(name = "员工移动电话")
private String telephonenumber ;
/**
* 员工固话
*/
@Schema(name = "员工固话")
private String mobile ;
/**
* 员工微波电话
*/
@Schema(name = "员工微波电话")
private String pager ;
/**
* 员工办公地点
*/
@Schema(name = "员工办公地点")
private String office ;
/**
* 员工内网邮箱
*/
@Schema(name = "员工内网邮箱")
private String mail ;
/**
* 员工外部邮箱
*/
@Schema(name = "员工外部邮箱")
private String nameMail ;
/**
* 所属部门名称
*/
@Schema(name = "所属部门名称")
private String deptName ;
/**
* 所属部门EHR编码
*/
@Schema(name = "所属部门EHR编码")
private String deptEhrCode ;
/**
* 所属部门AD域编码
*/
@Schema(name = "所属部门AD域编码")
private String deptAdCode ;
/**
* 员工职务
*/
@Schema(name = "员工职务")
private String dutyName ;
/**
* 员工职称
*/
@Schema(name = "员工职称")
private String titletechpost ;
/**
* 关键字1
*/
@Schema(name = "关键字1")
private String searchKey1 ;
/**
* 关键字2
*/
@Schema(name = "关键字2")
private String searchKey2 ;
/**
* 员工是否主职
*/
@Schema(name = "员工是否主职")
private String isMain ;
/**
* data_md5
*/
@Schema(name = "data_md5")
private String dataMd5 ;
/**
* 中台更新时间
*/
@Schema(name = "中台更新时间")
private String midUpdateTime ;
/**
* 性别
*/
@Schema(name = "性别")
private String sex ;
/**
* 部门主管
*/
@Schema(name = "部门主管")
private String deptManager ;
/**
* 上级
*/
@Schema(name = "上级")
private String reportTo ;
}

View File

@ -0,0 +1,154 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xjrsoft.common.core.domain.base.AuditEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@TableName("xjr_user")
@Tag(name = "User对象", description = "用户")
@Data
@EqualsAndHashCode(callSuper = false)
public class User extends AuditEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="账户")
private String userName;
@Schema(name ="姓名")
private String name;
public User(){
}
public User(Long id,String userName,String name){
this.id=id;
this.userName=userName;
this.name=name;
setIsSync("Y");
}
@Schema(name = "编号")
private String code;
@Schema(name ="昵称")
private String nickName;
@Schema(name ="密码")
private String password;
@Schema(name ="性别")
private Integer gender;
@Schema(name ="手机号")
private String mobile;
@Schema(name ="角色Id")
@TableField(exist = false)
private Long postId;
@Schema(name ="头像")
private String avatar;
@Schema(name ="邮箱")
private String email;
@Schema(name ="地址")
private String address;
@Schema(name ="经度")
private Double longitude;
@Schema(name ="纬度")
private Double latitude;
@Schema(name ="排序码")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="部门")
@TableField(exist = false)
private Long departmentId;
@Schema(name = "是否同步")
@TableField(exist = false)
private String isSync;
@Schema(name ="微信号码")
private String wechatNumber;
@Schema(name ="qq号码")
private String qqNumber;
@Schema(name = "生日")
private LocalDateTime birthDate;
@Schema(name = "租户id")
private Long tenantId;
@Schema(name = "租户编码")
@TableField(exist = false)
private String tenantCode;
@Schema(name = "对应企业微信用户id")
private String wechatUserId;
@Schema(name = "对应钉钉用户id")
private String dingtalkUserId;
@Schema(name ="是否开启密码验证")
private Integer passwordAuthentication;
@Schema(name ="电话号码")
private String phoneNumber;
@Schema(name ="身份证号")
private String identityCardNumber;
@Schema(name ="政治面貌-数据字典id")
private Long politicsStatus;
@Schema(name ="行政职务-数据字典id")
private Long administrativePost;
@Schema(name ="行政职级-数据字典id")
private Long administrativeRank;
@Schema(name ="用户密级-数据字典id")
private Long secretLevel;
@Schema(name ="职称等级-数据字典id")
private Long professionalTitleGrade;
@Schema(name ="技术职务-数据字典id")
private Long technicalPosition;
@Schema(name ="管理职务-数据字典id")
private Long managerialPosition;
@Schema(name ="职业技能-数据字典id")
private Long vocationalSkill;
@Schema(name ="绑定ip")
private String bindIp;
}

View File

@ -0,0 +1,28 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 用户负责部门表
* </p>
*
* @author hnyyzy
* @since 2023-12-20
*/
@TableName("xjr_user_charge_dept")
@Tag(name = "UserChargeDept对象", description = "用户负责部门表")
@Data
public class UserChargeDept implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Long userId;
private Long deptId;
}

View File

@ -0,0 +1,48 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
/**
* <p>
* 用户关联部门表
* </p>
*/
@TableName("xjr_user_dept_relation")
@Tag(name = "UserDeptRelation对象", description = "用户关联部门表")
@Data
public class UserDeptRelation {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="用户ID")
private Long userId;
@Schema(name ="部门id")
private Long deptId;
public UserDeptRelation(){
}
public UserDeptRelation(Long deptId,Long userId){
this.userId=userId;
this.deptId=deptId;
setIsSync("Y");
}
@Schema(name = "是否同步")
private String isSync;
@Schema(name = "是否主职/默认部门")
private String isMain;
@Schema(name = "排序码")
private Integer sortCode;
@Schema(name = "租户id")
private Long tenantId;
}

View File

@ -0,0 +1,31 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 用户关联岗位表
* </p>
*/
@TableName("xjr_user_post_relation")
@Tag(name = "UserPostRelation对象", description = "用户关联岗位表")
@Data
public class UserPostRelation implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="用户ID")
private Long userId;
@Schema(name ="岗位id")
private Long postId;
@Schema(name = "租户id")
private Long tenantId;
}

View File

@ -0,0 +1,43 @@
package com.xjrsoft.organization.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 用户关联角色表
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@TableName("xjr_user_role_relation")
@Tag(name = "UserRoleRelation对象", description = "用户关联角色表")
@Data
public class UserRoleRelation implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="用户ID")
private Long userId;
@Schema(name ="角色ID")
private Long roleId;
public UserRoleRelation(){
}
public UserRoleRelation(Long userId,Long roleId){
this.userId=userId;
this.roleId=roleId;
}
@Schema(name = "租户id")
private Long tenantId;
}

View File

@ -0,0 +1,34 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IDepartmentClient;
import com.xjrsoft.organization.entity.Department;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/11 16:21
*/
@Component
public class DepartmentClientFallBack implements IDepartmentClient {
@Override
public Department getDepartmentByIdFeign(Long depId) {
return null;
}
@Override
public List<Department> getDepartmentListByIdsFeign(List<Long> depIds) {
return null;
}
@Override
public boolean addDepartmentFeign(Department department) {
return false;
}
@Override
public void departmentCacheFeign() {
}
}

View File

@ -0,0 +1,16 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IOauthClient;
import me.zhyd.oauth.request.AuthRequest;
/**
* @author yjw
* @createDate 2024-07-17
*/
public class IOauthClientFallBack implements IOauthClient {
@Override
public AuthRequest getAuthRequest(String source) {
return null;
}
}

View File

@ -0,0 +1,34 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IPostClient;
import com.xjrsoft.organization.entity.Post;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/12 16:22
*/
@Component
public class PostClientFallBack implements IPostClient {
@Override
public Post getPostByIdFeign(Long postId) {
return null;
}
@Override
public List<Post> getPostListByIdsFeign(List<Long> postIds) {
return null;
}
@Override
public boolean addPostFeign(Post post) {
return false;
}
@Override
public void postCacheFeign() {
}
}

View File

@ -0,0 +1,39 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IRoleClient;
import com.xjrsoft.organization.entity.Role;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/10 10:06
*/
@Component
public class RoleClientFallBack implements IRoleClient {
@Override
public List<Role> getRoleListByRelationIdsFeign(List<Long> relationIds) {
return null;
}
@Override
public List<Role> getRoleByIdsFeign(List<Long> roleIds) {
return null;
}
@Override
public Role getTenantRoleFeign() {
return null;
}
@Override
public boolean addRoleFeign(Role role) {
return false;
}
@Override
public Role getTenantRoleLtFeign(Long roleId) {
return null;
}
}

View File

@ -0,0 +1,71 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IUserClient;
import com.xjrsoft.organization.entity.Department;
import com.xjrsoft.organization.entity.User;
import com.xjrsoft.organization.vo.UserRoleVo;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/11 14:44
*/
@Component
public class UserClientFallBack implements IUserClient {
@Override
public List<User> getUserByIdsFeign(List<Long> userIds) {
return null;
}
@Override
public User getUserByUserNameFeign(String userName) {
return null;
}
@Override
public User getTenantUserByUserNameNoTenantFeign(String userName, Long tenantId) {
return null;
}
@Override
public void userCacheFeign() {
}
@Override
public boolean addUserFeign(User user) {
return false;
}
@Override
public boolean addTenantDefInfoFeign(Long tenantId) {
return false;
}
@Override
public boolean updateUserInfoFeign(User user) {
return false;
}
@Override
public List<Department> queryDepartmentsOfUserIdFeign(Long id) {
return null;
}
@Override
public List<UserRoleVo> queryRolesOfUserFeign(Long id) {
return null;
}
@Override
public User getUserByMobileFeign(String mobile) {
return null;
}
@Override
public User getUserByCodeFeign(String code) {
return null;
}
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IUserDeptRelationClient;
import com.xjrsoft.organization.entity.UserDeptRelation;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/10 10:34
*/
@Component
public class UserDeptRelationClientFallBack implements IUserDeptRelationClient {
@Override
public List<UserDeptRelation> getUserDeptRelationListFeign(Long userId) {
return null;
}
@Override
public boolean addUserDeptRelationFeign(UserDeptRelation userDeptRelation) {
return false;
}
}

View File

@ -0,0 +1,24 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IUserPostRelationClient;
import com.xjrsoft.organization.entity.UserPostRelation;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/12 16:19
*/
@Component
public class UserPostRelationClientFallBack implements IUserPostRelationClient {
@Override
public List<UserPostRelation> getUserPostRelationListFeign(Long userId) {
return null;
}
@Override
public boolean addUserPostRelationFeign(UserPostRelation userPostRelation) {
return false;
}
}

View File

@ -0,0 +1,30 @@
package com.xjrsoft.organization.fallback;
import com.xjrsoft.organization.client.IUserRoleRelationClient;
import com.xjrsoft.organization.entity.UserRoleRelation;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: tzx
* @Date: 2023/10/10 10:20
*/
@Component
public class UserRoleRelationClientFallBack implements IUserRoleRelationClient {
@Override
public List<UserRoleRelation> getUserRoleRelationListByUserIdFeign(Long userId) {
return null;
}
@Override
public List<UserRoleRelation> getUserRoleRelationListByRoleIdFeigh(Long roleId) {
return null;
}
@Override
public boolean addUserRoleRelationFeign(UserRoleRelation userRoleRelation) {
return false;
}
}

View File

@ -0,0 +1,53 @@
package com.xjrsoft.organization.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.organization.entity.Department;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* <p>
* 机构 Mapper 接口
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@Mapper
public interface DepartmentMapper extends MPJBaseMapper<Department> {
@Deprecated
@Select("WITH RECURSIVE parent_path AS ( SELECT id, parent_id FROM xjr_department WHERE id = #{id} UNION ALL SELECT c.id, c.parent_id FROM xjr_department c INNER JOIN parent_path pp ON c.id = pp.parent_id WHERE delete_mark = 0 ) SELECT parent_id FROM parent_path")
List<String> findDeptPIds(@Param("id")String id);
/**
* 查询指定节点的所有父节点id
* 传参:
* queryType=parent
* startIds=Long[]{指定节点}
* @param params
* @return
*/
List<String> findParentIds(@Param("params") Map<String,Object> params);
/**
* 查询部门路径
* 传参:
* queryType=parent
* startIds=Long[]{指定节点开始}
* stopParentIds=Long[]{查询到该节点为止}
* isQueryIdPath是否返回id默认返回部门名称
* isQueryOrderDesc是否由指定节点到根节点的顺序默认是从根节点到指定节点的顺序
* pathSeparator路径分隔符默认是/
* @param params
* @return 部门id,部门路径的map
*/
@MapKey("flag")
Map<Long,Map>queryDeptPath(@Param("params") Map<String,Object> params);
}

View File

@ -0,0 +1,18 @@
package com.xjrsoft.organization.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.organization.entity.Post;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 岗位 Mapper 接口
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@Mapper
public interface PostMapper extends MPJBaseMapper<Post> {
}

View File

@ -0,0 +1,18 @@
package com.xjrsoft.organization.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjrsoft.organization.entity.Role;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 角色 Mapper 接口
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@Mapper
public interface RoleMapper extends BaseMapper<Role> {
}

View File

@ -0,0 +1,14 @@
package com.xjrsoft.organization.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.organization.entity.SyncOrgAndUserFromDataCenter;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SyncOrgAndUserFromDataCenterMapper extends MPJBaseMapper<SyncOrgAndUserFromDataCenter> {
@InterceptorIgnore(blockAttack = "true")
@Delete("delete from xjr_sync_datacenter_org_user")
Integer emptyAllData()throws Exception;
}

View File

@ -0,0 +1,18 @@
package com.xjrsoft.organization.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjrsoft.organization.entity.UserChargeDept;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 用户负责部门表 Mapper 接口
* </p>
*
* @author hnyyzy
* @since 2023-12-20
*/
@Mapper
public interface UserChargeDeptMapper extends BaseMapper<UserChargeDept> {
}

View File

@ -0,0 +1,9 @@
package com.xjrsoft.organization.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjrsoft.organization.entity.UserDeptRelation;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserDeptRelationMapper extends BaseMapper<UserDeptRelation> {
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.organization.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.organization.entity.User;
import org.apache.ibatis.annotations.Mapper;
import com.xjrsoft.organization.entity.Department;
import com.xjrsoft.organization.vo.UserRoleVo;
import java.util.List;
/**
* <p>
* 用户 Mapper 接口
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@Mapper
public interface UserMapper extends MPJBaseMapper<User> {
List<Department> queryDepartmentsOfUser(Long id);
List<UserRoleVo> queryRolesOfUser(Long id);
}

View File

@ -0,0 +1,9 @@
package com.xjrsoft.organization.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjrsoft.organization.entity.UserPostRelation;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserPostRelationMapper extends BaseMapper<UserPostRelation> {
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.organization.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjrsoft.organization.entity.UserRoleRelation;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 用户关联角色表 Mapper 接口
* </p>
*
* @author tzx
* @since 2022-03-02
*/
@Mapper
public interface UserRoleRelationMapper extends BaseMapper<UserRoleRelation> {
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.organization.model;
import com.xjrsoft.organization.entity.Department;
import com.xjrsoft.organization.entity.Post;
import com.xjrsoft.organization.entity.Role;
import com.xjrsoft.organization.entity.User;
import lombok.Data;
@Data
public class NewTenantDefaultInfoModel {
private User user;
private Role role;
private Post post;
private Department department;
}

View File

@ -0,0 +1,86 @@
package com.xjrsoft.organization.utils;
import cn.hutool.core.util.StrUtil;
import com.xjrsoft.organization.entity.Department;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class OrganizationUtil {
/**
* 获取当前组织下所有下级组织Id
* @param deptIds 组织ids
* @param list 组织列表
* @return
*/
public static List<Long> getDeptChild(List<Long> deptIds, List<Department> list){
List<Long> deptChildIds = new ArrayList<>();
for (Long deptId : deptIds) {
if (list.stream().anyMatch(x -> x.getParentId().equals(deptId))){
List<Department> child = list.stream().filter(x -> x.getParentId().equals(deptId)).collect(Collectors.toList());
List<Long> allChildId = child.stream().map(Department::getId).collect(Collectors.toList());
List<Long> allChildId1= getDeptChild(allChildId, list);
deptChildIds.addAll(allChildId);
deptChildIds.addAll(allChildId1);
}
}
return deptChildIds;
}
public static List<Department> getChildDepartment(Long departmentId, List<Department> departmentList){
List<Department> result = new ArrayList<>();
List<Department> currentAndChildDepartment = departmentList.stream().filter(x -> x.getId().equals(departmentId) || x.getParentId().equals(departmentId)).collect(Collectors.toList());
Optional<Department> currentDepartmentOp = currentAndChildDepartment.stream().filter(x -> x.getId().equals(departmentId)).findFirst();
currentDepartmentOp.ifPresent(result::add);
List<Department> childDepartment = currentAndChildDepartment.stream().filter(x -> x.getParentId().equals(departmentId)).collect(Collectors.toList());
result.addAll(childDepartment);
for (Department department : childDepartment) {
result.addAll(getChildDepartment(department.getId(),departmentList));
}
return result;
}
/**
* 过滤禁用的节点,以及下级节点
* @param list 组织集合
* @return
*/
public static List<Department> getUnEnabledMarkList(List<Department> list){
//所有需要过滤掉下级节点的deptIds
List<Long> deptIds = new ArrayList<>();
for (Department department : list) {
if(department.getEnabledMark()==0){
//如果有下级,下级进行过滤,不显示到前端去
deptIds.add(department.getId());
}
}
//所有需要过滤的ids的集合
List<Long> allChildIds = getDeptChild(deptIds, list);
//将父级节点也过滤掉
allChildIds.addAll(deptIds);
return list.stream().filter(u -> !allChildIds.contains(u.getId())).collect(Collectors.toList());
}
/**
* 验证密码密码必须包含大写字母、小写字母、数字和特殊字符长度8~16位
* @param password
* @return
*/
public static boolean validatePassword(String password) {
if (StrUtil.isEmpty(password)) {
return false;
}
// 验证密码
return Pattern.compile("^(?=.*[0-9]).{8,16}$").matcher(password).matches()
&& Pattern.compile("(?=.*[a-z]).{8,16}").matcher(password).matches()
&& Pattern.compile("(?=.*[A-Z]).{8,16}").matcher(password).matches()
&& Pattern.compile("(?=.*[^a-zA-Z0-9]).{8,16}").matcher(password).matches();
}
}

View File

@ -0,0 +1,49 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @Author: tzx
* @Date: 2023/10/13 15:58
*/
@Data
public class AuthDepartmentVo {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="机构名称")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
private String code;
@Schema(name ="电话")
private String mobile;
@Schema(name ="邮箱")
private String email;
@Schema(name ="主页")
private String website;
@Schema(name ="地址")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="层级")
private String hierarchy;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
}

View File

@ -0,0 +1,120 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author: tzx
* @Date: 2023/10/13 14:59
*/
@Data
public class AuthLoginUserVo {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 账户
*/
private String userName;
/**
* 姓名
*/
private String name;
/**
* 编号
*/
private String code;
/**
* 昵称
*/
private String nickName;
/**
* 密码
*/
private String password;
/**
* 性别
*/
private Integer gender;
/**
* 手机号
*/
private String mobile;
/**
* 角色Id
*/
private Long postId;
/**
* 部门id
*/
private Long departmentId;
/**
* 头像
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 经度
*/
private Double longitude;
/**
* 纬度
*/
private Double latitude;
/**
* 排序码
*/
private Integer sortCode;
/**
* 排序码
*/
private String remark;
// private String departmentId;
private String departmentIds;
private Integer enabledMark;
private LocalDateTime createDate;
private LocalDateTime modifyDate;
@Schema(name ="微信号码")
private String wechatNumber;
@Schema(name ="qq号码")
private String qqNumber;
@Schema(name ="生日")
private LocalDateTime birthDate;
}

View File

@ -0,0 +1,33 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @Author: tzx
* @Date: 2023/10/13 15:52
*/
@Data
public class AuthPostVo {
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="父级")
private Long parentId;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="岗位所属组织id")
private Long deptId;
}

View File

@ -0,0 +1,31 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class DepartmentCompanyVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name = "用户ID")
private Long userId;
@Schema(name = "用户姓名")
private String userName;
@Schema(name = "机构ID")
private Long id;
@Schema(name = "机构名称")
private String name;
@Schema(name = "公司ID")
private Long companyId;
@Schema(name = "公司名称")
private String companyName;
}

View File

@ -0,0 +1,51 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: DepartmentListVo
* @Author tzx
* @Date: 2022/4/4 16:30
* @Version 1.0
*/
@Data
public class DepartmentListVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
@Schema(name ="机构名称")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
private String code;
@Schema(name ="电话")
private String mobile;
@Schema(name ="邮箱")
private String email;
@Schema(name ="主页")
private String website;
@Schema(name ="地址")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
}

View File

@ -0,0 +1,51 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: DepartmentPageVo
* @Author tzx
* @Date: 2022/4/4 16:38
* @Version 1.0
*/
@Data
public class DepartmentPageVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
@Schema(name ="机构名称")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
private String code;
@Schema(name ="电话")
private String mobile;
@Schema(name ="邮箱")
private String email;
@Schema(name ="主页")
private String website;
@Schema(name ="地址")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
}

View File

@ -0,0 +1,73 @@
package com.xjrsoft.organization.vo;
import com.xjrsoft.common.core.domain.tree.ITreeNode;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @title: DepartmentTreeVo
* @Author tzx
* @Date: 2022/4/5 21:47
* @Version 1.0
*/
@Data
public class DepartmentTreeVo implements ITreeNode<DepartmentTreeVo,Long>, Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
private Long parentId;
@Schema(name ="编码")
private String code;
@Schema(name ="电话")
private String mobile;
@Schema(name ="邮箱")
private String email;
@Schema(name ="主页")
private String website;
@Schema(name ="地址")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
private Integer enabledMark;
private Boolean disabled;
public Boolean getDisabled() {
return this.enabledMark != null && this.enabledMark == 1;
}
private List<DepartmentTreeVo> children;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
@Schema(description ="对应企业微信部门id")
private Long wechatDeptId;
@Schema(description ="对应钉钉部门id")
private Long dingtalkDeptId;
private String dingAgentId;
private String dingAppKey;
private String dingAppSecret;
}

View File

@ -0,0 +1,127 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @title: DepartmentVo
* @Author tzx
* @Date: 2022/4/4 16:41
* @Version 1.0
*/
@Data
public class DepartmentVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
@Schema(name ="机构名称")
private String name;
@Schema(name ="机构名称")
private Long parentId;
@Schema(name ="编码")
private String code;
@Schema(name ="电话")
private String mobile;
@Schema(name ="邮箱")
private String email;
@Schema(name ="主页")
private String website;
@Schema(name ="地址")
private String address;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="组织类别1公司0部门")
private Integer departmentType;
@Schema(name ="简称")
private String shortName;
@Schema(name ="组织性质-数据字典id")
private Long departmentNature;
@Schema(name ="成立时间")
private LocalDateTime establishedTime;
@Schema(name ="管理人-用户id")
private Long custodian;
// @Schema(name ="管理人-用户name")
// private String custodianName;
@Schema(name ="传真")
private String facsimile;
@Schema(name ="行政正职领导-用户id")
private Long administrativeLeader;
@Schema(name ="党委正职领导-用户id")
private Long partyCommitteeLeader;
@Schema(name ="部门领导-ids")
private String departmentLeaders;
@Schema(name ="上级分管领导-ids")
private String chargeOfLeaders;
// @Schema(name ="部门领导-names")
// private String departmentLeaderNames;
//
// @Schema(name ="上级分管领导-names")
// private String chargeOfLeaderNames;
@Schema(name ="部门标签-数据字典id")
private String departmentLabel;
@Schema(name ="分机号")
private String extensionNumber;
@Schema(name ="所属行业 - 数据字典id")
private Long industry;
@Schema(name ="公司法人")
private String corporateLegalPerson;
@Schema(name ="联系手机")
private String phoneNumber;
@Schema(name ="联系电话")
private String contactNumber;
@Schema(name ="开户银行")
private String depositBank;
@Schema(name ="银行账户")
private String bankAccount;
@Schema(name ="经营范围")
private String businessScope;
@Schema(description = "对应企业微信部门id")
private Long wechatDeptId;
@Schema(description = "对应钉钉部门id")
private Long dingtalkDeptId;
private String dingAgentId;
private String dingAppKey;
private String dingAppSecret;
}

View File

@ -0,0 +1,27 @@
package com.xjrsoft.organization.vo;
public class LoginVo {
private UserInfoVo userInfoVo;
private String token;
public UserInfoVo getUserInfoVo() {
return userInfoVo;
}
public void setUserInfoVo(UserInfoVo userInfoVo) {
this.userInfoVo = userInfoVo;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}

View File

@ -0,0 +1,22 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class OnlineUsersPageVo {
private Long id;
private String userName;
private String name;
private String departmentNames;
private String onlineTime;
private LocalDateTime loginTime;
}

View File

@ -0,0 +1,36 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: PostListVo
* @Author tzx
* @Date: 2022/4/4 17:55
* @Version 1.0
*/
@Data
public class PostListVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="父级id")
private Long parentId;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
}

View File

@ -0,0 +1,39 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: PostPageVo
* @Author tzx
* @Date: 2022/4/4 17:56
* @Version 1.0
*/
@Data
public class PostPageVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="父级id")
private Long parentId;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
}

View File

@ -0,0 +1,34 @@
package com.xjrsoft.organization.vo;
import com.xjrsoft.common.core.domain.tree.ITreeNode;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PostTreeVo implements ITreeNode<PostTreeVo,Long>, Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="父级id")
private Long parentId;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
private Integer enabledMark;
private List<PostTreeVo> children;
}

View File

@ -0,0 +1,37 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: PostVo
* @Author tzx
* @Date: 2022/4/4 17:58
* @Version 1.0
*/
@Data
public class PostVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="id")
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="父级id")
private Long parentId;
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
}

View File

@ -0,0 +1,45 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: RoleListVo
* @Author tzx
* @Date: 2022/4/4 18:24
* @Version 1.0
*/
@Data
public class RoleListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="数据权限")
private Integer dataAuthType;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
@Schema(name ="人数")
private Long count;
}

View File

@ -0,0 +1,41 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: RolePageVo
* @Author tzx
* @Date: 2022/4/4 18:25
* @Version 1.0
*/
@Data
public class RolePageVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="数据权限")
private Integer dataAuthType;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
}

View File

@ -0,0 +1,40 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @title: RoleVo
* @Author tzx
* @Date: 2022/4/4 18:26
* @Version 1.0
*/
@Data
public class RoleVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name ="id")
private Long id;
@Schema(name ="名字")
private String name;
@Schema(name ="编码")
private String code;
@Schema(name ="数据权限")
private Integer dataAuthType;
@Schema(name ="排序号")
private Integer sortCode;
@Schema(name ="备注")
private String remark;
@Schema(name ="启用状态")
private Integer enabledMark;
}

View File

@ -0,0 +1,29 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
/**
* @Author: tzx
* @Date: 2023/4/20 18:47
*/
@Data
public class SwitchPostVo {
/**
* 当前登录岗位id
*/
private Long postId;
/**
* 当前登录岗位名
*/
private String postName;
/**
* 当前登录组织id
*/
private Long departmentId;
/**
* 当前登录组织名
*/
private String departmentName;
}

View File

@ -0,0 +1,21 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
@Data
public class SyncOrgAndUserFromDataCenterPageVo extends SyncOrgAndUserFromDataCenterParamVo {
private Integer pageSize;
private Integer pageIndex;
private String nextToken;
public SyncOrgAndUserFromDataCenterPageVo(Integer pageSize){
this.pageSize = pageSize;
}
public SyncOrgAndUserFromDataCenterPageVo(Integer pageSize, Integer pageIndex, String nextToken) {
this.pageSize = pageSize;
this.pageIndex = pageIndex;
this.nextToken = nextToken;
}
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class SyncOrgAndUserFromDataCenterParamVo implements Serializable {
private static final long serialVersionUID = 1L;
private String code ;
private String type ;
private String fieldName ;
private String fieldType ;
private String operateCode ;
private String fieldValue ;
}

View File

@ -0,0 +1,24 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: tzx
* @Date: 2023/4/20 15:47
*/
@Data
public class UserDeptVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(name = "用户ID")
private Long id;
@Schema(name = "账户")
private String userName;
@Schema(name = "姓名")
private String name;
@Schema(name = "部门名称")
private String deptName;
}

View File

@ -0,0 +1,108 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
public class UserInfoVo {
private static final long serialVersionUID = 1L;
/**
* 账户
*/
private String id;
/**
* 账户
*/
private String userName;
/**
* 姓名
*/
private String name;
/**
* 编号
*/
private String code;
/**
* 昵称
*/
private String nickName;
/**
* 地址
*/
private String address;
/**
* 备注
*/
private String remark;
/**
* 密码
*/
// private String password;
/**
* 性别
*/
private Integer gender;
/**
* 手机号
*/
private String mobile;
/**
* 角色名称
*/
private String postName;
/**
* 头像
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 主页
*/
private String homePath;
private String tenantId;
private String tenantName;
private String tenantCode;
private List<UserTenantVo> tenants;
/**
* 所有部门信息
*/
private List<UserDeptVo> departments;
/**
* 角色
*/
private List<UserRoleVo> roles;
/**
* 所有岗位信息
*/
private List<UserPostVo> posts;
/**
* 负责的部门信息
*/
private List<UserDeptVo> chargeDepartments;
}

View File

@ -0,0 +1,113 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户
* </p>
*
* @author tzx
* @since 2021-09-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class UserListVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 账户
*/
private String id;
/**
* 账户
*/
private String userName;
/**
* 姓名
*/
private String name;
/**
* 编号
*/
private String code;
/**
* 昵称
*/
private String nickName;
/**
* 密码
*/
private String password;
/**
* 性别
*/
private Integer gender;
/**
* 手机号
*/
private String mobile;
/**
* 角色Id
*/
private Long postId;
/**
* 头像
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 经度
*/
private Double longitude;
/**
* 纬度
*/
private Double latitude;
/**
* 排序码
*/
private Integer sortCode;
/**
* 排序码
*/
private String remark;
private String departmentId;
private Integer enabledMark;
private LocalDateTime createDate;
private LocalDateTime modifyDate;
}

View File

@ -0,0 +1,30 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @author hnyyzy
* @version 1.0
* @date 2024/1/24 13:45
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class UserOrganizationInfoVo {
/**
* 所有部门信息
*/
private List<String> departmentNameList;
/**
* 角色
*/
private List<String> roleNameList;
/**
* 所有部门信息
*/
private List<String> postNameList;
}

View File

@ -0,0 +1,113 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @title: UserPageVo
* @Author tzx
* @Date: 2022/4/4 17:02
* @Version 1.0
*/
@Data
public class UserPageVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long id;
/**
* 账户
*/
private String userName;
/**
* 姓名
*/
private String name;
/**
* 编号
*/
private String code;
/**
* 昵称
*/
private String nickName;
/**
* 密码
*/
private String password;
/**
* 性别
*/
private Integer gender;
/**
* 手机号
*/
private String mobile;
/**
* 头像
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 经度
*/
private Double longitude;
/**
* 纬度
*/
private Double latitude;
/**
* 排序码
*/
private Integer sortCode;
/**
* 排序码
*/
private String remark;
private Integer enabledMark;
private LocalDateTime createDate;
private LocalDateTime modifyDate;
private String departmentName;
/**
* 对应企业微信用户id
*/
private String wechatUserId;
/**
* 对应钉钉用户id
*/
private String dingtalkUserId;
}

View File

@ -0,0 +1,23 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class UserPostVo {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 岗位名
*/
private String name;
/**
* 编码
*/
private String code;
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class UserRoleVo {
private static final long serialVersionUID = 1L;
/**
* 角色名
*/
private String id;
/**
* 角色名
*/
private String name;
/**
* 编码
*/
private String code;
private Integer gender;
}

View File

@ -0,0 +1,23 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class UserTenantVo {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 编码
*/
private String code;
}

View File

@ -0,0 +1,167 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* @title: UserVo
* @Author tzx
* @Date: 2022/4/4 17:10
* @Version 1.0
*/
@Data
public class UserVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 账户
*/
private String userName;
/**
* 姓名
*/
private String name;
/**
* 编号
*/
private String code;
/**
* 昵称
*/
private String nickName;
/**
* 密码
*/
/*private String password;*/
/**
* 性别
*/
private Integer gender;
/**
* 手机号
*/
private String mobile;
/**
* 角色Id
*/
private String postId;
/**
* 头像
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 经度
*/
private Double longitude;
/**
* 纬度
*/
private Double latitude;
/**
* 排序码
*/
private Integer sortCode;
/**
* 排序码
*/
private String remark;
// private String departmentId;
private String departmentIds;
private Integer enabledMark;
private LocalDateTime createDate;
private LocalDateTime modifyDate;
@Schema(name ="微信号码")
private String wechatNumber;
@Schema(name ="qq号码")
private String qqNumber;
@Schema(name ="生日")
private LocalDateTime birthDate;
@Schema(name ="是否开启密码验证")
private Integer passwordAuthentication;
@Schema(name ="电话号码")
private String phoneNumber;
@Schema(name ="身份证号")
private String identityCardNumber;
@Schema(name ="政治面貌-数据字典id")
private Long politicsStatus;
@Schema(name ="行政职务-数据字典id")
private Long administrativePost;
@Schema(name ="行政职级-数据字典id")
private Long administrativeRank;
@Schema(name ="用户密级-数据字典id")
private Long secretLevel;
@Schema(name ="职称等级-数据字典id")
private Long professionalTitleGrade;
@Schema(name ="技术职务-数据字典id")
private Long technicalPosition;
@Schema(name ="管理职务-数据字典id")
private Long managerialPosition;
@Schema(name ="职业技能-数据字典id")
private Long vocationalSkill;
@Schema(name ="绑定ip")
private String bindIp;
/**
* 角色
*/
private List<UserRoleVo> roles;
/**
* 所有岗位信息
*/
private List<UserPostVo> posts;
/**
* 负责的部门信息
*/
private List<UserDeptVo> chargeDepartments;
}

View File

@ -0,0 +1,18 @@
package com.xjrsoft.organization.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class WeChatDepartPageVO implements Serializable {
@Schema(name ="机构名称")
private String name;
@Schema(name ="编码")
private String sortCode;
@Schema(name ="备注")
private String remark;
}

View File

@ -0,0 +1,21 @@
package com.xjrsoft.organization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class WeChatPageVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 姓名
*/
private String name;
/**
* 备注
*/
private String remark;
private String sortCode;
}