Diy.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\admin\controller;
  13. use app\model\web\DiyView as DiyViewModel;
  14. /**
  15. * 网站装修控制器
  16. */
  17. class Diy extends BaseAdmin
  18. {
  19. /**
  20. * 网站主页
  21. */
  22. public function index()
  23. {
  24. $diy_view = new DiyViewModel();
  25. $page = $diy_view->getPage();
  26. // 查询公共组件和支持的页面
  27. $condition = [
  28. [ 'support_diy_view', 'like', [ $page['admin']['index']['name'], '%' . $page['admin']['index']['name'] . ',%', '%' . $page['admin']['index']['name'], '%,' . $page['admin']['index']['name'] . ',%', '' ], 'or' ]
  29. ];
  30. $data = [
  31. 'app_module' => $this->app_module,
  32. 'site_id' => $this->site_id,
  33. 'name' => $page['admin']['index']['name'],
  34. 'condition' => $condition
  35. ];
  36. $edit_view = event('DiyViewEdit', $data, true);
  37. return $edit_view;
  38. }
  39. /**
  40. * 商品分类页面
  41. */
  42. public function goodsCategory()
  43. {
  44. $diy_view = new DiyViewModel();
  45. $page = $diy_view->getPage();
  46. // 查询公共组件和支持的页面
  47. $condition = [
  48. [ 'name', '=', 'GOODS_CATEGORY' ]
  49. ];
  50. $data = [
  51. 'app_module' => $this->app_module,
  52. 'site_id' => $this->site_id,
  53. 'name' => $page['admin']['goods_category']['name'],
  54. 'condition' => $condition
  55. ];
  56. $edit_view = event('DiyViewEdit', $data, true);
  57. return $edit_view;
  58. }
  59. /**
  60. * 编辑
  61. */
  62. public function edit()
  63. {
  64. if (request()->isAjax()) {
  65. $res = 0;
  66. $data = array();
  67. $id = input("id", 0);
  68. $name = input("name", "");
  69. $title = input("title", "");
  70. $value = input("value", "");
  71. if (!empty($name) && !empty($title) && !empty($value)) {
  72. $diy_view = new DiyViewModel();
  73. $page = $diy_view->getPage();
  74. $data['site_id'] = $this->site_id;
  75. $data['name'] = $name;
  76. $data['title'] = $title;
  77. $data['type'] = $page['admin']['port'];
  78. $data['value'] = $value;
  79. if ($id == 0) {
  80. $data['create_time'] = time();
  81. $res = $diy_view->addSiteDiyView($data);
  82. } else {
  83. $data['update_time'] = time();
  84. $res = $diy_view->editSiteDiyView($data, [
  85. [ 'id', '=', $id ]
  86. ]);
  87. }
  88. }
  89. return $res;
  90. } else {
  91. $id = input("id", 0);
  92. //查询公共系统组件
  93. $condition = [
  94. [ 'support_diy_view', '=', '' ]
  95. ];
  96. $data = [
  97. 'app_module' => $this->app_module,
  98. 'site_id' => $this->site_id,
  99. 'id' => $id,
  100. 'condition' => $condition
  101. ];
  102. $edit_view = event('DiyViewEdit', $data, true);
  103. return $edit_view;
  104. }
  105. }
  106. /**
  107. * 微页面
  108. */
  109. public function lists()
  110. {
  111. if (request()->isAjax()) {
  112. $page_index = input('page', 1);
  113. $page_size = input('page_size', PAGE_LIST_ROWS);
  114. $diy_view = new DiyViewModel();
  115. $page = $diy_view->getPage();
  116. $condition = array(
  117. [ 'sdv.site_id', '=', $this->site_id ],
  118. [ 'sdv.type', '=', $page['admin']['port'] ],
  119. [ 'sdv.name', 'like', '%DIY_VIEW_RANDOM_%' ]
  120. );
  121. $list = $diy_view->getSiteDiyViewPageList($condition, $page_index, $page_size, "sdv.create_time desc");
  122. return $list;
  123. } else {
  124. return $this->fetch('diy/lists');
  125. }
  126. }
  127. /**
  128. * 链接选择
  129. */
  130. public function link()
  131. {
  132. $link = input("link", []);
  133. $support_diy_view = input("support_diy_view", '');//支持的自定义页面(为空表示都支持)
  134. $is_array = true;//记录是否是数组,后续判断受该变量影响
  135. if (!empty($link)) {
  136. $link = json_decode($link, true);
  137. $is_array = is_array($link);
  138. }
  139. $diy_view_model = new DiyViewModel();
  140. $link_condition = [
  141. [ 'lk.support_diy_view', 'like', [ $support_diy_view, '' ], 'or' ]
  142. ];
  143. $res = $diy_view_model->getDiyLinkList($link_condition);
  144. $res = $res['data'];
  145. //查询当前站点的微页面,暂时不显示
  146. // $page = $diy_view_model->getPage();
  147. // $condition = array(
  148. // 'sdv.site_id' => $this->site_id,
  149. // 'sdv.type' => $page['admin']['port'],
  150. // 'ndva.addon_name' => null, //排除插件中的自定义模板
  151. // );
  152. // $site_diy_view_list = $diy_view_model->getSiteDiyViewPageList($condition, 1, 0, "sdv.create_time desc");
  153. // $site_diy_view_list = $site_diy_view_list['data']['list'];
  154. // $addon_model = new Addon();
  155. $link_list = array();
  156. // 调整链接结构,先遍历,插件分类
  157. foreach ($res as $k => $v) {
  158. $value = array();
  159. if (empty($v['addon_name'])) {
  160. $v['addon_title'] = '系统';
  161. }
  162. $value['addon_name'] = $v['addon_name'];
  163. $value['addon_title'] = $v['addon_title'];
  164. $value['icon'] = $v['addon_icon'];
  165. $value['list'] = [];
  166. $column = array_column($link_list, 'addon_name');
  167. if (!in_array($v['addon_name'], $column)) {
  168. array_push($link_list, $value);
  169. }
  170. }
  171. // foreach ($site_diy_view_list as $k => $v) {
  172. // $value = array();
  173. // $addon_info = $addon_model->getAddonInfo([ 'name' => $v['addon_name'] ], 'title,icon');
  174. // $addon_info = $addon_info ['data'];
  175. // $value['addon_name'] = $v['addon_name'];
  176. // $value['addon_title'] = $addon_info['title'];
  177. // $value['icon'] = $addon_info['icon'];
  178. // $value['list'] = [];
  179. // $column = array_column($link_list, 'addon_name');
  180. // if (!in_array($v['addon_name'], $column)) {
  181. // array_push($link_list, $value);
  182. // }
  183. // }
  184. $temp_link = [];
  185. // 遍历每一个链接,将其添加到对应的插件分类中
  186. foreach ($link_list as $diy_k => $diy_v) {
  187. //遍历插件固定自定义页面
  188. foreach ($res as $fixed_k => $fixed_v) {
  189. if ($diy_v['addon_name'] == $fixed_v['addon_name']) {
  190. if (!empty($link) && $is_array && $link['name'] == $fixed_v['name']) {
  191. //对象方式匹配
  192. $fixed_v['selected'] = true;
  193. } elseif (!empty($link) && !$is_array && strtolower($link) == strtolower($fixed_v['wap_url'])) {
  194. //字符串方式匹配
  195. $fixed_v['selected'] = true;
  196. $temp_link = $fixed_v;
  197. } else {
  198. $fixed_v['selected'] = false;
  199. }
  200. array_push($link_list[ $diy_k ]['list'], $fixed_v);
  201. }
  202. }
  203. //遍历微页面
  204. // foreach ($site_diy_view_list as $page_k => $page_v) {
  205. //
  206. // if ($diy_v['addon_name'] == $page_v['addon_name']) {
  207. //
  208. // $item = [
  209. // 'id' => $page_v['id'],
  210. // 'name' => $page_v['name'],
  211. // 'title' => $page_v['title'],
  212. // 'addon_icon' => "",
  213. // 'addon_name' => $page_v['addon_name'],
  214. // 'addon_title' => $diy_v['addon_title'],
  215. // 'web_url' => '',
  216. // 'wap_url' => '/otherpages/diy/diy/diy?name=' . $page_v['name'],
  217. // 'icon' => '',
  218. // 'type' => 0
  219. // ];
  220. //
  221. // if (!empty($link) && $is_array && $link['name'] == $page_v['name']) {
  222. // //对象方式匹配
  223. // $item['selected'] = true;
  224. // } elseif (!empty($link) && !$is_array && strtolower($link) == strtolower($page_v['wap_url'])) {
  225. // //字符串方式匹配
  226. // $item['selected'] = true;
  227. // $temp_link = $page_v;
  228. // } else {
  229. // $item['selected'] = false;
  230. // }
  231. // array_push($link_list[ $diy_k ]['list'], $item);
  232. //
  233. // }
  234. // }
  235. }
  236. if (!$is_array) {
  237. $link = $temp_link;
  238. }
  239. $this->assign("link", $link);
  240. $this->assign("link_list", $link_list);
  241. return $this->fetch('diy/link');
  242. }
  243. /**
  244. * 删除自定义模板页面
  245. */
  246. public function deleteSiteDiyView()
  247. {
  248. if (request()->isAjax()) {
  249. $diy_view = new DiyViewModel();
  250. $id_array = input("id", 0);
  251. $condition = [
  252. [ 'id', 'in', $id_array ]
  253. ];
  254. $res = $diy_view->deleteSiteDiyView($condition);
  255. return $res;
  256. }
  257. }
  258. /**
  259. * 底部导航
  260. */
  261. public function bottomNavDesign()
  262. {
  263. $diy_view = new DiyViewModel();
  264. if (request()->isAjax()) {
  265. $value = input("value", "");
  266. $res = $diy_view->setBottomNavConfig($value);
  267. return $res;
  268. } else {
  269. $bottom_nav_info = $diy_view->getBottomNavConfig();
  270. $this->assign("bottom_nav_info", $bottom_nav_info['data']['value']);
  271. return $this->fetch('diy/bottom_nav_design');
  272. }
  273. }
  274. /**
  275. * 推广链接
  276. */
  277. public function promote()
  278. {
  279. if (request()->isAjax()) {
  280. $id = input("id", 0);
  281. $diy_view = new DiyViewModel();
  282. $res = $diy_view->qrcode([
  283. [ 'site_id', '=', $this->site_id ],
  284. [ 'id', '=', $id ]
  285. ]);
  286. return $res;
  287. }
  288. }
  289. }