|
|
|
|
@ -1,15 +1,29 @@
|
|
|
|
|
package com.zbkj.modules.autogencode.controller;
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import com.zbkj.common.model.system.SysDept;
|
|
|
|
|
import com.zbkj.common.model.user.User;
|
|
|
|
|
import com.zbkj.common.model.system.SystemAdmin;
|
|
|
|
|
import com.zbkj.common.model.system.SysDeptUser;
|
|
|
|
|
import com.zbkj.common.request.PageParamRequest;
|
|
|
|
|
import com.zbkj.common.response.CommonResult;
|
|
|
|
|
import com.zbkj.common.page.CommonPage;
|
|
|
|
|
import com.zbkj.common.utils.CrmebUtil;
|
|
|
|
|
import com.zbkj.common.utils.SecurityUtil;
|
|
|
|
|
import com.zbkj.common.vo.LoginUserVo;
|
|
|
|
|
import com.zbkj.service.service.UserService;
|
|
|
|
|
import com.zbkj.service.service.SystemAdminService;
|
|
|
|
|
import com.zbkj.service.service.SysDeptUserService;
|
|
|
|
|
import com.zbkj.service.service.SysDeptService;
|
|
|
|
|
import com.zbkj.modules.autogencode.service.PmOwnerService;
|
|
|
|
|
import com.zbkj.modules.autogencode.service.PmTenantService;
|
|
|
|
|
import com.zbkj.modules.autogencode.entity.PmOwner;
|
|
|
|
|
import com.zbkj.modules.autogencode.entity.PmTenant;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
@ -32,6 +46,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
public class EbUserController {
|
|
|
|
|
@Autowired
|
|
|
|
|
private UserService ebUserService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private SystemAdminService systemAdminService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private SysDeptUserService sysDeptUserService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private SysDeptService sysDeptService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private PmOwnerService pmOwnerService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private PmTenantService pmTenantService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -241,7 +270,16 @@ public class EbUserController {
|
|
|
|
|
if (request.getPromoterTime() != null) {
|
|
|
|
|
queryWrapper.eq(User::getPromoterTime, request.getPromoterTime());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 业主/租户Id
|
|
|
|
|
if (request.getOwnerTenantId() != null) {
|
|
|
|
|
queryWrapper.eq(User::getOwnerTenantId, request.getOwnerTenantId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 是否只查询有业主/租户Id的用户
|
|
|
|
|
if (request.getHasOwnerTenantId() != null && request.getHasOwnerTenantId()) {
|
|
|
|
|
queryWrapper.isNotNull(User::getOwnerTenantId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -249,17 +287,133 @@ public class EbUserController {
|
|
|
|
|
* 分页显示用户表
|
|
|
|
|
* @param request 搜索条件
|
|
|
|
|
* @param pageParamRequest 分页参数
|
|
|
|
|
* @param hasOwnerTenantId 是否只查询有业主/租户Id的用户
|
|
|
|
|
*/
|
|
|
|
|
@ApiOperation(value = "分页列表")
|
|
|
|
|
@RequestMapping(value = "/list", method = RequestMethod.GET)
|
|
|
|
|
public CommonResult<CommonPage<User>> getList(@Validated User request, @Validated PageParamRequest pageParamRequest) {
|
|
|
|
|
public CommonResult<CommonPage<Map<String, Object>>> getList(@Validated User request, @Validated PageParamRequest pageParamRequest,
|
|
|
|
|
@RequestParam(required = false) Boolean hasOwnerTenantId) {
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper();
|
|
|
|
|
|
|
|
|
|
// 应用搜索条件
|
|
|
|
|
condition(queryWrapper, request);
|
|
|
|
|
|
|
|
|
|
// 通过当前用户的部门及其子部门过滤用户
|
|
|
|
|
LoginUserVo loginUserVo = SecurityUtil.getLoginUserVo();
|
|
|
|
|
if (loginUserVo != null && loginUserVo.getUser() != null) {
|
|
|
|
|
SystemAdmin currentAdmin = loginUserVo.getUser();
|
|
|
|
|
// 查询当前用户所属的部门
|
|
|
|
|
List<SysDeptUser> deptUsers = sysDeptUserService.list(Wrappers.<SysDeptUser>lambdaQuery()
|
|
|
|
|
.eq(SysDeptUser::getUserId, Long.valueOf(currentAdmin.getId())));
|
|
|
|
|
|
|
|
|
|
if (deptUsers != null && !deptUsers.isEmpty()) {
|
|
|
|
|
// 获取当前用户的所有部门ID
|
|
|
|
|
List<Long> deptIds = deptUsers.stream().map(SysDeptUser::getDeptId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 查询这些部门及其所有子部门的ID
|
|
|
|
|
List<Long> allDeptIds = new ArrayList<>();
|
|
|
|
|
for (Long deptId : deptIds) {
|
|
|
|
|
// 获取当前部门
|
|
|
|
|
allDeptIds.add(deptId);
|
|
|
|
|
// 查询当前部门的所有子部门(使用ancestors字段进行过滤)
|
|
|
|
|
List<SysDept> childDepts = sysDeptService.list(Wrappers.<SysDept>lambdaQuery()
|
|
|
|
|
.apply("CONCAT(',', ancestors, ',') LIKE {0}", "%" + deptId + "%")
|
|
|
|
|
.eq(SysDept::getDelFlag, "0"));
|
|
|
|
|
if (childDepts != null && !childDepts.isEmpty()) {
|
|
|
|
|
allDeptIds.addAll(childDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查询这些部门下的所有用户
|
|
|
|
|
List<SysDeptUser> allDeptUsers = sysDeptUserService.list(Wrappers.<SysDeptUser>lambdaQuery()
|
|
|
|
|
.in(SysDeptUser::getDeptId, allDeptIds));
|
|
|
|
|
|
|
|
|
|
if (allDeptUsers != null && !allDeptUsers.isEmpty()) {
|
|
|
|
|
// 获取这些用户的admin ID
|
|
|
|
|
List<Long> adminIds = allDeptUsers.stream().map(SysDeptUser::getUserId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 查询这些admin ID对应的用户
|
|
|
|
|
List<SystemAdmin> admins = systemAdminService.list(Wrappers.<SystemAdmin>lambdaQuery()
|
|
|
|
|
.in(SystemAdmin::getId, adminIds));
|
|
|
|
|
|
|
|
|
|
if (admins != null && !admins.isEmpty()) {
|
|
|
|
|
// 获取用户ID列表
|
|
|
|
|
List<Integer> userIds = admins.stream().map(SystemAdmin::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 添加用户ID过滤条件
|
|
|
|
|
queryWrapper.in(User::getAdminid, userIds);
|
|
|
|
|
} else {
|
|
|
|
|
// 如果没有找到用户,返回空结果
|
|
|
|
|
queryWrapper.in(User::getUid, -1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果没有找到部门用户,返回空结果
|
|
|
|
|
queryWrapper.in(User::getUid, -1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果当前用户没有所属部门,返回空结果
|
|
|
|
|
queryWrapper.in(User::getUid, -1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CommonPage<User> page = CommonPage.restPage(ebUserService.pageList(queryWrapper, pageParamRequest));
|
|
|
|
|
return CommonResult.success(page);
|
|
|
|
|
|
|
|
|
|
// 转换为包含ownerTenantName和deptName虚拟字段的Map列表
|
|
|
|
|
List<Map<String, Object>> userListWithVirtualField = page.getList().stream().map(user -> {
|
|
|
|
|
Map<String, Object> userMap = cn.hutool.core.bean.BeanUtil.beanToMap(user);
|
|
|
|
|
String ownerTenantName = "";
|
|
|
|
|
String deptName = "";
|
|
|
|
|
|
|
|
|
|
if (user.getOwnerTenantId() != null) {
|
|
|
|
|
// 根据staffType判断是业主还是租户
|
|
|
|
|
if ("1".equals(user.getStaffType())) {
|
|
|
|
|
// 查询业主名称
|
|
|
|
|
PmOwner pmOwner = pmOwnerService.getById(user.getOwnerTenantId());
|
|
|
|
|
if (pmOwner != null) {
|
|
|
|
|
ownerTenantName = pmOwner.getOwnerName();
|
|
|
|
|
}
|
|
|
|
|
} else if ("2".equals(user.getStaffType())) {
|
|
|
|
|
// 查询租户名称
|
|
|
|
|
PmTenant pmTenant = pmTenantService.getById(user.getOwnerTenantId());
|
|
|
|
|
if (pmTenant != null) {
|
|
|
|
|
ownerTenantName = pmTenant.getTenantName();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查询部门名称
|
|
|
|
|
if (user.getAdminid() != null) {
|
|
|
|
|
// 根据adminid查询对应的部门用户关系
|
|
|
|
|
List<SysDeptUser> deptUsers = sysDeptUserService.list(Wrappers.<SysDeptUser>lambdaQuery()
|
|
|
|
|
.eq(SysDeptUser::getUserId, Long.valueOf(user.getAdminid())));
|
|
|
|
|
|
|
|
|
|
if (deptUsers != null && !deptUsers.isEmpty()) {
|
|
|
|
|
// 获取第一个部门的ID
|
|
|
|
|
Long deptId = deptUsers.get(0).getDeptId();
|
|
|
|
|
// 查询部门信息
|
|
|
|
|
SysDept dept = sysDeptService.getById(deptId);
|
|
|
|
|
if (dept != null) {
|
|
|
|
|
deptName = dept.getDeptName();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
userMap.put("ownerTenantName", ownerTenantName);
|
|
|
|
|
userMap.put("deptName", deptName);
|
|
|
|
|
return userMap;
|
|
|
|
|
}).collect(java.util.stream.Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 创建新的CommonPage对象
|
|
|
|
|
CommonPage<Map<String, Object>> resultPage = new CommonPage<>();
|
|
|
|
|
resultPage.setList(userListWithVirtualField);
|
|
|
|
|
resultPage.setTotal(page.getTotal());
|
|
|
|
|
resultPage.setPage(page.getPage());
|
|
|
|
|
resultPage.setLimit(page.getLimit());
|
|
|
|
|
resultPage.setTotalPage(page.getTotalPage());
|
|
|
|
|
|
|
|
|
|
return CommonResult.success(resultPage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -278,7 +432,40 @@ public class EbUserController {
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "/save", method = RequestMethod.POST)
|
|
|
|
|
public CommonResult<String> save(@RequestBody User ebUser){
|
|
|
|
|
|
|
|
|
|
// 将手机号码作为账号和密码
|
|
|
|
|
ebUser.setAccount(ebUser.getPhone());
|
|
|
|
|
ebUser.setPwd(CrmebUtil.encryptPassword(ebUser.getPhone(), ebUser.getPhone()));
|
|
|
|
|
|
|
|
|
|
// 保存用户数据
|
|
|
|
|
if (ebUserService.save(ebUser)) {
|
|
|
|
|
// 将用户数据保存到admin表
|
|
|
|
|
SystemAdmin admin = new SystemAdmin();
|
|
|
|
|
admin.setAccount(ebUser.getPhone()); // 手机号作为账号
|
|
|
|
|
admin.setPwd(CrmebUtil.encryptPassword(ebUser.getPhone(), ebUser.getPhone())); // 手机号作为密码,并加密存储
|
|
|
|
|
admin.setRealName(ebUser.getRealName());
|
|
|
|
|
admin.setPhone(ebUser.getPhone());
|
|
|
|
|
admin.setStatus(true); // 默认为有效状态
|
|
|
|
|
admin.setIsDel(false); // 默认为不删除
|
|
|
|
|
admin.setCreateTime(new Date());
|
|
|
|
|
admin.setUpdateTime(new Date());
|
|
|
|
|
admin.setRoles("6"); // 角色权限默认设置为6
|
|
|
|
|
|
|
|
|
|
// 保存admin数据
|
|
|
|
|
if (systemAdminService.save(admin)) {
|
|
|
|
|
// 将admin的ID保存到ebUser的adminid字段中
|
|
|
|
|
ebUser.setAdminid(admin.getId());
|
|
|
|
|
ebUserService.updateById(ebUser);
|
|
|
|
|
|
|
|
|
|
// 处理部门关联
|
|
|
|
|
if (ebUser.getDeptId() != null) {
|
|
|
|
|
SysDeptUser sysDeptUser = new SysDeptUser();
|
|
|
|
|
sysDeptUser.setUserId(Long.valueOf(admin.getId()));
|
|
|
|
|
sysDeptUser.setDeptId(Long.valueOf(ebUser.getDeptId()));
|
|
|
|
|
sysDeptUserService.save(sysDeptUser);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return CommonResult.success();
|
|
|
|
|
}
|
|
|
|
|
return CommonResult.failed();
|
|
|
|
|
@ -289,7 +476,35 @@ public class EbUserController {
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "/update", method = RequestMethod.POST)
|
|
|
|
|
public CommonResult<String> update(@RequestBody User ebUser){
|
|
|
|
|
// 更新用户数据
|
|
|
|
|
if (ebUserService.updateById(ebUser)) {
|
|
|
|
|
// 根据用户手机号查询对应的admin记录
|
|
|
|
|
LambdaQueryWrapper<SystemAdmin> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
queryWrapper.eq(SystemAdmin::getPhone, ebUser.getPhone());
|
|
|
|
|
SystemAdmin admin = systemAdminService.getOne(queryWrapper);
|
|
|
|
|
|
|
|
|
|
if (admin != null) {
|
|
|
|
|
// 更新admin表中的信息
|
|
|
|
|
admin.setRealName(ebUser.getRealName());
|
|
|
|
|
admin.setPhone(ebUser.getPhone());
|
|
|
|
|
admin.setUpdateTime(new Date());
|
|
|
|
|
|
|
|
|
|
// 保存admin更新
|
|
|
|
|
if (systemAdminService.updateById(admin)) {
|
|
|
|
|
// 处理部门关联:先删除原有关联
|
|
|
|
|
sysDeptUserService.remove(new LambdaQueryWrapper<SysDeptUser>()
|
|
|
|
|
.eq(SysDeptUser::getUserId, Long.valueOf(admin.getId())));
|
|
|
|
|
|
|
|
|
|
// 添加新的部门关联
|
|
|
|
|
if (ebUser.getDeptId() != null) {
|
|
|
|
|
SysDeptUser sysDeptUser = new SysDeptUser();
|
|
|
|
|
sysDeptUser.setUserId(Long.valueOf(admin.getId()));
|
|
|
|
|
sysDeptUser.setDeptId(Long.valueOf(ebUser.getDeptId()));
|
|
|
|
|
sysDeptUserService.save(sysDeptUser);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return CommonResult.success();
|
|
|
|
|
}
|
|
|
|
|
return CommonResult.failed();
|
|
|
|
|
@ -300,6 +515,24 @@ public class EbUserController {
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "/delete", method = RequestMethod.POST)
|
|
|
|
|
public CommonResult<String> delete(@RequestBody Integer[] uids){
|
|
|
|
|
// 遍历所有要删除的用户ID
|
|
|
|
|
for (Integer uid : uids) {
|
|
|
|
|
// 获取用户信息
|
|
|
|
|
User user = ebUserService.getById(uid);
|
|
|
|
|
if (user != null && user.getAdminid() != null) {
|
|
|
|
|
// 获取对应的adminid
|
|
|
|
|
Integer adminId = user.getAdminid();
|
|
|
|
|
|
|
|
|
|
// 删除关联的SysDeptUser记录
|
|
|
|
|
sysDeptUserService.remove(Wrappers.<SysDeptUser>lambdaQuery()
|
|
|
|
|
.eq(SysDeptUser::getUserId, Long.valueOf(adminId)));
|
|
|
|
|
|
|
|
|
|
// 删除对应的SystemAdmin记录
|
|
|
|
|
systemAdminService.removeById(adminId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 删除用户记录
|
|
|
|
|
if (ebUserService.removeByIds(Arrays.asList(uids))) {
|
|
|
|
|
return CommonResult.success();
|
|
|
|
|
}
|
|
|
|
|
|