package service import ( "dashoo.cn/micro_libary/request" "errors" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/os/gtime" "github.com/gogf/gf/util/gconv" "strconv" ) /* 表基础模型 */ const ( DefaultSortField = "Sort" DefaultSortType = "DESC" ) // BaseModel 基础字段 type BaseModel struct { CreatedBy string `orm:"CreatedBy" json:"created_by"` // 创建人姓名 CreatedAt *gtime.Time `orm:"CreatedAt" json:"created_at"` // 创建时间 UpdatedAt *gtime.Time `orm:"UpdatedAt" json:"updated_at"` // 更新时间 UpdatedBy string `orm:"UpdatedBy" json:"updated_by"` // 更新人姓名 DeletedAt *gtime.Time `orm:"DeletedAt" json:"deleted_at"` // 删除时间 UpdatedById int `orm:"UpdatedById" json:"updated_by_id"` // 更新人ID CreatedById int `orm:"CreatedById" json:"created_by_id"` // 创建人ID CreateOn *gtime.Time `orm:"CreateOn" json:"create_on"` // CreateUserId string `orm:"CreateUserId" json:"create_user_id"` // CreateBy string `orm:"CreateBy" json:"create_by"` // ModifiedOn *gtime.Time `orm:"ModifiedOn" json:"modified_on"` // ModifiedUserId string `orm:"ModifiedUserId" json:"modified_user_id"` // ModifiedBy string `orm:"ModifiedBy" json:"modified_by"` // CreatedTime int64 `json:"created_time,omitempty"` UpdatedTime int64 `json:"updated_time,omitempty"` Version int `orm:"Version" json:"version"` // 版本号(乐观锁) } var ( BaseColumns = []string{"Id", "CreatedBy", "CreatedAt", "UpdatedAt", "UpdatedBy", "DeletedAt", "UpdatedById", "CreatedById"} // UpdateFieldEx 更新过滤字段 UpdateFieldEx = []string{ "CreatedBy", "CreatedById", "CreateOn", "CreateUserId", "CreateBy", "CreatedTime", "CreatedUserId", "Id"} UpdateBaseField = []string{"UpdatedBy", "UpdatedById"} ) var ( NameExistsErr = errors.New("名称不能重复,请重新输入") CodeExistsErr = errors.New("编码不能重复,请重新输入") ) // SetCreatedInfo 设置默认创建信息,仅创建时使用 func (b *BaseModel) SetCreatedInfo(user *request.UserInfo) *BaseModel { b.CreatedBy = user.UserName b.CreatedById = int(user.Id) b.CreateOn = gtime.Now() b.CreateUserId = strconv.Itoa(int(user.Id)) b.CreateBy = user.UserName b.CreatedTime = gtime.Timestamp() return b.SetUpdateInfo(user) } // SetUpdateInfo 设置默认更新信息,仅用于更新 func (b *BaseModel) SetUpdateInfo(user *request.UserInfo) *BaseModel { b.UpdatedBy = user.UserName b.UpdatedById = int(user.Id) b.ModifiedOn = gtime.Now() b.ModifiedUserId = strconv.Itoa(int(user.Id)) b.ModifiedBy = user.UserName b.UpdatedTime = gtime.Timestamp() return b } // SetUpdate 更新实体基础信息处理 func SetUpdate(user *request.UserInfo, data interface{}) { base := new(BaseModel).SetUpdateInfo(user) _ = gconv.Struct(base, data) } // SetCreate 创建实体基础信息处理 func SetCreate(user *request.UserInfo, data interface{}) { base := new(BaseModel).SetCreatedInfo(user) _ = gconv.Struct(base, data) } // SetUpdatedMap 生成用户信息 func SetUpdatedMap(user *request.UserInfo) g.Map { return g.Map{ "UpdatedBy": gtime.Now(), "UpdatedById": user.Id, } } // SetModifiedMap 生成用户信息 func SetModifiedMap(user *request.UserInfo) g.Map { return g.Map{ "ModifiedOn": gtime.Now(), "ModifiedUserId": user.Id, "ModifiedBy": user.UserName, } }