Forráskód Böngészése

新增定时任务:同步人员信息和部门信息,修改字段类型

王先生 3 éve
szülő
commit
a1f864d133
48 módosított fájl, 602 hozzáadás és 174 törlés
  1. 26 0
      eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java
  2. 2 2
      eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java
  3. 37 3
      eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java
  4. 33 18
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/domain/DmUser.java
  5. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/repository/DmUserRepository.java
  6. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/rest/DmUserController.java
  7. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/DmUserService.java
  8. 19 1
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserDto.java
  9. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserQueryCriteria.java
  10. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/impl/DmUserServiceImpl.java
  11. 277 0
      eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/UserTask.java
  12. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java
  13. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java
  14. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java
  15. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java
  16. 16 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java
  17. 5 5
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java
  18. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java
  19. 5 5
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java
  20. 7 7
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java
  21. 9 9
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java
  22. 4 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java
  23. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java
  24. 7 7
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java
  25. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java
  26. 4 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java
  27. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/DataService.java
  28. 4 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java
  29. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java
  30. 4 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java
  31. 6 6
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java
  32. 4 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java
  33. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java
  34. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java
  35. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java
  36. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java
  37. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java
  38. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java
  39. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java
  40. 9 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java
  41. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java
  42. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java
  43. 10 10
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java
  44. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java
  45. 16 14
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java
  46. 9 9
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java
  47. 7 7
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java
  48. 36 0
      eladmin-system/src/main/resources/application.properties

+ 26 - 0
eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java

@@ -21,6 +21,7 @@ import javax.crypto.SecretKeyFactory;
 import javax.crypto.spec.DESKeySpec;
 import javax.crypto.spec.IvParameterSpec;
 import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
 
 /**
  * 加密
@@ -97,4 +98,29 @@ public class EncryptUtils {
         }
         return b2;
     }
+    /**
+     * @return
+     * @Comment SHA1 加密
+     */
+    public static String sha1(String str) {
+        MessageDigest sha = null;
+        try {
+            sha = MessageDigest.getInstance("SHA");
+            byte[] byteArray = str.getBytes("UTF-8");
+            byte[] md5Bytes = sha.digest(byteArray);
+            StringBuffer hexValue = new StringBuffer();
+            for (int i = 0; i < md5Bytes.length; i++) {
+                int val = ((int) md5Bytes[i]) & 0xff;
+                if (val < 16) {
+                    hexValue.append("0");
+                }
+                hexValue.append(Integer.toHexString(val));
+            }
+            return hexValue.toString();
+        } catch (Exception e) {
+            System.out.println(e.toString());
+            e.printStackTrace();
+            return "";
+        }
+    }
 }

+ 2 - 2
eladmin-common/src/main/java/me/zhengjie/utils/RedisUtils.java

