1811872455@163.com 1 тиждень тому
батько
коміт
9814068a9e
45 змінених файлів з 1322 додано та 183 видалено
  1. 20 1
      storlead-centre-api/src/main/java/com/storlead/centre/app/AppManageApiController.java
  2. 1 3
      storlead-centre-service/src/main/java/com/storlead/centre/pojo/dto/SysAppInfoQuery.java
  3. 9 0
      storlead-dependencies/pom.xml
  4. 5 0
      storlead-framework/storlead-common/pom.xml
  5. 1 1
      storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/page/Page.java
  6. 6 0
      storlead-framework/storlead-web/pom.xml
  7. 2 1
      storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/assemble/QueryBaseEntity.java
  8. 456 0
      storlead-user/src/main/java/com/storlead/user/controller/UserApiController.java
  9. 49 0
      storlead-user/src/main/java/com/storlead/user/enums/OrganizationalTypeEnum.java
  10. 16 0
      storlead-user/src/main/java/com/storlead/user/mapper/DeptRoleMapper.java
  11. 59 0
      storlead-user/src/main/java/com/storlead/user/mapper/RoleMapper.java
  12. 33 0
      storlead-user/src/main/java/com/storlead/user/mapper/UserRoleMapper.java
  13. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/CompanyDTO.java
  14. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/DepartmentParam.java
  15. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/EmployeeParam.java
  16. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/JobDTO.java
  17. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/MenuParam.java
  18. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/RoleParam.java
  19. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/dto/UserParam.java
  20. 45 0
      storlead-user/src/main/java/com/storlead/user/pojo/entity/DeptRoleEntity.java
  21. 56 0
      storlead-user/src/main/java/com/storlead/user/pojo/entity/RoleEntity.java
  22. 23 0
      storlead-user/src/main/java/com/storlead/user/pojo/entity/UserRoleEntity.java
  23. 1 1
      storlead-user/src/main/java/com/storlead/user/pojo/vo/ApiDataQuery.java
  24. 24 0
      storlead-user/src/main/java/com/storlead/user/service/DeptRoleService.java
  25. 23 0
      storlead-user/src/main/java/com/storlead/user/service/IRoleService.java
  26. 33 0
      storlead-user/src/main/java/com/storlead/user/service/IUserRoleService.java
  27. 1 1
      storlead-user/src/main/java/com/storlead/user/service/IUserService.java
  28. 2 2
      storlead-user/src/main/java/com/storlead/user/service/impl/DepartServiceImpl.java
  29. 34 0
      storlead-user/src/main/java/com/storlead/user/service/impl/DeptRoleServiceImpl.java
  30. 0 38
      storlead-user/src/main/java/com/storlead/user/service/impl/EhCacheService.java
  31. 1 1
      storlead-user/src/main/java/com/storlead/user/service/impl/HrmcompanyServiceImpl.java
  32. 1 1
      storlead-user/src/main/java/com/storlead/user/service/impl/HrmdepartmentServiceImpl.java
  33. 2 1
      storlead-user/src/main/java/com/storlead/user/service/impl/HrmdepartmentdefinedServiceImpl.java
  34. 1 1
      storlead-user/src/main/java/com/storlead/user/service/impl/HrmjobtitlesServiceImpl.java
  35. 1 1
      storlead-user/src/main/java/com/storlead/user/service/impl/HrmresourceServiceImpl.java
  36. 1 1
      storlead-user/src/main/java/com/storlead/user/service/impl/HrmsubcompanyServiceImpl.java
  37. 37 0
      storlead-user/src/main/java/com/storlead/user/service/impl/RoleServiceImpl.java
  38. 1 1
      storlead-user/src/main/java/com/storlead/user/service/impl/SubCompanyServiceImpl.java
  39. 0 84
      storlead-user/src/main/java/com/storlead/user/service/impl/SysBaseApiImpl.java
  40. 231 0
      storlead-user/src/main/java/com/storlead/user/service/impl/UserRoleServiceImpl.java
  41. 7 15
      storlead-user/src/main/java/com/storlead/user/service/impl/UserServiceImpl.java
  42. 21 22
      storlead-user/src/main/java/com/storlead/user/task/SyncOaTask.java
  43. 17 0
      storlead-user/src/main/resources/mapper/DeptRoleMapper.xml
  44. 63 0
      storlead-user/src/main/resources/mapper/RoleMapper.xml
  45. 32 0
      storlead-user/src/main/resources/mapper/UserRoleMapper.xml

+ 20 - 1
storlead-centre-api/src/main/java/com/storlead/centre/app/AppManageApiController.java

@@ -1,5 +1,6 @@
 package com.storlead.centre.app;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.storlead.centre.pojo.dto.SysAppInfoQuery;
@@ -7,19 +8,23 @@ import com.storlead.centre.pojo.entity.SysAppInfoEntity;
 import com.storlead.centre.service.SysAppInfoService;
 import com.storlead.centre.util.CryptoZipUtil;
 import com.storlead.centre.util.HttpSecurityCheckUtil;
+import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.common.util.MD5Util;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.web.assemble.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -67,9 +72,21 @@ public class AppManageApiController {
         return Result.ok();
     }
 
+
+    @PostMapping(value = "/getHomeApp")
+    @ApiOperation(value = "应用管理--新增/编辑", notes = "应用管理-新增/编辑")
+    public Result<?> getHomeApp() {
+
+        LambdaQueryWrapper<SysAppInfoEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysAppInfoEntity::getIsDelete, CommonConstant.FALSE_FLAG);
+        List<SysAppInfoEntity> apps = sysAppInfoService.list(queryWrapper);
+
+        return Result.result(apps);
+    }
+
+
     @PostMapping(value = "/jumpToApp")
     @ApiOperation(value = "应用管理-分页查询", notes = "应用管理-分页查询")
