Task.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. */
  50. public function getEndTimeTextAttr($value, $data)
  51. {
  52. return date('Y-m-d H:i:s', $data['end_time']);
  53. }
  54. /**
  55. * 获取器:活动是否已结束
  56. * @param $value
  57. * @param $data
  58. * @return false|string
  59. */
  60. public function getIsEndAttr($value, $data)
  61. {
  62. return $value ?: $data['end_time'] <= time();
  63. }
  64. /**
  65. * 获取器:剩余砍价金额
  66. * @param $value
  67. * @param $data
  68. * @return false|string
  69. */
  70. public function getSurplusMoneyAttr($value, $data)
  71. {
  72. $maxCutMoney = helper::bcsub($data['product_price'], $data['bargain_price']);
  73. return $value ?: helper::bcsub($maxCutMoney, $data['cut_money']);
  74. }
  75. /**
  76. * 获取器:砍价进度百分比
  77. * @param $value
  78. * @param $data
  79. * @return false|string
  80. */
  81. public function getBargainRateAttr($value, $data)
  82. {
  83. $maxCutMoney = helper::bcsub($data['product_price'], $data['bargain_price']);
  84. $rate = helper::bcdiv($data['cut_money'], $maxCutMoney) * 100;
  85. return $value ?: helper::number2($rate);
  86. }
  87. /**
  88. * 获取器:砍价金额区间
  89. * @param $value
  90. * @return mixed
  91. */
  92. public function getSectionAttr($value)
  93. {
  94. return json_decode($value, true);
  95. }
  96. /**
  97. * 修改器:砍价金额区间
  98. * @param $value
  99. * @return string
  100. */
  101. public function setSectionAttr($value)
  102. {
  103. return json_encode($value);
  104. }
  105. /**
  106. * 砍价任务详情
  107. */
  108. public static function detail($bargain_task_id, $with = ['user'])
  109. {
  110. return (new static())->with($with)->find($bargain_task_id);
  111. }
  112. }