package dao import ( "github.com/druidcaesa/gotool" "reflect" "strings" "ulink-admin/frame" "ulink-admin/modules/system/models/model" "ulink-admin/modules/system/models/req" "ulink-admin/pkg/base" "ulink-admin/pkg/page" "ulink-admin/utils" "xorm.io/xorm" ) type SysInfoDao struct { } func (d SysInfoDao) selectSql(session *xorm.Session) *xorm.Session { return session.Table([]string{"sys_info", "o"}) } // SelectAll 查询所有系统设置数据,数据库操作 func (d SysInfoDao) SelectAll() []*model.SysInfo { session := base.SqlDB.NewSession() sysInfo := make([]*model.SysInfo, 0) err := session.Find(&sysInfo) if err != nil { gotool.Logs.ErrorLog().Println(err) return nil } return sysInfo } // Find 查询系统设置分页数据 func (d SysInfoDao) Find(query *req.SysInfoQuery) (*[]model.SysInfo, int64) { sysInfo := make([]model.SysInfo, 0) session := base.SqlDB.NewSession().Table(model.SysInfo{}.TableName()) if query.Id > 0 { session.And("id = ?", query.Id) } if !gotool.StrUtils.HasEmpty(query.Label) { session.And("label = ?", query.Label) } if !gotool.StrUtils.HasEmpty(query.IsDel) { session.And("is_del = ?", query.IsDel) } if !gotool.StrUtils.HasEmpty(query.CreateBy) { session.And("create_by = ?", query.CreateBy) } if !gotool.StrUtils.HasEmpty(query.UpdateBy) { session.And("update_by = ?", query.UpdateBy) } if !gotool.StrUtils.HasEmpty(query.BeginTime) { session.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime) } if !gotool.StrUtils.HasEmpty(query.EndTime) { session.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime) } total, err := session.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).FindAndCount(&sysInfo) if err != nil { gotool.Logs.ErrorLog().Println(err) return nil, 0 } return &sysInfo, total } // Insert 添加系统设置数据 func (d SysInfoDao) Insert(sysInfo *model.SysInfo) int64 { session := base.SqlDB.NewSession() session.Begin() insert, err := session.Insert(sysInfo) if err != nil { session.Rollback() gotool.Logs.ErrorLog().Println(err) return 0 } session.Commit() return insert } // GetSysInfoById 根据id查询系统设置数据 func (d SysInfoDao) GetSysInfoById(sysInfo model.SysInfo) *model.SysInfo { _, err := base.SqlDB.NewSession().Where("id= ?", sysInfo.Id).Get(&sysInfo) if err != nil { gotool.Logs.ErrorLog().Println(err) return nil } return &sysInfo } // Delete 批量删除系统设置 func (d SysInfoDao) Delete(sysInfo []int64) int64 { session := base.SqlDB.NewSession() session.Begin() i, err := session.In("id", sysInfo).Delete(&model.SysInfo{}) if err != nil { session.Rollback() gotool.Logs.ErrorLog().Println(err) return 0 } session.Commit() return i } // Update 修改系统设置数据 func (d SysInfoDao) Update(sysInfo *model.SysInfo) { session := base.SqlDB.NewSession() session.Begin() _, err := session.Where("id= ?", sysInfo.Id).Update(sysInfo) if err != nil { session.Rollback() frame.Throw(frame.SQL_CODE, "更新数据错误:"+err.Error()) } session.Commit() } // CheckUnique 唯一性检查 func (d SysInfoDao) CheckUnique(sysInfo model.SysInfo, condition []string) int64 { session := base.SqlDB.Table(sysInfo.TableName()) if sysInfo.Id > 0 { session.And("id != ?", sysInfo.Id) } for _, item := range condition { fieldValue := reflect.ValueOf(sysInfo).FieldByName(utils.Ucfirst(item)) if strings.Contains(fieldValue.Type().String(), "int") { session.And(utils.Camel2Case(item)+" = ?", fieldValue.Int()) } else if strings.Contains(fieldValue.Type().String(), "string") { session.And(utils.Camel2Case(item)+" = ?", fieldValue.String()) } else { session.And(utils.Camel2Case(item)+" = ?", fieldValue.String()) } } count, err := session.Count() if err != nil { gotool.Logs.ErrorLog().Println(err) } return count }