pg序列实现字段的自增

简介: pg序列实现字段的自增

@Override
@Transactional(rollbackFor = Exception.class)

@LogRecord(type = SYSTEM_USER_TYPE, subType = SYSTEM_USER_CREATE_SUB_TYPE, bizNo = "{{#user.id}}",

       success = SYSTEM_USER_CREATE_SUCCESS)

public Long createUser(UserSaveReqVO createReqVO) {

   // 1.1 校验账户配合
   tenantService.handleTenantInfo(tenant -> {

       long count = userMapper.selectCount();

       if (count >= tenant.getAccountCount()) {

           throw exception(USER_COUNT_MAX, tenant.getAccountCount());

       }

   });

   // 1.2 校验正确性
   validateUserForCreateOrUpdate(null, createReqVO.getUsername(), createReqVO.getUserSn(),

           createReqVO.getMobile(), createReqVO.getEmail(), createReqVO.getDeptId(), createReqVO.getPostIds());


   // 2.1 插入用户
   AdminUserDO user = BeanUtils.toBean(createReqVO, AdminUserDO.class);

   user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
   if (createReqVO.getPassword() != null) {

       user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码
   }

   if (createReqVO.getPersonType().equals("1")){

       // 外协员工:w + 5 位数字,不足补零
       int nextVal = jdbcTemplate.queryForObject(

               "SELECT nextval('outsourcing_user_sn')", Integer.class);

       user.setUserSn("W" + String.format("%05d", nextVal));

   }

   userMapper.insert(user);

   if (createReqVO.getImagePath() != null) {

       FaceImageDO faceImageDO = new FaceImageDO();

       faceImageDO.setPersonId(user.getId());

       faceImageDO.setImage(createReqVO.getImagePath());

       faceImageMapper.insert(faceImageDO);

   }

   // 2.2 插入关联岗位
   if (CollectionUtil.isNotEmpty(user.getPostIds())) {

       userPostMapper.insertBatch(convertList(user.getPostIds(),

               postId -> new UserPostDO().setUserId(user.getId()).setPostId(postId)));

   }


   // 3. 记录操作日志上下文
   LogRecordContext.putVariable("user", user);

   return user.getId();

}

目录
相关文章
|
SQL 运维 负载均衡
双活中心高效同步机制
双活中心高效同步机制
798 1
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
13956 1
|
4月前
|
SQL 关系型数据库 数据库
Postgresql入门之psql用法详解(一)- 命令行参数详解
`psql` 是 PostgreSQL 的命令行客户端,支持交互式或批量执行 SQL 查询。它提供丰富的元命令、脚本自动化、格式化输出(如 CSV、HTML)、连接 URI/服务配置及 LDAP 集成,并可通过命令行选项控制连接、事务与错误处理,适用于日常操作与系统管理。
|
缓存 关系型数据库 PostgreSQL
PostgreSQL自增ID的初始化语句
【5月更文挑战第10天】PostgreSQL自增ID的初始化语句
859 2
|
8月前
|
前端开发 数据处理
芋道审批流配置流程表单超详细介绍
芋道审批流配置流程表单超详细介绍
1707 63
|
缓存 人工智能 自然语言处理
阿里云百炼工作流新版功能介绍
阿里云百炼工作流全新升级,带来十大优化:对话与任务模板合并、UI界面焕新、画布性能提升、布局优化、新增流程输入输出节点、报错机制改进、聚合分组功能、参数提取节点、绘画变量记忆增强、失败重试机制。提升流程设计效率与稳定性,助力开发者高效构建AI应用。
977 1
|
存储 监控 容灾
容灾备份的具体操作步骤
【10月更文挑战第28天】容灾备份是指为了防止因自然灾害、人为破坏、系统故障等原因导致数据丢失或业务中断,而提前采取的一系列数据备份和恢复措施。
IDEA统计项目代码量
IDEA统计项目代码量
1039 0
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
23084 7