github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/gen_method/examples/user__generated.go (about)

     1  package examples
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  	"strings"
     7  	"time"
     8  
     9  	"github.com/go-sql-driver/mysql"
    10  	"github.com/sirupsen/logrus"
    11  
    12  	"golib/gorm"
    13  
    14  	"github.com/johnnyeven/libtools/courier/enumeration"
    15  	"github.com/johnnyeven/libtools/duration"
    16  	"github.com/johnnyeven/libtools/mysql/dberr"
    17  	"github.com/johnnyeven/libtools/timelib"
    18  )
    19  
    20  type UserList []User
    21  
    22  func init() {
    23  	DBTable.Register(&User{})
    24  }
    25  
    26  func (ul *UserList) BatchFetchByCityIDList(db *gorm.DB, cityIDList []uint64) error {
    27  	defer duration.PrintDuration(map[string]interface{}{
    28  		"request": "[DB]User.BatchFetchByCityIDList",
    29  	})()
    30  
    31  	if len(cityIDList) == 0 {
    32  		return nil
    33  	}
    34  
    35  	err := db.Table(User{}.TableName()).Where("F_city_id in (?) and F_enabled = ?", cityIDList, enumeration.BOOL__TRUE).Find(ul).Error
    36  	if err != nil {
    37  		logrus.Errorf("%s", err.Error())
    38  		return dberr.RecordFetchFailedError
    39  	} else {
    40  		return nil
    41  	}
    42  }
    43  
    44  func (ul *UserList) BatchFetchByIdList(db *gorm.DB, idList []uint64) error {
    45  	defer duration.PrintDuration(map[string]interface{}{
    46  		"request": "[DB]User.BatchFetchByIdList",
    47  	})()
    48  
    49  	if len(idList) == 0 {
    50  		return nil
    51  	}
    52  
    53  	err := db.Table(User{}.TableName()).Where("F_id in (?) and F_enabled = ?", idList, enumeration.BOOL__TRUE).Find(ul).Error
    54  	if err != nil {
    55  		logrus.Errorf("%s", err.Error())
    56  		return dberr.RecordFetchFailedError
    57  	} else {
    58  		return nil
    59  	}
    60  }
    61  
    62  func (ul *UserList) BatchFetchByPhoneList(db *gorm.DB, phoneList []string) error {
    63  	defer duration.PrintDuration(map[string]interface{}{
    64  		"request": "[DB]User.BatchFetchByPhoneList",
    65  	})()
    66  
    67  	if len(phoneList) == 0 {
    68  		return nil
    69  	}
    70  
    71  	err := db.Table(User{}.TableName()).Where("F_phone in (?) and F_enabled = ?", phoneList, enumeration.BOOL__TRUE).Find(ul).Error
    72  	if err != nil {
    73  		logrus.Errorf("%s", err.Error())
    74  		return dberr.RecordFetchFailedError
    75  	} else {
    76  		return nil
    77  	}
    78  }
    79  
    80  func (ul *UserList) BatchFetchByUserIDList(db *gorm.DB, userIDList []uint64) error {
    81  	defer duration.PrintDuration(map[string]interface{}{
    82  		"request": "[DB]User.BatchFetchByUserIDList",
    83  	})()
    84  
    85  	if len(userIDList) == 0 {
    86  		return nil
    87  	}
    88  
    89  	err := db.Table(User{}.TableName()).Where("F_user_id in (?) and F_enabled = ?", userIDList, enumeration.BOOL__TRUE).Find(ul).Error
    90  	if err != nil {
    91  		logrus.Errorf("%s", err.Error())
    92  		return dberr.RecordFetchFailedError
    93  	} else {
    94  		return nil
    95  	}
    96  }
    97  
    98  func (u *User) Create(db *gorm.DB) error {
    99  	defer duration.PrintDuration(map[string]interface{}{
   100  		"request": "[DB]User.Create",
   101  	})()
   102  
   103  	if u.CreateTime.IsZero() {
   104  		u.CreateTime = time.Now()
   105  	}
   106  
   107  	if time.Time(u.UpdateTime).IsZero() {
   108  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   109  	}
   110  
   111  	u.Enabled = uint8(enumeration.BOOL__TRUE)
   112  	err := db.Table(u.TableName()).Create(u).Error
   113  	if err != nil {
   114  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   115  			logrus.Errorf("%s", err.Error())
   116  			return dberr.RecordCreateFailedError
   117  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   118  			logrus.Errorf("%s", err.Error())
   119  			return dberr.RecordCreateFailedError
   120  		} else {
   121  			return dberr.RecordConflictError
   122  		}
   123  	} else {
   124  		return nil
   125  	}
   126  }
   127  
   128  type UserDBFieldData struct {
   129  	Id         string
   130  	Phone      string
   131  	UserID     string
   132  	Name       string
   133  	CityID     string
   134  	AreaID     string
   135  	Enabled    string
   136  	CreateTime string
   137  	UpdateTime string
   138  }
   139  
   140  // FetchNoneUniqueIndexFields without Enabled and CreateTime field.
   141  func (udbfd *UserDBFieldData) FetchNoneUniqueIndexFields() []string {
   142  	return []string{
   143  		"F_city_id", "F_area_id", "F_update_time",
   144  	}
   145  }
   146  
   147  func (u User) DBField() *UserDBFieldData {
   148  	return &UserDBFieldData{
   149  		Id:         "F_id",
   150  		Phone:      "F_phone",
   151  		UserID:     "F_user_id",
   152  		Name:       "F_name",
   153  		CityID:     "F_city_id",
   154  		AreaID:     "F_area_id",
   155  		Enabled:    "F_enabled",
   156  		CreateTime: "F_create_time",
   157  		UpdateTime: "F_update_time",
   158  	}
   159  }
   160  
   161  var UserStructFieldAndDBFieldRelate = map[string]string{
   162  	"Id":         "F_id",
   163  	"Phone":      "F_phone",
   164  	"UserID":     "F_user_id",
   165  	"Name":       "F_name",
   166  	"CityID":     "F_city_id",
   167  	"AreaID":     "F_area_id",
   168  	"Enabled":    "F_enabled",
   169  	"CreateTime": "F_create_time",
   170  	"UpdateTime": "F_update_time",
   171  }
   172  
   173  var UserDBFieldAndStructFieldRelate = map[string]string{
   174  	"F_id":          "Id",
   175  	"F_phone":       "Phone",
   176  	"F_user_id":     "UserID",
   177  	"F_name":        "Name",
   178  	"F_city_id":     "CityID",
   179  	"F_area_id":     "AreaID",
   180  	"F_enabled":     "Enabled",
   181  	"F_create_time": "CreateTime",
   182  	"F_update_time": "UpdateTime",
   183  }
   184  
   185  // CreateOnDuplicateWithUpdateFields only update the no unique index field, it return error if updateFields contain unique index field.
   186  // It doesn't update the Enabled and CreateTime field.
   187  func (u *User) CreateOnDuplicateWithUpdateFields(db *gorm.DB, updateFields []string) error {
   188  	defer duration.PrintDuration(map[string]interface{}{
   189  		"request": "[DB]User.CreateOnDuplicateWithUpdateFields",
   190  	})()
   191  	if len(updateFields) == 0 {
   192  		return fmt.Errorf("Must have update fields.")
   193  	}
   194  
   195  	noUniqueIndexFields := (&UserDBFieldData{}).FetchNoneUniqueIndexFields()
   196  	if len(noUniqueIndexFields) == 0 {
   197  		return fmt.Errorf("There are no unique fields.")
   198  	}
   199  
   200  	var noUniqueIndexFieldsMap = make(map[string]string)
   201  	for _, field := range noUniqueIndexFields {
   202  		noUniqueIndexFieldsMap[field] = ""
   203  	}
   204  
   205  	var updateFieldsMap = make(map[string]string)
   206  	for _, field := range updateFields {
   207  		// have unique field in updateFields
   208  		if _, ok := noUniqueIndexFieldsMap[field]; !ok {
   209  			return fmt.Errorf("Field[%s] is unique index or wrong field or Enable field", UserDBFieldAndStructFieldRelate[field])
   210  		}
   211  		updateFieldsMap[field] = ""
   212  	}
   213  
   214  	if u.CreateTime.IsZero() {
   215  		u.CreateTime = time.Now()
   216  	}
   217  
   218  	if time.Time(u.UpdateTime).IsZero() {
   219  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   220  	}
   221  
   222  	u.Enabled = uint8(enumeration.BOOL__TRUE)
   223  
   224  	structType := reflect.TypeOf(u).Elem()
   225  	if structType.Kind() != reflect.Struct {
   226  		return fmt.Errorf("Instance not struct type.")
   227  	}
   228  	structVal := reflect.ValueOf(u).Elem()
   229  
   230  	var param_list []interface{}
   231  	var str_list = []string{"insert into"}
   232  	var insertFieldsStr = u.TableName() + "("
   233  	var placeHolder = "values("
   234  	for i := 0; i < structType.NumField(); i++ {
   235  		if i == 0 {
   236  			insertFieldsStr += UserStructFieldAndDBFieldRelate[structType.Field(i).Name]
   237  			placeHolder += fmt.Sprintf("%s", "?")
   238  		} else {
   239  			insertFieldsStr += fmt.Sprintf(",%s", UserStructFieldAndDBFieldRelate[structType.Field(i).Name])
   240  			placeHolder += fmt.Sprintf("%s", ", ?")
   241  		}
   242  		param_list = append(param_list, structVal.Field(i).Interface())
   243  	}
   244  	insertFieldsStr += ")"
   245  	placeHolder += ")"
   246  	str_list = append(str_list, []string{insertFieldsStr, placeHolder, "on duplicate key update"}...)
   247  
   248  	var updateStr []string
   249  	for i := 0; i < structType.NumField(); i++ {
   250  		if dbField, ok := UserStructFieldAndDBFieldRelate[structType.Field(i).Name]; !ok {
   251  			return fmt.Errorf("Wrong field of struct, may be changed field but not regenerate code.")
   252  		} else {
   253  			if _, ok := updateFieldsMap[dbField]; ok {
   254  				updateStr = append(updateStr, fmt.Sprintf("%s = ?", dbField))
   255  				param_list = append(param_list, structVal.Field(i).Interface())
   256  			}
   257  		}
   258  	}
   259  	str_list = append(str_list, strings.Join(updateStr, ","))
   260  	sql := strings.Join(str_list, " ")
   261  	err := db.Exec(sql, param_list...).Error
   262  	if err != nil {
   263  		logrus.Errorf("%s", err.Error())
   264  		return dberr.RecordCreateFailedError
   265  	}
   266  
   267  	return nil
   268  }
   269  
   270  func (u *User) DeleteById(db *gorm.DB) error {
   271  	defer duration.PrintDuration(map[string]interface{}{
   272  		"request": "[DB]User.DeleteById",
   273  	})()
   274  
   275  	err := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Delete(u).Error
   276  	if err != nil {
   277  		logrus.Errorf("%s", err.Error())
   278  		return dberr.RecordDeleteFailedError
   279  	} else {
   280  		return nil
   281  	}
   282  }
   283  
   284  func (u *User) DeleteByPhone(db *gorm.DB) error {
   285  	defer duration.PrintDuration(map[string]interface{}{
   286  		"request": "[DB]User.DeleteByPhone",
   287  	})()
   288  
   289  	err := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Delete(u).Error
   290  	if err != nil {
   291  		logrus.Errorf("%s", err.Error())
   292  		return dberr.RecordDeleteFailedError
   293  	} else {
   294  		return nil
   295  	}
   296  }
   297  
   298  func (u *User) DeleteByUserIDAndName(db *gorm.DB) error {
   299  	defer duration.PrintDuration(map[string]interface{}{
   300  		"request": "[DB]User.DeleteByUserIDAndName",
   301  	})()
   302  
   303  	err := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Delete(u).Error
   304  	if err != nil {
   305  		logrus.Errorf("%s", err.Error())
   306  		return dberr.RecordDeleteFailedError
   307  	} else {
   308  		return nil
   309  	}
   310  }
   311  
   312  func (ul *UserList) FetchByCityID(db *gorm.DB, cityID uint64) error {
   313  	defer duration.PrintDuration(map[string]interface{}{
   314  		"request": "[DB]User.FetchByCityID",
   315  	})()
   316  
   317  	err := db.Table(User{}.TableName()).Where("F_city_id = ? and F_enabled = ?", cityID, enumeration.BOOL__TRUE).Find(ul).Error
   318  	if err == nil {
   319  		return nil
   320  	} else {
   321  		logrus.Errorf("%s", err.Error())
   322  		return dberr.RecordFetchFailedError
   323  	}
   324  }
   325  
   326  func (ul *UserList) FetchByCityIDAndAreaID(db *gorm.DB, cityID uint64, areaID int) error {
   327  	defer duration.PrintDuration(map[string]interface{}{
   328  		"request": "[DB]User.FetchByCityIDAndAreaID",
   329  	})()
   330  
   331  	err := db.Table(User{}.TableName()).Where("F_city_id = ? and F_area_id = ? and F_enabled = ?", cityID, areaID, enumeration.BOOL__TRUE).Find(ul).Error
   332  	if err == nil {
   333  		return nil
   334  	} else {
   335  		logrus.Errorf("%s", err.Error())
   336  		return dberr.RecordFetchFailedError
   337  	}
   338  }
   339  
   340  func (u *User) FetchById(db *gorm.DB) error {
   341  	defer duration.PrintDuration(map[string]interface{}{
   342  		"request": "[DB]User.FetchById",
   343  	})()
   344  
   345  	err := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Find(u).Error
   346  	if err == nil {
   347  		return nil
   348  	} else {
   349  		if err == gorm.RecordNotFound {
   350  			return dberr.RecordNotFoundError
   351  		} else {
   352  			logrus.Errorf("%s", err.Error())
   353  			return dberr.RecordFetchFailedError
   354  		}
   355  	}
   356  }
   357  
   358  func (u *User) FetchByIdForUpdate(db *gorm.DB) error {
   359  	defer duration.PrintDuration(map[string]interface{}{
   360  		"request": "[DB]User.FetchByIdForUpdate",
   361  	})()
   362  
   363  	err := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Set("gorm:query_option", "FOR UPDATE").Find(u).Error
   364  	if err == nil {
   365  		return nil
   366  	} else {
   367  		if err == gorm.RecordNotFound {
   368  			return dberr.RecordNotFoundError
   369  		} else {
   370  			logrus.Errorf("%s", err.Error())
   371  			return dberr.RecordFetchFailedError
   372  		}
   373  	}
   374  }
   375  
   376  func (u *User) FetchByPhone(db *gorm.DB) error {
   377  	defer duration.PrintDuration(map[string]interface{}{
   378  		"request": "[DB]User.FetchByPhone",
   379  	})()
   380  
   381  	err := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Find(u).Error
   382  	if err == nil {
   383  		return nil
   384  	} else {
   385  		if err == gorm.RecordNotFound {
   386  			return dberr.RecordNotFoundError
   387  		} else {
   388  			logrus.Errorf("%s", err.Error())
   389  			return dberr.RecordFetchFailedError
   390  		}
   391  	}
   392  }
   393  
   394  func (u *User) FetchByPhoneForUpdate(db *gorm.DB) error {
   395  	defer duration.PrintDuration(map[string]interface{}{
   396  		"request": "[DB]User.FetchByPhoneForUpdate",
   397  	})()
   398  
   399  	err := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Set("gorm:query_option", "FOR UPDATE").Find(u).Error
   400  	if err == nil {
   401  		return nil
   402  	} else {
   403  		if err == gorm.RecordNotFound {
   404  			return dberr.RecordNotFoundError
   405  		} else {
   406  			logrus.Errorf("%s", err.Error())
   407  			return dberr.RecordFetchFailedError
   408  		}
   409  	}
   410  }
   411  
   412  func (ul *UserList) FetchByUserID(db *gorm.DB, userID uint64) error {
   413  	defer duration.PrintDuration(map[string]interface{}{
   414  		"request": "[DB]User.FetchByUserID",
   415  	})()
   416  
   417  	err := db.Table(User{}.TableName()).Where("F_user_id = ? and F_enabled = ?", userID, enumeration.BOOL__TRUE).Find(ul).Error
   418  	if err == nil {
   419  		return nil
   420  	} else {
   421  		logrus.Errorf("%s", err.Error())
   422  		return dberr.RecordFetchFailedError
   423  	}
   424  }
   425  
   426  func (u *User) FetchByUserIDAndName(db *gorm.DB) error {
   427  	defer duration.PrintDuration(map[string]interface{}{
   428  		"request": "[DB]User.FetchByUserIDAndName",
   429  	})()
   430  
   431  	err := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Find(u).Error
   432  	if err == nil {
   433  		return nil
   434  	} else {
   435  		if err == gorm.RecordNotFound {
   436  			return dberr.RecordNotFoundError
   437  		} else {
   438  			logrus.Errorf("%s", err.Error())
   439  			return dberr.RecordFetchFailedError
   440  		}
   441  	}
   442  }
   443  
   444  func (u *User) FetchByUserIDAndNameForUpdate(db *gorm.DB) error {
   445  	defer duration.PrintDuration(map[string]interface{}{
   446  		"request": "[DB]User.FetchByUserIDAndNameForUpdate",
   447  	})()
   448  
   449  	err := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Set("gorm:query_option", "FOR UPDATE").Find(u).Error
   450  	if err == nil {
   451  		return nil
   452  	} else {
   453  		if err == gorm.RecordNotFound {
   454  			return dberr.RecordNotFoundError
   455  		} else {
   456  			logrus.Errorf("%s", err.Error())
   457  			return dberr.RecordFetchFailedError
   458  		}
   459  	}
   460  }
   461  
   462  func (ul *UserList) FetchList(db *gorm.DB, size, offset int32, query ...map[string]interface{}) (int32, error) {
   463  	defer duration.PrintDuration(map[string]interface{}{
   464  		"request": "[DB]User.FetchList",
   465  	})()
   466  
   467  	var count int32
   468  	if len(query) == 0 {
   469  		query = append(query, map[string]interface{}{"F_enabled": enumeration.BOOL__TRUE})
   470  	} else {
   471  		if _, ok := query[0]["F_enabled"]; !ok {
   472  			query[0]["F_enabled"] = enumeration.BOOL__TRUE
   473  		}
   474  	}
   475  
   476  	if size <= 0 {
   477  		size = -1
   478  		offset = -1
   479  	}
   480  	var err error
   481  
   482  	err = db.Table(User{}.TableName()).Where(query[0]).Count(&count).Limit(size).Offset(offset).Order("F_create_time desc").Find(ul).Error
   483  
   484  	if err != nil {
   485  		logrus.Errorf("%s", err.Error())
   486  		return 0, dberr.RecordFetchFailedError
   487  	} else {
   488  		return int32(count), nil
   489  	}
   490  }
   491  
   492  func (u *User) SoftDeleteById(db *gorm.DB) error {
   493  	defer duration.PrintDuration(map[string]interface{}{
   494  		"request": "[DB]User.SoftDeleteById",
   495  	})()
   496  
   497  	var updateMap = map[string]interface{}{}
   498  	updateMap["F_enabled"] = enumeration.BOOL__FALSE
   499  
   500  	if time.Time(u.UpdateTime).IsZero() {
   501  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   502  	}
   503  
   504  	err := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Updates(updateMap).Error
   505  	if err != nil {
   506  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   507  			logrus.Errorf("%s", err.Error())
   508  			return dberr.RecordDeleteFailedError
   509  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   510  			logrus.Errorf("%s", err.Error())
   511  			return dberr.RecordDeleteFailedError
   512  		} else {
   513  			logrus.Warningf("%s", err.Error())
   514  			// 物理删除被软删除的数据
   515  			delErr := db.Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Delete(&User{}).Error
   516  			if delErr != nil {
   517  				logrus.Errorf("%s", delErr.Error())
   518  				return dberr.RecordDeleteFailedError
   519  			}
   520  
   521  			return nil
   522  		}
   523  	} else {
   524  		return nil
   525  	}
   526  }
   527  
   528  func (u *User) SoftDeleteByPhone(db *gorm.DB) error {
   529  	defer duration.PrintDuration(map[string]interface{}{
   530  		"request": "[DB]User.SoftDeleteByPhone",
   531  	})()
   532  
   533  	var updateMap = map[string]interface{}{}
   534  	updateMap["F_enabled"] = enumeration.BOOL__FALSE
   535  
   536  	if time.Time(u.UpdateTime).IsZero() {
   537  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   538  	}
   539  
   540  	err := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Updates(updateMap).Error
   541  	if err != nil {
   542  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   543  			logrus.Errorf("%s", err.Error())
   544  			return dberr.RecordDeleteFailedError
   545  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   546  			logrus.Errorf("%s", err.Error())
   547  			return dberr.RecordDeleteFailedError
   548  		} else {
   549  			logrus.Warningf("%s", err.Error())
   550  			// 物理删除被软删除的数据
   551  			delErr := db.Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Delete(&User{}).Error
   552  			if delErr != nil {
   553  				logrus.Errorf("%s", delErr.Error())
   554  				return dberr.RecordDeleteFailedError
   555  			}
   556  
   557  			return nil
   558  		}
   559  	} else {
   560  		return nil
   561  	}
   562  }
   563  
   564  func (u *User) SoftDeleteByUserIDAndName(db *gorm.DB) error {
   565  	defer duration.PrintDuration(map[string]interface{}{
   566  		"request": "[DB]User.SoftDeleteByUserIDAndName",
   567  	})()
   568  
   569  	var updateMap = map[string]interface{}{}
   570  	updateMap["F_enabled"] = enumeration.BOOL__FALSE
   571  
   572  	if time.Time(u.UpdateTime).IsZero() {
   573  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   574  	}
   575  
   576  	err := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Updates(updateMap).Error
   577  	if err != nil {
   578  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   579  			logrus.Errorf("%s", err.Error())
   580  			return dberr.RecordDeleteFailedError
   581  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   582  			logrus.Errorf("%s", err.Error())
   583  			return dberr.RecordDeleteFailedError
   584  		} else {
   585  			logrus.Warningf("%s", err.Error())
   586  			// 物理删除被软删除的数据
   587  			delErr := db.Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Delete(&User{}).Error
   588  			if delErr != nil {
   589  				logrus.Errorf("%s", delErr.Error())
   590  				return dberr.RecordDeleteFailedError
   591  			}
   592  
   593  			return nil
   594  		}
   595  	} else {
   596  		return nil
   597  	}
   598  }
   599  
   600  func (u *User) UpdateByIdWithMap(db *gorm.DB, updateMap map[string]interface{}) error {
   601  	defer duration.PrintDuration(map[string]interface{}{
   602  		"request": "[DB]User.UpdateByIdWithMap",
   603  	})()
   604  
   605  	if _, ok := updateMap["F_update_time"]; !ok {
   606  		updateMap["F_update_time"] = timelib.MySQLTimestamp(time.Now())
   607  
   608  	}
   609  	dbRet := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Updates(updateMap)
   610  	err := dbRet.Error
   611  	if err != nil {
   612  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   613  			logrus.Errorf("%s", err.Error())
   614  			return dberr.RecordUpdateFailedError
   615  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   616  			logrus.Errorf("%s", err.Error())
   617  			return dberr.RecordUpdateFailedError
   618  		} else {
   619  			return dberr.RecordConflictError
   620  		}
   621  	} else {
   622  		if dbRet.RowsAffected == 0 {
   623  			findErr := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Find(&User{}).Error
   624  			if findErr == gorm.RecordNotFound {
   625  				return dberr.RecordNotFoundError
   626  			} else if findErr != nil {
   627  				return dberr.RecordUpdateFailedError
   628  			}
   629  			//存在有效数据记录,返回成功
   630  			return nil
   631  		} else {
   632  			return nil
   633  		}
   634  	}
   635  }
   636  
   637  func (u *User) UpdateByIdWithStruct(db *gorm.DB) error {
   638  	defer duration.PrintDuration(map[string]interface{}{
   639  		"request": "[DB]User.UpdateByIdWithStruct",
   640  	})()
   641  
   642  	if time.Time(u.UpdateTime).IsZero() {
   643  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   644  	}
   645  
   646  	dbRet := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Updates(u)
   647  	err := dbRet.Error
   648  	if err != nil {
   649  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   650  			logrus.Errorf("%s", err.Error())
   651  			return dberr.RecordUpdateFailedError
   652  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   653  			logrus.Errorf("%s", err.Error())
   654  			return dberr.RecordUpdateFailedError
   655  		} else {
   656  			return dberr.RecordConflictError
   657  		}
   658  	} else {
   659  		if dbRet.RowsAffected == 0 {
   660  			findErr := db.Table(u.TableName()).Where("F_id = ? and F_enabled = ?", u.Id, enumeration.BOOL__TRUE).Find(&User{}).Error
   661  			if findErr == gorm.RecordNotFound {
   662  				return dberr.RecordNotFoundError
   663  			} else if findErr != nil {
   664  				return dberr.RecordUpdateFailedError
   665  			}
   666  			//存在有效数据记录,返回成功
   667  			return nil
   668  		} else {
   669  			return nil
   670  		}
   671  	}
   672  }
   673  
   674  func (u *User) UpdateByPhoneWithMap(db *gorm.DB, updateMap map[string]interface{}) error {
   675  	defer duration.PrintDuration(map[string]interface{}{
   676  		"request": "[DB]User.UpdateByPhoneWithMap",
   677  	})()
   678  
   679  	if _, ok := updateMap["F_update_time"]; !ok {
   680  		updateMap["F_update_time"] = timelib.MySQLTimestamp(time.Now())
   681  
   682  	}
   683  	dbRet := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Updates(updateMap)
   684  	err := dbRet.Error
   685  	if err != nil {
   686  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   687  			logrus.Errorf("%s", err.Error())
   688  			return dberr.RecordUpdateFailedError
   689  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   690  			logrus.Errorf("%s", err.Error())
   691  			return dberr.RecordUpdateFailedError
   692  		} else {
   693  			return dberr.RecordConflictError
   694  		}
   695  	} else {
   696  		if dbRet.RowsAffected == 0 {
   697  			findErr := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Find(&User{}).Error
   698  			if findErr == gorm.RecordNotFound {
   699  				return dberr.RecordNotFoundError
   700  			} else if findErr != nil {
   701  				return dberr.RecordUpdateFailedError
   702  			}
   703  			//存在有效数据记录,返回成功
   704  			return nil
   705  		} else {
   706  			return nil
   707  		}
   708  	}
   709  }
   710  
   711  func (u *User) UpdateByPhoneWithStruct(db *gorm.DB) error {
   712  	defer duration.PrintDuration(map[string]interface{}{
   713  		"request": "[DB]User.UpdateByPhoneWithStruct",
   714  	})()
   715  
   716  	if time.Time(u.UpdateTime).IsZero() {
   717  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   718  	}
   719  
   720  	dbRet := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Updates(u)
   721  	err := dbRet.Error
   722  	if err != nil {
   723  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   724  			logrus.Errorf("%s", err.Error())
   725  			return dberr.RecordUpdateFailedError
   726  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   727  			logrus.Errorf("%s", err.Error())
   728  			return dberr.RecordUpdateFailedError
   729  		} else {
   730  			return dberr.RecordConflictError
   731  		}
   732  	} else {
   733  		if dbRet.RowsAffected == 0 {
   734  			findErr := db.Table(u.TableName()).Where("F_phone = ? and F_enabled = ?", u.Phone, enumeration.BOOL__TRUE).Find(&User{}).Error
   735  			if findErr == gorm.RecordNotFound {
   736  				return dberr.RecordNotFoundError
   737  			} else if findErr != nil {
   738  				return dberr.RecordUpdateFailedError
   739  			}
   740  			//存在有效数据记录,返回成功
   741  			return nil
   742  		} else {
   743  			return nil
   744  		}
   745  	}
   746  }
   747  
   748  func (u *User) UpdateByUserIDAndNameWithMap(db *gorm.DB, updateMap map[string]interface{}) error {
   749  	defer duration.PrintDuration(map[string]interface{}{
   750  		"request": "[DB]User.UpdateByUserIDAndNameWithMap",
   751  	})()
   752  
   753  	if _, ok := updateMap["F_update_time"]; !ok {
   754  		updateMap["F_update_time"] = timelib.MySQLTimestamp(time.Now())
   755  
   756  	}
   757  	dbRet := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Updates(updateMap)
   758  	err := dbRet.Error
   759  	if err != nil {
   760  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   761  			logrus.Errorf("%s", err.Error())
   762  			return dberr.RecordUpdateFailedError
   763  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   764  			logrus.Errorf("%s", err.Error())
   765  			return dberr.RecordUpdateFailedError
   766  		} else {
   767  			return dberr.RecordConflictError
   768  		}
   769  	} else {
   770  		if dbRet.RowsAffected == 0 {
   771  			findErr := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Find(&User{}).Error
   772  			if findErr == gorm.RecordNotFound {
   773  				return dberr.RecordNotFoundError
   774  			} else if findErr != nil {
   775  				return dberr.RecordUpdateFailedError
   776  			}
   777  			//存在有效数据记录,返回成功
   778  			return nil
   779  		} else {
   780  			return nil
   781  		}
   782  	}
   783  }
   784  
   785  func (u *User) UpdateByUserIDAndNameWithStruct(db *gorm.DB) error {
   786  	defer duration.PrintDuration(map[string]interface{}{
   787  		"request": "[DB]User.UpdateByUserIDAndNameWithStruct",
   788  	})()
   789  
   790  	if time.Time(u.UpdateTime).IsZero() {
   791  		u.UpdateTime = timelib.MySQLTimestamp(time.Now())
   792  	}
   793  
   794  	dbRet := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Updates(u)
   795  	err := dbRet.Error
   796  	if err != nil {
   797  		if mysql_err, ok := err.(*mysql.MySQLError); !ok {
   798  			logrus.Errorf("%s", err.Error())
   799  			return dberr.RecordUpdateFailedError
   800  		} else if mysql_err.Number != dberr.DuplicateEntryErrNumber {
   801  			logrus.Errorf("%s", err.Error())
   802  			return dberr.RecordUpdateFailedError
   803  		} else {
   804  			return dberr.RecordConflictError
   805  		}
   806  	} else {
   807  		if dbRet.RowsAffected == 0 {
   808  			findErr := db.Table(u.TableName()).Where("F_user_id = ? and F_name = ? and F_enabled = ?", u.UserID, u.Name, enumeration.BOOL__TRUE).Find(&User{}).Error
   809  			if findErr == gorm.RecordNotFound {
   810  				return dberr.RecordNotFoundError
   811  			} else if findErr != nil {
   812  				return dberr.RecordUpdateFailedError
   813  			}
   814  			//存在有效数据记录,返回成功
   815  			return nil
   816  		} else {
   817  			return nil
   818  		}
   819  	}
   820  }