Banner.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace app\admin\model\setting;
  3. use app\admin\model\box\Box;
  4. use think\Model;
  5. use traits\model\SoftDelete;
  6. class Banner extends Model
  7. {
  8. use SoftDelete;
  9. // 表名
  10. protected $name = 'banner';
  11. // 自动写入时间戳字段
  12. protected $autoWriteTimestamp = 'int';
  13. // 定义时间戳字段名
  14. protected $createTime = 'create_time';
  15. protected $updateTime = 'update_time';
  16. protected $deleteTime = 'delete_time';
  17. // 追加属性
  18. protected $append = [
  19. 'value_short',
  20. 'place_text',
  21. 'type_text',
  22. 'status_text',
  23. 'update_time_text'
  24. ];
  25. protected static function init()
  26. {
  27. self::afterInsert(function ($row) {
  28. $pk = $row->getPk();
  29. $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
  30. });
  31. }
  32. public function getValueShortAttr($value, $data)
  33. {
  34. if (!empty($data['value'])) {
  35. if (!empty($data['type']) && 'box' == $data['type']) {
  36. // 查询盲盒名称
  37. return Box::where('id', $data['value'])->value('box_name');
  38. }
  39. $text = mb_substr(strip_tags($data['value']), 0, 50);
  40. return mb_strlen($text) >= 50 ? $text . '...' : $text;
  41. }
  42. return '';
  43. }
  44. public function getPlaceList()
  45. {
  46. // return ['index' => __('Place index'), 'other' => __('Place other')];
  47. return ['index' => __('Place index')];
  48. }
  49. public function getTypeList()
  50. {
  51. return ['box' => __('Type box'), 'link' => __('Type link'), 'word' => __('Type word')];
  52. }
  53. public function getStatusList()
  54. {
  55. return ['normal' => __('Status normal'), 'hidden' => __('Status hidden')];
  56. }
  57. public function getPlaceTextAttr($value, $data)
  58. {
  59. $value = $value ? $value : (isset($data['place']) ? $data['place'] : '');
  60. $list = $this->getPlaceList();
  61. return isset($list[$value]) ? $list[$value] : '';
  62. }
  63. public function getTypeTextAttr($value, $data)
  64. {
  65. $value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
  66. $list = $this->getTypeList();
  67. return isset($list[$value]) ? $list[$value] : '';
  68. }
  69. public function getStatusTextAttr($value, $data)
  70. {
  71. $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
  72. $list = $this->getStatusList();
  73. return isset($list[$value]) ? $list[$value] : '';
  74. }
  75. public function getUpdateTimeTextAttr($value, $data)
  76. {
  77. $value = $value ? $value : (isset($data['update_time']) ? $data['update_time'] : '');
  78. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  79. }
  80. protected function setUpdateTimeAttr($value)
  81. {
  82. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  83. }
  84. }