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 }