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();

}

目录
相关文章
服务器上的RTC时间与世界时间不一致解决办法
服务器上的RTC时间与世界时间不一致解决办法
1475 0
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
13412 1
|
缓存 关系型数据库 PostgreSQL
PostgreSQL自增ID的初始化语句
【5月更文挑战第10天】PostgreSQL自增ID的初始化语句
791 2
|
缓存 人工智能 自然语言处理
阿里云百炼工作流新版功能介绍
阿里云百炼工作流全新升级,带来十大优化:对话与任务模板合并、UI界面焕新、画布性能提升、布局优化、新增流程输入输出节点、报错机制改进、聚合分组功能、参数提取节点、绘画变量记忆增强、失败重试机制。提升流程设计效率与稳定性,助力开发者高效构建AI应用。
795 1
|
6月前
|
前端开发 数据处理
芋道审批流配置流程表单超详细介绍
芋道审批流配置流程表单超详细介绍
1304 62
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
508 1
|
运维 算法 Ubuntu
Copilot测评报告——2025如果你需要做运维,强烈推荐你使用Copilot
作为一名开发工程师,我曾参与阿里云Copilot的测评工作。2025年最新版Copilot支持Alinux、CentOS、Ubuntu、Anolis OS等操作系统,并新增了Agent模式,可直接执行命令并返回系统健康度等信息,大幅提升了运维效率。它还具备复杂任务理解能力,能处理定时任务和脚本编写,结合管道符号使用,极大便利了运维工作。强烈推荐给中高级运维工程师使用。
792 22
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
2017 4
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
21833 7
|
Oracle Java 关系型数据库
使用DataGrip链接达梦数据库
使用DataGrip链接达梦数据库
1702 0

热门文章

最新文章