This commit is contained in:
solosw
2026-01-05 14:11:34 +08:00
parent 35ef825371
commit 99b11b04e4
658 changed files with 99266 additions and 0 deletions
+164
View File
@@ -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
}