Archives.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace app\admin\model\wwh;
  3. use think\Db;
  4. use think\Model;
  5. class Archives extends Model
  6. {
  7. // 表名
  8. protected $name = 'wwh_archives';
  9. // 自动写入时间戳字段
  10. protected $autoWriteTimestamp = 'int';
  11. // 定义时间戳字段名
  12. protected $createTime = 'createtime';
  13. protected $updateTime = 'updatetime';
  14. protected $deleteTime = false;
  15. // 追加属性
  16. protected $append = [
  17. 'type_text',
  18. 'rec_data_text',
  19. 'lang_text',
  20. 'd_type_text',
  21. 'url',
  22. ];
  23. protected static function init()
  24. {
  25. self::afterInsert(function ($row) {
  26. $pk = $row->getPk();
  27. $column = Column::get($row['column_id']);
  28. $nav = Db::name('wwh_column')->where('id', $row['column_id'])->find();
  29. $tpl = $nav['showtpl'];
  30. $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk], 'classify' => $column['classify'], 'tpl'=>$tpl]);
  31. });
  32. self::beforeInsert(function ($row) {
  33. $column_ids = 0;
  34. if ($row->column_id != 0) {
  35. $column_ids = self::getParentIds($row->column_id);
  36. $column_ids .= "," . $row->column_id;
  37. }
  38. $row->column_ids = $column_ids;
  39. });
  40. self::beforeUpdate(function ($row) {
  41. $pk = $row->getPk();
  42. $changeData = $row->getChangedData();
  43. if (isset($changeData['column_id'])) {
  44. $row->column_ids = self::getParentIds($row->column_id) . ',' . $row->column_id;
  45. }
  46. $column = Column::get($row['column_id']);
  47. $nav = Db::name('wwh_column')->where('id', $row['column_id'])->find();
  48. $tpl = $nav['showtpl'];
  49. $row->getQuery()->where($pk, $row[$pk])->update(['classify' => $column['classify'], 'tpl'=>$tpl]);
  50. });
  51. }
  52. public static function getParentIds($parent_id) {
  53. $row = Column::get($parent_id);
  54. if ( !$row ) {
  55. return 0;
  56. }
  57. return $row->parent_ids;
  58. }
  59. public static function getTypeList()
  60. {
  61. //return ['product' => __('Product'), 'cases' => __('Cases'), 'download' => __('Download'), 'news' => __('News')];
  62. return ['product' => __('Product'), 'cases' => __('Cases'), 'news' => __('News')];
  63. }
  64. public function getUrlAttr($value, $data)
  65. {
  66. return $this->buildUrl($value, $data);
  67. }
  68. private function buildUrl($value, $data)
  69. {
  70. $column = Db::name('wwh_column')->where('id', $data['column_id'])->find();
  71. if ($data['classify'] == 'download'){
  72. return addon_url('wwh/column/index', [':diyname'=>'download'],'html');
  73. }else{
  74. return addon_url('wwh/archives/index', [':diyname' => $column['diyname'], ':id' => $data['id']],'html');
  75. }
  76. }
  77. public function getRecDataList()
  78. {
  79. return ['0' => __('Rec_data 0'), '1' => __('Rec_data 1'), '10' => __('Rec_data 10')];
  80. }
  81. public function getLangList()
  82. {
  83. return ['1' => __('Lang 1'), '2' => __('Lang 2')];
  84. }
  85. public function getdTypeList()
  86. {
  87. return ['1' => __('用户手册'), '2' => __('产品彩页'), '3' => __('驱动程序'), '4' => __('其他')];
  88. }
  89. public function getTypeTextAttr($value, $data)
  90. {
  91. $value = $value ? $value : $data['type'];
  92. $list = $this->getTypeList();
  93. return isset($list[$value]) ? $list[$value] : '';
  94. }
  95. public function getRecDataTextAttr($value, $data)
  96. {
  97. $value = $value ? $value : (isset($data['rec_data']) ? $data['rec_data'] : '');
  98. $valueArr = explode(',', $value);
  99. $list = $this->getRecDataList();
  100. return implode(',', array_intersect_key($list, array_flip($valueArr)));
  101. }
  102. public function getLangTextAttr($value, $data)
  103. {
  104. $value = $value ?: ($data['lang'] ?? '');
  105. $list = $this->getLangList();
  106. return $list[$value] ?? '';
  107. }
  108. public function getdTypeTextAttr($value, $data)
  109. {
  110. $value = $value ? $value : $data['d_type'];
  111. $list = $this->getdTypeList();
  112. return isset($list[$value]) ? $list[$value] : '';
  113. }
  114. protected function setRecDataAttr($value)
  115. {
  116. return is_array($value) ? implode(',', $value) : $value;
  117. }
  118. public function column()
  119. {
  120. return $this->hasOne('app\admin\model\wwh\Column', 'id', 'column_id');
  121. }
  122. }