Task.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace app\common\model\plus\bargain;
  3. use app\common\model\BaseModel;
  4. use app\common\library\helper;
  5. /**
  6. * 砍价任务模型
  7. * Class Task
  8. * @package app\common\model\bargain
  9. */
  10. class Task extends BaseModel
  11. {
  12. protected $name = 'bargain_task';
  13. protected $pk = 'bargain_task_id';
  14. /**
  15. * 追加的字段
  16. * @var array $append
  17. */
  18. protected $append = [
  19. 'is_end', // 是否已结束
  20. 'surplus_money', // 剩余砍价金额
  21. 'bargain_rate', // 砍价进度百分比(0-100)
  22. 'end_time_text', //砍价结束时间格式化
  23. ];
  24. /**
  25. * 关联用户表
  26. * @return \think\model\relation\BelongsTo
  27. */
  28. public function user()
  29. {
  30. return $this->BelongsTo('app\\common\\model\\user\\User');
  31. }
  32. /**
  33. *关联活动
  34. */
  35. public function active()
  36. {
  37. return $this->belongsTo('app\\common\\model\\plus\\bargain\\Active', 'bargain_activity_id', 'bargain_activity_id');
  38. }
  39. /**
  40. * 关联文件库
  41. */
  42. public function file()
  43. {
  44. return $this->belongsTo('app\\common\\model\\file\\UploadFile', 'image_id', 'file_id')
  45. ->bind(['file_path', 'file_name', 'file_url']);
  46. }
  47. /**
  48. * 有效期-开始时间
  49. * @param $value
  50. * @return array
  51. */
  52. public function getEndTimeTextAttr($value, $data)
  53. {
  54. return date('Y-m-d H:i:s', $data['end_time']);
  55. }
  56. /**
  57. * 获取器:活动是否已结束
  58. * @param $value
  59. * @param $data
  60. * @return false|string
  61. */
  62. public function getIsEndAttr($value, $data)
  63. {
  64. return $value ?: $data['end_time'] <= time();
  65. }
  66. /**
  67. * 获取器:剩余砍价金额
  68. * @param $value
  69. * @param $data
  70. * @return false|string
  71. */
  72. public function getSurplusMoneyAttr($value, $data)
  73. {
  74. $maxCutMoney = helper::bcsub($data['product_price'], $data['bargain_price']);
  75. return $value ?: helper::bcsub($maxCutMoney, $data['cut_money']);
  76. }
  77. /**
  78. * 获取器:砍价进度百分比
  79. * @param $value
  80. * @param $data
  81. * @return false|string
  82. */
  83. public function getBargainRateAttr($value, $data)
  84. {
  85. $maxCutMoney = helper::bcsub($data['product_price'], $data['bargain_price']);
  86. $rate = helper::bcdiv($data['cut_money'], $maxCutMoney) * 100;
  87. return $value ?: helper::number2($rate);
  88. }
  89. /**
  90. * 获取器:砍价金额区间
  91. * @param $value
  92. * @return mixed
  93. */
  94. public function getSectionAttr($value)
  95. {
  96. return json_decode($value, true);
  97. }
  98. /**
  99. * 修改器:砍价金额区间
  100. * @param $value
  101. * @return string
  102. */
  103. public function setSectionAttr($value)
  104. {
  105. return json_encode($value);
  106. }
  107. /**
  108. * 砍价任务详情
  109. */
  110. public static function detail($bargain_task_id, $with = ['user'])
  111. {
  112. return (new static())->with($with)->find($bargain_task_id);
  113. }
  114. }