@@ -693,9 +693,9 @@ public class RedisUtils {
      * @param prefix 前缀
      * @param ids    id
      */
-    public void delByKeys(String prefix, Set<Long> ids) {
+    public void delByKeys(String prefix, Set<String> ids) {
         Set<Object> keys = new HashSet<>();
-        for (Long id : ids) {
+        for (String id : ids) {
             keys.addAll(redisTemplate.keys(new StringBuffer(prefix).append(id).toString()));
         }
         long count = redisTemplate.delete(keys);

+ 37 - 3
eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java

@@ -26,7 +26,9 @@ import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
-import java.util.List;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * 获取当前登录的用户
@@ -66,9 +68,9 @@ public class SecurityUtils {
      * 获取系统用户ID
      * @return 系统用户ID
      */
-    public static Long getCurrentUserId() {
+    public static String getCurrentUserId() {
         UserDetails userDetails = getCurrentUser();
-        return new JSONObject(new JSONObject(userDetails).get("user")).get("id", Long.class);
+        return new JSONObject(new JSONObject(userDetails).get("user")).get("id", String.class);
     }
 
     /**
@@ -92,4 +94,36 @@ public class SecurityUtils {
         }
         return DataScopeEnum.ALL.getValue();
     }
+    /**
+     * 根据key获取token
+     */
+    public static Map<String,Object> getToken(String key){
+        //获取11位随机数
+        double rand = Math.random();
+        String randStr = String.valueOf(rand).replace("0.", "");
+        String nonce = randStr.substring(0, 11);
+        System.out.println("nonce:"+nonce);
+        //获取当前时间
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        sdf.applyPattern("yyyy-MM-dd HH:mm");
+        Date date = new Date();
+        String timestamp =sdf.format(date);
+        System.out.println("timestamp:"+timestamp);
+        //排序
+        String[] arr = {key, timestamp, nonce};
+        Arrays.sort(arr);
+        //获取token
+        String str = "";
+        for (int i = 0; i < arr.length; i++) {
+            str += arr[i];
+        }
+        String token = EncryptUtils.sha1(str);
+        System.out.println("token:"+token);
+        Map<String,Object> data = new HashMap<String, Object>(1) {{
+            put("nonce", nonce);
+            put("timestamp", timestamp);
+            put("token", token);
+        }};
+        return data;
+    }
 }

+ 33 - 18
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/domain/DmUser.java

@@ -48,11 +48,11 @@ public class DmUser extends BaseEntity implements Serializable {
     @Column(name = "id")
     @NotNull(groups = BaseEntity.Update.class)
     @ApiModelProperty(value = "id")
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
+//    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private String id;
 
     @Column(name = "name",nullable = false)
-    @NotBlank
+//    @NotBlank
     @ApiModelProperty(value = "姓名")
     private String name;
 
@@ -65,7 +65,7 @@ public class DmUser extends BaseEntity implements Serializable {
     private String contacts;
 
     @Column(name = "email",nullable = false)
-    @NotBlank
+//    @NotBlank
     @ApiModelProperty(value = "邮箱")
     private String email;
 
@@ -92,23 +92,38 @@ public class DmUser extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否是审批人")
     private Boolean isApprover = false;
 
-    /*@Column(name = "create_by")
-    @ApiModelProperty(value = "创建者")
-    private String createBy;
+    @Column(name = "usertype",nullable = false)
+    @ApiModelProperty(value = "人员种类(00-正式人员、01-外协单位、02-租户、03-访客)")
+    private String usertype;
 
-    @Column(name = "update_by")
-    @ApiModelProperty(value = "更新者")
-    private String updateBy;
+    @Column(name = "enabled")
+    @ApiModelProperty(value = "在职状态")
+    private String enabled;
 
-    @Column(name = "create_time")
-    @CreationTimestamp
-    @ApiModelProperty(value = "创建日期")
-    private Timestamp createTime;
+    @Column(name = "picture")
+    @ApiModelProperty(value = "人脸照片")
+    private String picture;
+
+    @Column(name = "user_number",nullable = false)
+    @ApiModelProperty(value = "员工工号")
+    private String userNumber;
+
+    @Column(name = "remark")
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @Column(name = "status")
+    @ApiModelProperty(value = "登记状态")
+    private String status;
+
+    @Column(name = "company",nullable = false)
+    @ApiModelProperty(value = "单位")
+    private String company;
+
+    @Column(name = "card_id",nullable = false)
+    @ApiModelProperty(value = "卡号")
+    private String cardId;
 
-    @Column(name = "update_time")
-    @UpdateTimestamp
-    @ApiModelProperty(value = "更新时间")
-    private Timestamp updateTime;*/
 
     public void copy(DmUser source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/repository/DmUserRepository.java

@@ -28,7 +28,7 @@ import java.util.List;
 * @author shiguangji
 * @date 2021-03-09
 **/
-public interface DmUserRepository extends JpaRepository<DmUser, Long>, JpaSpecificationExecutor<DmUser> {
+public interface DmUserRepository extends JpaRepository<DmUser, String>, JpaSpecificationExecutor<DmUser> {
 
     /**
      * 查询未绑定账户的用户

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/rest/DmUserController.java

@@ -77,7 +77,7 @@ public class DmUserController {
             criteria.getDeptIds().addAll(deptService.getDeptChildren(deptService.findByPid(criteria.getDeptId())));
         }
         // 数据权限
-        List<Long> dataScopes = dataService.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername()));
+        List<String> dataScopes = dataService.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername()));
         // criteria.getDeptIds() 不为空并且数据权限不为空则取交集
         if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)){
             // 取交集
@@ -123,9 +123,9 @@ public class DmUserController {
     @ApiOperation("删除会议用户")
     @PreAuthorize("@el.check('dmUser:del')")
     @DeleteMapping
-    public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
+    public ResponseEntity<Object> delete(@RequestBody String[] ids) {
         //判断是否关联账号
-        for(Long id : ids){
+        for(String id : ids){
             List<User> users = userService.findByDmUserId(id,null);
             if(users != null && users.size() > 0){
                 throw new BadRequestException("删除的用户存在关联的账号,请先解绑账号");

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/DmUserService.java

@@ -52,7 +52,7 @@ public interface DmUserService {
      * @param id ID
      * @return DmUserDto
      */
-    DmUserDto findById(Long id);
+    DmUserDto findById(String id);
 
     /**
     * 创建
@@ -71,7 +71,7 @@ public interface DmUserService {
     * 多选删除
     * @param ids /
     */
-    void deleteAll(Long[] ids);
+    void deleteAll(String[] ids);
 
     /**
     * 导出数据

+ 19 - 1
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserDto.java

@@ -15,12 +15,14 @@
 */
 package me.zhengjie.modules.dm.user.service.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import me.zhengjie.base.BaseDTO;
 import me.zhengjie.modules.system.service.dto.DeptSmallDto;
 import me.zhengjie.modules.system.service.dto.JobSmallDto;
 import me.zhengjie.modules.system.service.dto.RoleSmallDto;
 
+import javax.persistence.Column;
 import java.sql.Timestamp;
 import java.io.Serializable;
 import java.util.Set;
@@ -34,7 +36,7 @@ import java.util.Set;
 @Data
 public class DmUserDto extends BaseDTO implements Serializable {
 
-    private Long id;
+    private String id;
 
     /** 姓名 */
     private String name;
@@ -60,4 +62,20 @@ public class DmUserDto extends BaseDTO implements Serializable {
     /** 是否是审批人 */
     private Boolean isApprover;
 
+    private String usertype;
+
+    private String enabled;
+
+    private String picture;
+
+    private String userNumber;
+
+    private String remark;
+
+    private String status;
+
+    private String company;
+
+    private String cardId;
+
 }

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserQueryCriteria.java

@@ -33,15 +33,15 @@ import me.zhengjie.annotation.Query;
 public class DmUserQueryCriteria{
 
     @Query
-    private Long id;
+    private String id;
 
     @Query(propName = "id", type = Query.Type.IN, joinName = "dept")
-    private Set<Long> deptIds = new HashSet<>();
+    private Set<String> deptIds = new HashSet<>();
 
     @Query(blurry = "name,contacts,email")
     private String blurry;
 
-    private Long deptId;
+    private String deptId;
 
     @Query(type = Query.Type.BETWEEN)
     private List<Timestamp> createTime;

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/impl/DmUserServiceImpl.java

@@ -68,7 +68,7 @@ public class DmUserServiceImpl implements DmUserService {
 
     @Override
     @Transactional
-    public DmUserDto findById(Long id) {
+    public DmUserDto findById(String id) {
         DmUser dmUser = dmUserRepository.findById(id).orElseGet(DmUser::new);
         ValidationUtil.isNull(dmUser.getId(),"DmUser","id",id);
         return dmUserMapper.toDto(dmUser);
@@ -102,8 +102,8 @@ public class DmUserServiceImpl implements DmUserService {
     }
 
     @Override
-    public void deleteAll(Long[] ids) {
-        for (Long id : ids) {
+    public void deleteAll(String[] ids) {
+        for (String id : ids) {
             dmUserRepository.deleteById(id);
         }
     }

+ 277 - 0
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/UserTask.java

@@ -0,0 +1,277 @@
+/**
+ * Copyright (C), 2022-04-28
+ * FileName: UserTask
+ * Author:   wanglongda
+ * Date:     2022/4/28 12:03
+ * Description: 同步用户
+ */
+package me.zhengjie.modules.quartz.task;/**
+ * Created Name: wanglongda
+ * Created Time: 2022/4/28 12:03
+ * Description: iot-zhyd
+ */
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import me.zhengjie.modules.dm.user.domain.DmUser;
+import me.zhengjie.modules.dm.user.repository.DmUserRepository;
+import me.zhengjie.modules.system.domain.Dept;
+import me.zhengjie.modules.system.domain.Job;
+import me.zhengjie.modules.system.domain.Role;
+import me.zhengjie.modules.system.domain.User;
+import me.zhengjie.modules.system.repository.DeptRepository;
+import me.zhengjie.modules.system.repository.UserRepository;
+import me.zhengjie.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * <功能简要> <br>
+ * <同步用户>
+ *
+ * @Author wanglongda
+ * @createTime 2022/4/28 12:03
+ * @Version 1.0.0
+ */
+@Component
+@Slf4j
+@RequiredArgsConstructor
+public class UserTask {
+    @Value("${zkApiUrl}")
+    private String zkApiUrl;
+    @Value("${deptApi}")
+    private String deptApi;
+    @Value("${userApi}")
+    private String userApi;
+    @Value("${headerKey}")
+    private String header_key;
+    @Value("${key}")
+    private String key;
+
+    private final UserRepository userRepository;
+    private final DmUserRepository dmUserRepository;
+    private final DeptRepository deptRepository;
+
+
+    public void runDept(){
+        log.info("deptsync 执行开始");
+        deptSyncAll();
+        log.info("deptsync 执行结束");
+    }
+
+    public void runUser(){
+        log.info("usersync 执行开始");
+        userSyncAll();
+        log.info("usersync 执行结束");
+    }
+
+
+
+    /**
+     * 部门数据同步(全量)
+     */
+    private void deptSyncAll() {
+//        String api = "/api/thirdparty/v1/user/getzkdeps";
+
+        //计算总页数
+        int total = getDatas(deptApi,null,0,100,2).getJSONObject("data").getInteger("totalElements");
+        int pageSize = 100;
+        int pageTotal = (total / pageSize);
+        if (total % pageSize != 0) {
+            pageTotal++;
+        }
+        log.info("pageTotal:"+pageTotal);
+
+        //按页获取
+        for (int k = 0; k < pageTotal; k++) {
+            JSONObject json = getDatas(deptApi,null,k,pageSize,2);
+            JSONObject data = json.getJSONObject("data");
+            JSONArray content = data.getJSONArray("content");
+            for (int i = 0; i < content.size(); i++) {
+                Dept dept = JSONObject.parseObject(content.getString(i), Dept.class);
+                deptRepository.save(dept);
+            }
+        }
+    }
+
+
+    /**
+     * 人员数据同步(全量)
+     */
+    private void userSyncAll() {
+
+//        String api = "/api/thirdparty/v1/user/getZkSysUsers";
+
+        //计算总页数
+        int total = getDatas(userApi,null,0,1,2).getJSONObject("data").getInteger("totalElements");
+        int pageSize = 10;
+        int pageTotal = (total / pageSize);
+        if (total % pageSize != 0) {
+            pageTotal++;
+        }
+        log.info("pageTotal:"+pageTotal);
+
+        //按页获取
+        for (int k = 0; k <= pageTotal; k++) {
+            JSONObject json = getDatas(userApi, null,k,pageSize,1);
+            JSONObject data = json.getJSONObject("data");
+            JSONArray content = data.getJSONArray("content");
+            for (int i = 0; i < content.size(); i++) {
+                User user = new User();
+                JSONObject userData = content.getJSONObject(i);
+
+                user.setId(userData.getString("id"));
+                if(userData.containsKey("username")) {
+                    user.setUsername(userData.getString("username"));
+                }
+                user.setPassword(userData.getString("password"));
+                user.setOrgPassword("12345678");
+                if(userData.containsKey("jobs")) {
+                    Set<Job> jobs = new HashSet<>(JSONArray.parseArray(userData.getString("jobs"), Job.class));
+                    user.setJobs(jobs);
+                }
+                if(userData.containsKey("roles")) {
+                    Set<Role> roles = new HashSet<>(JSONArray.parseArray(userData.getString("roles"), Role.class));
+                    user.setRoles(roles);
+                }
+                if(userData.containsKey("gender")) {
+                    user.setGender(userData.getString("gender"));
+                }
+
+                if(userData.containsKey("dept")) {
+                    user.setDept(JSONObject.parseObject(userData.getString("dept"), Dept.class));
+                }
+
+                if(userData.containsKey("email")) {
+                    user.setEmail(userData.getString("email"));
+                }
+
+                if(userData.containsKey("nickName")) {
+                    user.setNickName(userData.getString("nickName"));
+                }
+
+                if(userData.containsKey("phone")) {
+                    user.setPhone(userData.getString("phone"));
+                }
+
+                if(userData.containsKey("enabled")) {
+                    user.setEnabled(userData.getBoolean("enabled"));
+                }
+
+                if(userData.containsKey("userRootGroupId")) {
+                    user.setUserRootGroupId(userData.getString("userRootGroupId"));
+                }
+                if(userData.containsKey("userRootGroupName")) {
+                    user.setUserRootGroupName(userData.getString("userRootGroupName"));
+                }
+
+                DmUser dmUser = new DmUser();
+                dmUser.setDept(user.getDept());
+                dmUser.setId(user.getId());
+                dmUser.setEmail(user.getEmail());
+                dmUser.setContacts(user.getPhone());
+                dmUser.setName(user.getNickName());
+                dmUser.setSex(user.getGender());
+
+                if(!ObjectUtils.isEmpty(userData.getJSONObject("dmUser"))){
+                    JSONObject dmUserObject = userData.getJSONObject("dmUser");
+                    if(dmUserObject.containsKey("cardid")) {
+                        dmUser.setCardId(dmUserObject.getString("cardid"));
+                    }
+                    if(dmUserObject.containsKey("userNumber")) {
+                        dmUser.setUserNumber(dmUserObject.getString("userNumber"));
+                    }
+                    if(dmUserObject.containsKey("type")) {
+                        dmUser.setUsertype(dmUserObject.getString("type"));
+                    }
+                    if(dmUserObject.containsKey("faceid")) {
+                        dmUser.setPicture(dmUserObject.getString("faceid"));
+                    }
+                }
+                //判断是否是新离职的员工,如果是则修改门禁和停车权限
+//                if(!user.getEnabled()){
+//                    UserDto userDto = userService.findById(user.getId());
+//                    if(!ObjectUtils.isEmpty(userDto)){
+//                        if(userDto.getEnabled()){
+//                            //删除门禁一楼进入设备权限
+//                            JSONArray deviceInfoArray = new JSONArray();
+//                            List<String> deviceList = Arrays.asList(deviceInfo.split(","));
+//                            for(String device : deviceList){
+//                                log.info("device:"+device);
+//                                DmRoomDevice dmRoomDevice = dmRoomDeviceService.findByCode(device).get(0);
+//                                if(!ObjectUtils.isEmpty(dmRoomDevice)){
+//                                    JSONObject object = new JSONObject();
+//                                    object.put("serialNumber",dmRoomDevice.getCode());
+//                                    object.put("doorID",dmRoomDevice.getDoorID());
+//                                    object.put("deviceType",dmRoomDevice.getDeviceType());
+//                                    deviceInfoArray.add(object);
+//                                }
+//                            }
+//                            JSONObject device = new JSONObject();
+//                            device.put("userId",dmUser.getUserNumber());
+//                            device.put("operateType","2");
+//                            device.put("deviceInfo",deviceInfoArray);
+//                            log.info("device:"+device.toJSONString());
+//                            String msg = HttpRequest.post(synchronizationDeviceUrl).form("device", device.toJSONString()).execute().body();
+//                            log.info("msg:"+msg);
+//
+//                            DmPlateNumberQueryCriteria dmPlateNumberQueryCriteria = new DmPlateNumberQueryCriteria();
+//                            dmPlateNumberQueryCriteria.setUserNumber(dmUser.getId());
+//                            List<DmPlateNumberDto> dmPlateNumberDtoList = dmPlateNumberService.queryAll(dmPlateNumberQueryCriteria);
+//                            if(!ObjectUtils.isEmpty(dmPlateNumberDtoList)){
+//                                for(DmPlateNumberDto dmPlateNumberDto : dmPlateNumberDtoList){
+//                                    dmPlateNumberService.deleteYuePlate(dmPlateNumberDto.getPlateNumber());
+//
+//                                    JSONObject generateProcJson = new JSONObject();
+//                                    generateProcJson.put("name",dmPlateNumberDto.getUserNumber().getName());
+//                                    generateProcJson.put("phone",dmPlateNumberDto.getUserNumber().getContacts());
+//                                    generateProcJson.put("carplate",dmPlateNumberDto.getPlateNumber());
+//                                    SimpleDateFormat formater2 = new SimpleDateFormat("yyyy-MM-dd");
+//                                    generateProcJson.put("startdate",formater2.format(dmPlateNumberDto.getStartTime()));
+//                                    generateProcJson.put("enddate",formater2.format(dmPlateNumberDto.getEndTime()));
+//                                    generateProcJson.put("cardtype","A");
+//                                    generateProcJson.put("controllers", "3,4");
+//                                    String generateProcData = BeanMapUtils.doPostForm(yueUrl,generateProcJson);
+//                                    JSONObject generateProcDataJson = JSONObject.parseObject(generateProcData);
+//                                    System.out.println("generateProcJson"+generateProcJson);
+//                                    System.out.println("generateProcDataJson:"+generateProcDataJson);
+//                                }
+//                            }
+//
+//                        }
+//                    }
+//                }
+                DmUser newDmUser = dmUserRepository.save(dmUser);
+                user.setDmUser(newDmUser);
+                userRepository.save(user);
+            }
+        }
+    }
+
+    private JSONObject getDatas(String api,JSONArray time, int pageNum, int pageSize,int type) {
+        Map<String,Object> tokenData = SecurityUtils.getToken(key);
+        JSONObject body = new JSONObject();
+        body.put("timestamp",tokenData.get("timestamp"));
+        body.put("nonce",tokenData.get("nonce"));
+        JSONObject query = new JSONObject();
+        if(type == 1){
+            query.put("updateTime",time);
+        }
+        body.put("query",query);
+
+        String res = HttpRequest.get(zkApiUrl + api+"?page="+pageNum+"&size="+pageSize)
+                .header(header_key, tokenData.get("token").toString())
+                .body(body.toString()).execute().body();
+        JSONObject json = JSONObject.parseObject(res);
+        log.info("json:"+json);
+        return json;
+    }
+}

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/security/service/dto/JwtUserDto.java

@@ -35,7 +35,7 @@ public class JwtUserDto implements UserDetails {
 
     private final UserDto user;
 
-    private final List<Long> dataScopes;
+    private final List<String> dataScopes;
 
     @JSONField(serialize = false)
     private final List<GrantedAuthority> authorities;

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java

@@ -41,8 +41,8 @@ public class Dept extends BaseEntity implements Serializable {
     @Column(name = "dept_id")
     @NotNull(groups = Update.class)
     @ApiModelProperty(value = "ID", hidden = true)
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
+//    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private String id;
 
     @JSONField(serialize = false)
     @ManyToMany(mappedBy = "depts")
@@ -67,7 +67,7 @@ public class Dept extends BaseEntity implements Serializable {
     private Boolean enabled;
 
     @ApiModelProperty(value = "上级部门")
-    private Long pid;
+    private String pid;
 
     @ApiModelProperty(value = "子节点数目", hidden = true)
     private Integer subCount = 0;

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java

@@ -41,8 +41,8 @@ public class Menu extends BaseEntity implements Serializable {
     @Column(name = "menu_id")
     @NotNull(groups = {Update.class})
     @ApiModelProperty(value = "ID", hidden = true)
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
+//    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private String id;
 
     @JSONField(serialize = false)
     @ManyToMany(mappedBy = "menus")
@@ -83,7 +83,7 @@ public class Menu extends BaseEntity implements Serializable {
     private Boolean hidden;
 
     @ApiModelProperty(value = "上级菜单")
-    private Long pid;
+    private String pid;
 
     @ApiModelProperty(value = "子节点数目", hidden = true)
     private Integer subCount = 0;

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java

@@ -43,9 +43,9 @@ public class Role extends BaseEntity implements Serializable {
     @Id
     @Column(name = "role_id")
     @NotNull(groups = {Update.class})
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
+//    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @ApiModelProperty(value = "ID", hidden = true)
-    private Long id;
+    private String id;
 
     @JSONField(serialize = false)
     @ManyToMany(mappedBy = "roles")

+ 16 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java

@@ -44,9 +44,9 @@ public class User extends BaseEntity implements Serializable {
     @Id
     @Column(name = "user_id")
     @NotNull(groups = Update.class)
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
+//    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @ApiModelProperty(value = "ID", hidden = true)
-    private Long id;
+    private String id;
 
     @ManyToMany
     @ApiModelProperty(value = "用户角色")
@@ -77,7 +77,7 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "DM单位")
     private DmCompany dmCompany;
 
-    @NotBlank
+//    @NotBlank
     @Column(unique = true)
     @ApiModelProperty(value = "用户名称")
     private String username;
@@ -91,7 +91,7 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "邮箱")
     private String email;
 
-    @NotBlank
+//    @NotBlank
     @ApiModelProperty(value = "电话号码")
     private String phone;
 
@@ -122,6 +122,18 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "初始密码", hidden = true)
     private String orgPassword;
 
+    @Column(name = "user_number")
+    @ApiModelProperty(value = "员工工号")
+    private String userNumber;
+
+    @Column(name = "user_root_group_id")
+    @ApiModelProperty(value = "根用户组id", hidden = true)
+    private String userRootGroupId;
+
+    @Column(name = "user_root_group_name")
+    @ApiModelProperty(value = "根用户组名称", hidden = true)
+    private String userRootGroupName;
+
     @NotNull
     @ApiModelProperty(value = "限制次数", hidden = true)
     private Integer errLimit = 3;

+ 5 - 5
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java

@@ -27,14 +27,14 @@ import java.util.Set;
 * @author Zheng Jie
 * @date 2019-03-25
 */
-public interface DeptRepository extends JpaRepository<Dept, Long>, JpaSpecificationExecutor<Dept> {
+public interface DeptRepository extends JpaRepository<Dept, String>, JpaSpecificationExecutor<Dept> {
 
     /**
      * 根据 PID 查询
      * @param id pid
      * @return /
      */
-    List<Dept> findByPid(Long id);
+    List<Dept> findByPid(String id);
 
     /**
      * 获取顶级部门
@@ -49,14 +49,14 @@ public interface DeptRepository extends JpaRepository<Dept, Long>, JpaSpecificat
      */
     @Query(value = "select d.* from sys_dept d, sys_roles_depts r where " +
             "d.dept_id = r.dept_id and r.role_id = ?1", nativeQuery = true)
-    Set<Dept> findByRoleId(Long roleId);
+    Set<Dept> findByRoleId(String roleId);
 
     /**
      * 判断是否存在子节点
      * @param pid /
      * @return /
      */
-    int countByPid(Long pid);
+    int countByPid(String pid);
 
     /**
      * 根据ID更新sub_count
@@ -65,5 +65,5 @@ public interface DeptRepository extends JpaRepository<Dept, Long>, JpaSpecificat
      */
     @Modifying
     @Query(value = " update sys_dept set sub_count = ?1 where dept_id = ?2 ",nativeQuery = true)
-    void updateSubCntById(Integer count, Long id);
+    void updateSubCntById(Integer count, String id);
 }

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java

@@ -38,5 +38,5 @@ public interface JobRepository extends JpaRepository<Job, Long>, JpaSpecificatio
      * 根据Id删除
      * @param ids /
      */
-    void deleteAllByIdIn(Set<Long> ids);
+    void deleteAllByIdIn(Set<String> ids);
 }

+ 5 - 5
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java

@@ -28,7 +28,7 @@ import java.util.Set;
  * @author Zheng Jie
  * @date 2018-12-17
  */
-public interface MenuRepository extends JpaRepository<Menu, Long>, JpaSpecificationExecutor<Menu> {
+public interface MenuRepository extends JpaRepository<Menu, String>, JpaSpecificationExecutor<Menu> {
 
     /**
      * 根据菜单标题查询
@@ -49,7 +49,7 @@ public interface MenuRepository extends JpaRepository<Menu, Long>, JpaSpecificat
      * @param pid /
      * @return /
      */
-    List<Menu> findByPid(long pid);
+    List<Menu> findByPid(String pid);
 
     /**
      * 查询顶级菜单
@@ -65,14 +65,14 @@ public interface MenuRepository extends JpaRepository<Menu, Long>, JpaSpecificat
      */
     @Query(value = "SELECT m.* FROM sys_menu m, sys_roles_menus r WHERE " +
             "m.menu_id = r.menu_id AND r.role_id IN ?1 AND type != ?2 order by m.menu_sort asc",nativeQuery = true)
-    LinkedHashSet<Menu> findByRoleIdsAndTypeNot(Set<Long> roleIds, int type);
+    LinkedHashSet<Menu> findByRoleIdsAndTypeNot(Set<String> roleIds, int type);
 
     /**
      * 获取节点数量
      * @param id /
      * @return /
      */
-    int countByPid(Long id);
+    int countByPid(String id);
 
     /**
      * 更新节点数目
@@ -81,5 +81,5 @@ public interface MenuRepository extends JpaRepository<Menu, Long>, JpaSpecificat
      */
     @Modifying
     @Query(value = " update sys_menu set sub_count = ?1 where menu_id = ?2 ",nativeQuery = true)
-    void updateSubCntById(int count, Long menuId);
+    void updateSubCntById(int count, String menuId);
 }

+ 7 - 7
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java

@@ -29,7 +29,7 @@ import java.util.Set;
  * @author Zheng Jie
  * @date 2018-12-03
  */
-public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificationExecutor<Role> {
+public interface RoleRepository extends JpaRepository<Role, String>, JpaSpecificationExecutor<Role> {
 
     /**
      * 根据名称查询
@@ -42,7 +42,7 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
      * 删除多个角色
      * @param ids /
      */
-    void deleteAllByIdIn(Set<Long> ids);
+    void deleteAllByIdIn(Set<String> ids);
 
     /**
      * 根据用户ID查询
@@ -51,7 +51,7 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
      */
     @Query(value = "SELECT r.* FROM sys_role r, sys_users_roles u WHERE " +
             "r.role_id = u.role_id AND u.user_id = ?1",nativeQuery = true)
-    Set<Role> findByUserId(Long id);
+    Set<Role> findByUserId(String id);
 
     /**
      * 解绑角色菜单
@@ -59,7 +59,7 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
      */
     @Modifying
     @Query(value = "delete from sys_roles_menus where menu_id = ?1",nativeQuery = true)
-    void untiedMenu(Long id);
+    void untiedMenu(String id);
 
     /**
      * 根据部门查询
@@ -68,7 +68,7 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
      */
     @Query(value = "select count(1) from sys_role r, sys_roles_depts d where " +
             "r.role_id = d.role_id and d.dept_id in ?1",nativeQuery = true)
-    int countByDepts(Set<Long> deptIds);
+    int countByDepts(Set<String> deptIds);
 
     /**
      * 根据菜单Id查询
@@ -77,7 +77,7 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
      */
     @Query(value = "SELECT r.* FROM sys_role r, sys_roles_menus m WHERE " +
             "r.role_id = m.role_id AND m.menu_id in ?1",nativeQuery = true)
-    List<Role> findInMenuId(List<Long> menuIds);
+    List<Role> findInMenuId(List<String> menuIds);
 
     /**
      * 根据角色标识查询
@@ -86,5 +86,5 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
      */
     @Query(value = "SELECT r.* FROM sys_role r WHERE " +
             "r.role_key = :roleKey AND if(:id != '',r.role_id != :id,1=1)",nativeQuery = true)
-    List<Role> findByRoleKey(@Param("roleKey") String roleKey,@Param("id") Long id);
+    List<Role> findByRoleKey(@Param("roleKey") String roleKey,@Param("id") String id);
 }

+ 9 - 9
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java

@@ -30,7 +30,7 @@ import java.util.Set;
  * @author Zheng Jie
  * @date 2018-11-22
  */
-public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
+public interface UserRepository extends JpaRepository<User, String>, JpaSpecificationExecutor<User> {
 
     /**
      * 根据用户名查询
@@ -79,7 +79,7 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
      */
     @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r WHERE" +
             " u.user_id = r.user_id AND r.role_id = ?1", nativeQuery = true)
-    List<User> findByRoleId(Long roleId);
+    List<User> findByRoleId(String roleId);
 
     /**
      * 根据角色中的部门查询
@@ -88,7 +88,7 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
      */
     @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r, sys_roles_depts d WHERE " +
             "u.user_id = r.user_id AND r.role_id = d.role_id AND d.dept_id = ?1 group by u.user_id", nativeQuery = true)
-    List<User> findByRoleDeptId(Long deptId);
+    List<User> findByRoleDeptId(String deptId);
 
     /**
      * 根据菜单查询
@@ -97,13 +97,13 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
      */
     @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles ur, sys_roles_menus rm WHERE\n" +
             "u.user_id = ur.user_id AND ur.role_id = rm.role_id AND rm.menu_id = ?1 group by u.user_id", nativeQuery = true)
-    List<User> findByMenuId(Long id);
+    List<User> findByMenuId(String id);
 
     /**
      * 根据Id删除
      * @param ids /
      */
-    void deleteAllByIdIn(Set<Long> ids);
+    void deleteAllByIdIn(Set<String> ids);
 
     /**
      * 根据岗位查询
@@ -111,7 +111,7 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
      * @return /
      */
     @Query(value = "SELECT count(1) FROM sys_user u, sys_users_jobs j WHERE u.user_id = j.user_id AND j.job_id IN ?1", nativeQuery = true)
-    int countByJobs(Set<Long> ids);
+    int countByJobs(Set<String> ids);
 
     /**
      * 根据部门查询
@@ -119,7 +119,7 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
      * @return /
      */
     @Query(value = "SELECT count(1) FROM sys_user u WHERE u.dept_id IN ?1", nativeQuery = true)
-    int countByDepts(Set<Long> deptIds);
+    int countByDepts(Set<String> deptIds);
 
     /**
      * 根据角色查询
@@ -128,9 +128,9 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
      */
     @Query(value = "SELECT count(1) FROM sys_user u, sys_users_roles r WHERE " +
             "u.user_id = r.user_id AND r.role_id in ?1", nativeQuery = true)
-    int countByRoles(Set<Long> ids);
+    int countByRoles(Set<String> ids);
 
     @Query(value = "SELECT u.* FROM sys_user u WHERE " +
             "u.dm_user_id = :dmUserId AND if(:userId != '',u.user_id != :userId,1=1)",nativeQuery = true)
-    List<User> findByDmUserId(@Param("dmUserId")Long dmUserId, @Param("userId") Long userId);
+    List<User> findByDmUserId(@Param("dmUserId")String dmUserId, @Param("userId") String userId);
 }

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java

@@ -73,9 +73,9 @@ public class DeptController {
     @ApiOperation("查询部门:根据ID获取同级与上级数据")
     @PostMapping("/superior")
     @PreAuthorize("@el.check('user:list','dept:list')")
-    public ResponseEntity<Object> getSuperior(@RequestBody List<Long> ids) {
+    public ResponseEntity<Object> getSuperior(@RequestBody List<String> ids) {
         Set<DeptDto> deptDtos  = new LinkedHashSet<>();
-        for (Long id : ids) {
+        for (String id : ids) {
             DeptDto deptDto = deptService.findById(id);
             List<DeptDto> depts = deptService.getSuperior(deptDto, new ArrayList<>());
             deptDtos.addAll(depts);
@@ -108,9 +108,9 @@ public class DeptController {
     @ApiOperation("删除部门")
     @DeleteMapping
     @PreAuthorize("@el.check('dept:del')")
-    public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
+    public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
         Set<DeptDto> deptDtos = new HashSet<>();
-        for (Long id : ids) {
+        for (String id : ids) {
             List<Dept> deptList = deptService.findByPid(id);
             deptDtos.add(deptService.findById(id));
             if(CollectionUtil.isNotEmpty(deptList)){

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java

@@ -85,7 +85,7 @@ public class JobController {
     @ApiOperation("删除岗位")
     @DeleteMapping
     @PreAuthorize("@el.check('job:del')")
-    public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
+    public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
         // 验证是否被用户关联
         jobService.verification(ids);
         jobService.delete(ids);

+ 7 - 7
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java

@@ -70,19 +70,19 @@ public class MenuController {
     @ApiOperation("返回全部的菜单")
     @GetMapping(value = "/lazy")
     @PreAuthorize("@el.check('menu:list','roles:list')")
-    public ResponseEntity<Object> query(@RequestParam Long pid){
+    public ResponseEntity<Object> query(@RequestParam String pid){
         return new ResponseEntity<>(menuService.getMenus(pid),HttpStatus.OK);
     }
 
     @ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
     @GetMapping(value = "/child")
     @PreAuthorize("@el.check('menu:list','roles:list')")
-    public ResponseEntity<Object> child(@RequestParam Long id){
+    public ResponseEntity<Object> child(@RequestParam String id){
         Set<Menu> menuSet = new HashSet<>();
         List<MenuDto> menuList = menuService.getMenus(id);
         menuSet.add(menuService.findOne(id));
         menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
-        Set<Long> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
+        Set<String> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
         return new ResponseEntity<>(ids,HttpStatus.OK);
     }
 
@@ -97,10 +97,10 @@ public class MenuController {
     @ApiOperation("查询菜单:根据ID获取同级与上级数据")
     @PostMapping("/superior")
     @PreAuthorize("@el.check('menu:list')")
-    public ResponseEntity<Object> getSuperior(@RequestBody List<Long> ids) {
+    public ResponseEntity<Object> getSuperior(@RequestBody List<String> ids) {
         Set<MenuDto> menuDtos = new LinkedHashSet<>();
         if(CollectionUtil.isNotEmpty(ids)){
-            for (Long id : ids) {
+            for (String id : ids) {
                 MenuDto menuDto = menuService.findById(id);
                 menuDtos.addAll(menuService.getSuperior(menuDto, new ArrayList<>()));
             }
@@ -134,9 +134,9 @@ public class MenuController {
     @ApiOperation("删除菜单")
     @DeleteMapping
     @PreAuthorize("@el.check('menu:del')")
-    public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
+    public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
         Set<Menu> menuSet = new HashSet<>();
-        for (Long id : ids) {
+        for (String id : ids) {
             List<MenuDto> menuList = menuService.getMenus(id);
             menuSet.add(menuService.findOne(id));
             menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java

@@ -57,7 +57,7 @@ public class RoleController {
     @ApiOperation("获取单个role")
     @GetMapping(value = "/{id}")
     @PreAuthorize("@el.check('roles:list')")
-    public ResponseEntity<Object> query(@PathVariable Long id){
+    public ResponseEntity<Object> query(@PathVariable String id){
         return new ResponseEntity<>(roleService.findById(id), HttpStatus.OK);
     }
 
@@ -126,8 +126,8 @@ public class RoleController {
     @ApiOperation("删除角色")
     @DeleteMapping
     @PreAuthorize("@el.check('roles:del')")
-    public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
-        for (Long id : ids) {
+    public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
+        for (String id : ids) {
             RoleDto role = roleService.findById(id);
             getLevels(role.getLevel());
         }

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java

@@ -88,7 +88,7 @@ public class UserController {
             criteria.getDeptIds().addAll(deptService.getDeptChildren(deptService.findByPid(criteria.getDeptId())));
         }
         // 数据权限
-        List<Long> dataScopes = dataService.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername()));
+        List<String> dataScopes = dataService.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername()));
         // criteria.getDeptIds() 不为空并且数据权限不为空则取交集
         if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)){
             // 取交集
@@ -142,8 +142,8 @@ public class UserController {
     @ApiOperation("删除用户")
     @DeleteMapping
     @PreAuthorize("@el.check('user:del')")
-    public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
-        for (Long id : ids) {
+    public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
+        for (String id : ids) {
             Integer currentLevel =  Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
             Integer optLevel =  Collections.min(roleService.findByUsersId(id).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
             if (currentLevel > optLevel) {
@@ -205,7 +205,7 @@ public class UserController {
     @ApiOperation("解绑用户")
     @PostMapping(value = "/unBindDmUser")
     @Log("解绑账号用户")
-    public ResponseEntity<Object> unBindDmUser(@RequestBody Set<Long> ids) throws Exception{
+    public ResponseEntity<Object> unBindDmUser(@RequestBody Set<String> ids) throws Exception{
         userService.unBindDmUser(ids);
         return new ResponseEntity<>(HttpStatus.OK);
     }

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/DataService.java

@@ -30,5 +30,5 @@ public interface DataService {
      * @param user /
      * @return /
      */
-    List<Long> getDeptIds(UserDto user);
+    List<String> getDeptIds(UserDto user);
 }

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java

@@ -54,7 +54,7 @@ public interface DeptService {
      * @param id /
      * @return /
      */
-    DeptDto findById(Long id);
+    DeptDto findById(String id);
 
     /**
      * 创建
@@ -80,14 +80,14 @@ public interface DeptService {
      * @param pid /
      * @return /
      */
-    List<Dept> findByPid(long pid);
+    List<Dept> findByPid(String pid);
 
     /**
      * 根据角色ID查询
      * @param id /
      * @return /
      */
-    Set<Dept> findByRoleId(Long id);
+    Set<Dept> findByRoleId(String id);
 
     /**
      * 导出数据
@@ -125,7 +125,7 @@ public interface DeptService {
      * @param deptList
      * @return
      */
-    List<Long> getDeptChildren(List<Dept> deptList);
+    List<String> getDeptChildren(List<Dept> deptList);
 
     /**
      * 验证是否被角色或用户关联

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java

@@ -55,7 +55,7 @@ public interface JobService {
      * 删除
      * @param ids /
      */
-    void delete(Set<Long> ids);
+    void delete(Set<String> ids);
 
     /**
      * 分页查询
@@ -84,5 +84,5 @@ public interface JobService {
      * 验证是否被用户关联
      * @param ids /
      */
-    void verification(Set<Long> ids);
+    void verification(Set<String> ids);
 }

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java

@@ -44,7 +44,7 @@ public interface MenuService {
      * @param id /
      * @return /
      */
-    MenuDto findById(long id);
+    MenuDto findById(String id);
 
     /**
      * 创建
@@ -85,7 +85,7 @@ public interface MenuService {
      * @param id /
      * @return /
      */
-    Menu findOne(Long id);
+    Menu findOne(String id);
 
     /**
      * 删除
@@ -106,7 +106,7 @@ public interface MenuService {
      * @param pid /
      * @return /
      */
-    List<MenuDto> getMenus(Long pid);
+    List<MenuDto> getMenus(String pid);
 
     /**
      * 根据ID获取同级与上级数据
@@ -121,5 +121,5 @@ public interface MenuService {
      * @param currentUserId /
      * @return /
      */
-    List<MenuDto> findByUser(Long currentUserId);
+    List<MenuDto> findByUser(String currentUserId);
 }

+ 6 - 6
eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java

@@ -44,7 +44,7 @@ public interface RoleService {
      * @param id /
      * @return /
      */
-    RoleDto findById(long id);
+    RoleDto findById(String id);
 
     /**
      * 创建
@@ -62,14 +62,14 @@ public interface RoleService {
      * 删除
      * @param ids /
      */
-    void delete(Set<Long> ids);
+    void delete(Set<String> ids);
 
     /**
      * 根据用户ID查询
      * @param id 用户ID
      * @return /
      */
-    List<RoleSmallDto> findByUsersId(Long id);
+    List<RoleSmallDto> findByUsersId(String id);
 
     /**
      * 根据角色查询角色级别
@@ -89,7 +89,7 @@ public interface RoleService {
      * 解绑菜单
      * @param id /
      */
-    void untiedMenu(Long id);
+    void untiedMenu(String id);
 
     /**
      * 待条件分页查询
@@ -125,12 +125,12 @@ public interface RoleService {
      * 验证是否被用户关联
      * @param ids /
      */
-    void verification(Set<Long> ids);
+    void verification(Set<String> ids);
 
     /**
      * 根据菜单Id查询
      * @param menuIds /
      * @return /
      */
-    List<Role> findInMenuId(List<Long> menuIds);
+    List<Role> findInMenuId(List<String> menuIds);
 }

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java

@@ -37,7 +37,7 @@ public interface UserService {
      * @param id ID
      * @return /
      */
-    UserDto findById(long id);
+    UserDto findById(String id);
 
     /**
      * 新增用户
@@ -55,7 +55,7 @@ public interface UserService {
      * 删除用户
      * @param ids /
      */
-    void delete(Set<Long> ids);
+    void delete(Set<String> ids);
 
     /**
      * 根据用户名查询
@@ -114,11 +114,11 @@ public interface UserService {
      */
     void updateCenter(User resources);
 
-    List<User> findByDmUserId(Long dmUserId,Long userId);
+    List<User> findByDmUserId(String dmUserId,String userId);
 
     /**
      * 解绑用户
      * @param ids
      */
-    void unBindDmUser(Set<Long> ids) throws Exception;
+    void unBindDmUser(Set<String> ids) throws Exception;
 }

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java

@@ -31,7 +31,7 @@ import java.util.Objects;
 @Setter
 public class DeptDto extends BaseDTO implements Serializable {
 
-    private Long id;
+    private String id;
 
     private String name;
 
@@ -46,7 +46,7 @@ public class DeptDto extends BaseDTO implements Serializable {
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private List<DeptDto> children;
 
-    private Long pid;
+    private String pid;
 
     private Integer subCount;
 

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptQueryCriteria.java

@@ -46,7 +46,7 @@ public class DeptQueryCriteria{
     private Boolean enabled;
 
     @Query
-    private Long pid;
+    private String pid;
 
     @Query(type = Query.Type.IS_NULL, propName = "pid")
     private Boolean pidIsNull;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDto.java

@@ -25,7 +25,7 @@ import java.io.Serializable;
 @Data
 public class DeptSmallDto implements Serializable {
 
-    private Long id;
+    private String id;
 
     private String name;
 

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDto.java

@@ -30,7 +30,7 @@ import java.util.Objects;
 @Setter
 public class MenuDto extends BaseDTO implements Serializable {
 
-    private Long id;
+    private String id;
 
     private List<MenuDto> children;
 
@@ -46,7 +46,7 @@ public class MenuDto extends BaseDTO implements Serializable {
 
     private String component;
 
-    private Long pid;
+    private String pid;
 
     private Integer subCount;
 

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuQueryCriteria.java

@@ -37,5 +37,5 @@ public class MenuQueryCriteria {
     private Boolean pidIsNull;
 
     @Query
-    private Long pid;
+    private String pid;
 }

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java

@@ -30,7 +30,7 @@ import java.util.Set;
 @Setter
 public class RoleDto extends BaseDTO implements Serializable {
 
-    private Long id;
+    private String id;
 
     private String roleKey;
 

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleSmallDto.java

@@ -25,7 +25,7 @@ import java.io.Serializable;
 @Data
 public class RoleSmallDto implements Serializable {
 
-    private Long id;
+    private String id;
 
     private String name;
 

+ 9 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java

@@ -16,6 +16,7 @@
 package me.zhengjie.modules.system.service.dto;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 import me.zhengjie.base.BaseDTO;
@@ -24,6 +25,7 @@ import me.zhengjie.modules.dm.company.service.dto.DmCompanyDto;
 import me.zhengjie.modules.dm.user.domain.DmUser;
 import me.zhengjie.modules.dm.user.service.dto.DmUserDto;
 
+import javax.persistence.Column;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Set;
@@ -36,7 +38,7 @@ import java.util.Set;
 @Setter
 public class UserDto extends BaseDTO implements Serializable {
 
-    private Long id;
+    private String id;
 
     private Set<RoleSmallDto> roles;
 
@@ -76,6 +78,12 @@ public class UserDto extends BaseDTO implements Serializable {
 
     private String orgPassword;
 
+    private String userNumber;
+
+    private String userRootGroupId;
+
+    private String userRootGroupName;
+
     private Integer errLimit;
 
     private String remark;

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserQueryCriteria.java

@@ -31,10 +31,10 @@ import java.util.Set;
 public class UserQueryCriteria implements Serializable {
 
     @Query
-    private Long id;
+    private String id;
 
     @Query(propName = "id", type = Query.Type.IN, joinName = "dept")
-    private Set<Long> deptIds = new HashSet<>();
+    private Set<String> deptIds = new HashSet<>();
 
     @Query(blurry = "email,username,nickName")
     private String blurry;
@@ -42,7 +42,7 @@ public class UserQueryCriteria implements Serializable {
     @Query
     private Boolean enabled;
 
-    private Long deptId;
+    private String deptId;
 
     @Query(type = Query.Type.BETWEEN)
     private List<Timestamp> createTime;

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java

@@ -49,9 +49,9 @@ public class DataServiceImpl implements DataService {
      */
     @Override
     @Cacheable(key = "'user:' + #p0.id")
-    public List<Long> getDeptIds(UserDto user) {
+    public List<String> getDeptIds(UserDto user) {
         // 用于存储部门id
-        Set<Long> deptIds = new HashSet<>();
+        Set<String> deptIds = new HashSet<>();
         // 查询用户角色
         List<RoleSmallDto> roleSet = roleService.findByUsersId(user.getId());
         // 获取对应的部门ID
@@ -77,7 +77,7 @@ public class DataServiceImpl implements DataService {
      * @param role 角色
      * @return 数据权限ID
      */
-    public Set<Long> getCustomize(Set<Long> deptIds, RoleSmallDto role){
+    public Set<String> getCustomize(Set<String> deptIds, RoleSmallDto role){
         Set<Dept> depts = deptService.findByRoleId(role.getId());
         for (Dept dept : depts) {
             deptIds.add(dept.getId());

+ 10 - 10
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java

@@ -125,19 +125,19 @@ public class DeptServiceImpl implements DeptService {
 
     @Override
     @Cacheable(key = "'id:' + #p0")
-    public DeptDto findById(Long id) {
+    public DeptDto findById(String id) {
         Dept dept = deptRepository.findById(id).orElseGet(Dept::new);
         ValidationUtil.isNull(dept.getId(),"Dept","id",id);
         return deptMapper.toDto(dept);
     }
 
     @Override
-    public List<Dept> findByPid(long pid) {
+    public List<Dept> findByPid(String pid) {
         return deptRepository.findByPid(pid);
     }
 
     @Override
-    public Set<Dept> findByRoleId(Long id) {
+    public Set<Dept> findByRoleId(String id) {
         return deptRepository.findByRoleId(id);
     }
 
@@ -155,8 +155,8 @@ public class DeptServiceImpl implements DeptService {
     @Transactional(rollbackFor = Exception.class)
     public void update(Dept resources) {
         // 旧的部门
-        Long oldPid = findById(resources.getId()).getPid();
-        Long newPid = resources.getPid();
+        String oldPid = findById(resources.getId()).getPid();
+        String newPid = resources.getPid();
         if(resources.getPid() != null && resources.getId().equals(resources.getPid())) {
             throw new BadRequestException("上级不能为自己");
         }
@@ -208,8 +208,8 @@ public class DeptServiceImpl implements DeptService {
     }
 
     @Override
-    public List<Long> getDeptChildren(List<Dept> deptList) {
-        List<Long> list = new ArrayList<>();
+    public List<String> getDeptChildren(List<Dept> deptList) {
+        List<String> list = new ArrayList<>();
         deptList.forEach(dept -> {
                     if (dept!=null && dept.getEnabled()) {
                         List<Dept> depts = deptRepository.findByPid(dept.getId());
@@ -271,7 +271,7 @@ public class DeptServiceImpl implements DeptService {
 
     @Override
     public void verification(Set<DeptDto> deptDtos) {
-        Set<Long> deptIds = deptDtos.stream().map(DeptDto::getId).collect(Collectors.toSet());
+        Set<String> deptIds = deptDtos.stream().map(DeptDto::getId).collect(Collectors.toSet());
         if(userRepository.countByDepts(deptIds) > 0){
             throw new BadRequestException("所选部门存在用户关联,请解除后再试!");
         }
@@ -280,7 +280,7 @@ public class DeptServiceImpl implements DeptService {
         }
     }
 
-    private void updateSubCnt(Long deptId){
+    private void updateSubCnt(String deptId){
         if(deptId != null){
             int count = deptRepository.countByPid(deptId);
             deptRepository.updateSubCntById(count, deptId);
@@ -308,7 +308,7 @@ public class DeptServiceImpl implements DeptService {
      * 清理缓存
      * @param id /
      */
-    public void delCaches(Long id){
+    public void delCaches(String id){
         List<User> users = userRepository.findByRoleDeptId(id);
         // 删除数据权限
         redisUtils.delByKeys(CacheKey.DATA_USER, users.stream().map(User::getId).collect(Collectors.toSet()));

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java

@@ -97,7 +97,7 @@ public class JobServiceImpl implements JobService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void delete(Set<Long> ids) {
+    public void delete(Set<String> ids) {
         jobRepository.deleteAllByIdIn(ids);
         // 删除缓存
         redisUtils.delByKeys(CacheKey.JOB_ID, ids);
@@ -117,7 +117,7 @@ public class JobServiceImpl implements JobService {
     }
 
     @Override
-    public void verification(Set<Long> ids) {
+    public void verification(Set<String> ids) {
         if(userRepository.countByJobs(ids) > 0){
             throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!");
         }

+ 16 - 14
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java

@@ -83,7 +83,7 @@ public class MenuServiceImpl implements MenuService {
 
     @Override
     @Cacheable(key = "'id:' + #p0")
-    public MenuDto findById(long id) {
+    public MenuDto findById(String id) {
         Menu menu = menuRepository.findById(id).orElseGet(Menu::new);
         ValidationUtil.isNull(menu.getId(),"Menu","id",id);
         return menuMapper.toDto(menu);
@@ -96,9 +96,9 @@ public class MenuServiceImpl implements MenuService {
      */
     @Override
     @Cacheable(key = "'user:' + #p0")
-    public List<MenuDto> findByUser(Long currentUserId) {
+    public List<MenuDto> findByUser(String currentUserId) {
         List<RoleSmallDto> roles = roleService.findByUsersId(currentUserId);
-        Set<Long> roleIds = roles.stream().map(RoleSmallDto::getId).collect(Collectors.toSet());
+        Set<String> roleIds = roles.stream().map(RoleSmallDto::getId).collect(Collectors.toSet());
         LinkedHashSet<Menu> menus = menuRepository.findByRoleIdsAndTypeNot(roleIds, 2);
         return menus.stream().map(menuMapper::toDto).collect(Collectors.toList());
     }
@@ -114,7 +114,7 @@ public class MenuServiceImpl implements MenuService {
                 throw new EntityExistException(Menu.class,"componentName",resources.getComponentName());
             }
         }
-        if(resources.getPid().equals(0L)){
+        if(resources.getPid().equals("0")){
             resources.setPid(null);
         }
         if(resources.getIFrame()){
@@ -123,6 +123,8 @@ public class MenuServiceImpl implements MenuService {
                 throw new BadRequestException("外链必须以http://或者https://开头");
             }
         }
+        String idStr = UUID.randomUUID().toString();
+        resources.setId(idStr);
         menuRepository.save(resources);
         // 计算子节点数目
         resources.setSubCount(0);
@@ -151,13 +153,13 @@ public class MenuServiceImpl implements MenuService {
             throw new EntityExistException(Menu.class,"title",resources.getTitle());
         }
 
-        if(resources.getPid().equals(0L)){
+        if(resources.getPid().equals("0")){
             resources.setPid(null);
         }
 
         // 记录的父节点ID
-        Long oldPid = menu.getPid();
-        Long newPid = resources.getPid();
+        String oldPid = menu.getPid();
+        String newPid = resources.getPid();
 
         if(StringUtils.isNotBlank(resources.getComponentName())){
             menu1 = menuRepository.findByComponentName(resources.getComponentName());
@@ -210,9 +212,9 @@ public class MenuServiceImpl implements MenuService {
     }
 
     @Override
-    public List<MenuDto> getMenus(Long pid) {
+    public List<MenuDto> getMenus(String pid) {
         List<Menu> menus;
-        if(pid != null && !pid.equals(0L)){
+        if(pid != null && !pid.equals("0")){
             menus = menuRepository.findByPid(pid);
         } else {
             menus = menuRepository.findByPidIsNull();
@@ -233,7 +235,7 @@ public class MenuServiceImpl implements MenuService {
     @Override
     public List<MenuDto> buildTree(List<MenuDto> menuDtos) {
         List<MenuDto> trees = new ArrayList<>();
-        Set<Long> ids = new HashSet<>();
+        Set<String> ids = new HashSet<>();
         for (MenuDto menuDTO : menuDtos) {
             if (menuDTO.getPid() == null) {
                 trees.add(menuDTO);
@@ -308,7 +310,7 @@ public class MenuServiceImpl implements MenuService {
     }
 
     @Override
-    public Menu findOne(Long id) {
+    public Menu findOne(String id) {
         Menu menu = menuRepository.findById(id).orElseGet(Menu::new);
         ValidationUtil.isNull(menu.getId(),"Menu","id",id);
         return menu;
@@ -331,7 +333,7 @@ public class MenuServiceImpl implements MenuService {
         FileUtil.downloadExcel(list, response);
     }
 
-    private void updateSubCnt(Long menuId){
+    private void updateSubCnt(String menuId){
         if(menuId != null){
             int count = menuRepository.countByPid(menuId);
             menuRepository.updateSubCntById(count, menuId);
@@ -342,12 +344,12 @@ public class MenuServiceImpl implements MenuService {
      * 清理缓存
      * @param id 菜单ID
      */
-    public void delCaches(Long id){
+    public void delCaches(String id){
         List<User> users = userRepository.findByMenuId(id);
         redisUtils.del(CacheKey.MENU_ID + id);
         redisUtils.delByKeys(CacheKey.MENU_USER, users.stream().map(User::getId).collect(Collectors.toSet()));
         // 清除 Role 缓存
-        List<Role> roles = roleService.findInMenuId(new ArrayList<Long>(){{
+        List<Role> roles = roleService.findInMenuId(new ArrayList<String>(){{
             add(id);
         }});
         redisUtils.delByKeys(CacheKey.ROLE_ID, roles.stream().map(Role::getId).collect(Collectors.toSet()));

+ 9 - 9
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java

@@ -84,7 +84,7 @@ public class RoleServiceImpl implements RoleService {
     @Override
     @Cacheable(key = "'id:' + #p0")
     @Transactional(rollbackFor = Exception.class)
-    public RoleDto findById(long id) {
+    public RoleDto findById(String id) {
         Role role = roleRepository.findById(id).orElseGet(Role::new);
         ValidationUtil.isNull(role.getId(), "Role", "id", id);
         return roleMapper.toDto(role);
@@ -137,15 +137,15 @@ public class RoleServiceImpl implements RoleService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void untiedMenu(Long menuId) {
+    public void untiedMenu(String menuId) {
         // 更新菜单
         roleRepository.untiedMenu(menuId);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void delete(Set<Long> ids) {
-        for (Long id : ids) {
+    public void delete(Set<String> ids) {
+        for (String id : ids) {
             // 更新相关缓存
             delCaches(id, null);
         }
@@ -153,7 +153,7 @@ public class RoleServiceImpl implements RoleService {
     }
 
     @Override
-    public List<RoleSmallDto> findByUsersId(Long id) {
+    public List<RoleSmallDto> findByUsersId(String id) {
         return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUserId(id)));
     }
 
@@ -202,14 +202,14 @@ public class RoleServiceImpl implements RoleService {
     }
 
     @Override
-    public void verification(Set<Long> ids) {
+    public void verification(Set<String> ids) {
         if (userRepository.countByRoles(ids) > 0) {
             throw new BadRequestException("所选角色存在用户关联,请解除关联再试!");
         }
     }
 
     @Override
-    public List<Role> findInMenuId(List<Long> menuIds) {
+    public List<Role> findInMenuId(List<String> menuIds) {
         return roleRepository.findInMenuId(menuIds);
     }
 
@@ -217,11 +217,11 @@ public class RoleServiceImpl implements RoleService {
      * 清理缓存
      * @param id /
      */
-    public void delCaches(Long id, List<User> users) {
+    public void delCaches(String id, List<User> users) {
         users = CollectionUtil.isEmpty(users) ? userRepository.findByRoleId(id) : users;
         if (CollectionUtil.isNotEmpty(users)) {
             users.forEach(item -> userCacheClean.cleanUserCache(item.getUsername()));
-            Set<Long> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
+            Set<String> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
             redisUtils.delByKeys(CacheKey.DATA_USER, userIds);
             redisUtils.delByKeys(CacheKey.MENU_USER, userIds);
             redisUtils.delByKeys(CacheKey.ROLE_AUTH, userIds);

+ 7 - 7
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java

@@ -85,7 +85,7 @@ public class UserServiceImpl implements UserService {
     @Override
     @Cacheable(key = "'id:' + #p0")
     @Transactional(rollbackFor = Exception.class)
-    public UserDto findById(long id) {
+    public UserDto findById(String id) {
         User user = userRepository.findById(id).orElseGet(User::new);
         ValidationUtil.isNull(user.getId(), "User", "id", id);
         return userMapper.toDto(user);
@@ -184,15 +184,15 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public List<User> findByDmUserId(Long dmUserId,Long userId) {
+    public List<User> findByDmUserId(String dmUserId,String userId) {
         return userRepository.findByDmUserId(dmUserId,userId);
     }
 
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void delete(Set<Long> ids) {
-        for (Long id : ids) {
+    public void delete(Set<String> ids) {
+        for (String id : ids) {
             // 清理缓存
             UserDto user = findById(id);
             delCaches(user.getId(), user.getUsername());
@@ -268,7 +268,7 @@ public class UserServiceImpl implements UserService {
      *
      * @param id /
      */
-    public void delCaches(Long id, String username) {
+    public void delCaches(String id, String username) {
         redisUtils.del(CacheKey.USER_ID + id);
         flushCache(username);
     }
@@ -326,8 +326,8 @@ public class UserServiceImpl implements UserService {
      * 解绑用户
      * @param ids
      */
-    public void unBindDmUser(Set<Long> ids) throws Exception{
-        for(Long id: ids){
+    public void unBindDmUser(Set<String> ids) throws Exception{
+        for(String id: ids){
             //查询用户信息
            User user = userMapper.toEntity(findById(id));
            if(user != null){

+ 36 - 0
eladmin-system/src/main/resources/application.properties

@@ -0,0 +1,36 @@
+#CardRecordTask
+expenseUrl=https://smartpark.caih.com/dxapi/dxtop/dish/page
+rechargeUrl=https://smartpark.caih.com/dxapi/dxtop/charge/page
+#ZkDataSyncTask
+zkApiUrl=https://smartpark.caih.com/zkxt
+key=DMERPYT!@#$QWER2021+{:>
+headerKey=XYTACCESSTOKEN
+deptApi=/api/thirdparty/v1/user/getzkdeps
+userApi=/api/thirdparty/v1/user/getZkSysUsers
+#AccessDataTask
+accessUrl=http://47.103.9.22:8069/openapi/getHistoryRecord
+#LaneDataTask
+laneUrl=http://10.208.128.14:9999/api/park/getlane
+#PlateTrafficTask || DmVisitorsApplyServiceImpl || DmPlateNumberServiceImpl
+yueUrl=http://10.208.128.14:9999/api/park/addmonthlycar
+deleteYueUrl=http://10.208.128.14:9999/api/park/deletecar
+mfUrl=http://10.208.128.14:9999/api/park/addfreecar
+#PlateTrafficTask
+plateUrl=http://10.208.128.14:9999/api/park/getparkrecord
+#DmVisitorsApplyServiceImpl
+erCodeUrl=http://10.208.128.14:8069/viscustom/yongTianDongXin/add
+#RoomDeviceTask
+deviceUrl=http://10.208.128.14:8069/openapi/getDoorList
+#DmPlateNumberServiceImpl
+messageUrl=https://smartpark.caih.com/zkxt/api/thirdparty/v1/message/sendChatMessage
+#DmCardServiceImpl
+zkUpdateUrl=https://smartpark.caih.com/zkxt/api/thirdparty/v1/user/updateZkUsers
+personOperate=http://10.208.128.14:8069/openapi/personOperate
+#OpenApiController
+AccessTraffic=http://10.208.128.14:8069/openapi/SetPushRecCallBack?callbackURL=https://smartpark.caih.com/ykt/api/thirdparty/v1/openInterface/callbackAccessTraffic
+#同步设备权限
+synchronizationDeviceUrl=http://10.208.128.14:8069/openapi/devicePermissionOperate
+#同步设备权限
+getDeviceUrl=http://10.208.128.14:8069/openapi/getDoorPermission
+#员工离职时删除的设备
+deviceInfo=5L18X090516,5L18X090270,5L18X090270,5L18X090446,5L07X130045,5L18X090209,5L18X090118,5L18X090196