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 }