1.0
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/common"
|
||||
"awesomeProject/internal/models"
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// InitHandler 初始化处理器
|
||||
type InitHandler struct{}
|
||||
|
||||
// InitDefaultAdmin 初始化默认管理员
|
||||
func (h *InitHandler) InitDefaultAdmin() error {
|
||||
db := common.GetDB()
|
||||
|
||||
// 检查是否已有管理员用户
|
||||
var adminCount int64
|
||||
db.Model(&models.User{}).Where("system_role = 0").Count(&adminCount)
|
||||
if adminCount > 0 {
|
||||
return nil // 已有管理员,不重复创建
|
||||
}
|
||||
|
||||
// 创建默认管理员
|
||||
hashedPassword := fmt.Sprintf("%x", md5.Sum([]byte("admin123")))
|
||||
admin := models.User{
|
||||
Phone: "13800138000",
|
||||
SystemRole: 0, // 管理员
|
||||
CustomerName: "系统管理员",
|
||||
RealName: "Administrator",
|
||||
Password: hashedPassword,
|
||||
Status: 1,
|
||||
}
|
||||
|
||||
if err := db.Create(&admin).Error; err != nil {
|
||||
return fmt.Errorf("创建默认管理员失败: %v", err)
|
||||
}
|
||||
|
||||
// 更新身份码
|
||||
admin.IdentityCode = fmt.Sprintf("A%08d", admin.ID)
|
||||
if err := db.Model(&admin).Update("identity_code", admin.IdentityCode).Error; err != nil {
|
||||
return fmt.Errorf("更新管理员身份码失败: %v", err)
|
||||
}
|
||||
|
||||
log.Printf("默认管理员创建成功: 手机号: %s, 密码: admin123", admin.Phone)
|
||||
return nil
|
||||
}
|
||||
|
||||
// InitDefaultAgent 初始化默认代理商(可选)
|
||||
func (h *InitHandler) InitDefaultAgent() error {
|
||||
db := common.GetDB()
|
||||
|
||||
// 检查是否已有代理商用户
|
||||
var agent models.User
|
||||
err := db.Where("phone = ?", "13800138001").First(&agent).Error
|
||||
if err == nil {
|
||||
return nil // 代理商已存在
|
||||
} else if err != gorm.ErrRecordNotFound {
|
||||
return fmt.Errorf("查询代理商失败: %v", err)
|
||||
}
|
||||
|
||||
// 创建默认代理商
|
||||
hashedPassword := fmt.Sprintf("%x", md5.Sum([]byte("agent123")))
|
||||
agentUser := models.User{
|
||||
Phone: "13800138001",
|
||||
SystemRole: 1, // 代理商
|
||||
CustomerName: "测试代理商",
|
||||
RealName: "Test Agent",
|
||||
Password: hashedPassword,
|
||||
Status: 1,
|
||||
}
|
||||
|
||||
if err := db.Create(&agentUser).Error; err != nil {
|
||||
return fmt.Errorf("创建默认代理商失败: %v", err)
|
||||
}
|
||||
|
||||
// 更新身份码
|
||||
agentUser.IdentityCode = fmt.Sprintf("T%08d", agentUser.ID)
|
||||
if err := db.Model(&agentUser).Update("identity_code", agentUser.IdentityCode).Error; err != nil {
|
||||
return fmt.Errorf("更新代理商身份码失败: %v", err)
|
||||
}
|
||||
|
||||
log.Printf("默认代理商创建成功: 手机号: %s, 密码: agent123", agentUser.Phone)
|
||||
return nil
|
||||
}
|
||||
|
||||
// InitTestUsers 初始化测试用户
|
||||
func (h *InitHandler) InitTestUsers() error {
|
||||
db := common.GetDB()
|
||||
|
||||
// 获取代理商身份码
|
||||
var agent models.User
|
||||
if err := db.Where("system_role = 1").First(&agent).Error; err != nil {
|
||||
return nil // 没有代理商,跳过创建测试用户
|
||||
}
|
||||
|
||||
// 创建测试用户
|
||||
testUsers := []models.User{
|
||||
{
|
||||
Phone: "13800138002",
|
||||
SystemRole: 2, // 普通用户
|
||||
CustomerName: "测试用户1",
|
||||
RealName: "Test User 1",
|
||||
Password: fmt.Sprintf("%x", md5.Sum([]byte("user123"))),
|
||||
ReferrerIdentityCode: agent.IdentityCode,
|
||||
Status: 1,
|
||||
},
|
||||
{
|
||||
Phone: "13800138003",
|
||||
SystemRole: 2, // 普通用户
|
||||
CustomerName: "测试用户2",
|
||||
RealName: "Test User 2",
|
||||
Password: fmt.Sprintf("%x", md5.Sum([]byte("user123"))),
|
||||
ReferrerIdentityCode: agent.IdentityCode,
|
||||
Status: 1,
|
||||
},
|
||||
}
|
||||
|
||||
for i, user := range testUsers {
|
||||
// 检查用户是否已存在
|
||||
var existUser models.User
|
||||
if err := db.Where("phone = ?", user.Phone).First(&existUser).Error; err == nil {
|
||||
continue // 用户已存在,跳过
|
||||
}
|
||||
|
||||
if err := db.Create(&user).Error; err != nil {
|
||||
return fmt.Errorf("创建测试用户失败: %v", err)
|
||||
}
|
||||
|
||||
// 更新身份码
|
||||
user.IdentityCode = fmt.Sprintf("U%08d", user.ID)
|
||||
if err := db.Model(&user).Update("identity_code", user.IdentityCode).Error; err != nil {
|
||||
return fmt.Errorf("更新用户身份码失败: %v", err)
|
||||
}
|
||||
|
||||
testUsers[i] = user
|
||||
log.Printf("测试用户创建成功: 手机号: %s, 密码: user123", user.Phone)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// InitAll 初始化所有数据
|
||||
func (h *InitHandler) InitAll() error {
|
||||
// 初始化默认管理员
|
||||
if err := h.InitDefaultAdmin(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 初始化默认代理商
|
||||
if err := h.InitDefaultAgent(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 初始化测试用户
|
||||
if err := h.InitTestUsers(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user