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