DiyChildLink.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. // +---------------------------------------------------------------------+
  3. // | NiuCloud | [ WE CAN DO IT JUST NiuCloud ]  |
  4. // +---------------------------------------------------------------------+
  5. // | Copy right 2019-2029 www.niucloud.com  |
  6. // +---------------------------------------------------------------------+
  7. // | Author | NiuCloud <niucloud@outlook.com>  |
  8. // +---------------------------------------------------------------------+
  9. // | Repository | https://github.com/niucloud/framework.git  |
  10. // +---------------------------------------------------------------------+
  11. namespace app\event;
  12. use app\Controller;
  13. use app\model\web\DiyView as DiyViewModel;
  14. use app\model\web\DiyViewLink;
  15. /**
  16. * 自定义子级链接
  17. */
  18. class DiyChildLink extends Controller
  19. {
  20. // 行为扩展的执行入口必须是run
  21. public function handle($data)
  22. {
  23. $link = input("link", []);
  24. $support_diy_view = isset($data[ 'support_diy_view' ]) ? $data[ 'support_diy_view' ] : 'DIY_VIEW_SHOP';//支持的自定义页面(为空表示都支持)
  25. $name = input('name', '');
  26. $is_array = true;//记录是否是数组,后续判断受该变量影响
  27. if (!empty($link)) {
  28. $link = json_decode($link, true);
  29. $is_array = is_array($link);
  30. }
  31. $condition = [
  32. [ 'parent', '=', $name ],
  33. [ 'support_diy_view', 'like', [ $support_diy_view, '' ], 'or' ]
  34. ];
  35. $link_model = new DiyViewLink();
  36. $list_result = $link_model->getLinkList($condition, '*', 'sort ASC');
  37. $list = $list_result[ 'data' ];
  38. $temp_link = [];
  39. foreach ($list as $k => $v) {
  40. $child_condition = [
  41. [ 'parent', '=', $v[ 'name' ] ],
  42. [ 'support_diy_view', 'like', [ $support_diy_view, '' ], 'or' ]
  43. ];
  44. $child_list_result = $link_model->getLinkList($child_condition, '*', 'sort ASC');
  45. $child_list = $child_list_result[ 'data' ];
  46. foreach ($child_list as $item => $value) {
  47. if ($value[ 'addon_name' ] == '') {
  48. if (!empty($link) && $is_array && $link[ 'name' ] == $value[ 'name' ]) {
  49. //对象方式匹配
  50. $child_list[ $item ][ 'selected' ] = true;
  51. } elseif (!empty($link) && !$is_array && strtolower($link) == strtolower($value[ 'wap_url' ])) {
  52. //字符串方式匹配
  53. $child_list[ $item ][ 'selected' ] = true;
  54. $temp_link = $value;
  55. } else {
  56. $child_list[ $item ][ 'selected' ] = false;
  57. }
  58. }
  59. }
  60. $list[ $k ][ 'child_list' ] = $child_list;
  61. }
  62. if (!$is_array) {
  63. $link = $temp_link;
  64. }
  65. //查询当前站点的微页面,暂时不显示
  66. // $diy_view_model = new DiyViewModel();
  67. // $page = $diy_view_model->getPage();
  68. // $condition = array(
  69. // 'sdv.site_id' => $this->site_id,
  70. // 'sdv.type' => $page['shop']['port'],
  71. // 'ndva.addon_name' => null, //排除插件中的自定义模板
  72. // );
  73. //
  74. // $site_diy_view_list = $diy_view_model->getSiteDiyViewPageList($condition, 1, 0, "sdv.create_time desc");
  75. // $site_diy_view_list = $site_diy_view_list['data']['list'];
  76. //
  77. // $addon_model = new Addon();
  78. //
  79. // foreach ($site_diy_view_list as $k => $v) {
  80. // $value = array();
  81. // $addon_info = $addon_model->getAddonInfo(['name' => $v['addon_name']], 'title,icon');
  82. // $addon_info = $addon_info ['data'];
  83. // $value['addon_name'] = $v['addon_name'];
  84. // $value['addon_title'] = $addon_info['title'];
  85. // $value['icon'] = $addon_info['icon'];
  86. // $value['list'] = [];
  87. // $column = array_column($link, 'addon_name');
  88. // if (!in_array($v['addon_name'], $column)) {
  89. // array_push($link, $value);
  90. // }
  91. // }
  92. //遍历微页面
  93. // foreach ($site_diy_view_list as $page_k => $page_v) {
  94. //
  95. // if ($diy_v['addon_name'] == $page_v['addon_name']) {
  96. //
  97. // $item = [
  98. // 'id' => $page_v['id'],
  99. // 'name' => $page_v['name'],
  100. // 'title' => $page_v['title'],
  101. // 'addon_icon' => "",
  102. // 'addon_name' => $page_v['addon_name'],
  103. // 'addon_title' => $diy_v['addon_title'],
  104. // 'web_url' => '',
  105. // 'wap_url' => '/pages/index/diy/diy?name=' . $page_v['name'],
  106. // 'icon' => '',
  107. // 'type' => 0
  108. // ];
  109. //
  110. // if (!empty($link) && $is_array && $link['name'] == $page_v['name']) {
  111. // //对象方式匹配
  112. // $item['selected'] = true;
  113. // } elseif (!empty($link) && !$is_array && strtolower($link) == strtolower($page_v['wap_url'])) {
  114. // //字符串方式匹配
  115. // $item['selected'] = true;
  116. // $temp_link = $page_v;
  117. // } else {
  118. // $item['selected'] = false;
  119. // }
  120. // array_push($link_list[$diy_k]['list'], $item);
  121. //
  122. // }
  123. // }
  124. if ($name == 'MIC_PAGE') {
  125. // 遍历微页面
  126. $diy_view_model = new DiyViewModel();
  127. $page = $diy_view_model->getPage();
  128. $condition = [
  129. [ 'sdv.site_id', '=', $data[ 'site_id' ] ],
  130. [ 'sdv.type', '=', $page[ 'shop' ][ 'port' ] ],
  131. [ 'sdv.name', 'like', '%DIY_VIEW_RANDOM_%' ]
  132. ];
  133. $site_diy_view_list = $diy_view_model->getSiteDiyViewPageList($condition, 1, 0, "sdv.sort desc,sdv.create_time desc");
  134. $site_diy_view_list = $site_diy_view_list[ 'data' ][ 'list' ];
  135. $link_mic = [
  136. 'id' => 0,
  137. 'addon_name' => '',
  138. 'name' => 'MIC_PAGE',
  139. 'title' => '微页面',
  140. 'parent' => 'MALL_LINK',
  141. 'sort' => 1,
  142. 'level' => 3,
  143. 'web_url' => '',
  144. 'wap_url' => '',
  145. 'icon' => '',
  146. 'support_diy_view' => '',
  147. 'child_list' => []
  148. ];
  149. foreach ($site_diy_view_list as $page_k => $page_v) {
  150. $title = $page_v[ 'title' ];
  151. $item = [
  152. 'id' => $page_v[ 'id' ],
  153. 'name' => $page_v[ 'name' ],
  154. 'title' => $title,
  155. 'addon_icon' => "",
  156. 'addon_name' => isset($page_v[ 'addon_name' ]) ? $page_v[ 'addon_name' ] : '',
  157. 'addon_title' => '',
  158. 'web_url' => '',
  159. 'wap_url' => '/otherpages/diy/diy/diy?name=' . $page_v[ 'name' ],
  160. 'icon' => '',
  161. 'type' => 0,
  162. 'diy' => 1
  163. ];
  164. if (!empty($link) && $is_array && $link[ 'name' ] == $page_v[ 'name' ]) {
  165. //对象方式匹配
  166. $item[ 'selected' ] = true;
  167. } elseif (!empty($link) && !$is_array && strtolower($link) == strtolower($page_v[ 'wap_url' ])) {
  168. //字符串方式匹配
  169. $item[ 'selected' ] = true;
  170. } else {
  171. $item[ 'selected' ] = false;
  172. }
  173. array_push($link_mic[ 'child_list' ], $item);
  174. }
  175. $list[] = $link_mic;
  176. }
  177. return [
  178. 'list' => $list,
  179. 'link' => $link
  180. ];
  181. }
  182. }