| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package service
- import (
- "dashoo.cn/opms_libary/request"
- "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"}
- )
- // SetCurrentCreatedInfo 插入数据库时设置创建信息
- func SetCurrentCreatedInfo(entity interface{}, cxtUser *request.UserInfo) {
- SetCreatedInfo(entity, cxtUser.Id, cxtUser.UserName)
- }
- func SetCreatedInfo(entity interface{}, id int, name string) {
- v := reflect.ValueOf(entity)
- t := reflect.TypeOf(entity)
- if t.Kind() == reflect.Map {
- data := entity.(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()))
- }
- }
- }
- }
- // SetCurrentUpdatedInfo 插入数据库时设置修改信息
- func SetCurrentUpdatedInfo(entity interface{}, cxtUser *request.UserInfo) {
- SetUpdatedInfo(entity, cxtUser.Id, cxtUser.UserName)
- }
- func SetUpdatedInfo(entity interface{}, id int, name string) {
- v := reflect.ValueOf(entity)
- t := reflect.TypeOf(entity)
- if t.Kind() == reflect.Map {
- data := entity.(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()))
- }
- }
- }
- }
|