大调整

This commit is contained in:
zhangchenbiao
2023-06-08 15:57:28 +08:00
parent 8e866554a1
commit 071725fb3d
44 changed files with 740 additions and 2352 deletions

View File

@@ -2,16 +2,20 @@ package com.cool.store.dto.enterprise;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.enums.UserStatusEnum;
import com.cool.store.utils.UUIDUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
*
@@ -24,12 +28,6 @@ import java.util.List;
@AllArgsConstructor
public class EnterpriseUserDTO implements Serializable {
@ApiModelProperty("分机号")
private String tel;
@ApiModelProperty("")
private String workPlace;
@ApiModelProperty("备注")
private String remark;
@@ -39,21 +37,18 @@ public class EnterpriseUserDTO implements Serializable {
@ApiModelProperty("钉钉用户id")
private String userId;
@ApiModelProperty("手机号码")
private String mobile;
@ApiModelProperty("")
private String name;
@ApiModelProperty("是否已经激活, true表示已激活, false表示未激活")
private Boolean active;
@ApiModelProperty("是否是主管理员01")
private Byte mainAdmin;
private Boolean mainAdmin;
@ApiModelProperty("是否为企业的管理员, true表示是, false表示不是")
private Boolean isAdmin;
@ApiModelProperty("手机号码")
private String mobile;
@ApiModelProperty("员工的电子邮箱")
private String email;
@@ -63,18 +58,12 @@ public class EnterpriseUserDTO implements Serializable {
@ApiModelProperty("是否号码隐藏, true表示隐藏, false表示不隐藏")
private Boolean isHide;
@ApiModelProperty("")
private String position;
@ApiModelProperty("职务")
private String jobTitle;
@ApiModelProperty("员工的企业邮箱")
private String orgEmail;
@ApiModelProperty("是否为企业的老板, true表示是, false表示不是")
private Boolean isBoss;
@ApiModelProperty("钉钉Id,在钉钉全局范围内标识用户的身份,但用户可以自行修改一次")
private String dingid;
@ApiModelProperty("头像url")
private String avatar;
@@ -84,12 +73,6 @@ public class EnterpriseUserDTO implements Serializable {
@ApiModelProperty("是否是部门的主管, true表示是, false表示不是")
private Boolean isLeader;
@ApiModelProperty("扩展属性,可以设置多种属性(但手机上最多只能显示10个扩展属性具体显示哪些属性请到OA管理后台->设置->通讯录信息设置和OA管理后台->设置->手机端显示信息设置)性")
private String extattr;
@ApiModelProperty("")
private Boolean isEnterprise;
@ApiModelProperty("用户创建时间")
private Date createTime;
@@ -102,15 +85,6 @@ public class EnterpriseUserDTO implements Serializable {
@ApiModelProperty("")
private List<String> isLeaderInDepts;
@ApiModelProperty("用户语言环境:en_us/英语_美国,zh_cn/中文_简体,zh_hk/中文_繁体_HK")
private String language;
@ApiModelProperty("用户来源默认dingding钉钉,qw企业微信 mobile")
private String appType;
@ApiModelProperty("登录密码")
private String password;
@ApiModelProperty("")
private String monitoredDepartments;
@@ -122,53 +96,49 @@ public class EnterpriseUserDTO implements Serializable {
@ApiModelProperty("")
private List<String> departmentLists;
/**
* 管理范围
*/
private List<Long> scopeList;
private List<Long> storeList;
public static EnterpriseUserDO transUserDtoToDo(EnterpriseUserDTO enterpriseUserDTO) {
EnterpriseUserDO enterpriseUserDO = new EnterpriseUserDO();
enterpriseUserDO.setRemark(enterpriseUserDTO.getRemark());
enterpriseUserDO.setPosition(enterpriseUserDTO.getPosition());
enterpriseUserDO.setMobile(enterpriseUserDTO.getMobile());
enterpriseUserDO.setId(UUIDUtils.get32UUID());
enterpriseUserDO.setUserId(enterpriseUserDTO.getUserId());
enterpriseUserDO.setName(enterpriseUserDTO.getName());
enterpriseUserDO.setEmail(enterpriseUserDTO.getEmail());
enterpriseUserDO.setOrgEmail(enterpriseUserDTO.getOrgEmail());
enterpriseUserDO.setUnionid(enterpriseUserDTO.getUnionid());
enterpriseUserDO.setAvatar(enterpriseUserDTO.getAvatar());
enterpriseUserDO.setCreateTime(new Date());
enterpriseUserDO.setJobnumber(enterpriseUserDTO.getJobnumber());
return enterpriseUserDO;
}
public static EnterpriseUserDO convertEnterpriseUserDTO2EnterpriseUserDO(EnterpriseUserDTO dto){
if(dto == null){
return null;
public static List<EnterpriseUserDO> transUserDtoToDo(List<EnterpriseUserDTO> userList, Map<String, String> regionPathMap, Multimap<String, String> leaderDeptMap, Multimap<String, String> roleUserMap) {
if(CollectionUtils.isEmpty(userList)){
return Lists.newArrayList();
}
EnterpriseUserDO enterpriseUserDO = new EnterpriseUserDO();
enterpriseUserDO.setName(dto.getName());
enterpriseUserDO.setId(dto.getId());
enterpriseUserDO.setUserId(dto.getUserId());
enterpriseUserDO.setRemark(dto.getRemark());
enterpriseUserDO.setMobile(dto.getMobile());
enterpriseUserDO.setEmail(dto.getEmail());
enterpriseUserDO.setOrgEmail(dto.getOrgEmail());
enterpriseUserDO.setIsAdmin(dto.getIsAdmin());
enterpriseUserDO.setUnionid(dto.getUnionid());
enterpriseUserDO.setPosition(dto.getPosition());
enterpriseUserDO.setAvatar(dto.getAvatar());
enterpriseUserDO.setIsLeader(dto.getIsLeader());
enterpriseUserDO.setCreateTime(dto.getCreateTime());
enterpriseUserDO.setJobnumber(dto.getJobnumber());
return enterpriseUserDO;
List<EnterpriseUserDO> resultList = new ArrayList<>();
for (EnterpriseUserDTO user : userList) {
EnterpriseUserDO enterpriseUserDO = new EnterpriseUserDO();
enterpriseUserDO.setId(UUIDUtils.get32UUID());
enterpriseUserDO.setUserId(user.getUserId());
enterpriseUserDO.setName(user.getName());
enterpriseUserDO.setRemark(user.getRemark());
enterpriseUserDO.setMobile(user.getMobile());
enterpriseUserDO.setEmail(user.getEmail());
enterpriseUserDO.setOrgEmail(user.getOrgEmail());
enterpriseUserDO.setMainAdmin(user.getMainAdmin());
enterpriseUserDO.setIsAdmin(user.getIsAdmin());
enterpriseUserDO.setUnionid(user.getUnionid());
enterpriseUserDO.setAvatar(user.getAvatar());
enterpriseUserDO.setJobnumber(user.getJobnumber());
enterpriseUserDO.setUserStatus(UserStatusEnum.NORMAL.getCode());
enterpriseUserDO.setIsLeader(Boolean.FALSE);
List<String> departmentLists = user.getDepartmentLists();
List<String> regionPaths = new ArrayList<>();
if(CollectionUtils.isNotEmpty(departmentLists)){
for (String departmentId : departmentLists) {
regionPaths.add(regionPathMap.get(departmentId));
}
}
Collection<String> deptIds = leaderDeptMap.get(user.getUserId());
if(CollectionUtils.isNotEmpty(deptIds)){
enterpriseUserDO.setIsLeader(Boolean.TRUE);
enterpriseUserDO.setLeaderDeptIds(JSONObject.toJSONString(deptIds));
}
enterpriseUserDO.setUserRegionIds(JSONObject.toJSONString(regionPaths));
enterpriseUserDO.setDeleted(Boolean.FALSE);
enterpriseUserDO.setCreateTime(new Date());
if(StringUtils.isNotBlank(user.getJobTitle())){
roleUserMap.put(user.getJobTitle(), user.getUserId());
}
resultList.add(enterpriseUserDO);
}
return resultList;
}
}

View File

@@ -1,10 +1,15 @@
package com.cool.store.dto.enterprise;
import com.cool.store.constants.CommonConstants;
import com.cool.store.entity.RegionDO;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -82,7 +87,7 @@ public class SysDepartmentDTO {
/**
* 部门的主管列表,取值为由主管的userid组成的字符串不同的userid使用|符号进行分割
*/
private String deptManagerUseridList;
private List<String> deptManagerUseridList;
/**
@@ -105,6 +110,8 @@ public class SysDepartmentDTO {
*/
private String subIds;
private String leaderUserId;
public SysDepartmentDTO() {
@@ -182,4 +189,42 @@ public class SysDepartmentDTO {
public int hashCode() {
return Objects.hash(id);
}
public static List<RegionDO> convertRegionDO(List<SysDepartmentDTO> departmentList, Multimap<String, String> leaderDeptMap){
if(CollectionUtils.isEmpty(departmentList)){
return Lists.newArrayList();
}
Map<String, String> parentMap = departmentList.stream().collect(Collectors.toMap(SysDepartmentDTO::getId, SysDepartmentDTO::getParentId));
List<RegionDO> resultList = new ArrayList<>();
for (SysDepartmentDTO dept : departmentList) {
RegionDO region = new RegionDO();
region.setRegionId(dept.getId());
region.setName(dept.getName());
region.setParentId(dept.getParentId());
region.setUnclassifiedFlag(CommonConstants.ZERO);
region.setLeaderUserId(dept.getLeaderUserId());
region.setOrderNum(dept.getDepartOrder());
region.setThirdDeptId(dept.getId());
region.setCreateTime(System.currentTimeMillis());
region.setUpdateTime(System.currentTimeMillis());
List<String> pathIds = new ArrayList<>();
pathIds.add(region.getRegionId());
String parentId = parentMap.get(region.getRegionId());
while (Objects.nonNull(parentId)){
pathIds.add(parentId);
parentId = parentMap.get(parentId);
}
Collections.reverse(pathIds);
String regionPath = CommonConstants.PATH_SPILT + String.join(CommonConstants.PATH_SPILT, pathIds) + CommonConstants.PATH_SPILT;
region.setRegionPath(regionPath);
region.setDeleted(Boolean.TRUE);
if(CollectionUtils.isNotEmpty(dept.getDeptManagerUseridList())){
for (String leader : dept.getDeptManagerUseridList()) {
leaderDeptMap.put(leader, dept.getId());
}
}
resultList.add(region);
}
return resultList;
}
}

View File

@@ -1,99 +0,0 @@
package com.cool.store.dto.region;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author byd
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegionDTO {
/**
* 自增ID
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 父ID
*/
private String parentId;
/**
* dinging部门id
*/
private String synDingDeptId;
/**
* 是否删除标记
*/
private Boolean deleted;
/**
* 区域门店数量
*/
private Integer storeNum;
/**
* 区域门店范围是否
*/
private Boolean storeRange = false;
/**
* 门店地址 非DO
*/
private String address;
/**
* 门店经度 非DO
*/
private String longitude;
/**
* 纬度 非DO
*/
private String latitude;
/**
* 门店编号 非DO
*/
private String storeCode;
/**
* 大区名称
*/
private String zoneName;
/**
* brand 主品牌
*/
private String brand;
/**
* 管理分区
*/
private String mangerCity;
/**
* 经营城市
*/
private String bizCity;
/**
* 省区
*/
private String provinceName;
}

View File

@@ -1,100 +0,0 @@
package com.cool.store.dto.region;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
/**
* @ClassName RegionNode
* @Description 用一句话描述什么
*/
@Data
public class RegionNode {
/**
* 自增ID
*/
private Long id;
/**
* 区域ID
*/
private String regionId;
/**
* 名称
*/
private String name;
/**
* 父ID
*/
private String parentId;
private String parentName;
/**
* 分组ID
*/
private String groupId;
/**
* 创建时间
*/
private Long createTime;
/**
* 创建人
*/
private String createName;
/**
* 更新时间
*/
private Long updateTime;
/**
* 更新人
*/
private String updateName;
/**
* 子节点
*/
private List<RegionNode> children;
/**
* 是否有区域权限
*/
private Boolean isAuth;
/**
* 门店数量
*/
private Long storeCount;
/**
* dinging部门id
*/
private String synDingDeptId;
/**
* root path store
*/
private String regionType;
/**
* 路径
*/
private String regionPath;
private String fullRegionPath;
public String getFullRegionPath() {
if(id != null && id == 1L){
return "/1/";
}
if (StringUtils.isNotBlank(regionPath)) {
return regionPath + id + "/";
} else {
return "/" + id + "/";
}
}
}

View File

@@ -1,27 +0,0 @@
package com.cool.store.dto.region;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author 邵凌志
* @date 2020/12/22 13:48
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegionPathDTO {
private String regionId;
private String regionPath;
private Integer storeNum;
private String regionName;
private String regionType;
}

View File

@@ -1,21 +0,0 @@
package com.cool.store.dto.region;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
/**
* describe:
*
* @author zhouyiping
* @date 2021/05/31
*/
@Data
@AllArgsConstructor
public class RegionStoreNumMsgDTO {
private String eid;
private List<Long> regionIdList;
public RegionStoreNumMsgDTO(){}
}

View File

@@ -1,25 +0,0 @@
package com.cool.store.dto.region;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author 邵凌志
* @date 2020/12/22 13:48
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegionSyncDTO {
/**
* 区域id
*/
private Long id;
/**
* 区域钉钉id
*/
private String synDingDeptId;
}

View File

@@ -48,9 +48,6 @@ public class EnterpriseUserDO implements Serializable {
@ApiModelProperty("在当前isv全局范围内唯一标识一个用户的身份,用户无法修改")
private String unionid;
@ApiModelProperty("")
private String position;
@ApiModelProperty("头像url")
private String avatar;
@@ -60,6 +57,9 @@ public class EnterpriseUserDO implements Serializable {
@ApiModelProperty("是否是部门的主管, true表示是, false表示不是")
private Boolean isLeader;
@ApiModelProperty("管理的部门列表")
private String leaderDeptIds;
@ApiModelProperty("人脸照片url")
private String faceUrl;

View File

@@ -1,36 +1,60 @@
package com.cool.store.entity;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
/**
*
* @author zhangchenbiao
* @date 2023-05-19 02:59
* @date 2023-06-08 10:54
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EnterpriseUserRoleDO implements Serializable {
@ApiModelProperty("主键id")
private Integer id;
@ApiModelProperty("角色id")
private Long roleId;
private String roleId;
@ApiModelProperty("用户id")
private String userId;
@ApiModelProperty("删除标识")
private Boolean deleted;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新时间")
private Date updateTime;
public static List<EnterpriseUserRoleDO> convertDO(String roleId, List<String> userIds){
if(CollectionUtils.isEmpty(userIds)){
return Lists.newArrayList();
}
List<EnterpriseUserRoleDO> resultList = new ArrayList<>();
for (String userId : userIds) {
EnterpriseUserRoleDO userRole = new EnterpriseUserRoleDO();
userRole.setRoleId(roleId);
userRole.setUserId(userId);
userRole.setDeleted(Boolean.FALSE);
userRole.setCreateTime(new Date());
userRole.setUpdateTime(new Date());
resultList.add(userRole);
}
return resultList;
}
}

View File

@@ -1,29 +0,0 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
*
* @author zhangchenbiao
* @date 2023-05-23 03:46
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LoginRecordDO implements Serializable {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("用户ID")
private String userId;
@ApiModelProperty("创建时间")
private Long createTime;
}

View File

@@ -6,19 +6,17 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
/**
*
* @author zhangchenbiao
* @date 2023-05-19 02:59
* @date 2023-06-07 02:07
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RegionDO implements Serializable {
@ApiModelProperty("自增ID")
private Long id;
@@ -31,8 +29,20 @@ public class RegionDO implements Serializable {
@ApiModelProperty("父区域id")
private String parentId;
@ApiModelProperty("阿里云分组id")
private String groupId;
@ApiModelProperty("区域路径")
private String regionPath;
@ApiModelProperty("未分组标志 0 分组 1 未分组")
private Integer unclassifiedFlag;
@ApiModelProperty("部门负责人")
private String leaderUserId;
@ApiModelProperty("排序")
private Integer orderNum;
@ApiModelProperty("第三方唯一id")
private String thirdDeptId;
@ApiModelProperty("创建时间")
private Long createTime;
@@ -46,67 +56,6 @@ public class RegionDO implements Serializable {
@ApiModelProperty("更新人")
private String updateName;
@ApiModelProperty("vds分组id")
private String vdsGroupCorpId;
@ApiModelProperty("dinging部门id")
private String synDingDeptId;
@ApiModelProperty("区域类型 root 根目录 path 区域 store 门店")
private String regionType;
@ApiModelProperty("区域路径")
private String regionPath;
@ApiModelProperty("删除标记")
private Boolean deleted;
@ApiModelProperty("门店数量")
private Integer storeNum;
@ApiModelProperty("门店ID")
private String storeId;
@ApiModelProperty("未分组标志 0 分组 1 未分组")
private Integer unclassifiedFlag;
@ApiModelProperty("排序")
private Integer orderNum;
@ApiModelProperty("第三方唯一id")
private String thirdDeptId;
private Boolean storeRange = false;
/**
* 门店地址 非DO
*/
private String address;
/**
* 门店经度 非DO
*/
private String longitude;
/**
* 纬度 非DO
*/
private String latitude;
/**
* 门店编号 非DO
*/
private String storeCode;
public String getFullRegionPath() {
if(id != null && id == 1L){
return "/1/";
}
if (StringUtils.isNotBlank(regionPath)) {
return regionPath + id + "/";
} else {
return "/" + id + "/";
}
}
}

View File

@@ -1,79 +0,0 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @author zhangchenbiao
* @date 2023-05-19 03:00
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysDepartmentDO implements Serializable {
@ApiModelProperty("主键id")
private String id;
@ApiModelProperty("部门名称")
private String name;
@ApiModelProperty("parent_id")
private String parentId;
@ApiModelProperty("在父部门中的次序值")
private Integer departOrder;
@ApiModelProperty("是否同步创建一个关联此部门的企业群, true表示是, false表示不是")
private Boolean createDeptGroup;
@ApiModelProperty("当群已经创建后,是否有新人加入部门会自动加入该群, true表示是, false表示不是")
private Boolean autoAddUser;
@ApiModelProperty("是否隐藏部门, true表示隐藏, false表示显示")
private Boolean depHiding;
@ApiModelProperty("可以查看指定隐藏部门的其他部门列表如果部门隐藏则此值生效取值为其他的部门id组成的的字符串使用|符号进行分割")
private String deptPerimits;
@ApiModelProperty("可以查看指定隐藏部门的其他人员列表如果部门隐藏则此值生效取值为其他的人员userid组成的的字符串使用|符号进行分割")
private String userPerimits;
@ApiModelProperty("是否本部门的员工仅可见员工自己, 为true时本部门员工默认只能看到员工自己")
private Boolean outerDept;
@ApiModelProperty("本部门的员工仅可见员工自己为true时可以配置额外可见部门值为部门id组成的的字符串使用|符号进行分割")
private String outerPermitDepts;
@ApiModelProperty("本部门的员工仅可见员工自己为true时可以配置额外可见人员值为userid组成的的字符串使用| 符号进行分割")
private String outerPermitUsers;
@ApiModelProperty("企业群群主")
private String orgDeptOwner;
@ApiModelProperty("部门的主管列表,取值为由主管的userid组成的字符串不同的userid使用|符号进行分割")
private String deptManagerUseridList;
@ApiModelProperty("部门下总人数(包括子部门)")
private Integer userCount;
@ApiModelProperty("部门下未激活总人数(包括子部门)")
private Integer unactiveUserCount;
@ApiModelProperty("部门所有父级部门id, 不包括自己, 以/分隔")
private String parentIds;
@ApiModelProperty("部门所有子部门id,以英文逗号分隔")
private String subIds;
/**
* 是否是叶子节点
*/
private Boolean isLeaf;
}