appeal.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package service
  2. import (
  3. "context"
  4. "time"
  5. "go-common/app/interface/main/credit/model"
  6. "go-common/library/ecode"
  7. xtime "go-common/library/time"
  8. "github.com/pkg/errors"
  9. )
  10. // AddAppeal add a new appeal .
  11. func (s *Service) AddAppeal(c context.Context, btid, bid, mid int64, reason string) (err error) {
  12. var (
  13. isID bool
  14. origin string
  15. ctime xtime.Time
  16. caseID int64
  17. )
  18. infos, err := s.BlockedUserList(c, mid)
  19. if err != nil {
  20. err = errors.Wrap(err, "s.dao.BlockedUserList error")
  21. return
  22. }
  23. for _, v := range infos {
  24. if bid == v.ID {
  25. isID = true
  26. origin = v.OriginContent
  27. ctime = v.CTime
  28. caseID = v.CaseID
  29. }
  30. }
  31. if !isID {
  32. err = ecode.CreditBlockNotExist
  33. return
  34. }
  35. if xtime.Time(time.Now().AddDate(0, 0, -7).Unix()) > ctime {
  36. err = ecode.CreditBlockExpired
  37. return
  38. }
  39. if err = s.dao.AddAppeal(c, s.tagMap[int8(btid)], btid, caseID, mid, model.Business, origin, reason); err != nil {
  40. err = errors.Wrap(err, "s.AddAppeal error")
  41. }
  42. return
  43. }
  44. // AppealState appeal status .
  45. func (s *Service) AppealState(c context.Context, mid, bid int64) (state bool, err error) {
  46. block, err := s.BlockedInfoAppeal(c, bid, mid)
  47. if err != nil {
  48. err = errors.Wrap(err, "BlockedInfo error")
  49. return
  50. }
  51. if block == nil || block.UID != mid {
  52. err = ecode.CreditBlockNotExist
  53. return
  54. }
  55. if xtime.Time(time.Now().AddDate(0, 0, -7).Unix()) > block.CTime {
  56. err = ecode.CreditBlockExpired
  57. return
  58. }
  59. aps, err := s.dao.AppealList(c, mid, model.Business)
  60. if err != nil {
  61. err = errors.Wrap(err, "s.dao.AppealList error")
  62. return
  63. }
  64. for _, v := range aps {
  65. if block.CaseID == v.Oid {
  66. return
  67. }
  68. }
  69. state = true
  70. return
  71. }