package dao import ( "context" "crm/global" "crm/models" "log" "os" "strings" ) const ( // 数据库表名 USER = "user" CUSTOMER = "customer" CONTRACT = "contract" PRODUCT = "product" SUBSCRIBE = "subscribe" NOTICE = "notice" MAIL_CONFIG = "mail_config" // 空值 NumberNull = 0 StringNull = "" // 运行环境 Dev = "dev" Prod = "prod" ) var ctx = context.Background() // RestPage 分页查询 // page 设置起始页、每页条数, // name 查询目标表的名称 // query 查询条件, // dest 查询结果绑定的结构体, // bind 绑定表结构对应的结构体 func restPage(page models.Page, name string, query interface{}, dest interface{}, bind interface{}) (int64, error) { if page.PageNum > 0 && page.PageSize > 0 { offset := (page.PageNum - 1) * page.PageSize global.Db.Offset(offset).Limit(page.PageSize).Table(name).Where(query).Find(dest) } res := global.Db.Table(name).Where(query).Find(bind) return res.RowsAffected, res.Error } type CommonDao struct { } func NewCommonDao() *CommonDao { return &CommonDao{} } func (c *CommonDao) InitDatabase() error { env := global.Config.Server.Runenv if env == Prod { // fn := "/home/ubuntu/crmapi/crm.sql" // fn := "/Users/xuzxc/Downloads/crm.sql" dbFile := global.Config.Mysql.DbFile sql, err := os.ReadFile(dbFile) if err != nil { log.Printf("Common.InitDatabase.Error: read file %s error: %s", dbFile, err) return err } sqls := strings.Split(string(sql), ";") for _, sql := range sqls { s := strings.TrimSpace(sql) if s == StringNull { continue } if err := global.Db.Exec(s).Error; err != nil { log.Printf("Common.InitDatabase.Error: %s", err) return err } } return nil } return nil }