/app/backend/modules/goods/services/CategoryService.php

https://github.com/sulianapp-com/sulianapp · PHP · 518 lines · 488 code · 21 blank · 9 comment · 48 complexity · 6663d7b18b85396a18eb82a9479f1b0e MD5 · raw file

  1. <?php
  2. namespace app\backend\modules\goods\services;
  3. use app\backend\modules\goods\models\Category;
  4. /**
  5. * Created by PhpStorm.
  6. * Author: 芸众商城 www.yunzshop.com
  7. * Date: 2017/2/22
  8. * Time: 下午2:53
  9. */
  10. class CategoryService
  11. {
  12. public static function getCategoryMenu($params)
  13. {
  14. $catetorys = Category::getAllCategoryGroup();
  15. //获取分类2/3级联动
  16. if ($params['catlevel'] == 3) {
  17. $catetory_menus = CategoryService::tpl_form_field_category_level3(
  18. 'category', $catetorys['parent'], $catetorys['children'],
  19. isset($params['ids'][0]) ? $params['ids'][0] : 0,
  20. isset($params['ids'][1]) ? $params['ids'][1] : 0,
  21. isset($params['ids'][2]) ? $params['ids'][2] : 0
  22. );
  23. } else {
  24. $catetory_menus = CategoryService::tpl_form_field_category_level2(
  25. 'category', $catetorys['parent'], $catetorys['children'],
  26. isset($params['ids'][0]) ? $params['ids'][0] : 0,
  27. isset($params['ids'][1]) ? $params['ids'][1] : 0,
  28. isset($params['ids'][2]) ? $params['ids'][2] : 0
  29. );
  30. }
  31. return $catetory_menus;
  32. }
  33. public static function getCategoryMultiMenu($params)
  34. {
  35. $catetorys = Category::getAllCategoryGroup();
  36. //获取分类2/3级联动
  37. if ($params['catlevel'] == 3) {
  38. $catetory_menus = CategoryService::tpl_form_field_category_level3_multi(
  39. 'category', $catetorys['parent'], $catetorys['children'],
  40. isset($params['ids'][0]) ? $params['ids'][0] : 0,
  41. isset($params['ids'][1]) ? $params['ids'][1] : 0,
  42. isset($params['ids'][2]) ? $params['ids'][2] : 0
  43. );
  44. } else {
  45. $catetory_menus = CategoryService::tpl_form_field_category_level2_multi(
  46. 'category', $catetorys['parent'], $catetorys['children'],
  47. isset($params['ids'][0]) ? $params['ids'][0] : 0,
  48. isset($params['ids'][1]) ? $params['ids'][1] : 0,
  49. isset($params['ids'][2]) ? $params['ids'][2] : 0
  50. );
  51. }
  52. return $catetory_menus;
  53. }
  54. public static function getCategoryMultiMenuSearch($params)
  55. {
  56. $catetorys = Category::getAllCategoryGroup();
  57. //获取分类2/3级联动
  58. if ($params['catlevel'] == 3) {
  59. $catetory_menus = CategoryService::tpl_form_field_category_level3_multi_search(
  60. 'category', $catetorys['parent'], $catetorys['children'],
  61. isset($params['ids'][0][0]) ? $params['ids'][0][0] : 0,
  62. isset($params['ids'][1][0]) ? $params['ids'][1][0] : 0,
  63. isset($params['ids'][2][0]) ? $params['ids'][2][0] : 0
  64. );
  65. } else {
  66. $catetory_menus = CategoryService::tpl_form_field_category_level2_multi_search(
  67. 'category', $catetorys['parent'], $catetorys['children'],
  68. isset($params['ids'][0][0]) ? $params['ids'][0][0] : 0,
  69. isset($params['ids'][1][0]) ? $params['ids'][1][0] : 0,
  70. isset($params['ids'][2][0]) ? $params['ids'][2][0] : 0
  71. );
  72. }
  73. return $catetory_menus;
  74. }
  75. public static function tpl_form_field_category_level3($name, $parents, $children, $parentid, $childid, $thirdid)
  76. {
  77. $html = '
  78. <script type="text/javascript">
  79. window._' . $name . ' = ' . json_encode($children) . ';
  80. </script>';
  81. if (!defined('TPL_INIT_CATEGORY_THIRD')) {
  82. $html .= '
  83. <script type="text/javascript">
  84. function renderCategoryThird(obj, name){
  85. var index = obj.options[obj.selectedIndex].value;
  86. require([\'jquery\', \'util\'], function($, u){
  87. $selectChild = $(\'#\'+name+\'_child\');
  88. $selectThird = $(\'#\'+name+\'_third\');
  89. var html = \'<option value="0">请选择二级分类</option>\';
  90. var html1 = \'<option value="0">请选择三级分类</option>\';
  91. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  92. $selectChild.html(html);
  93. $selectThird.html(html1);
  94. return false;
  95. }
  96. for(var i=0; i< window[\'_\'+name][index].length; i++){
  97. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  98. }
  99. $selectChild.html(html);
  100. $selectThird.html(html1);
  101. });
  102. }
  103. function renderCategoryThird1(obj, name){
  104. var index = obj.options[obj.selectedIndex].value;
  105. require([\'jquery\', \'util\'], function($, u){
  106. $selectChild = $(\'#\'+name+\'_third\');
  107. var html = \'<option value="0">请选择三级分类</option>\';
  108. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  109. $selectChild.html(html);
  110. return false;
  111. }
  112. for(var i=0; i< window[\'_\'+name][index].length; i++){
  113. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  114. }
  115. $selectChild.html(html);
  116. });
  117. }
  118. </script>
  119. ';
  120. define('TPL_INIT_CATEGORY_THIRD', true);
  121. }
  122. $html .= '<div class="row row-fix tpl-category-container">
  123. <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
  124. <select class="form-control tpl-category-parent" id="' . $name . '_parent" name="' . $name . '[parentid]" onchange="renderCategoryThird(this,\'' . $name . '\')">
  125. <option value="0">请选择一级分类</option>';
  126. $ops = '';
  127. foreach ($parents as $row) {
  128. $html .= '
  129. <option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  130. }
  131. $html .= '
  132. </select>
  133. </div>
  134. <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
  135. <select class="form-control tpl-category-child" id="' . $name . '_child" name="' . $name . '[childid]" onchange="renderCategoryThird1(this,\'' . $name . '\')">
  136. <option value="0">请选择二级分类</option>';
  137. if (!empty($parentid) && !empty($children[$parentid])) {
  138. foreach ($children[$parentid] as $row) {
  139. $html .= '
  140. <option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  141. }
  142. }
  143. $html .= '
  144. </select>
  145. </div>
  146. <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
  147. <select class="form-control tpl-category-child" id="' . $name . '_third" name="' . $name . '[thirdid]">
  148. <option value="0">请选择三级分类</option>';
  149. if (!empty($childid) && !empty($children[$childid])) {
  150. foreach ($children[$childid] as $row) {
  151. $html .= '
  152. <option value="' . $row['id'] . '"' . (($row['id'] == $thirdid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  153. }
  154. }
  155. $html .= '</select>
  156. </div>
  157. </div>';
  158. return $html;
  159. }
  160. public static function tpl_form_field_category_level2($name, $parents, $children, $parentid, $childid)
  161. {
  162. $html = '
  163. <script type="text/javascript">
  164. window._' . $name . ' = ' . json_encode($children) . ';
  165. </script>';
  166. if (!defined('TPL_INIT_CATEGORY')) {
  167. $html .= '
  168. <script type="text/javascript">
  169. function renderCategory(obj, name){
  170. var index = obj.options[obj.selectedIndex].value;
  171. require([\'jquery\', \'util\'], function($, u){
  172. $selectChild = $(\'#\'+name+\'_child\');
  173. var html = \'<option value="0">请选择二级分类</option>\';
  174. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  175. $selectChild.html(html);
  176. return false;
  177. }
  178. for(var i=0; i< window[\'_\'+name][index].length; i++){
  179. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  180. }
  181. $selectChild.html(html);
  182. });
  183. }
  184. </script>
  185. ';
  186. define('TPL_INIT_CATEGORY', true);
  187. }
  188. $html .=
  189. '<div class="row row-fix tpl-category-container">
  190. <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
  191. <select class="form-control tpl-category-parent" id="' . $name . '_parent" name="' . $name . '[parentid]" onchange="renderCategory(this,\'' . $name . '\')">
  192. <option value="0">请选择一级分类</option>';
  193. $ops = '';
  194. foreach ($parents as $row) {
  195. $html .= '
  196. <option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  197. }
  198. $html .= '
  199. </select>
  200. </div>
  201. <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
  202. <select class="form-control tpl-category-child" id="' . $name . '_child" name="' . $name . '[childid]">
  203. <option value="0">请选择二级分类</option>';
  204. if (!empty($parentid) && !empty($children[$parentid])) {
  205. foreach ($children[$parentid] as $row) {
  206. $html .= '
  207. <option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  208. }
  209. }
  210. $html .= '
  211. </select>
  212. </div>
  213. </div>
  214. ';
  215. return $html;
  216. }
  217. public static function tpl_form_field_category_level3_multi($name, $parents, $children, $parentid, $childid, $thirdid)
  218. {
  219. $html = '
  220. <script type="text/javascript">
  221. window._' . $name . ' = ' . json_encode($children) . ';
  222. </script>';
  223. if (!defined('TPL_INIT_CATEGORY_THIRD')) {
  224. $html .= '
  225. <script type="text/javascript">
  226. function renderCategoryThird(obj, name){
  227. var index = obj.options[obj.selectedIndex].value;
  228. require([\'jquery\', \'util\'], function($, u){
  229. $selectChild = $(obj).parent().siblings().find(\'#\'+name+\'_child\');
  230. $selectThird = $(obj).parent().siblings().find(\'#\'+name+\'_third\');
  231. var html = \'<option value="0">请选择二级分类</option>\';
  232. var html1 = \'<option value="0">请选择三级分类</option>\';
  233. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  234. $selectChild.html(html);
  235. $selectThird.html(html1);
  236. return false;
  237. }
  238. for(var i=0; i< window[\'_\'+name][index].length; i++){
  239. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  240. }
  241. $selectChild.html(html);
  242. $selectThird.html(html1);
  243. });
  244. }
  245. function renderCategoryThird1(obj, name){
  246. var index = obj.options[obj.selectedIndex].value;
  247. require([\'jquery\', \'util\'], function($, u){
  248. $selectChild = $(obj).parent().siblings().find(\'#\'+name+\'_third\');
  249. var html = \'<option value="0">请选择三级分类</option>\';
  250. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  251. $selectChild.html(html);
  252. return false;
  253. }
  254. for(var i=0; i< window[\'_\'+name][index].length; i++){
  255. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  256. }
  257. $selectChild.html(html);
  258. });
  259. }
  260. </script>
  261. ';
  262. define('TPL_INIT_CATEGORY_THIRD', true);
  263. }
  264. $html .= '<div class="row row-fix tpl-category-container">
  265. <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
  266. <select class="form-control tpl-category-parent" id="' . $name . '_parent" name="' . $name . '[parentid][]" onchange="renderCategoryThird(this,\'' . $name . '\')">
  267. <option value="0">请选择一级分类</option>';
  268. $ops = '';
  269. foreach ($parents as $row) {
  270. $html .= '
  271. <option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  272. }
  273. $html .= '
  274. </select>
  275. </div>
  276. <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
  277. <select class="form-control tpl-category-child" id="' . $name . '_child" name="' . $name . '[childid][]" onchange="renderCategoryThird1(this,\'' . $name . '\')">
  278. <option value="0">请选择二级分类</option>';
  279. if (!empty($parentid) && !empty($children[$parentid])) {
  280. foreach ($children[$parentid] as $row) {
  281. $html .= '
  282. <option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  283. }
  284. }
  285. $html .= '
  286. </select>
  287. </div>
  288. <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
  289. <select class="form-control tpl-category-child" id="' . $name . '_third" name="' . $name . '[thirdid][]">
  290. <option value="0">请选择三级分类</option>';
  291. if (!empty($childid) && !empty($children[$childid])) {
  292. foreach ($children[$childid] as $row) {
  293. $html .= '
  294. <option value="' . $row['id'] . '"' . (($row['id'] == $thirdid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  295. }
  296. }
  297. $html .= '</select></div>';
  298. $html .= '<div class="col-sm-3 col-md-3 col-lg-3"><input type="button" value="删除" class="btn btn-danger delCategory"></div>
  299. </div>';
  300. return $html;
  301. }
  302. public static function tpl_form_field_category_level2_multi($name, $parents, $children, $parentid, $childid)
  303. {
  304. $html = '
  305. <script type="text/javascript">
  306. window._' . $name . ' = ' . json_encode($children) . ';
  307. </script>';
  308. if (!defined('TPL_INIT_CATEGORY')) {
  309. $html .= '
  310. <script type="text/javascript">
  311. function renderCategory(obj, name){
  312. var index = obj.options[obj.selectedIndex].value;
  313. require([\'jquery\', \'util\'], function($, u){
  314. $selectChild = $(obj).parent().siblings().find(\'#\'+name+\'_child\');
  315. var html = \'<option value="0">请选择二级分类</option>\';
  316. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  317. $selectChild.html(html);
  318. return false;
  319. }
  320. for(var i=0; i< window[\'_\'+name][index].length; i++){
  321. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  322. }
  323. $selectChild.html(html);
  324. });
  325. }
  326. </script>
  327. ';
  328. define('TPL_INIT_CATEGORY', true);
  329. }
  330. $html .=
  331. '<div class="row row-fix tpl-category-container">
  332. <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
  333. <select class="form-control tpl-category-parent" id="' . $name . '_parent" name="' . $name . '[parentid][]" onchange="renderCategory(this,\'' . $name . '\')">
  334. <option value="0">请选择一级分类</option>';
  335. $ops = '';
  336. foreach ($parents as $row) {
  337. $html .= '
  338. <option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  339. }
  340. $html .= '
  341. </select>
  342. </div>
  343. <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
  344. <select class="form-control tpl-category-child" id="' . $name . '_child" name="' . $name . '[childid][]">
  345. <option value="0">请选择二级分类</option>';
  346. if (!empty($parentid) && !empty($children[$parentid])) {
  347. foreach ($children[$parentid] as $row) {
  348. $html .= '
  349. <option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  350. }
  351. }
  352. $html .= '
  353. </select></div>';
  354. $html .= '<div class="col-sm-4 col-md-4 col-lg-4"><input type="button" value="删除" class="btn btn-danger delCategory"></div>
  355. </div>
  356. ';
  357. return $html;
  358. }
  359. public static function tpl_form_field_category_level3_multi_search($name, $parents, $children, $parentid, $childid, $thirdid)
  360. {
  361. $html = '
  362. <script type="text/javascript">
  363. window._' . $name . ' = ' . json_encode($children) . ';
  364. </script>';
  365. if (!defined('TPL_INIT_CATEGORY_THIRD')) {
  366. $html .= '
  367. <script type="text/javascript">
  368. function renderCategoryThird(obj, name){
  369. var index = obj.options[obj.selectedIndex].value;
  370. require([\'jquery\', \'util\'], function($, u){
  371. $selectChild = $(obj).parent().siblings().find(\'#\'+name+\'_child\');
  372. $selectThird = $(obj).parent().siblings().find(\'#\'+name+\'_third\');
  373. var html = \'<option value="0">请选择二级分类</option>\';
  374. var html1 = \'<option value="0">请选择三级分类</option>\';
  375. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  376. $selectChild.html(html);
  377. $selectThird.html(html1);
  378. return false;
  379. }
  380. for(var i=0; i< window[\'_\'+name][index].length; i++){
  381. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  382. }
  383. $selectChild.html(html);
  384. $selectThird.html(html1);
  385. });
  386. }
  387. function renderCategoryThird1(obj, name){
  388. var index = obj.options[obj.selectedIndex].value;
  389. require([\'jquery\', \'util\'], function($, u){
  390. $selectChild = $(obj).parent().siblings().find(\'#\'+name+\'_third\');
  391. var html = \'<option value="0">请选择三级分类</option>\';
  392. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  393. $selectChild.html(html);
  394. return false;
  395. }
  396. for(var i=0; i< window[\'_\'+name][index].length; i++){
  397. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  398. }
  399. $selectChild.html(html);
  400. });
  401. }
  402. </script>
  403. ';
  404. define('TPL_INIT_CATEGORY_THIRD', true);
  405. }
  406. $html .= '<div class="row row-fix tpl-category-container">
  407. <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
  408. <select class="form-control tpl-category-parent" id="' . $name . '_parent" name="' . $name . '[parentid][]" onchange="renderCategoryThird(this,\'' . $name . '\')">
  409. <option value="0">请选择一级分类</option>';
  410. $ops = '';
  411. foreach ($parents as $row) {
  412. $html .= '
  413. <option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  414. }
  415. $html .= '
  416. </select>
  417. </div>
  418. <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
  419. <select class="form-control tpl-category-child" id="' . $name . '_child" name="' . $name . '[childid][]" onchange="renderCategoryThird1(this,\'' . $name . '\')">
  420. <option value="0">请选择二级分类</option>';
  421. if (!empty($parentid) && !empty($children[$parentid])) {
  422. foreach ($children[$parentid] as $row) {
  423. $html .= '
  424. <option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  425. }
  426. }
  427. $html .= '
  428. </select>
  429. </div>
  430. <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4">
  431. <select class="form-control tpl-category-child" id="' . $name . '_third" name="' . $name . '[thirdid][]">
  432. <option value="0">请选择三级分类</option>';
  433. if (!empty($childid) && !empty($children[$childid])) {
  434. foreach ($children[$childid] as $row) {
  435. $html .= '
  436. <option value="' . $row['id'] . '"' . (($row['id'] == $thirdid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  437. }
  438. }
  439. $html .= '</select></div></div>';
  440. return $html;
  441. }
  442. public static function tpl_form_field_category_level2_multi_search($name, $parents, $children, $parentid, $childid)
  443. {
  444. $html = '
  445. <script type="text/javascript">
  446. window._' . $name . ' = ' . json_encode($children) . ';
  447. </script>';
  448. if (!defined('TPL_INIT_CATEGORY')) {
  449. $html .= '
  450. <script type="text/javascript">
  451. function renderCategory(obj, name){
  452. var index = obj.options[obj.selectedIndex].value;
  453. require([\'jquery\', \'util\'], function($, u){
  454. $selectChild = $(obj).parent().siblings().find(\'#\'+name+\'_child\');
  455. var html = \'<option value="0">请选择二级分类</option>\';
  456. if (!window[\'_\'+name] || !window[\'_\'+name][index]) {
  457. $selectChild.html(html);
  458. return false;
  459. }
  460. for(var i=0; i< window[\'_\'+name][index].length; i++){
  461. html += \'<option value="\'+window[\'_\'+name][index][i][\'id\']+\'">\'+window[\'_\'+name][index][i][\'name\']+\'</option>\';
  462. }
  463. $selectChild.html(html);
  464. });
  465. }
  466. </script>
  467. ';
  468. define('TPL_INIT_CATEGORY', true);
  469. }
  470. $html .=
  471. '<div class="row row-fix tpl-category-container">
  472. <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
  473. <select class="form-control tpl-category-parent" id="' . $name . '_parent" name="' . $name . '[parentid][]" onchange="renderCategory(this,\'' . $name . '\')">
  474. <option value="0">请选择一级分类</option>';
  475. $ops = '';
  476. foreach ($parents as $row) {
  477. $html .= '
  478. <option value="' . $row['id'] . '" ' . (($row['id'] == $parentid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  479. }
  480. $html .= '
  481. </select>
  482. </div>
  483. <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6">
  484. <select class="form-control tpl-category-child" id="' . $name . '_child" name="' . $name . '[childid][]">
  485. <option value="0">请选择二级分类</option>';
  486. if (!empty($parentid) && !empty($children[$parentid])) {
  487. foreach ($children[$parentid] as $row) {
  488. $html .= '
  489. <option value="' . $row['id'] . '"' . (($row['id'] == $childid) ? 'selected="selected"' : '') . '>' . $row['name'] . '</option>';
  490. }
  491. }
  492. $html .= '
  493. </select></div></div>
  494. ';
  495. return $html;
  496. }
  497. }