164 lines
4.4 KiB
Go
164 lines
4.4 KiB
Go
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
|
|
} |