address.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package repository
  2. import (
  3. req "sghgogs.com/micro/shopping-service/domain/model/request"
  4. pb "sghgogs.com/micro/shopping-service/proto"
  5. )
  6. func (u *Repository) CreateAddress(address *req.Address) error {
  7. // 开始事务
  8. tx := u.db.Begin()
  9. // 错误处理
  10. defer func() {
  11. if r := recover(); r != nil {
  12. tx.Rollback()
  13. }
  14. }()
  15. if err := tx.Create(&address).Error; err != nil {
  16. tx.Rollback()
  17. return err
  18. }
  19. return tx.Commit().Error
  20. }
  21. func (u *Repository) GetAddressList(query *pb.GetAddressListRequest) ([]req.Address, int64, error) {
  22. tx := u.db.Model(&req.Address{}).
  23. Select("id, country, province, city, district, street, remark, is_default, created_at, updated_at").
  24. Order("id desc")
  25. var totalCount int64
  26. if query.Keyword != "" {
  27. tx.Where("country = ? OR province = ? OR city = ?", query.Keyword, query.Keyword)
  28. }
  29. tx.Count(&totalCount)
  30. addresses := make([]req.Address, 0)
  31. return addresses, totalCount, tx.Limit(int(query.PageSize)).Offset(int((query.Page - 1) * query.PageSize)).Find(&addresses).Error
  32. }
  33. func (u *Repository) GetAddress(addressID int64) (req.Address, error) {
  34. var address req.Address
  35. return address, u.db.
  36. Where("id = ?", addressID).
  37. Preload("Location").
  38. Find(&address).Error
  39. }
  40. func (u *Repository) UpdateAddress(addressID int64, address *req.Address) error {
  41. return u.db.Model(&req.Address{}).Where("id = ?", addressID).Updates(address).Error
  42. }
  43. func (u *Repository) DeleteAddress(addressID int64) error {
  44. return u.db.Model(&req.Address{}).Delete(&req.Address{ID: addressID}).Error
  45. }