代码优化

This commit is contained in:
meilin.huang
2021-04-21 10:22:09 +08:00
parent ec1001d88b
commit d5fc1b6f52
14 changed files with 64 additions and 226 deletions

View File

@@ -44,7 +44,7 @@ func (m *Model) SetBaseInfo(account *LoginAccount) {
//
// 若error不为nil则为不存在该记录
func GetById(model interface{}, id uint64, cols ...string) error {
return global.Db.Debug().Select(cols).Where("id = ?", id).First(model).Error
return global.Db.Select(cols).Where("id = ?", id).First(model).Error
}
// 根据id更新model更新字段为model中不为空的值即int类型不为0ptr类型不为nil这类字段值
@@ -67,27 +67,27 @@ func Insert(model interface{}) error {
//
// @param list为数组类型 如 var users []*User可指定为非model结构体即只包含需要返回的字段结构体
func ListBy(model interface{}, list interface{}, cols ...string) {
global.Db.Debug().Model(model).Select(cols).Where(model).Find(list)
global.Db.Model(model).Select(cols).Where(model).Find(list)
}
// 获取满足model中不为空的字段值条件的单个对象。model需为指针类型需要将查询出来的值赋值给model
//
// 若 error不为nil则为不存在该记录
func GetBy(model interface{}, cols ...string) error {
return global.Db.Debug().Select(cols).Where(model).First(model).Error
return global.Db.Select(cols).Where(model).First(model).Error
}
// 获取满足conditionModel中不为空的字段值条件的单个对象。model需为指针类型需要将查询出来的值赋值给model
// @param toModel 需要查询的字段
// 若 error不为nil则为不存在该记录
func GetByConditionTo(conditionModel interface{}, toModel interface{}) error {
return global.Db.Debug().Model(conditionModel).Where(conditionModel).First(toModel).Error
return global.Db.Model(conditionModel).Where(conditionModel).First(toModel).Error
}
// 获取分页结果
func GetPage(pageParam *PageParam, conditionModel interface{}, toModels interface{}, orderBy ...string) PageResult {
var count int64
global.Db.Debug().Model(conditionModel).Where(conditionModel).Count(&count)
global.Db.Model(conditionModel).Where(conditionModel).Count(&count)
if count == 0 {
return PageResult{Total: 0, List: []string{}}
}
@@ -99,7 +99,7 @@ func GetPage(pageParam *PageParam, conditionModel interface{}, toModels interfac
} else {
orderByStr = strings.Join(orderBy, ",")
}
global.Db.Debug().Model(conditionModel).Where(conditionModel).Order(orderByStr).Limit(pageSize).Offset((page - 1) * pageSize).Find(toModels)
global.Db.Model(conditionModel).Where(conditionModel).Order(orderByStr).Limit(pageSize).Offset((page - 1) * pageSize).Find(toModels)
return PageResult{Total: count, List: toModels}
}
@@ -127,92 +127,3 @@ func GetListBySql(sql string, params ...interface{}) []map[string]interface{} {
global.Db.Raw(sql, params).Scan(&maps)
return maps
}
// 获取所有列表数据
// model为数组类型 如 var users []*User
// func GetList(seter orm.QuerySeter, model interface{}, toModel interface{}) {
// _, _ = seter.All(model, getFieldNames(toModel)...)
// err := utils.Copy(toModel, model)
// biz.BizErrIsNil(err, "实体转换错误")
// }
// func getOrm() orm.Ormer {
// return orm.NewOrm()
// }
// // 结果模型缓存
// var resultModelCache = make(map[string][]string)
// // 获取实体对象的字段名
// func getFieldNames(obj interface{}) []string {
// objType := indirectType(reflect.TypeOf(obj))
// cacheKey := objType.PkgPath() + "." + objType.Name()
// cache := resultModelCache[cacheKey]
// if cache != nil {
// return cache
// }
// cache = getFieldNamesByType("", reflect.TypeOf(obj))
// resultModelCache[cacheKey] = cache
// return cache
// }
// func indirectType(reflectType reflect.Type) reflect.Type {
// for reflectType.Kind() == reflect.Ptr || reflectType.Kind() == reflect.Slice {
// reflectType = reflectType.Elem()
// }
// return reflectType
// }
// func getFieldNamesByType(namePrefix string, reflectType reflect.Type) []string {
// var fieldNames []string
// if reflectType = indirectType(reflectType); reflectType.Kind() == reflect.Struct {
// for i := 0; i < reflectType.NumField(); i++ {
// t := reflectType.Field(i)
// tName := t.Name
// // 判断结构体字段是否为结构体,是的话则跳过
// it := indirectType(t.Type)
// if it.Kind() == reflect.Struct {
// itName := it.Name()
// // 如果包含Time或time则表示为time类型无需递归该结构体字段
// if !strings.Contains(itName, "BaseModel") && !strings.Contains(itName, "Time") &&
// !strings.Contains(itName, "time") {
// fieldNames = append(fieldNames, getFieldNamesByType(tName+"__", it)...)
// continue
// }
// }
// if t.Anonymous {
// fieldNames = append(fieldNames, getFieldNamesByType("", t.Type)...)
// } else {
// fieldNames = append(fieldNames, namePrefix+tName)
// }
// }
// }
// return fieldNames
// }
// func ormParams2Struct(maps []orm.Params, structs interface{}) error {
// structsV := reflect.Indirect(reflect.ValueOf(structs))
// valType := structsV.Type()
// valElemType := valType.Elem()
// sliceType := reflect.SliceOf(valElemType)
// length := len(maps)
// valSlice := structsV
// if valSlice.IsNil() {
// // Make a new slice to hold our result, same size as the original data.
// valSlice = reflect.MakeSlice(sliceType, length, length)
// }
// for i := 0; i < length; i++ {
// err := utils.Map2Struct(maps[i], valSlice.Index(i).Addr().Interface())
// if err != nil {
// return err
// }
// }
// structsV.Set(valSlice)
// return nil
// }