package com.tourguide.bootstrap; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.tourguide.config.properties.BootstrapAdminProperties; import com.tourguide.modules.user.domain.UserRole; import com.tourguide.modules.user.entity.AdminUser; import com.tourguide.modules.user.mapper.AdminUserMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component public class AdminBootstrapRunner implements ApplicationRunner { private static final Logger LOGGER = LoggerFactory.getLogger(AdminBootstrapRunner.class); private final BootstrapAdminProperties properties; private final AdminUserMapper userMapper; private final PasswordEncoder passwordEncoder; public AdminBootstrapRunner(BootstrapAdminProperties properties, AdminUserMapper userMapper, PasswordEncoder passwordEncoder) { this.properties = properties; this.userMapper = userMapper; this.passwordEncoder = passwordEncoder; } @Override public void run(ApplicationArguments args) { if (!properties.isEnabled()) { return; } Long count = userMapper.selectCount(new LambdaQueryWrapper().eq(AdminUser::getUsername, properties.getUsername())); if (count > 0) { return; } AdminUser admin = new AdminUser(); admin.setUsername(properties.getUsername()); admin.setPassword(passwordEncoder.encode(properties.getPassword())); admin.setNickname(properties.getNickname()); admin.setRoleCode(UserRole.ADMIN.name()); admin.setStatus(1); admin.setDeleted(0); userMapper.insert(admin); LOGGER.warn("已创建本地初始化管理员账号:{},部署前请修改初始化密码", properties.getUsername()); } }