-    @Transactional(rollbackFor = Throwable.class)
     public Result<?> jumpToApp(Long appId) {
         SysAppInfoEntity info = sysAppInfoService.getById(appId);
 
@@ -89,6 +106,8 @@ public class AppManageApiController {
         return Result.result(requestUrl);
     }
 
+
+
     public static void main(String[] args) {
 
         Map<String,String> argMap = new HashMap<>();

+ 1 - 3
storlead-centre-service/src/main/java/com/storlead/centre/pojo/dto/SysAppInfoQuery.java

@@ -1,10 +1,8 @@
 package com.storlead.centre.pojo.dto;
 
-import com.storlead.framework.mybatis.entity.Page;
+import com.storlead.framework.mybatis.page.Page;
 import lombok.Data;
 
-import java.io.Serializable;
-
 /**
  * @program: storlead-centre-platform
  * @description:

+ 9 - 0
storlead-dependencies/pom.xml

@@ -60,6 +60,8 @@
         <apache.httpasyncclient.version>4.1.5</apache.httpasyncclient.version>
         <io.jsonwebtoken.version>0.9.1</io.jsonwebtoken.version>
         <io.jsonwebtoken.java.jwt.version>3.7.0</io.jsonwebtoken.java.jwt.version>
+        <cn.stylefeng.pinyin4j.version>7.2.3</cn.stylefeng.pinyin4j.version>
+
     </properties>
 
     <dependencyManagement>
@@ -164,6 +166,13 @@
                 <version>${io.jsonwebtoken.version}</version>
             </dependency>
 
+            <!--  pinyin4j  -->
+            <dependency>
+                <groupId>cn.stylefeng.roses</groupId>
+                <artifactId>pinyin-sdk-pinyin4j</artifactId>
+                <version>${cn.stylefeng.pinyin4j.version}</version>
+            </dependency>
+
 
             <dependency>
                 <groupId>org.projectlombok</groupId>

+ 5 - 0
storlead-framework/storlead-common/pom.xml

@@ -69,6 +69,11 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>cn.stylefeng.roses</groupId>
+            <artifactId>pinyin-sdk-pinyin4j</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>

+ 1 - 1
storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/entity/Page.java → storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/page/Page.java

@@ -1,4 +1,4 @@
-package com.storlead.framework.mybatis.entity;
+package com.storlead.framework.mybatis.page;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonProperty;

+ 6 - 0
storlead-framework/storlead-web/pom.xml

@@ -15,6 +15,12 @@
 
     <dependencies>
 
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-mybatis</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-common</artifactId>

+ 2 - 1
storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/entity/QueryBaseEntity.java → storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/assemble/QueryBaseEntity.java

@@ -1,6 +1,7 @@
-package com.storlead.framework.mybatis.entity;
+package com.storlead.framework.web.assemble;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.storlead.framework.mybatis.page.Page;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 456 - 0
storlead-user/src/main/java/com/storlead/user/controller/UserApiController.java

@@ -0,0 +1,456 @@
+package com.storlead.user.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.storlead.framework.common.constant.CommonConstant;
+import com.storlead.framework.common.ecode.PasswordEncoder;
+import com.storlead.framework.util.LoginUserUtil;
+import com.storlead.framework.web.assemble.Result;
+import com.storlead.user.pojo.dto.SetUserDetailDTO;
+import com.storlead.user.pojo.dto.UserParam;
+import com.storlead.user.pojo.entity.DeptEntity;
+import com.storlead.user.pojo.entity.RoleEntity;
+import com.storlead.user.pojo.entity.UserEntity;
+import com.storlead.user.pojo.entity.UserRoleEntity;
+import com.storlead.user.pojo.vo.SetUserDetailVo;
+import com.storlead.user.pojo.vo.UserVo;
+import com.storlead.user.service.IDepartService;
+import com.storlead.user.service.IRoleService;
+import com.storlead.user.service.IUserRoleService;
+import com.storlead.user.service.IUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @program: storlead-centre-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2025-11-27 16:20
+ */
+@Slf4j
+@Api(tags = "用户: 用户管理")
+@RestController
+@RequestMapping("/sys/user")
+public class UserApiController {
+    @Resource
+    private IUserService userService;
+
+    @Resource
+    private IUserRoleService userRoleService;
+
+    @Resource
+    private IRoleService roleService;
+
+    @Resource
+    private IDepartService departService;
+
+    @Resource
+    private PasswordEncoder passwordEncoder;
+
+    private final String defaultPassWord = "storlead123456";
+
+    @ApiOperation("保存员工")
+    @PostMapping("save")
+    public Result save(@RequestBody UserEntity user) {
+        if (StrUtil.isBlank(user.getMobile())) {
+            return Result.error("手机号不能为空!");
+        }
+        if(Objects.isNull(user.getId())) {
+            String defaultPassWord = this.defaultPassWord;
+            user.setDataSource(1);
+            user.setPassword(passwordEncoder.encode(defaultPassWord));
+        }
+        UserEntity oUser = userService.getOne(new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getMobile,user.getMobile()).eq(UserEntity::getIsDelete,0).last("limit 1"));
+        if (Objects.nonNull(oUser)) {
+            if (!oUser.getId().equals(user.getId())) {
+                return Result.error("手机'"+user.getMobile()+"'号已被占用!");
+            }
+        }
+
+        if (Objects.nonNull(user.getDeptId())) {
+            DeptEntity dept = departService.getById(user.getDeptId());
+            if (Objects.nonNull(dept)) {
+                user.setOrgRouteCode(dept.getRouteCode());
+                user.setSubCompanyId(dept.getSubCompanyId());
+                user.setCompanyId(dept.getCompanyId());
+                user.setSubCompanyId(dept.getSubCompanyId());
+            }
+        }
+        if (Objects.nonNull(user.getManagerId())) {
+            UserEntity u = userService.getById(user.getManagerId());
+            if (Objects.nonNull(u)) {
+                user.setManagers(u.getManagers()+","+user.getManagerId().toString());
+            } else {
+                user.setManagers(user.getManagerId().toString());
+            }
+        }
+        userService.saveOrUpdate(user);
+        return Result.ok();
+    }
+
+    @ApiOperation("根据部门id查询用户")
+    @PostMapping("listByDeptId")
+    public Result listByDeptId(Long deptId) {
+
+        List<UserEntity> list = userService.list(
+                new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getDeptId,deptId)
+                        .ne(UserEntity::getStatus,Integer.valueOf(5))
+                        .eq(UserEntity::getIsDelete,0));
+        return Result.ok(list);
+    }
+    @ApiOperation("分页查询用户")
+    @PostMapping("pagelist")
+    public Result pagelist(@RequestBody UserParam param) {
+
+//        param.setCommonQueryOrderBy("UserEntity");
+
+        IPage<UserEntity> page = new Page<>(param.getPageIndex(),param.getPageSize());
+        LambdaQueryWrapper<UserEntity> queryWrapper = new LambdaQueryWrapper<UserEntity>(new UserEntity());
+        queryWrapper.eq(UserEntity::getIsDelete, CommonConstant.FALSE_FLAG);
+        if (StrUtil.isNotBlank(param.getBlurry())) {
+            queryWrapper.like(UserEntity::getUserName,param.getBlurry()).or().like(UserEntity::getRealName,param.getBlurry());
+        }
+        if (StrUtil.isNotBlank(param.getOrgRouteCode())) {
+            queryWrapper.likeRight(UserEntity::getOrgRouteCode,param.getOrgRouteCode());
+        }
+//        if (Objects.isNull(param.getStatus())) {
+//            queryWrapper.ne(UserEntity::getStatus,Integer.valueOf(5));
+//        } else {
+//            queryWrapper.ne(UserEntity::getStatus,param.getStatus());
+//        }
+        if (!param.getIsIncludeResign()) {
+            queryWrapper.ne(UserEntity::getStatus,Integer.valueOf(5));
+        }
+        queryWrapper.orderByDesc(UserEntity::getEmail);
+        IPage<UserEntity> us  = userService.page(page,queryWrapper);
+//        if (CollectionUtil.isNotEmpty(us)) {
+//            List<Long> userIds = us.stream().map(UserVo::getId).collect(Collectors.toList());
+//            List<UserRoleEntity> userRolels = userRoleService.selectUserRole(new LambdaQueryWrapper<UserRoleEntity>().in(UserRoleEntity::getUserId,userIds));
+//            if (CollectionUtil.isNotEmpty(userRolels)) {
+//                List<RoleEntity> rs = roleService.list(new LambdaQueryWrapper<RoleEntity>().in(RoleEntity::getId,userRolels.stream().map(UserRoleEntity::getRoleId).collect(Collectors.toList())));
+//                us.forEach(u -> {
+//                    List<RoleEntity> roles = rs.stream().filter(r -> userRolels.stream().anyMatch(ur -> ur.getRoleId().equals(r.getId()) && ur.getUserId().equals(u.getId()))).collect(Collectors.toList());
+//                    if(CollectionUtil.isNotEmpty(roles)) {
+//                        u.setRoleNames(roles.stream().map(RoleEntity::getName).collect(Collectors.toList()));
+//                        u.setRoleIds(roles.stream().map(RoleEntity::getId).collect(Collectors.toList()));
+//                    }
+//                });
+//            }
+//
+//            us.forEach(e -> {
+//                e.setIdNum("");
+//                e.setPassword("");
+//                e.setBankCardNum("");
+//                e.setBankName("");
+//                e.setEducation("");
+//                e.setAddress("");
+//                e.setBirthday(null);
+//                e.setEmail("");
+//            });
+//        }
+//        page.setRecords(us);
+        return Result.ok(us);
+    }
+
+    @ApiOperation("分页查询用户")
+    @PostMapping("pageScopelist")
+    public Result pageScopelist(@RequestBody UserParam param) {
+
+        IPage<UserEntity> page = new Page<>(param.getPageIndex(),param.getPageSize());
+        LambdaQueryWrapper<UserEntity> queryWrapper = new LambdaQueryWrapper<UserEntity>(new UserEntity());
+        queryWrapper.eq(UserEntity::getIsDelete, CommonConstant.FALSE_FLAG);
+        if (StrUtil.isNotBlank(param.getBlurry())) {
+            queryWrapper.like(UserEntity::getUserName,param.getBlurry()).or().like(UserEntity::getRealName,param.getBlurry());
+        }
+        if (StrUtil.isNotBlank(param.getOrgRouteCode())) {
+            queryWrapper.likeRight(UserEntity::getOrgRouteCode,param.getOrgRouteCode());
+        }
+        if (!param.getIsIncludeResign()) {
+            queryWrapper.ne(UserEntity::getStatus,Integer.valueOf(5));
+        }
+        queryWrapper.orderByDesc(UserEntity::getEmail);
+        IPage<UserEntity> userPg  = userService.page(page,queryWrapper);
+//        if (CollectionUtil.isNotEmpty(userPg)) {
+//            List<Long> userIds = userPg.getRecords().stream().map(UserEntity::getId).collect(Collectors.toList());
+//            List<UserRoleEntity> userRolels = userRoleService.selectUserRole(new LambdaQueryWrapper<UserRoleEntity>().in(UserRoleEntity::getUserId,userIds));
+//            if (CollectionUtil.isNotEmpty(userRolels)) {
+//                List<RoleEntity> rs = roleService.list(new LambdaQueryWrapper<RoleEntity>().in(RoleEntity::getId,userRolels.stream().map(UserRoleEntity::getRoleId).collect(Collectors.toList())));
+//                us.forEach(u -> {
+//                    List<RoleEntity> roles = rs.stream().filter(r -> userRolels.stream().anyMatch(ur -> ur.getRoleId().equals(r.getId()) && ur.getUserId().equals(u.getId()))).collect(Collectors.toList());
+////                    if(CollectionUtil.isNotEmpty(roles)) {
+////                        u.setRoleNames(roles.stream().map(RoleEntity::getName).collect(Collectors.toList()));
+////                        u.setRoleIds(roles.stream().map(RoleEntity::getId).collect(Collectors.toList()));
+////                    }
+//                });
+//            }
+//
+//            us.forEach(e -> {
+//                e.setIdNum("");
+//                e.setPassword("");
+//                e.setBankCardNum("");
+//                e.setBankName("");
+//                e.setEducation("");
+//                e.setAddress("");
+//                e.setBirthday(null);
+//                e.setEmail("");
+//            });
+//        }
+//        page.setRecords(us);
+        return Result.ok(userPg);
+    }
+
+    @ApiOperation("删除人员数据")
+    @PostMapping("delete")
+    public Result delete(Long [] ids) {
+        if (ids == null || ids.length == 0) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper();
+        update.in(UserEntity::getId, Arrays.asList(ids));
+        update.set(UserEntity::getIsDelete,1);
+        userService.update(update);
+        return Result.ok();
+    }
+
+
+    @ApiOperation("标记冻结")
+    @PostMapping("markFreeze")
+    public Result markFreeze(Long [] ids,Integer isFreeze) {
+        if (ids == null || ids.length == 0) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper();
+        update.in(UserEntity::getId,Arrays.asList(ids));
+        update.set(UserEntity::getIsFreeze,isFreeze);
+        userService.update(update);
+        if(Integer.valueOf(0).equals(isFreeze)) {
+            userService.updateLastFollowUpTime(Arrays.asList(ids));
+        }
+        return Result.ok();
+    }
+
+
+    @ApiOperation("删除人员数据")
+    @PostMapping("deleteById")
+    public Result deleteById(Long id) {
+        if (id == null) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper();
+        update.eq(UserEntity::getId,id);
+        update.set(UserEntity::getIsDelete,1);
+        userService.update(update);
+        return Result.ok();
+    }
+
+    @ApiOperation("删除人员数据")
+    @PostMapping("updateRealName")
+    public Result deleteById(Long id,String realName) {
+        if (id == null) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper();
+        update.eq(UserEntity::getId,id);
+        update.set(UserEntity::getRealName,realName);
+        userService.update(update);
+        return Result.ok();
+    }
+
+
+    @ApiOperation("启用禁用员工")
+    @PostMapping("enable")
+    public Result setEnable(Long [] ids,Boolean enable) {
+        if (ids == null || ids.length == 0) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper();
+        update.in(UserEntity::getId,Arrays.asList(ids));
+        update.set(UserEntity::getEnabled,enable);
+        Boolean re =  userService.update(update);
+        if (re) {
+            return Result.ok();
+        } else {
+            return Result.error("操作失败");
+        }
+    }
+
+
+    @ApiOperation("根据ids查询用户")
+    @PostMapping("queryByIds")
+    public Result queryByIds(Long [] ids) {
+        if (ids == null || ids.length == 0) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<UserEntity> query = new LambdaUpdateWrapper();
+        query.in(UserEntity::getId,Arrays.asList(ids));
+        List<UserEntity> list  =  userService.list(query);
+        return Result.ok(list);
+    }
+
+
+    @ApiOperation("同步OA数据")
+    @PostMapping("syncOa")
+    public Result syncOa() {
+        userService.syncOa();
+        return Result.ok();
+    }
+
+    @ApiOperation("重置密码")
+    @PostMapping("resetPassword")
+    public Result resetPassword(Long userId) {
+        if  (Objects.isNull(userId)) {
+            return Result.error("参数错误");
+        }
+        String defaultPassWord = this.defaultPassWord;
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper<UserEntity>();
+        update.eq(UserEntity::getId,userId);
+        update.set(UserEntity::getPassword,passwordEncoder.encode(defaultPassWord));
+        userService.update(update);
+        return Result.ok();
+    }
+
+    @ApiOperation("修改用户信息")
+    @PostMapping("updateUserInfo")
+    public Result setPhone(SetUserDetailDTO dto) {
+        Long userId = LoginUserUtil.getCurrentUserId();
+        if  (Objects.isNull(userId)) {
+            return Result.error("您未登录");
+        }
+        if  (StrUtil.isBlank(dto.getAvatar())) {
+            return Result.error("参数错误,头像url不能为空");
+        }
+        if  (StrUtil.isBlank(dto.getMobile())) {
+            return Result.error("参数错误,手机号不能为空");
+        }
+        UserEntity entity = userService.getById(userId);
+        if (Objects.isNull(entity)) {
+            return Result.error("未找到当前用户,请重新登录");
+        }
+        UserEntity oUser = userService.getOne(new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getMobile,dto.getMobile()).eq(UserEntity::getIsDelete,0).last("limit 1"));
+        if (Objects.nonNull(oUser)) {
+            if (!oUser.getId().equals(userId)) {
+                return Result.error("该手机'"+dto.getMobile()+"'号已被占用!");
+            }
+        }
+        if  (StrUtil.isNotBlank(dto.getEmail())) {
+            oUser = userService.getOne(new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getMobile,dto.getEmail()).eq(UserEntity::getIsDelete,0).last("limit 1"));
+            if (Objects.nonNull(oUser)) {
+                if (!oUser.getId().equals(userId)) {
+                    return Result.error("该邮箱'"+dto.getEmail()+"'已被占用!");
+                }
+            }
+        }
+        LambdaUpdateWrapper<UserEntity> update = new LambdaUpdateWrapper<>();
+        update.eq(UserEntity::getId, userId);
+
+        update.set(UserEntity::getAvatar, dto.getAvatar())
+                .set(UserEntity::getEmail, dto.getEmail())
+                .set(UserEntity::getNickName, dto.getNickName())
+                .set(UserEntity::getRealName, dto.getRealName())
+                .set(UserEntity::getMobile, dto.getMobile())
+                .set(UserEntity::getSex, dto.getSex())
+                .set(UserEntity::getBirthday, dto.getBirthday());
+
+        if (StrUtil.isNotBlank(dto.getJobDes())) {
+            update.set(UserEntity::getJobDes, dto.getJobDes());
+        }
+
+        try {
+            boolean result = userService.update(update);
+            if (!result) {
+                return Result.error("更新用户信息失败,请重试。");
+            }
+        } catch (Exception e) {
+            log.error("更新用户信息发生错误: {}", e.getMessage());
+            return Result.error("系统错误,更新用户信息失败。");
+        }
+
+        if (StrUtil.isNotBlank(dto.getDeptJobDes()) && Objects.nonNull(entity.getDeptId())) {
+            DeptEntity dept = departService.getById(entity.getDeptId());
+            if (!dto.getDeptJobDes().equals(dept.getDeptJobDes())) {
+                if (Integer.valueOf(0).equals(entity.getIsLeader())) {
+                    return Result.error("只有领导才能设置部门职责");
+                }
+                LambdaUpdateWrapper<DeptEntity> dUpdate = new LambdaUpdateWrapper<DeptEntity>();
+                dUpdate.eq(DeptEntity::getId,entity.getDeptId());
+                dUpdate.set(DeptEntity::getDeptJobDes,dto.getDeptJobDes());
+                departService.update(dUpdate);
+            }
+        }
+        return Result.ok();
+    }
+
+    @ApiOperation("获取用户基础信息")
+    @PostMapping("getSimpleUserInfo")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "", response = SetUserDetailVo.class)
+    })
+    public Result getSimpleUserInfo() {
+        Long userId = LoginUserUtil.getCurrentUserId();
+        if  (Objects.isNull(userId)) {
+            return Result.error("您未登录");
+        }
+        UserVo entity = userService.getUserInfoById(userId);
+
+        SetUserDetailVo detailVo = new SetUserDetailVo();
+        detailVo.setDeptId(entity.getDeptId());
+        detailVo.setId(entity.getId());
+        detailVo.setDeptName(entity.getDeptName());
+        detailVo.setAvatar(entity.getAvatar());
+        detailVo.setJobId(entity.getJobId());
+        detailVo.setJobName(entity.getJobName());
+        detailVo.setEmail(entity.getEmail());
+        detailVo.setMobile(entity.getMobile());
+        detailVo.setUserName(entity.getRealName());
+        detailVo.setJobDes(entity.getJobDes());
+        detailVo.setIsLeader(entity.getIsLeader());
+        DeptEntity dept = departService.getById(entity.getDeptId());
+        if (Objects.nonNull(dept)) {
+            detailVo.setDeptJobDes(dept.getDeptJobDes());
+        }
+        return Result.ok(detailVo);
+    }
+
+    public void updateManagerId(UserEntity user,Long oldManagerId){
+        if (Objects.isNull(user)) {
+            return;
+        }
+        if (Objects.isNull(user.getManagerId())) {
+            return;
+        }
+        List<UserEntity> userEntities = userService.list(new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getManagerId,user.getId()));
+        for (UserEntity userEntity : userEntities) {
+            if (StrUtil.isNotBlank(userEntity.getManagers())) {
+                String routeCodeStr = ","+userEntity.getManagers()+",";
+                routeCodeStr = routeCodeStr.replace(","+oldManagerId+",",","+userEntity.getManagerId()+",");
+                StringUtils.startsWithIgnoreCase(routeCodeStr,",");
+                StringUtils.endsWithIgnoreCase(routeCodeStr,",");
+
+                LambdaUpdateWrapper<UserEntity> updateWrapper = new LambdaUpdateWrapper();
+                updateWrapper.eq(UserEntity::getId,userEntity.getId());
+                updateWrapper.set(UserEntity::getManagers,routeCodeStr);
+                userService.update(updateWrapper);
+            }
+        }
+
+    }
+}

