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<AdminUser>().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());
|
}
|
}
|