| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package domain
- import (
- "git.sxidc.com/go-framework/baize/infrastructure/database/sql"
- "git.sxidc.com/go-framework/baize/tag/sql/sql_mapping"
- "git.sxidc.com/go-tools/utils/strutils"
- "git.sxidc.com/service-supports/fserr"
- )
- type ConditionFieldCallback func(conditions *sql.Conditions, fieldName string, columnName string, value any) (hasDeal bool)
- type Entity interface {
- DomainCNName() string
- GenerateID() error
- ID() string
- CheckID(domainCNName string, errCode int) error
- QueryDBConditions(callback ConditionFieldCallback) sql.Conditions
- }
- type BaseEntity struct {
- ID string `sqlmapping:"column:id;key;" sqlresult:"column:id;"`
- }
- func (e *BaseEntity) DomainCNName() string {
- return "基础实体"
- }
- func (e *BaseEntity) GenerateID() {
- e.ID = strutils.SimpleUUID()
- }
- func (e *BaseEntity) GetID() string {
- return e.ID
- }
- func (e *BaseEntity) CheckID(errCode int) error {
- if strutils.IsStringEmpty(e.ID) {
- return fserr.WithCode(nil, errCode, fserr.MsgOption(e.DomainCNName()+"ID为空"))
- }
- if len([]byte(e.ID)) != FieldIDLen {
- return fserr.WithCode(nil, errCode, fserr.MsgOption(e.DomainCNName()+"ID长度不正确"))
- }
- return nil
- }
- func (e *BaseEntity) QueryDBConditions(callback ConditionFieldCallback) (*sql.Conditions, error) {
- fields, err := sql_mapping.DefaultUsage(e)
- if err != nil {
- return nil, err
- }
- conditions := sql.NewConditions()
- for _, field := range fields {
- hasDeal := false
- if callback != nil {
- hasDeal = callback(conditions, field.FieldName, field.ColumnName, field.Value)
- }
- if !hasDeal {
- conditions.Equal(field.ColumnName, field.Value)
- }
- }
- return conditions, nil
- }
|