| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package service
- import (
- "github.com/gogf/gf/os/gtime"
- "log"
- "reflect"
- )
- var (
- // UpdateFieldEx 更新过滤字段
- UpdateFieldEx = []string{"CreatedBy", "CreatedName", "CreatedTime"}
- )
- // SetCreatedInfo 插入数据库时设置创建信息
- func SetCreatedInfo(entry interface{}, id int, name string) {
- v := reflect.ValueOf(entry)
- t := reflect.TypeOf(entry)
- if t.Kind() == reflect.Map {
- data := entry.(map[string]interface{})
- data["created_by"] = id
- data["created_name"] = name
- data["created_time"] = gtime.Now()
- return
- }
- if t.Kind() == reflect.Ptr {
- t = t.Elem()
- v = v.Elem()
- }
- if t.Kind() != reflect.Struct {
- log.Println("Check type error not Struct")
- return
- }
- for i := 0; i < t.NumField(); i++ {
- fieldName := t.Field(i).Name
- if tag, ok := t.Field(i).Tag.Lookup("orm"); ok {
- switch tag {
- case "created_by":
- v.FieldByName(fieldName).Set(reflect.ValueOf(id))
- case "created_name":
- v.FieldByName(fieldName).Set(reflect.ValueOf(name))
- case "created_time":
- v.FieldByName(fieldName).Set(reflect.ValueOf(gtime.Now()))
- }
- }
- }
- }
- // SetUpdatedInfo 插入数据库时设置修改信息
- func SetUpdatedInfo(entry interface{}, id int, name string) {
- v := reflect.ValueOf(entry)
- t := reflect.TypeOf(entry)
- if t.Kind() == reflect.Map {
- data := entry.(map[string]interface{})
- data["updated_by"] = id
- data["updated_name"] = name
- data["updated_time"] = gtime.Now()
- return
- }
- if t.Kind() == reflect.Ptr {
- t = t.Elem()
- v = v.Elem()
- }
- if t.Kind() != reflect.Struct {
- log.Println("Check type error not Struct")
- return
- }
- for i := 0; i < t.NumField(); i++ {
- fieldName := t.Field(i).Name
- if tag, ok := t.Field(i).Tag.Lookup("orm"); ok {
- switch tag {
- case "updated_by":
- v.FieldByName(fieldName).Set(reflect.ValueOf(id))
- case "updated_name":
- v.FieldByName(fieldName).Set(reflect.ValueOf(name))
- case "updated_time":
- v.FieldByName(fieldName).Set(reflect.ValueOf(gtime.Now()))
- }
- }
- }
- }
|