price_config.go 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package model
  2. import (
  3. xtime "go-common/library/time"
  4. )
  5. // PriceConfig represents price config of tv vip.
  6. type PriceConfig struct {
  7. ID int32 `json:"id"` // 主键id
  8. Pid int32 `json:"pid"` // 父id,为空表示为原价信息
  9. Platform int8 `json:"platform"` // 类型: 1:tv安卓 2:公众号
  10. ProductName string `json:"product_name"` // 产品展示名
  11. ProductId string `json:"product_id"` // 产品id
  12. SuitType int8 `json:"suit_type"` // 适用人群: 0.所有用户 1.旧客 2.新客 3.续期旧客 4.续期新客 5.套餐旧客 6.套餐新客 10.主站vip专项
  13. Month int32 `json:"month"` // 月份单位
  14. SubType int8 `json:"sub_type"` // 订阅类型:0.其他,1.连续包月
  15. Price int32 `json:"price"` // 价格,pid为0表示原价,单位:分
  16. Selected int8 `json:"selected"` // 选中状态: 0.未选中,1.选中
  17. Remark string `json:"remark"` // 促销tip
  18. Status int8 `json:"status"` // 状态,0:有效,1:失效
  19. Superscript string `json:"superscript"` // 角标
  20. Operator string `json:"operator"` // 操作者
  21. OperId int64 `json:"oper_id"` // 操作者id
  22. Stime xtime.Time `json:"stime"` // 折扣开始时间
  23. Etime xtime.Time `json:"etime"` // 折扣结束时间
  24. Ctime xtime.Time `json:"ctime"` // 创建时间
  25. Mtime xtime.Time `json:"mtime"` // 最后修改时间
  26. }
  27. // PanelPriceConfig represents panel config of tv vip.
  28. type PanelPriceConfig struct {
  29. PriceConfig
  30. MaxNum int32 // 允许最大购买数量,-1 表示不限制
  31. OriginPrice int32 // 原价
  32. }
  33. // CopyFromPriceConfig copies fields from price config.
  34. func (pi *PanelPriceConfig) CopyFromPriceConfig(pc *PriceConfig) {
  35. pi.ID = pc.ID
  36. pi.Pid = pc.Pid
  37. pi.Platform = pc.Platform
  38. pi.ProductName = pc.ProductName
  39. pi.ProductId = pc.ProductId
  40. pi.SuitType = pc.SuitType
  41. pi.Month = pc.Month
  42. pi.SubType = pc.SubType
  43. pi.Price = pc.Price
  44. pi.Selected = pc.Selected
  45. pi.Remark = pc.Remark
  46. pi.Status = pc.Status
  47. pi.Superscript = pc.Superscript
  48. pi.Operator = pc.Operator
  49. pi.OperId = pc.OperId
  50. pi.Stime = pc.Stime
  51. pi.Etime = pc.Etime
  52. pi.Ctime = pc.Ctime
  53. pi.Mtime = pc.Mtime
  54. pi.MaxNum = 1
  55. }
  56. // IsContracted returns true if panel is contracted package.
  57. func (pi *PanelPriceConfig) IsContracted() bool {
  58. return pi.SubType == SubTypeContract
  59. }
  60. // PidOrId returns panel parent id or panel id.
  61. func (pi *PanelPriceConfig) PidOrId() int32 {
  62. if pi.Pid != 0 {
  63. return pi.Pid
  64. }
  65. return pi.ID
  66. }