fcode.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package entity
  2. import (
  3. "time"
  4. "gopkg.in/guregu/null.v3"
  5. "xiaoniaokuaiyan.com/xiaoniao/cerror"
  6. "xiaoniaokuaiyan.com/xiaoniao/constants"
  7. )
  8. type Fcode struct {
  9. Id int `db:"id"`
  10. TypeId int `db:"type_id"`
  11. CodeStr string `db:"code_str"`
  12. TicketValue int `db:"ticket_value"`
  13. UseMaxValue int `db:"use_max_value"`
  14. UseNum int `db:"use_num"`
  15. AlreadyUseNum int `db:"already_use_num"`
  16. Deadline string `db:"deadline"`
  17. TicketDeadline string `db:"ticket_deadline"`
  18. CreatedAt string `db:"createdAt"`
  19. Remark null.String `db:"remark" json:"remark"`
  20. BindProducts null.String `db:"bind_products"`
  21. Usefor null.String `db:"usefor" json:"usefor"`
  22. TicketValidDays null.Int `db:"ticket_valid_days" json:"ticket_valid_days"`
  23. }
  24. func (codeItem *Fcode) Valid() cerror.CError {
  25. deadline, _ := time.Parse("2006-01-02", codeItem.Deadline)
  26. if deadline.Before(time.Now().AddDate(0, 0, -1)) {
  27. return cerror.New(constants.ERRORCODE_FCODE_EXPIRED, "code has expired|"+codeItem.Deadline)
  28. }
  29. if codeItem.AlreadyUseNum >= codeItem.UseNum {
  30. return cerror.New(constants.ERRORCODE_FCODE_UPEXCEED, "码的使用次数已达到上限")
  31. }
  32. return nil
  33. }