Commit ae29fd20 by zhangxingmin

更新客户端用户表数据

parent 02b61140
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 客户端用户表 前端控制器
* </p>
*
* @author zxm
* @since 2025-10-20
*/
@RestController
@RequestMapping("/clientUser")
public class ClientUserController {
}
package com.yd.user.api.service;
import com.yd.common.result.Result;
import java.util.List;
public interface ApiClientUserService {
Result saveClientUserList(List<String> userBizIdList,
String tenantBizId,
String projectBizId);
}
package com.yd.user.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiClientUserService;
import com.yd.user.service.dto.ClientUserDto;
import com.yd.user.service.dto.SysUserDto;
import com.yd.user.service.model.ClientUser;
import com.yd.user.service.model.SysUser;
import com.yd.user.service.service.IClientUserService;
import com.yd.user.service.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class ApiClientUserServiceImpl implements ApiClientUserService {
@Autowired
private ISysUserService iSysUserService;
@Autowired
private IClientUserService iClientUserService;
/**
* 同步sys_user系统用户,批量更新客户端用户表数据
* @param userBizIdList
* @param tenantBizId
* @param projectBizId
* @return
*/
@Override
public Result saveClientUserList(List<String> userBizIdList,
String tenantBizId,
String projectBizId) {
List<SysUser> sysUserList = iSysUserService.queryList(SysUserDto.builder().userBizIdList(userBizIdList).build());
if (!CollectionUtils.isEmpty(sysUserList)) {
//根据用户唯一标识(sys_user系统用户表)列表查询客户端用户列表,来做更新。
List<ClientUser> clientUserList = iClientUserService.queryList(ClientUserDto.builder()
.tenantBizId(tenantBizId)
.projectBizId(projectBizId)
.userBizIdList(userBizIdList)
.build());
List<ClientUser> saveList = new ArrayList<>();
if (CollectionUtils.isEmpty(clientUserList)) {
//全部新增同步sys_user数据
saveList = buildClientUserList(sysUserList,tenantBizId,projectBizId);
}else {
//部分新增部分更新
//过滤出不在clientUserList中的sysUser
Set<String> existUserBizIds = clientUserList.stream()
.map(ClientUser::getUserBizId)
.collect(Collectors.toSet());
List<SysUser> newSysUsers = sysUserList.stream()
.filter(sysUser -> !existUserBizIds.contains(sysUser.getUserBizId()))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(newSysUsers)) {
//新增同步sys_user数据
saveList = buildClientUserList(sysUserList,tenantBizId,projectBizId);
}
}
if (!CollectionUtils.isEmpty(saveList)) {
iClientUserService.saveOrUpdateBatch(saveList);
}
}
return null;
}
/**
* 根据List<SysUser>构造List<ClientUser>
* @param sysUserList
* @return
*/
public List<ClientUser> buildClientUserList(List<SysUser> sysUserList,
String tenantBizId,
String projectBizId) {
List<ClientUser> clientUserList = new ArrayList<>();
if (!CollectionUtils.isEmpty(sysUserList)) {
clientUserList = sysUserList.stream().map(dto -> {
ClientUser clientUser = new ClientUser();
//待审核
clientUser.setApprovalStatus(CommonEnum.APPROVAL_STATUS_DSH.getCode());
clientUser.setClientUserBizId(CommonEnum.UID_TYPE_CLIENT_USER.getCode());
clientUser.setEmail(dto.getEmail());
//邀请码 TODO
// clientUser.setInvitationCode();
clientUser.setName(dto.getRealName());
clientUser.setPhone(dto.getMobile());
clientUser.setTenantBizId(tenantBizId);
clientUser.setProjectBizId(projectBizId);
//用户唯一标识(sys_user系统用户表)
clientUser.setUserBizId(dto.getUserBizId());
return clientUser;
}).collect(Collectors.toList());
}
return clientUserList;
}
}
......@@ -2,9 +2,11 @@ package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiClientUserService;
import com.yd.user.api.service.ApiRelProjectUserService;
import com.yd.user.feign.request.relprojectuser.ApiRelProjectUserListAddRequest;
import com.yd.user.feign.request.relprojectuser.ApiRelProjectUserListPageRequest;
......@@ -12,7 +14,9 @@ import com.yd.user.feign.request.relprojectuser.ApiRelProjectUserSelectPageReque
import com.yd.user.feign.response.relprojectuser.ApiRelProjectUserListPageResponse;
import com.yd.user.feign.response.relprojectuser.ApiRelProjectUserSelectPageResponse;
import com.yd.user.service.model.RelProjectUser;
import com.yd.user.service.model.SysProject;
import com.yd.user.service.service.IRelProjectUserService;
import com.yd.user.service.service.ISysProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -27,6 +31,12 @@ public class ApiRelProjectUserServiceImpl implements ApiRelProjectUserService {
@Autowired
private IRelProjectUserService iRelProjectUserService;
@Autowired
private ISysProjectService iSysProjectService;
@Autowired
private ApiClientUserService apiClientUserService;
/**
* 项目和用户关系分页查询
* @param request
......@@ -60,6 +70,14 @@ public class ApiRelProjectUserServiceImpl implements ApiRelProjectUserService {
iRelProjectUserService.saveOrUpdateBatch(list);
}
//判断项目类型-客户端时,更新sys_user用户数据到客户端用户表中,客户端用户表审核状态为待审核
//查询项目信息
SysProject sysProject = iSysProjectService.queryOne(request.getProjectBizId());
if (!Objects.isNull(sysProject) &&
CommonEnum.PROJECT_TYPE_CLIENT.getCode().equals(sysProject.getProjectType())) {
//客户端来源项目,更新sys_user用户数据到客户端用户表中,客户端用户表审核状态为待审核
apiClientUserService.saveClientUserList(request.getUserBizIdList(), request.getTenantBizId(), request.getProjectBizId());
}
return Result.success();
}
......@@ -76,6 +94,7 @@ public class ApiRelProjectUserServiceImpl implements ApiRelProjectUserService {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
iRelProjectUserService.removeById(relProjectUser.getId());
//客户端项目类型的项目不支持删除 TODO
return Result.success();
}
......
package com.yd.user.service.dao;
import com.yd.user.service.model.ClientUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 客户端用户表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-10-20
*/
public interface ClientUserMapper extends BaseMapper<ClientUser> {
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ClientUserDto {
/**
* 所属租户唯一业务ID(冗余)
*/
private String tenantBizId;
/**
* 所属项目唯一业务ID(冗余)
*/
private String projectBizId;
/**
* 用户唯一标识(sys_user系统用户表)列表
*/
private List<String> userBizIdList;
}
......@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 用户公共参数对象
*/
......@@ -25,6 +27,11 @@ public class SysUserDto {
private String userBizId;
/**
* 用户唯一标识(业务ID)集合
*/
private List<String> userBizIdList;
/**
* 登录账号
*/
private String userName;
......
package com.yd.user.service.model;
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 java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 客户端用户表
* </p>
*
* @author zxm
* @since 2025-10-20
*/
@Getter
@Setter
@TableName("client_user")
public class ClientUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 客户端用户表唯一业务ID
*/
@TableField("client_user_biz_id")
private String clientUserBizId;
/**
* 姓名
*/
@TableField("name")
private String name;
/**
* 手机号
*/
@TableField("phone")
private String phone;
/**
* 邮箱
*/
@TableField("email")
private String email;
/**
* 证件类型
*/
@TableField("id_card_type")
private String idCardType;
/**
* 证件号码
*/
@TableField("id_card_number")
private String idCardNumber;
/**
* 登录密码
*/
@TableField("password")
private String password;
/**
* 邀请码
*/
@TableField("invitation_code")
private String invitationCode;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 审批状态
*/
@TableField("approval_status")
private String approvalStatus;
/**
* 所属租户唯一业务ID(冗余)
*/
@TableField("tenant_biz_id")
private String tenantBizId;
/**
* 所属项目唯一业务ID(冗余)
*/
@TableField("project_biz_id")
private String projectBizId;
/**
* 用户唯一标识(sys_user系统用户表)
*/
@TableField("user_biz_id")
private String userBizId;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
......@@ -34,6 +34,12 @@ public class SysProject implements Serializable {
private Long id;
/**
* 项目类型(PC、客户端)
*/
@TableField("project_type")
private String projectType;
/**
* 项目唯一标识(业务ID)
*/
@TableField("project_biz_id")
......
package com.yd.user.service.service;
import com.yd.user.service.dto.ClientUserDto;
import com.yd.user.service.model.ClientUser;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 客户端用户表 服务类
* </p>
*
* @author zxm
* @since 2025-10-20
*/
public interface IClientUserService extends IService<ClientUser> {
List<ClientUser> queryList(ClientUserDto dto);
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.user.service.dto.ClientUserDto;
import com.yd.user.service.model.ClientUser;
import com.yd.user.service.dao.ClientUserMapper;
import com.yd.user.service.model.SysUser;
import com.yd.user.service.service.IClientUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 客户端用户表 服务实现类
* </p>
*
* @author zxm
* @since 2025-10-20
*/
@Service
public class ClientUserServiceImpl extends ServiceImpl<ClientUserMapper, ClientUser> implements IClientUserService {
/**
* 查询列表
* @param dto
* @return
*/
@Override
public List<ClientUser> queryList(ClientUserDto dto) {
List<ClientUser> list = baseMapper.selectList(new LambdaQueryWrapper<ClientUser>()
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),ClientUser::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getProjectBizId()),ClientUser::getProjectBizId,dto.getProjectBizId())
.in(!CollectionUtils.isEmpty(dto.getUserBizIdList()),ClientUser::getUserBizId,dto.getUserBizIdList())
);
return list;
}
}
......@@ -20,6 +20,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -77,6 +78,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
.eq(StringUtils.isNotBlank(dto.getMobile()),SysUser::getMobile,dto.getMobile())
.eq(!Objects.isNull(dto.getStatus()),SysUser::getStatus,dto.getStatus())
.eq(!Objects.isNull(dto.getIsSuperAdmin()),SysUser::getIsSuperAdmin,dto.getIsSuperAdmin())
.in(!CollectionUtils.isEmpty(dto.getUserBizIdList()),SysUser::getUserBizId,dto.getUserBizIdList())
.ne(dto.getIsExcludeMy(),SysUser::getUserBizId,dto.getUserBizId())
);
return list;
......
......@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
})
.strategyConfig(builder -> {
builder.addInclude(
"rel_dept_user", "rel_tenant_dept", "rel_project_dept"
"client_user"
// "rel_dept_user", "rel_group_role", "rel_group_user",
// "rel_project_menu", "rel_project_role", "rel_project_user",
// "rel_project_user_group", "rel_role_menu", "rel_tenant_dept",
......
<?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.yd.user.service.dao.ClientUserMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="ExternalSystem" externalSystem="Maven" />
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment