| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package service
- import (
- "github.com/gogf/gf/os/gtime"
- "log"
- "reflect"
- )
- var (
- // CommonUpdateFieldEx, UpdateFieldEx 更新过滤字段
- CommonUpdateFieldEx = []interface{}{"created_by", "created_name", "created_time"}
- UpdateFieldEx = []interface{}{"id", "created_by", "created_name", "created_time"}
- )
- // 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()))
- }
- }
- }
- }
|