+ 49 - 0
storlead-user/src/main/java/com/storlead/user/enums/OrganizationalTypeEnum.java

@@ -0,0 +1,49 @@
+package com.storlead.user.enums;
+
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * @program: sp-sales-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2025-05-08 14:27
+ */
+
+@Getter
+public enum OrganizationalTypeEnum {
+    /**
+     * organizationalType(1集团,2公司,3部门,4个人)
+     */
+    COMPANY_GROUP(1, "集团"),
+
+    SUB_COMPANY_GROUP(2, "分公司"),
+
+    DEPT_GROUP(3, "部门"),
+
+    USER_GROUP(4, "用户"),
+    ;
+
+    public Integer code;
+
+    public String desc;
+
+    OrganizationalTypeEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public static OrganizationalTypeEnum getEnumByCode(Integer code) {
+        if (Objects.isNull(code)) {
+            return null;
+        }
+        for (OrganizationalTypeEnum type : OrganizationalTypeEnum.values()) {
+            if (type.code.equals(code)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+}

+ 16 - 0
storlead-user/src/main/java/com/storlead/user/mapper/DeptRoleMapper.java

@@ -0,0 +1,16 @@
+package com.storlead.user.mapper;
+
+import com.storlead.framework.mybatis.mapper.MyBaseMapper;
+import com.storlead.user.pojo.entity.DeptRoleEntity;
+
+/**
+ * <p>
+ * 部门角色权限 Mapper 接口
+ * </p>
+ *
+ * @author chenkq
+ * @since 2024-04-02
+ */
+public interface DeptRoleMapper extends MyBaseMapper<DeptRoleEntity> {
+
+}

+ 59 - 0
storlead-user/src/main/java/com/storlead/user/mapper/RoleMapper.java

@@ -0,0 +1,59 @@
+package com.storlead.user.mapper;
+
+import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.system.pojo.entity.RoleEntity;
+import org.apache.ibatis.annotations.Param;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 角色表 Mapper 接口
+ * </p>
+ *
+ * @Author chenk
+ * @since 20124-4-1
+ */
+public interface RoleMapper extends MyBaseMapper<RoleEntity> {
+
+    /**
+     * 根据用户ID 查询所有的全部菜单权限 也就是用户角色所有的菜单的 permission 字段
+     *
+     * @param userId 用户id
+     * @return java.util.Set<java.lang.String>
+     * @author blank
+     * @date 2021-3-12 下午 3:17
+     */
+    Set<String> findMenuPermissionsByUserId(@NotNull @Param("userId") Long userId);
+
+    /**
+     * 根据系统用户ID 查询所有权限
+     *
+     * @param userId 用户ID
+     * @return java.util.List<com.storlead.web.model.entity.Role>
+     * @author blank
+     * @date 2021-3-31 下午 5:26
+     */
+    List<RoleEntity> findByUserId(@NotNull @Param("userId") Long userId);
+
+    /**
+     * 查询当前用户所拥有的自定义角色中的部门ID集的权限列表
+     *
+     * @param userId 用户ID
+     * @return java.util.Set<java.lang.Long>
+     * @author blank
+     * @date 2021-4-15 下午 2:25
+     */
+    Set<Long> getDeptIdsByUserId(@NotNull @Param("userId") Long userId);
+
+    Set<Long> getDeptIdsByRoleId(@NotNull @Param("roleId") Long roleId);
+
+    /**
+     * 根据角色查询角色对应的 菜单id*
+     * @param roleId
+     * @return
+     */
+    Set<Long> getMenuIdsByRoleId(@NotNull @Param("roleId") Long roleId,@Param("isApp") Integer isApp);
+}

+ 33 - 0
storlead-user/src/main/java/com/storlead/user/mapper/UserRoleMapper.java

@@ -0,0 +1,33 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.storlead.user.pojo.entity.UserRoleEntity;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户角色表 Mapper 接口
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-21
+ */
+public interface UserRoleMapper extends BaseMapper<UserRoleEntity> {
+
+    @Select("select name from role r left join user_role ur on u.user_id = r.id left join user u on u.id = ur.user_id where u.user_name = #{username}")
+    List<String> getRoleByUsername(String username);
+
+    /**
+     * 初始化没有角色的用户 给 roleID = 2 普通用户
+     * @date 2021-4-14 下午 2:13
+     */
+    Long initUserRole();
+
+
+    List<UserRoleEntity> selectUserRole(@Param(Constants.WRAPPER) Wrapper<UserRoleEntity> wrapper);
+}

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/CompanyDTO.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import lombok.Data;
 
 /**

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/DepartmentParam.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import lombok.Data;
 
 import java.util.Arrays;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/EmployeeParam.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/JobDTO.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/MenuParam.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/RoleParam.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/dto/UserParam.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.dto;
 
-import com.storlead.common.object.QueryBaseEntity;
+import com.storlead.framework.web.assemble.QueryBaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 45 - 0
storlead-user/src/main/java/com/storlead/user/pojo/entity/DeptRoleEntity.java

@@ -0,0 +1,45 @@
+package com.storlead.user.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.storlead.framework.mybatis.entity.SysBaseField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 部门角色权限
+ * </p>
+ *
+ * @author chenkq
+ * @since 2024-04-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("dept_role")
+@ApiModel(value="DeptRoleEntity对象", description="部门角色权限")
+public class DeptRoleEntity extends SysBaseField {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "角色ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "部门ID")
+    private Long deptId;
+
+    @ApiModelProperty(value = "角色ID")
+    private Long roleId;
+
+    public DeptRoleEntity(Long roleId, Long deptId) {
+        this.roleId = roleId;
+        this.deptId = deptId;
+    }
+
+}

+ 56 - 0
storlead-user/src/main/java/com/storlead/user/pojo/entity/RoleEntity.java

@@ -0,0 +1,56 @@
+package com.storlead.user.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.storlead.framework.mybatis.entity.SysBaseField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * <p>
+ * 角色表
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("role")
+public class RoleEntity extends SysBaseField {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "角色ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "角色名称")
+    private String name;
+
+    @ApiModelProperty(value = "角色描述")
+    @TableField("`desc`")
+    private String desc;
+
+    @ApiModelProperty(value = "权限范围(全部 本公司 自定义 自己)")
+    private String dataScope;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @TableField(exist = false)
+    private String userNames = "";
+    /**
+     * 用户id集合
+     */
+    @TableField(exist = false)
+    private List<Long> userIds = Collections.emptyList();
+}

+ 23 - 0
storlead-user/src/main/java/com/storlead/user/pojo/entity/UserRoleEntity.java

@@ -0,0 +1,23 @@
+package com.storlead.user.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("user_role")
+public class UserRoleEntity implements Serializable {
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "角色id")
+    private Long roleId;
+
+}

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/pojo/vo/ApiDataQuery.java

@@ -1,6 +1,6 @@
 package com.storlead.user.pojo.vo;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.mybatis.page.Page;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 

+ 24 - 0
storlead-user/src/main/java/com/storlead/user/service/DeptRoleService.java

@@ -0,0 +1,24 @@
+package com.storlead.user.service;
+
+import com.storlead.framework.mybatis.service.MyBaseService;
+import com.storlead.user.pojo.entity.DeptRoleEntity;
+
+import java.util.Set;
+
+/**
+ * <p>
+ * 部门角色权限 服务类
+ * </p>
+ *
+ * @author chenkq
+ * @since 2024-04-02
+ */
+public interface DeptRoleService extends MyBaseService<DeptRoleEntity> {
+
+    /**
+     * 更新角色绑定部门信息
+     * @param roleId 角色id
+     * @param deptIds 菜单Ids
+     */
+    void updateDeptRole(Long roleId, Set<Long> deptIds);
+}

+ 23 - 0
storlead-user/src/main/java/com/storlead/user/service/IRoleService.java

@@ -0,0 +1,23 @@
+package com.storlead.user.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.storlead.user.pojo.entity.RoleEntity;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 角色表 服务类
+ * </p>
+ *
+ * @Author chenkq
+ * @since 2018-12-19
+ */
+public interface IRoleService extends IService<RoleEntity> {
+    List<RoleEntity> findByUserId(Long userId);
+
+    Set<Long> getMenuIdsByRoleId(Long roleId,Integer isApp);
+
+    Set<Long> getdeptIdsByRoleId(Long roleId);
+}

+ 33 - 0
storlead-user/src/main/java/com/storlead/user/service/IUserRoleService.java

@@ -0,0 +1,33 @@
+package com.storlead.user.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.storlead.user.pojo.entity.UserRoleEntity;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 用户角色表 服务类
+ * </p>
+ *
+ * @Author chenkq
+ * @since 2022-12-21
+ */
+public interface IUserRoleService extends IService<UserRoleEntity> {
+
+     List<UserRoleEntity> selectUserRole(Wrapper wrapper);
+
+    Set<Long> selectUserRoleByUserId(Long id);
+
+    void initUserRole();
+    /***
+      * @Description: 通过组织类型查询当前登录用户的权限范围
+      * @Param: organizationalType(1集团,2公司,3部门,4个人)
+      * @return:
+      * @Author: YPZ
+      * @Date: 2025/5/8 10:40
+      */
+    // Set<Long> dataSelete(OrganizationalTypeEnum organizationalTypeEnum);
+}

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/IUserService.java

@@ -2,8 +2,8 @@ package com.storlead.user.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.storlead.frameworkcore.assemble.Result;
 import com.storlead.framework.mybatis.service.MyBaseService;
+import com.storlead.framework.web.assemble.Result;
 import com.storlead.user.pojo.entity.UserEntity;
 import com.storlead.user.pojo.entity.UserForm;
 import com.storlead.user.model.UserInfo;

+ 2 - 2
storlead-user/src/main/java/com/storlead/user/service/impl/DepartServiceImpl.java

@@ -1,8 +1,8 @@
 package com.storlead.user.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.storlead.common.constant.CacheConstant;
-import com.storlead.common.constant.CommonConstant;
+import com.storlead.framework.common.constant.CacheConstant;
+import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.user.mapper.DeptMapper;
 import com.storlead.user.model.DepartIdModel;

+ 34 - 0
storlead-user/src/main/java/com/storlead/user/service/impl/DeptRoleServiceImpl.java

@@ -0,0 +1,34 @@
+package com.storlead.user.service.impl;
+
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.user.mapper.DeptRoleMapper;
+import com.storlead.user.pojo.entity.DeptRoleEntity;
+import com.storlead.user.service.DeptRoleService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 部门角色权限 服务实现类
+ * </p>
+ *
+ * @author chenkq
+ * @since 2024-04-02
+ */
+@Service
+public class DeptRoleServiceImpl extends MyBaseServiceImpl<DeptRoleMapper, DeptRoleEntity> implements DeptRoleService {
+
+    @Override
+    public void updateDeptRole(Long roleId, Set<Long> deptIds) {
+        if (Objects.nonNull(roleId) && !CollectionUtils.isEmpty(deptIds)) {
+            this.removeByMap(Map.of("role_id", roleId));
+            Set<DeptRoleEntity> collect = deptIds.stream().map(deptId -> new DeptRoleEntity(roleId, deptId)).collect(Collectors.toSet());
+            this.saveBatch(collect);
+        }
+    }
+}

+ 0 - 38
storlead-user/src/main/java/com/storlead/user/service/impl/EhCacheService.java

@@ -1,38 +0,0 @@
-package com.storlead.user.service.impl;
-
-import com.storlead.common.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-@Service
-@Slf4j
-public class EhCacheService {
-
-	@Resource
-    private RedisUtil redisUtil;
-
-	public <T> T get(String cacheName,Object key, Class<T> clazz) {
-		Object ksCache = redisUtil.get(cacheName+key);
-		if (ksCache == null) {
-			return null;
-		} else {
-			return (T)ksCache;
-		}
-	}
-
-	public void put(String cacheName,Object key, Object value, int expire) {
-		try {
-			redisUtil.set(cacheName+key, value, expire);
-		} catch (Exception e) {
-			log.info(e.getMessage());
-		}
-
-	}
-
-	public void remove(String cacheName,Object key) {
-		redisUtil.del(cacheName+key);
-	}
-
-}

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/HrmcompanyServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.user.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.storlead.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
 import com.storlead.user.mapper.HrmcompanyMapper;
 import com.storlead.user.pojo.entity.Hrmcompany;
 import com.storlead.user.service.IHrmcompanyService;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/HrmdepartmentServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.user.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.storlead.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
 import com.storlead.user.mapper.HrmdepartmentMapper;
 import com.storlead.user.pojo.entity.Hrmdepartment;
 import com.storlead.user.service.IHrmdepartmentService;

+ 2 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/HrmdepartmentdefinedServiceImpl.java

@@ -2,7 +2,8 @@ package com.storlead.user.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.storlead.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
 import com.storlead.user.mapper.HrmdepartmentdefinedMapper;
 import com.storlead.user.pojo.entity.Hrmdepartmentdefined;
 import com.storlead.user.service.IHrmdepartmentdefinedService;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/HrmjobtitlesServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.user.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.storlead.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
 import com.storlead.user.mapper.HrmjobtitlesMapper;
 import com.storlead.user.pojo.entity.Hrmjobtitles;
 import com.storlead.user.service.IHrmjobtitlesService;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/HrmresourceServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.user.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.storlead.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
 import com.storlead.user.mapper.HrmresourceMapper;
 import com.storlead.user.pojo.entity.Hrmresource;
 import com.storlead.user.pojo.entity.UserEntity;

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/HrmsubcompanyServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.user.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.storlead.common.constant.DSConstants;
+import com.storlead.framework.common.constant.DSConstants;
 import com.storlead.user.mapper.HrmsubcompanyMapper;
 import com.storlead.user.pojo.entity.Hrmsubcompany;
 import com.storlead.user.service.IHrmsubcompanyService;

+ 37 - 0
storlead-user/src/main/java/com/storlead/user/service/impl/RoleServiceImpl.java

@@ -0,0 +1,37 @@
+package com.storlead.user.service.impl;
+
+import com.storlead.frame.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.system.mapper.RoleMapper;
+import com.storlead.system.pojo.entity.RoleEntity;
+import com.storlead.system.service.IRoleService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 角色表 服务实现类
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-19
+ */
+@Service
+public class RoleServiceImpl extends MyBaseServiceImpl<RoleMapper, RoleEntity> implements IRoleService {
+
+    @Override
+    public List<RoleEntity> findByUserId(Long userId) {
+        return baseMapper.findByUserId(userId);
+    }
+
+    @Override
+    public Set<Long> getMenuIdsByRoleId(Long roleId,Integer isApp) {
+        return baseMapper.getMenuIdsByRoleId(roleId,isApp);
+    }
+
+    @Override
+    public Set<Long> getdeptIdsByRoleId(Long roleId) {
+        return baseMapper.getDeptIdsByRoleId(roleId);
+    }
+}

+ 1 - 1
storlead-user/src/main/java/com/storlead/user/service/impl/SubCompanyServiceImpl.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.storlead.user.mapper.SubCompanyMapper;
 import com.storlead.user.pojo.entity.SubCompanyEntity;
 import com.storlead.user.service.ISubCompanyService;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 

+ 0 - 84
storlead-user/src/main/java/com/storlead/user/service/impl/SysBaseApiImpl.java

@@ -1,84 +0,0 @@
-package com.storlead.user.service.impl;
-
-import com.storlead.common.constant.DataBaseConstant;
-import com.storlead.common.system.api.ISysBaseAPI;
-import com.storlead.common.util.SpringContextUtils;
-import com.storlead.frameworkexception.WebException;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-
-/**
- * @Description: 底层共通业务API,提供其他独立模块调用
- * @Author: scott
- * @Date:2019-4-20
- * @Version:V1.0
- */
-@Slf4j
-@Service
-public class SysBaseApiImpl implements ISysBaseAPI {
-	/** 当前系统数据库类型 */
-	public static String DB_TYPE = "";
-
-	@Override
-	public String getDatabaseType() throws SQLException {
-		DataSource dataSource = SpringContextUtils.getApplicationContext().getBean(DataSource.class);
-		return getDatabaseTypeByDataSource(dataSource);
-	}
-
-	/**
-	 * 获取数据库类型
-	 * @param dataSource
-	 * @return
-	 * @throws SQLException
-	 */
-	private String getDatabaseTypeByDataSource(DataSource dataSource) throws SQLException{
-		if("".equals(DB_TYPE)) {
-			Connection connection = dataSource.getConnection();
-			try {
-				DatabaseMetaData md = connection.getMetaData();
-				String dbType = md.getDatabaseProductName().toLowerCase();
-				if(dbType.indexOf("mysql")>=0) {
-					DB_TYPE = DataBaseConstant.DB_TYPE_MYSQL;
-				}else if(dbType.indexOf("oracle")>=0) {
-					DB_TYPE = DataBaseConstant.DB_TYPE_ORACLE;
-				}else if(dbType.indexOf("sqlserver")>=0||dbType.indexOf("sql server")>=0) {
-					DB_TYPE = DataBaseConstant.DB_TYPE_SQLSERVER;
-				}else if(dbType.indexOf("postgresql")>=0) {
-					DB_TYPE = DataBaseConstant.DB_TYPE_POSTGRESQL;
-				}else {
-					throw new WebException("数据库类型:["+dbType+"]不识别!");
-				}
-			} catch (Exception e) {
-				log.error(e.getMessage(), e);
-			}finally {
-				connection.close();
-			}
-		}
-		return DB_TYPE;
-
-	}
-
-//	@Override
-//	@Cacheable(cacheNames= CacheConstant.SYS_USERS_CACHE, key="#username")
-//	public LoginUser getUserByName(String username) {
-//		if(ConvertUtils.isEmpty(username)) {
-//			return null;
-//		}
-//		LoginUser loginUser = new LoginUser();
-//		User sysUser = userMapper.getUserByName(username);
-//		if(sysUser==null) {
-//			return null;
-//		}
-//		BeanUtils.copyProperties(sysUser, loginUser);
-//		UserRoleType userRoleType = userRoleServicel.getUserRole(sysUser);
-//		sysUser.setRoleType(userRoleType);
-//		loginUser.setRoleType(userRoleType);
-//		return loginUser;
-//	}
-
-}

+ 231 - 0
storlead-user/src/main/java/com/storlead/user/service/impl/UserRoleServiceImpl.java

@@ -0,0 +1,231 @@
+package com.storlead.user.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.storlead.user.mapper.UserRoleMapper;
+import com.storlead.user.pojo.entity.*;
+import com.storlead.user.service.*;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 用户角色表 服务实现类
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-21
+ */
+@Service
+public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRoleEntity> implements IUserRoleService {
+
+    @Resource
+    private IUserService userService;
+    @Resource
+    private ISubCompanyService subCompanyService;
+    @Resource
+    private IDepartService departService;
+    @Resource
+    private ICompanyService companyService;
+    @Resource
+    private IRoleService roleService;
+    private final String[] scopeType = {"全部", "本公司", "自定义","仅自己","本部门"};
+
+    @Override
+    public List<UserRoleEntity> selectUserRole(Wrapper wrapper) {
+        return baseMapper.selectUserRole(wrapper);
+    }
+
+    @Override
+    public Set<Long> selectUserRoleByUserId(Long id) {
+        LambdaQueryWrapper<UserRoleEntity> wrapper = new LambdaQueryWrapper();
+        wrapper.eq(UserRoleEntity::getUserId,id);
+        List<UserRoleEntity> urs = baseMapper.selectUserRole(wrapper);
+        if(CollectionUtil.isNotEmpty(urs)) {
+            return urs.stream().map(UserRoleEntity::getRoleId).collect(Collectors.toSet());
+        }
+        return null;
+    }
+
+    @Override
+    public void initUserRole() {
+         baseMapper.initUserRole();
+    }
+
+
+//    @Override
+//    public Set<Long> dataSelete(OrganizationalTypeEnum organizationalTypeEnum) {
+//        StringBuilder whereCondition = new StringBuilder();
+//        LoginUser currentUser = LoginUserUtil.getLoginUser();
+//        UserEntity user = userService.getById(currentUser.getId());
+//
+//        Set<Long> roleIds = new HashSet<>();
+////        if (Integer.valueOf(1).equals(currentUser.getCommonScope())) {
+////            roleIds = userService.selectUserRoleIdsByCommonScopeType(currentUser.getId(),currentUser.getCommonScopeType());
+////        } else {
+////            roleIds =  userService.selectUserRoleIdsByMenuId(currentUser.getId(),currentUser.getScopeMenuId());
+////        }
+//        if (CollectionUtil.isNotEmpty(roleIds)) {
+//            List<RoleEntity> roles = roleService.listByIds(roleIds).stream().collect(Collectors.toList());
+//            boolean allDataScope = this.isAllDataScope(roles);
+//            Set<Long> dataIds = new HashSet<>();
+//
+//            if (organizationalTypeEnum.equals(OrganizationalTypeEnum.COMPANY_GROUP)){
+//                //集团通过菜单权限判定
+////                    return dataIds;
+//                List<CompanyEntity> companyList = companyService.list(new LambdaQueryWrapper<CompanyEntity>().eq(CompanyEntity::getIsDelete, CommonConstant.DEL_FLAG_0));
+//                if (CollectionUtil.isNotEmpty(companyList)) {
+//                    for (CompanyEntity company : companyList) {
+//                        dataIds.add(company.getId());
+//                    }
+//                }
+//            }
+//            if (organizationalTypeEnum.equals(OrganizationalTypeEnum.SUB_COMPANY_GROUP)){
+//                if (!allDataScope) {
+//                    //分公司权限判定
+//                    Long selfSubCompanyId = this.getSubCompanyId(roles, user);
+//                    Set<Long> selfSubCompanyIds = this.getSubCompanyIds(roles, user);
+////                    dataIds.add(selfSubCompanyId);
+//                    dataIds.addAll(selfSubCompanyIds);
+////                    return dataIds;
+//                }else {
+//                    List<SubCompanyEntity> subCompanyList = subCompanyService.list(new LambdaQueryWrapper<SubCompanyEntity>().eq(SubCompanyEntity::getIsDelete, CommonConstant.DEL_FLAG_0));
+//                    if (CollectionUtil.isNotEmpty(subCompanyList)) {
+//                        for (SubCompanyEntity subCompany : subCompanyList) {
+//                            dataIds.add(subCompany.getId());
+//                        }
+//                    }
+//                }
+//            }
+//            if (organizationalTypeEnum.equals(OrganizationalTypeEnum.DEPT_GROUP)){
+//                if (!allDataScope) {
+//                    Long selfSubCompanyId = this.getSubCompanyId(roles, user);
+//                    if (Objects.isNull(selfSubCompanyId)) {
+//                        List<DeptEntity> deptList = departService.list(new LambdaQueryWrapper<DeptEntity>().eq(DeptEntity::getSubCompanyId, selfSubCompanyId));
+//                        List<Long> subDeptIds = deptList.stream().map(DeptEntity::getId).collect(Collectors.toList());
+//                        dataIds.addAll(subDeptIds);
+//                    }
+//                    Set<Long> deptIds = this.getDeptIds(roles, user);
+//                    dataIds.addAll(deptIds);
+////                    return dataIds;
+//                }else {
+//                    List<DeptEntity> deptList = departService.list(new LambdaQueryWrapper<DeptEntity>().eq(DeptEntity::getIsDelete, CommonConstant.DEL_FLAG_0));
+//                    if (CollectionUtil.isNotEmpty(deptList)) {
+//                        for (DeptEntity dept : deptList) {
+//                            dataIds.add(dept.getId());
+//                        }
+//                    }
+//                }
+//            }
+//            if (organizationalTypeEnum.equals(OrganizationalTypeEnum.USER_GROUP)){
+//                if (!allDataScope) {
+//                    Long selfSubCompanyId = this.getSubCompanyId(roles, user);
+//                    if (!Objects.isNull(selfSubCompanyId)) {
+//                        List<UserEntity> userList = userService.list(new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getSubCompanyId, selfSubCompanyId));
+//                        List<Long> userIds = userList.stream().map(UserEntity::getId).collect(Collectors.toList());
+//                        dataIds.addAll(userIds);
+//                    }
+//                    Set<Long> deptIds = this.getDeptIds(roles, user);
+//                    if (CollectionUtil.isNotEmpty(deptIds)) {
+//                        List<UserEntity> userList = userService.list(new LambdaQueryWrapper<UserEntity>().in(UserEntity::getDeptId, deptIds));
+//                        List<Long> userIds = userList.stream().map(UserEntity::getId).collect(Collectors.toList());
+//                        dataIds.addAll(userIds);
+//                    }
+//                    dataIds.add(user.getId());
+////                    return dataIds;
+//                }else {
+//                    List<UserEntity> userList = userService.list(new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getIsDelete, CommonConstant.DEL_FLAG_0));
+//                    if (CollectionUtil.isNotEmpty(userList)) {
+//                        for (UserEntity userEntity : userList) {
+//                            dataIds.add(userEntity.getId());
+//                        }
+//                    }
+//                }
+//
+//            }
+//            return dataIds;
+//        }else {
+//            // 如果没有权限就让他查不到数据
+//            return Set.of(0L);
+//        }
+//
+//    }
+
+    public boolean isAllDataScope(List<RoleEntity> roleSet) {
+        for (RoleEntity role : roleSet) {
+            if (scopeType[0].equals(role.getDataScope())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public Long getSubCompanyId(List<RoleEntity> roleSet, UserEntity user) {
+        // 存储本公司的数据权限
+        for (RoleEntity role : roleSet) {
+            if (scopeType[1].equals(role.getDataScope())) {
+                return user.getSubCompanyId();
+            }
+        }
+
+        return null;
+    }
+
+    public Set<Long> getSubCompanyIds(List<RoleEntity> roleSet, UserEntity user) {
+        // 存储本公司的数据权限
+        Set<Long> subIds =  new HashSet<>();
+        for (RoleEntity role : roleSet) {
+            if (scopeType[1].equals(role.getDataScope())) {
+                subIds.add(user.getSubCompanyId());
+            }
+
+            if (scopeType[2].equals(role.getDataScope())) {
+                //deptIds.add(user.getDept().getId());
+                List<SubCompanyEntity> subCompanyEntities = subCompanyService.getHasSublist(role.getId());
+                if (!CollectionUtils.isEmpty(subCompanyEntities)){
+                    subIds.addAll(subCompanyEntities.stream().map(SubCompanyEntity::getId).collect(Collectors.toList()));
+                }
+            }
+
+        }
+        return subIds;
+    }
+    public Set<Long> getDeptIds(List<RoleEntity> roleSet, UserEntity user) {
+        // 用于存储部门id
+        Set<Long> deptIds = new HashSet<>();
+
+        for (RoleEntity role : roleSet) {
+            if (scopeType[0].equals(role.getDataScope())) {
+                return new HashSet<>();
+            }
+
+
+            // 存储自定义的数据权限
+            if (scopeType[2].equals(role.getDataScope())) {
+                Set<DeptEntity> depts = departService.findByRoleId(role.getId());
+                for (DeptEntity dept : depts) {
+                    deptIds.add(dept.getId());
+                    List<DeptEntity> deptChildren = departService.findByPid(dept.getId());
+                    if (deptChildren != null && deptChildren.size() != 0) {
+                        deptIds.addAll(departService.getDeptChildren(deptChildren));
+                    }
+                }
+            }
+            // 存储本部的数据权限
+            if (scopeType[4].equals(role.getDataScope())) {
+                //deptIds.add(user.getDept().getId());
+                deptIds.add(user.getDeptId());
+            }
+        }
+        return deptIds;
+    }
+}

+ 7 - 15
storlead-user/src/main/java/com/storlead/user/service/impl/UserServiceImpl.java

@@ -1,5 +1,6 @@
 package com.storlead.user.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -7,22 +8,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.storlead.framework.common.ecode.PasswordEncoder;
 import com.storlead.framework.common.util.RsaUtils;
-import com.storlead.framework.auth.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
+import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.web.assemble.Result;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.framework.common.thread.ThreadPoolUtil;
 import com.storlead.user.mapper.UserMapper;
 import com.storlead.user.model.UserInfo;
 import com.storlead.user.model.UserQueryModel;
-import com.storlead.centre.user.pojo.entity.*;
 import com.storlead.user.pojo.entity.*;
 import com.storlead.user.service.*;
-import user.pojo.entity.*;
 import com.storlead.user.pojo.vo.UserVo;
 import com.storlead.user.pojo.vo.WxUserVO;
-import com.storlead.centre.user.service.*;
-import user.service.*;
 import com.storlead.user.util.PingyinUtil;
 import com.storlead.wx.pojo.vo.CorpWeChatUserVO;
 import com.storlead.wx.pojo.vo.WechatToken;
@@ -41,9 +38,6 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import static cn.hutool.core.date.DateTime.now;
-
-
 /**
  * <p>
  * 用户表 服务实现类
@@ -384,8 +378,7 @@ public class UserServiceImpl extends MyBaseServiceImpl<UserMapper, UserEntity> i
 						.setPassword(passwordEncoder.encode(defaultPassWord))
 						.setDataSource(0)
 						.setCreateBy(currentUser.getId())
-						.setEnabled(false)
-						.setOwnerBy(user.getId());
+						.setEnabled(false);
 				addList.add(user);
 			} else {
 				//禁用离职状态的用户
@@ -395,8 +388,7 @@ public class UserServiceImpl extends MyBaseServiceImpl<UserMapper, UserEntity> i
 
 				user
 						.setOrgRouteCode(routeCode)
-						.setUserName(user.getMobile())
-						.setOwnerBy(user.getId());
+						.setUserName(user.getMobile());
 				updateList.add(user);
 			}
 		}
@@ -433,10 +425,10 @@ public class UserServiceImpl extends MyBaseServiceImpl<UserMapper, UserEntity> i
 	public boolean syncUserOpenIdFormTencent() {
 		List<UserEntity> list = this.list();
 
-		List<com.storlead.common.vo.UserVo> us = new ArrayList<>();
-		List<com.storlead.common.vo.UserVo> finalUs = us;
+		List<com.storlead.framework.common.vo.UserVo> us = new ArrayList<>();
+		List<com.storlead.framework.common.vo.UserVo> finalUs = us;
 		list.forEach(a -> {
-			com.storlead.common.vo.UserVo v = new com.storlead.common.vo.UserVo();
+			com.storlead.framework.common.vo.UserVo v = new com.storlead.framework.common.vo.UserVo();
 			BeanUtils.copyProperties(a,v);
 			finalUs.add(v);
 		});

+ 21 - 22
storlead-user/src/main/java/com/storlead/user/task/SyncOaTask.java

@@ -3,7 +3,6 @@ package com.storlead.user.task;
 import com.storlead.user.service.IUserService;
 import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.quartz.DisallowConcurrentExecution;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -28,25 +27,25 @@ public class SyncOaTask {
 
     @Resource
     private IUserService userService;
-
-    /**
-     * 定时上午七点同步OA 公司/分公司/岗位/人力资源数据到本系统
-     *
-     * @author YPZ
-     * @date 2022-2-23
-     */
-    @Scheduled(cron ="0 0 7 * * ? ")
-//    @Scheduled(cron ="40 03 17 30 6 *")
-    public void syncProject() throws ParseException {
-        long startTime = System.currentTimeMillis();
-        log.info("oa company dept job user sync task starting ----");
-        try {
-            userService.syncOa();
-        } catch (Exception e) {
-            log.error(e.getMessage());
-        }
-        long endTime = System.currentTimeMillis();
-        long timeSpend = endTime - startTime;
-        log.info("oa company dept job user sync task done ----{} ms or {} s", timeSpend ,timeSpend/ 1000);
-    }
+//
+//    /**
+//     * 定时上午七点同步OA 公司/分公司/岗位/人力资源数据到本系统
+//     *
+//     * @author YPZ
+//     * @date 2022-2-23
+//     */
+//    @Scheduled(cron ="0 0 7 * * ? ")
+////    @Scheduled(cron ="40 03 17 30 6 *")
+//    public void syncProject() throws ParseException {
+//        long startTime = System.currentTimeMillis();
+//        log.info("oa company dept job user sync task starting ----");
+//        try {
+//            userService.syncOa();
+//        } catch (Exception e) {
+//            log.error(e.getMessage());
+//        }
+//        long endTime = System.currentTimeMillis();
+//        long timeSpend = endTime - startTime;
+//        log.info("oa company dept job user sync task done ----{} ms or {} s", timeSpend ,timeSpend/ 1000);
+//    }
 }

+ 17 - 0
storlead-user/src/main/resources/mapper/DeptRoleMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.storlead.user.mapper.DeptRoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.storlead.user.pojo.entity.DeptRoleEntity" extends="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.BaseResultMap">
+        <id column="id" property="id" />
+        <result column="dept_id" property="deptId" />
+        <result column="role_id" property="roleId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, dept_id, role_id,<include refid="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.Base_Column_List"></include>
+    </sql>
+
+</mapper>

+ 63 - 0
storlead-user/src/main/resources/mapper/RoleMapper.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.storlead.user.mapper.RoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" extends="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.BaseResultMap" type="com.storlead.user.pojo.entity.RoleEntity">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="desc" property="desc"/>
+        <result column="data_scope" property="dataScope"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, `name`, `desc`, data_scope, remark, <include refid="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.Base_Column_List"></include>
+    </sql>
+
+    <!-- 根据用户ID 查询所有的全部菜单权限 也就是用户角色所有的菜单的 permission 字段 -->
+    <select id="findMenuPermissionsByUserId" resultType="java.lang.String">
+        SELECT m.id
+        FROM user
+                 INNER JOIN user_role ur ON UR.user_id = user.id
+                 INNER JOIN role_menu rm on ur.role_id = rm.role_id
+                 INNER JOIN menu m on rm.menu_id = m.id
+        WHERE user.id= #{userId}
+        UNION
+        SELECT DISTINCT sr.name
+        FROM user_role sur
+                 INNER JOIN role sr on sur.role_id = sr.id
+        WHERE sur.user_id = #{userId}
+    </select>
+
+    <!--  根据系统用户ID 查询所有权限 -->
+    <select id="findByUserId" resultType="com.storlead.user.pojo.entity.RoleEntity">
+        SELECT DISTINCT sr.*
+        FROM user_role sur
+                 LEFT JOIN role sr on sur.role_id = sr.id
+        WHERE sur.user_id = #{userId}
+    </select>
+
+    <!--查询当前用户所拥有的自定义角色中的部门ID集的权限列表-->
+    <select id="getDeptIdsByUserId" resultType="java.lang.Long">
+        SELECT dr.dept_id
+        FROM user_role ur
+                 LEFT JOIN dept_role dr on ur.role_id = dr.role_id
+        WHERE dr.dept_id IS NOT NULL AND ur.user_id = #{userId}
+    </select>
+
+    <!--查询当前用户所拥有的自定义角色中的部门ID集的权限列表-->
+    <select id="getDeptIdsByRoleId" resultType="java.lang.Long">
+        SELECT dept_id FROM dept_role dr where dr.role_id = #{roleId}
+    </select>
+
+    <!--查询当前用户所拥有的自定义角色中的部门ID集的权限列表-->
+    <select id="getMenuIdsByRoleId" resultType="java.lang.Long">
+        select menu_id from role_menu where role_id = #{roleId}
+        <if test="isApp != null">
+            AND is_app = #{isApp}
+        </if>
+    </select>
+
+</mapper>

+ 32 - 0
storlead-user/src/main/resources/mapper/UserRoleMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.storlead.user.mapper.UserRoleMapper">
+	<!-- 通用查询映射结果 -->
+	<resultMap id="BaseResultMap" type="com.storlead.user.pojo.entity.UserRoleEntity">
+		<id column="user_id" property="userId"/>
+		<result column="role_id" property="roleId"/>
+	</resultMap>
+
+	<!-- 通用查询结果列 -->
+	<sql id="Base_Column_List">
+		user_id, role_id
+	</sql>
+
+	<!--初始化没有角色的用户 给 roleID = 2 普通用户-->
+	<insert id="initUserRole">
+		INSERT INTO
+			user_role  (user_id, role_id)
+		SELECT u.id AS userId, 2 AS roleId
+		FROM user u
+		WHERE u.status !=6 AND u.id NOT IN(SELECT user_id FROM user_role)
+	</insert>
+
+
+	<select id="selectUserRole" resultMap="BaseResultMap">
+		SELECT ur.* FROM (select * from user_role ${ew.customSqlSegment}) AS ur
+			LEFT JOIN role as r
+			ON r.id = ur.role_id
+		WHERE r.`enabled` = 1
+	</select>
+
+</mapper>